// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.21.9
// source: google/cloud/batch/v1alpha/job.proto

package batch

import (
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	durationpb "google.golang.org/protobuf/types/known/durationpb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)

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

// The order that TaskGroups are scheduled relative to each other.
//
// Not yet implemented.
type Job_SchedulingPolicy int32

const (
	// Unspecified.
	Job_SCHEDULING_POLICY_UNSPECIFIED Job_SchedulingPolicy = 0
	// Run all TaskGroups as soon as possible.
	Job_AS_SOON_AS_POSSIBLE Job_SchedulingPolicy = 1
)

// Enum value maps for Job_SchedulingPolicy.
var (
	Job_SchedulingPolicy_name = map[int32]string{
		0: "SCHEDULING_POLICY_UNSPECIFIED",
		1: "AS_SOON_AS_POSSIBLE",
	}
	Job_SchedulingPolicy_value = map[string]int32{
		"SCHEDULING_POLICY_UNSPECIFIED": 0,
		"AS_SOON_AS_POSSIBLE":           1,
	}
)

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

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

func (Job_SchedulingPolicy) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[0].Descriptor()
}

func (Job_SchedulingPolicy) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[0]
}

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

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

// The destination (if any) for logs.
type LogsPolicy_Destination int32

const (
	// Logs are not preserved.
	LogsPolicy_DESTINATION_UNSPECIFIED LogsPolicy_Destination = 0
	// Logs are streamed to Cloud Logging.
	LogsPolicy_CLOUD_LOGGING LogsPolicy_Destination = 1
	// Logs are saved to a file path.
	LogsPolicy_PATH LogsPolicy_Destination = 2
)

// Enum value maps for LogsPolicy_Destination.
var (
	LogsPolicy_Destination_name = map[int32]string{
		0: "DESTINATION_UNSPECIFIED",
		1: "CLOUD_LOGGING",
		2: "PATH",
	}
	LogsPolicy_Destination_value = map[string]int32{
		"DESTINATION_UNSPECIFIED": 0,
		"CLOUD_LOGGING":           1,
		"PATH":                    2,
	}
)

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

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

func (LogsPolicy_Destination) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[1].Descriptor()
}

func (LogsPolicy_Destination) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[1]
}

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

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

// Dependency type.
type JobDependency_Type int32

const (
	// Unspecified.
	JobDependency_TYPE_UNSPECIFIED JobDependency_Type = 0
	// The dependent Job has succeeded.
	JobDependency_SUCCEEDED JobDependency_Type = 1
	// The dependent Job has failed.
	JobDependency_FAILED JobDependency_Type = 2
	// SUCCEEDED or FAILED.
	JobDependency_FINISHED JobDependency_Type = 3
)

// Enum value maps for JobDependency_Type.
var (
	JobDependency_Type_name = map[int32]string{
		0: "TYPE_UNSPECIFIED",
		1: "SUCCEEDED",
		2: "FAILED",
		3: "FINISHED",
	}
	JobDependency_Type_value = map[string]int32{
		"TYPE_UNSPECIFIED": 0,
		"SUCCEEDED":        1,
		"FAILED":           2,
		"FINISHED":         3,
	}
)

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

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

func (JobDependency_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[2].Descriptor()
}

func (JobDependency_Type) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[2]
}

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

// Deprecated: Use JobDependency_Type.Descriptor instead.
func (JobDependency_Type) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_batch_v1alpha_job_proto_rawDescGZIP(), []int{2, 0}
}

// Valid Job states.
type JobStatus_State int32

const (
	JobStatus_STATE_UNSPECIFIED JobStatus_State = 0
	// Job is admitted (validated and persisted) and waiting for resources.
	JobStatus_QUEUED JobStatus_State = 1
	// Job is scheduled to run as soon as resource allocation is ready.
	// The resource allocation may happen at a later time but with a high
	// chance to succeed.
	JobStatus_SCHEDULED JobStatus_State = 2
	// Resource allocation has been successful. At least one Task in the Job is
	// RUNNING.
	JobStatus_RUNNING JobStatus_State = 3
	// All Tasks in the Job have finished successfully.
	JobStatus_SUCCEEDED JobStatus_State = 4
	// At least one Task in the Job has failed.
	JobStatus_FAILED JobStatus_State = 5
	// The Job will be deleted, but has not been deleted yet. Typically this is
	// because resources used by the Job are still being cleaned up.
	JobStatus_DELETION_IN_PROGRESS JobStatus_State = 6
)

// Enum value maps for JobStatus_State.
var (
	JobStatus_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		1: "QUEUED",
		2: "SCHEDULED",
		3: "RUNNING",
		4: "SUCCEEDED",
		5: "FAILED",
		6: "DELETION_IN_PROGRESS",
	}
	JobStatus_State_value = map[string]int32{
		"STATE_UNSPECIFIED":    0,
		"QUEUED":               1,
		"SCHEDULED":            2,
		"RUNNING":              3,
		"SUCCEEDED":            4,
		"FAILED":               5,
		"DELETION_IN_PROGRESS": 6,
	}
)

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

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

func (JobStatus_State) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[3].Descriptor()
}

func (JobStatus_State) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[3]
}

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

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

// The message type.
type JobNotification_Type int32

const (
	// Unspecified.
	JobNotification_TYPE_UNSPECIFIED JobNotification_Type = 0
	// Notify users that the job state has changed.
	JobNotification_JOB_STATE_CHANGED JobNotification_Type = 1
	// Notify users that the task state has changed.
	JobNotification_TASK_STATE_CHANGED JobNotification_Type = 2
)

// Enum value maps for JobNotification_Type.
var (
	JobNotification_Type_name = map[int32]string{
		0: "TYPE_UNSPECIFIED",
		1: "JOB_STATE_CHANGED",
		2: "TASK_STATE_CHANGED",
	}
	JobNotification_Type_value = map[string]int32{
		"TYPE_UNSPECIFIED":   0,
		"JOB_STATE_CHANGED":  1,
		"TASK_STATE_CHANGED": 2,
	}
)

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

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

func (JobNotification_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[4].Descriptor()
}

func (JobNotification_Type) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[4]
}

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

// Deprecated: Use JobNotification_Type.Descriptor instead.
func (JobNotification_Type) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_batch_v1alpha_job_proto_rawDescGZIP(), []int{4, 0}
}

// Compute Engine VM instance provisioning model.
type AllocationPolicy_ProvisioningModel int32

const (
	// Unspecified.
	AllocationPolicy_PROVISIONING_MODEL_UNSPECIFIED AllocationPolicy_ProvisioningModel = 0
	// Standard VM.
	AllocationPolicy_STANDARD AllocationPolicy_ProvisioningModel = 1
	// SPOT VM.
	AllocationPolicy_SPOT AllocationPolicy_ProvisioningModel = 2
	// Preemptible VM (PVM).
	//
	// Above SPOT VM is the preferable model for preemptible VM instances: the
	// old preemptible VM model (indicated by this field) is the older model,
	// and has been migrated to use the SPOT model as the underlying technology.
	// This old model will still be supported.
	AllocationPolicy_PREEMPTIBLE AllocationPolicy_ProvisioningModel = 3
)

// Enum value maps for AllocationPolicy_ProvisioningModel.
var (
	AllocationPolicy_ProvisioningModel_name = map[int32]string{
		0: "PROVISIONING_MODEL_UNSPECIFIED",
		1: "STANDARD",
		2: "SPOT",
		3: "PREEMPTIBLE",
	}
	AllocationPolicy_ProvisioningModel_value = map[string]int32{
		"PROVISIONING_MODEL_UNSPECIFIED": 0,
		"STANDARD":                       1,
		"SPOT":                           2,
		"PREEMPTIBLE":                    3,
	}
)

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

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

func (AllocationPolicy_ProvisioningModel) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[5].Descriptor()
}

func (AllocationPolicy_ProvisioningModel) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[5]
}

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

// Deprecated: Use AllocationPolicy_ProvisioningModel.Descriptor instead.
func (AllocationPolicy_ProvisioningModel) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_batch_v1alpha_job_proto_rawDescGZIP(), []int{5, 0}
}

// How Tasks in the TaskGroup should be scheduled relative to each other.
type TaskGroup_SchedulingPolicy int32

const (
	// Unspecified.
	TaskGroup_SCHEDULING_POLICY_UNSPECIFIED TaskGroup_SchedulingPolicy = 0
	// Run Tasks as soon as resources are available.
	TaskGroup_AS_SOON_AS_POSSIBLE TaskGroup_SchedulingPolicy = 1
)

// Enum value maps for TaskGroup_SchedulingPolicy.
var (
	TaskGroup_SchedulingPolicy_name = map[int32]string{
		0: "SCHEDULING_POLICY_UNSPECIFIED",
		1: "AS_SOON_AS_POSSIBLE",
	}
	TaskGroup_SchedulingPolicy_value = map[string]int32{
		"SCHEDULING_POLICY_UNSPECIFIED": 0,
		"AS_SOON_AS_POSSIBLE":           1,
	}
)

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

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

func (TaskGroup_SchedulingPolicy) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_batch_v1alpha_job_proto_enumTypes[6].Descriptor()
}

func (TaskGroup_SchedulingPolicy) Type() protoreflect.EnumType {
	return &file_google_cloud_batch_v1alpha_job_proto_enumTypes[6]
}

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

// Deprecated: Use TaskGroup_SchedulingPolicy.Descriptor instead.
func (TaskGroup_SchedulingPolicy) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_batch_v1alpha_job_proto_rawDescGZIP(), []int{6, 0}
}

// The Cloud Batch Job description.
type Job struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. Job name.
	// For example: "projects/123456/locations/us-central1/jobs/job01".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Output only. A system generated unique ID (in UUID4 format) for the Job.
	Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"`
	// Priority of the Job.
	// The valid value range is [0, 100).
	// A job with higher priority value is more likely to run earlier if all other
	// requirements are satisfied.
	Priority int64 `protobuf:"varint,3,opt,name=priority,proto3" json:"priority,omitempty"`
	// Required. TaskGroups in the Job. Only one TaskGroup is supported now.
	TaskGroups []*TaskGroup `protobuf:"bytes,4,rep,name=task_groups,json=taskGroups,proto3" json:"task_groups,omitempty"`
	// Scheduling policy for TaskGroups in the job.
	SchedulingPolicy Job_SchedulingPolicy `protobuf:"varint,5,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=google.cloud.batch.v1alpha.Job_SchedulingPolicy" json:"scheduling_policy,omitempty"`
	// At least one of the dependencies must be satisfied before the Job is
	// scheduled to run.
	// Only one JobDependency is supported now.
	// Not yet implemented.
	Dependencies []*JobDependency `protobuf:"bytes,6,rep,name=dependencies,proto3" json:"dependencies,omitempty"`
	// Compute resource allocation for all TaskGroups in the Job.
	AllocationPolicy *AllocationPolicy `protobuf:"bytes,7,opt,name=allocation_policy,json=allocationPolicy,proto3" json:"allocation_policy,omitempty"`
	// Labels for the Job. Labels could be user provided or system generated.
	// For example,
	//
	//	"labels": {
	//	   "department": "finance",
	//	   "environment": "test"
	//	 }
	//
	// You can assign up to 64 labels.  [Google Compute Engine label
	// restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions)
	// apply.
	// Label names that start with "goog-" or "google-" are reserved.
	Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Output only. Job status. It is read only for users.
	Status *JobStatus `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"`
	// Deprecated: please use notifications instead.
	//
	// Deprecated: Do not use.
	Notification *JobNotification `protobuf:"bytes,10,opt,name=notification,proto3" json:"notification,omitempty"`
	// Output only. When the Job was created.
	CreateTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Output only. The last time the Job was updated.
	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
	// Log preservation policy for the Job.
	LogsPolicy *LogsPolicy `protobuf:"bytes,13,opt,name=logs_policy,json=logsPolicy,proto3" json:"logs_policy,omitempty"`
	// Notification configurations.
	Notifications []*JobNotification `protobuf:"bytes,14,rep,name=notifications,proto3" json:"notifications,omitempty"`
}

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

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

func (*Job) ProtoMessage() {}

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

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

func (x *Job) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Job) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *Job) GetPriority() int64 {
	if x != nil {
		return x.Priority
	}
	return 0
}

func (x *Job) GetTaskGroups() []*TaskGroup {
	if x != nil {
		return x.TaskGroups
	}
	return nil
}

func (x *Job) GetSchedulingPolicy() Job_SchedulingPolicy {
	if x != nil {
		return x.SchedulingPolicy
	}
	return Job_SCHEDULING_POLICY_UNSPECIFIED
}

func (x *Job) GetDependencies() []*JobDependency {
	if x != nil {
		return x.Dependencies
	}
	return nil
}

func (x *Job) GetAllocationPolicy() *AllocationPolicy {
	if x != nil {
		return x.AllocationPolicy
	}
	return nil
}

func (x *Job) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Job) GetStatus() *JobStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

// Deprecated: Do not use.
func (x *Job) GetNotification() *JobNotification {
	if x != nil {
		return x.Notification
	}
	return nil
}

func (x *Job) GetCreateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Job) GetUpdateTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdateTime
	}
	return nil
}

func (x *Job) GetLogsPolicy() *LogsPolicy {
	if x != nil {
		return x.LogsPolicy
	}
	return nil
}

func (x *Job) GetNotifications() []*JobNotification {
	if x != nil {
		return x.Notifications
	}
	return nil
}

// LogsPolicy describes how outputs from a Job's Tasks (stdout/stderr) will be
// preserved.
type LogsPolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Where logs should be saved.
	Destination LogsPolicy_Destination `protobuf:"varint,1,opt,name=destination,proto3,enum=google.cloud.batch.v1alpha.LogsPolicy_Destination" json:"destination,omitempty"`
	// The path to which logs are saved when the destination = PATH. This can be a
	// local file path on the VM, or under the mount point of a Persistent Disk or
	// Filestore, or a Cloud Storage path.
	LogsPath string `protobuf:"bytes,2,opt,name=logs_path,json=logsPath,proto3" json:"logs_path,omitempty"`
}

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

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

func (*LogsPolicy) ProtoMessage() {}

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

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

func (x *LogsPolicy) GetDestination() LogsPolicy_Destination {
	if x != nil {
		return x.Destination
	}
	return LogsPolicy_DESTINATION_UNSPECIFIED
}

func (x *LogsPolicy) GetLogsPath() string {
	if x != nil {
		return x.LogsPath
	}
	return ""
}

// JobDependency describes the state of other Jobs that the start of this Job
// depends on.
// All dependent Jobs must have been submitted in the same region.
type JobDependency struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Each item maps a Job name to a Type.
	// All items must be satisfied for the JobDependency to be satisfied (the AND
	// operation).
	// Once a condition for one item becomes true, it won't go back to false
	// even the dependent Job state changes again.
	Items map[string]JobDependency_Type `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.cloud.batch.v1alpha.JobDependency_Type"`
}

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

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

func (*JobDependency) ProtoMessage() {}

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

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

func (x *JobDependency) GetItems() map[string]JobDependency_Type {
	if x != nil {
		return x.Items
	}
	return nil
}

// Job status.
type JobStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Job state
	State JobStatus_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.batch.v1alpha.JobStatus_State" json:"state,omitempty"`
	// Job status events
	StatusEvents []*StatusEvent `protobuf:"bytes,2,rep,name=status_events,json=statusEvents,proto3" json:"status_events,omitempty"`
	// Aggregated task status for each TaskGroup in the Job.
	// The map key is TaskGroup ID.
	TaskGroups map[string]*JobStatus_TaskGroupStatus `protobuf:"bytes,4,rep,name=task_groups,json=taskGroups,proto3" json:"task_groups,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// The duration of time that the Job spent in status RUNNING.
	RunDuration *durationpb.Duration `protobuf:"bytes,5,opt,name=run_duration,json=runDuration,proto3" json:"run_duration,omitempty"`
}

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

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

func (*JobStatus) ProtoMessage() {}

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

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

func (x *JobStatus) GetState() JobStatus_State {
	if x != nil {
		return x.State
	}
	return JobStatus_STATE_UNSPECIFIED
}

func (x *JobStatus) GetStatusEvents() []*StatusEvent {
	if x != nil {
		return x.StatusEvents
	}
	return nil
}

func (x *JobStatus) GetTaskGroups() map[string]*JobStatus_TaskGroupStatus {
	if x != nil {
		return x.TaskGroups
	}
	return nil
}

func (x *JobStatus) GetRunDuration() *durationpb.Duration {
	if x != nil {
		return x.RunDuration
	}
	return nil
}

// Notification configurations.
type JobNotification struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The Pub/Sub topic where notifications like the job state changes
	// will be published. This topic exist in the same project as the job
	// and billings will be charged to this project.
	// If not specified, no Pub/Sub messages will be sent.
	// Topic format: `projects/{project}/topics/{topic}`.
	PubsubTopic string `protobuf:"bytes,1,opt,name=pubsub_topic,json=pubsubTopic,proto3" json:"pubsub_topic,omitempty"`
	// The attribute requirements of messages to be sent to this Pub/Sub topic.
	// Without this field, no message will be sent.
	Message *JobNotification_Message `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

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

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

func (*JobNotification) ProtoMessage() {}

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

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

func (x *JobNotification) GetPubsubTopic() string {
	if x != nil {
		return x.PubsubTopic
	}
	return ""
}

func (x *JobNotification) GetMessage() *JobNotification_Message {
	if x != nil {
		return x.Message
	}
	return nil
}

// A Job's resource allocation policy describes when, where, and how compute
// resources should be allocated for the Job.
type AllocationPolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Location where compute resources should be allocated for the Job.
	Location *AllocationPolicy_LocationPolicy `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"`
	// Deprecated: please use instances[0].policy instead.
	//
	// Deprecated: Do not use.
	Instance *AllocationPolicy_InstancePolicy `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"`
	// Describe instances that can be created by this AllocationPolicy.
	// Only instances[0] is supported now.
	Instances []*AllocationPolicy_InstancePolicyOrTemplate `protobuf:"bytes,8,rep,name=instances,proto3" json:"instances,omitempty"`
	// Deprecated: please use instances[0].template instead.
	//
	// Deprecated: Do not use.
	InstanceTemplates []string `protobuf:"bytes,3,rep,name=instance_templates,json=instanceTemplates,proto3" json:"instance_templates,omitempty"`
	// Deprecated: please use instances[0].policy.provisioning_model instead.
	//
	// Deprecated: Do not use.
	ProvisioningModels []AllocationPolicy_ProvisioningModel `protobuf:"varint,4,rep,packed,name=provisioning_models,json=provisioningModels,proto3,enum=google.cloud.batch.v1alpha.AllocationPolicy_ProvisioningModel" json:"provisioning_models,omitempty"`
	// Deprecated: please use service_account instead.
	//
	// Deprecated: Do not use.
	ServiceAccountEmail string `protobuf:"bytes,5,opt,name=service_account_email,json=serviceAccountEmail,proto3" json:"service_account_email,omitempty"`
	// Service account that VMs will run as.
	ServiceAccount *ServiceAccount `protobuf:"bytes,9,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
	// Labels applied to all VM instances and other resources
	// created by AllocationPolicy.
	// Labels could be user provided or system generated.
	// You can assign up to 64 labels. [Google Compute Engine label
	// restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions)
	// apply.
	// Label names that start with "goog-" or "google-" are reserved.
	Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// The network policy.
	Network *AllocationPolicy_NetworkPolicy `protobuf:"bytes,7,opt,name=network,proto3" json:"network,omitempty"`
}

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

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

func (*AllocationPolicy) ProtoMessage() {}

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

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

func (x *AllocationPolicy) GetLocation() *AllocationPolicy_LocationPolicy {
	if x != nil {
		return x.Location
	}
	return nil
}

// Deprecated: Do not use.
func (x *AllocationPolicy) GetInstance() *AllocationPolicy_InstancePolicy {
	if x != nil {
		return x.Instance
	}
	return nil
}

func (x *AllocationPolicy) GetInstances() []*AllocationPolicy_InstancePolicyOrTemplate {
	if x != nil {
		return x.Instances
	}
	return nil
}

// Deprecated: Do not use.
func (x *AllocationPolicy) GetInstanceTemplates() []string {
	if x != nil {
		return x.InstanceTemplates
	}
	return nil
}

// Deprecated: Do not use.
func (x *AllocationPolicy) GetProvisioningModels() []AllocationPolicy_ProvisioningModel {
	if x != nil {
		return x.ProvisioningModels
	}
	return nil
}

// Deprecated: Do not use.
func (x *AllocationPolicy) GetServiceAccountEmail() string {
	if x != nil {
		return x.ServiceAccountEmail
	}
	return ""
}

func (x *AllocationPolicy) GetServiceAccount() *ServiceAccount {
	if x != nil {
		return x.ServiceAccount
	}
	return nil
}

func (x *AllocationPolicy) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *AllocationPolicy) GetNetwork() *AllocationPolicy_NetworkPolicy {
	if x != nil {
		return x.Network
	}
	return nil
}

// A TaskGroup contains one or multiple Tasks that share the same
// Runnable but with different runtime parameters.
type TaskGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Output only. TaskGroup name.
	// The system generates this field based on parent Job name.
	// For example:
	// "projects/123456/locations/us-west1/jobs/job01/taskGroups/group01".
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Required. Tasks in the group share the same task spec.
	TaskSpec *TaskSpec `protobuf:"bytes,3,opt,name=task_spec,json=taskSpec,proto3" json:"task_spec,omitempty"`
	// Number of Tasks in the TaskGroup.
	// default is 1
	TaskCount int64 `protobuf:"varint,4,opt,name=task_count,json=taskCount,proto3" json:"task_count,omitempty"`
	// Max number of tasks that can run in parallel.
	// Default to min(task_count, 1000).
	Parallelism int64 `protobuf:"varint,5,opt,name=parallelism,proto3" json:"parallelism,omitempty"`
	// Scheduling policy for Tasks in the TaskGroup.
	SchedulingPolicy TaskGroup_SchedulingPolicy `protobuf:"varint,6,opt,name=scheduling_policy,json=schedulingPolicy,proto3,enum=google.cloud.batch.v1alpha.TaskGroup_SchedulingPolicy" json:"scheduling_policy,omitempty"`
	// Compute resource allocation for the TaskGroup.
	// If specified, it overrides resources in Job.
	AllocationPolicy *AllocationPolicy `protobuf:"bytes,7,opt,name=allocation_policy,json=allocationPolicy,proto3" json:"allocation_policy,omitempty"`
	// Labels for the TaskGroup.
	// Labels could be user provided or system generated.
	// You can assign up to 64 labels.  [Google Compute Engine label
	// restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions)
	// apply.
	// Label names that start with "goog-" or "google-" are reserved.
	Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// An array of environment variable mappings, which are passed to Tasks with
	// matching indices. If task_environments is used then task_count should
	// not be specified in the request (and will be ignored). Task count will be
	// the length of task_environments.
	//
	// Tasks get a BATCH_TASK_INDEX and BATCH_TASK_COUNT environment variable, in
	// addition to any environment variables set in task_environments, specifying
	// the number of Tasks in the Task's parent TaskGroup, and the specific Task's
	// index in the TaskGroup (0 through BATCH_TASK_COUNT - 1).
	//
	// task_environments supports up to 200 entries.
	TaskEnvironments []*Environment `protobuf:"bytes,9,rep,name=task_environments,json=taskEnvironments,proto3" json:"task_environments,omitempty"`
	// Max number of tasks that can be run on a VM at the same time.
	// If not specified, the system will decide a value based on available
	// compute resources on a VM and task requirements.
	TaskCountPerNode int64 `protobuf:"varint,10,opt,name=task_count_per_node,json=taskCountPerNode,proto3" json:"task_count_per_node,omitempty"`
	// When true, Batch will populate a file with a list of all VMs assigned to
	// the TaskGroup and set the BATCH_HOSTS_FILE environment variable to the path
	// of that file. Defaults to false.
	RequireHostsFile bool `protobuf:"varint,11,opt,name=require_hosts_file,json=requireHostsFile,proto3" json:"require_hosts_file,omitempty"`
	// When true, Batch will configure SSH to allow passwordless login between
	// VMs running the Batch tasks in the same TaskGroup.
	PermissiveSsh bool `protobuf:"varint,12,opt,name=permissive_ssh,json=permissiveSsh,proto3" json:"permissive_ssh,omitempty"`
}

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

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

func (*TaskGroup) ProtoMessage() {}

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

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

func (x *TaskGroup) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *TaskGroup) GetTaskSpec() *TaskSpec {
	if x != nil {
		return x.TaskSpec
	}
	return nil
}

func (x *TaskGroup) GetTaskCount() int64 {
	if x != nil {
		return x.TaskCount
	}
	return 0
}

func (x *TaskGroup) GetParallelism() int64 {
	if x != nil {
		return x.Parallelism
	}
	return 0
}

func (x *TaskGroup) GetSchedulingPolicy() TaskGroup_SchedulingPolicy {
	if x != nil {
		return x.SchedulingPolicy
	}
	return TaskGroup_SCHEDULING_POLICY_UNSPECIFIED
}

func (x *TaskGroup) GetAllocationPolicy() *AllocationPolicy {
	if x != nil {
		return x.AllocationPolicy
	}
	return nil
}

func (x *TaskGroup) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *TaskGroup) GetTaskEnvironments() []*Environment {
	if x != nil {
		return x.TaskEnvironments
	}
	return nil
}

func (x *TaskGroup) GetTaskCountPerNode() int64 {
	if x != nil {
		return x.TaskCountPerNode
	}
	return 0
}

func (x *TaskGroup) GetRequireHostsFile() bool {
	if x != nil {
		return x.RequireHostsFile
	}
	return false
}

func (x *TaskGroup) GetPermissiveSsh() bool {
	if x != nil {
		return x.PermissiveSsh
	}
	return false
}

// Carries information about a Google Cloud service account.
type ServiceAccount struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Email address of the service account. If not specified, the default
	// Compute Engine service account for the project will be used. If instance
	// template is being used, the service account has to be specified in the
	// instance template and it has to match the email field here.
	Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`
	// List of scopes to be enabled for this service account on the VM, in
	// addition to the cloud-platform API scope that will be added by default.
	Scopes []string `protobuf:"bytes,2,rep,name=scopes,proto3" json:"scopes,omitempty"`
}

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

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

func (*ServiceAccount) ProtoMessage() {}

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

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

func (x *ServiceAccount) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

func (x *ServiceAccount) GetScopes() []string {
	if x != nil {
		return x.Scopes
	}
	return nil
}

// VM instance status.
type JobStatus_InstanceStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The Compute Engine machine type.
	MachineType string `protobuf:"bytes,1,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"`
	// The VM instance provisioning model.
	ProvisioningModel AllocationPolicy_ProvisioningModel `protobuf:"varint,2,opt,name=provisioning_model,json=provisioningModel,proto3,enum=google.cloud.batch.v1alpha.AllocationPolicy_ProvisioningModel" json:"provisioning_model,omitempty"`
	// The max number of tasks can be assigned to this instance type.
	TaskPack int64 `protobuf:"varint,3,opt,name=task_pack,json=taskPack,proto3" json:"task_pack,omitempty"`
}

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

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

func (*JobStatus_InstanceStatus) ProtoMessage() {}

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

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

func (x *JobStatus_InstanceStatus) GetMachineType() string {
	if x != nil {
		return x.MachineType
	}
	return ""
}

func (x *JobStatus_InstanceStatus) GetProvisioningModel() AllocationPolicy_ProvisioningModel {
	if x != nil {
		return x.ProvisioningModel
	}
	return AllocationPolicy_PROVISIONING_MODEL_UNSPECIFIED
}

func (x *JobStatus_InstanceStatus) GetTaskPack() int64 {
	if x != nil {
		return x.TaskPack
	}
	return 0
}

// Aggregated task status for a TaskGroup.
type JobStatus_TaskGroupStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Count of task in each state in the TaskGroup.
	// The map key is task state name.
	Counts map[string]int64 `protobuf:"bytes,1,rep,name=counts,proto3" json:"counts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	// Status of instances allocated for the TaskGroup.
	Instances []*JobStatus_InstanceStatus `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"`
}

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

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

func (*JobStatus_TaskGroupStatus) ProtoMessage() {}

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

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

func (x *JobStatus_TaskGroupStatus) GetCounts() map[string]int64 {
	if x != nil {
		return x.Counts
	}
	return nil
}

func (x *JobStatus_TaskGroupStatus) GetInstances() []*JobStatus_InstanceStatus {
	if x != nil {
		return x.Instances
	}
	return nil
}

// Message details.
// Describe the attribute that a message should have.
// Without specified message attributes, no message will be sent by default.
type JobNotification_Message struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The message type.
	Type JobNotification_Type `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.batch.v1alpha.JobNotification_Type" json:"type,omitempty"`
	// The new job state.
	NewJobState JobStatus_State `protobuf:"varint,2,opt,name=new_job_state,json=newJobState,proto3,enum=google.cloud.batch.v1alpha.JobStatus_State" json:"new_job_state,omitempty"`
	// The new task state.
	NewTaskState TaskStatus_State `protobuf:"varint,3,opt,name=new_task_state,json=newTaskState,proto3,enum=google.cloud.batch.v1alpha.TaskStatus_State" json:"new_task_state,omitempty"`
}

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

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

func (*JobNotification_Message) ProtoMessage() {}

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

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

func (x *JobNotification_Message) GetType() JobNotification_Type {
	if x != nil {
		return x.Type
	}
	return JobNotification_TYPE_UNSPECIFIED
}

func (x *JobNotification_Message) GetNewJobState() JobStatus_State {
	if x != nil {
		return x.NewJobState
	}
	return JobStatus_STATE_UNSPECIFIED
}

func (x *JobNotification_Message) GetNewTaskState() TaskStatus_State {
	if x != nil {
		return x.NewTaskState
	}
	return TaskStatus_STATE_UNSPECIFIED
}

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

	// A list of allowed location names represented by internal URLs.
	// Each location can be a region or a zone.
	// Only one region or multiple zones in one region is supported now.
	// For example,
	// ["regions/us-central1"] allow VMs in any zones in region us-central1.
	// ["zones/us-central1-a", "zones/us-central1-c"] only allow VMs
	// in zones us-central1-a and us-central1-c.
	// All locations end up in different regions would cause errors.
	// For example,
	// ["regions/us-central1", "zones/us-central1-a", "zones/us-central1-b",
	// "zones/us-west1-a"] contains 2 regions "us-central1" and
	// "us-west1". An error is expected in this case.
	AllowedLocations []string `protobuf:"bytes,1,rep,name=allowed_locations,json=allowedLocations,proto3" json:"allowed_locations,omitempty"`
	// A list of denied location names.
	//
	// Not yet implemented.
	DeniedLocations []string `protobuf:"bytes,2,rep,name=denied_locations,json=deniedLocations,proto3" json:"denied_locations,omitempty"`
}

func (x *AllocationPolicy_LocationPolicy) Reset() {
	*x = AllocationPolicy_LocationPolicy{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_LocationPolicy) ProtoMessage() {}

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

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

func (x *AllocationPolicy_LocationPolicy) GetAllowedLocations() []string {
	if x != nil {
		return x.AllowedLocations
	}
	return nil
}

func (x *AllocationPolicy_LocationPolicy) GetDeniedLocations() []string {
	if x != nil {
		return x.DeniedLocations
	}
	return nil
}

// A new persistent disk or a local ssd.
// A VM can only have one local SSD setting but multiple local SSD partitions.
// https://cloud.google.com/compute/docs/disks#pdspecs.
// https://cloud.google.com/compute/docs/disks#localssds.
type AllocationPolicy_Disk struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A data source from which a PD will be created.
	//
	// Types that are assignable to DataSource:
	//
	//	*AllocationPolicy_Disk_Image
	//	*AllocationPolicy_Disk_Snapshot
	DataSource isAllocationPolicy_Disk_DataSource `protobuf_oneof:"data_source"`
	// Disk type as shown in `gcloud compute disk-types list`
	// For example, "pd-ssd", "pd-standard", "pd-balanced", "local-ssd".
	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	// Disk size in GB.
	// This field is ignored if `data_source` is `disk` or `image`.
	// If `type` is `local-ssd`, size_gb should be a multiple of 375GB,
	// otherwise, the final size will be the next greater multiple of 375 GB.
	SizeGb int64 `protobuf:"varint,2,opt,name=size_gb,json=sizeGb,proto3" json:"size_gb,omitempty"`
	// Local SSDs are available through both "SCSI" and "NVMe" interfaces.
	// If not indicated, "NVMe" will be the default one for local ssds.
	// We only support "SCSI" for persistent disks now.
	DiskInterface string `protobuf:"bytes,6,opt,name=disk_interface,json=diskInterface,proto3" json:"disk_interface,omitempty"`
}

func (x *AllocationPolicy_Disk) Reset() {
	*x = AllocationPolicy_Disk{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_Disk) ProtoMessage() {}

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

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

func (m *AllocationPolicy_Disk) GetDataSource() isAllocationPolicy_Disk_DataSource {
	if m != nil {
		return m.DataSource
	}
	return nil
}

func (x *AllocationPolicy_Disk) GetImage() string {
	if x, ok := x.GetDataSource().(*AllocationPolicy_Disk_Image); ok {
		return x.Image
	}
	return ""
}

func (x *AllocationPolicy_Disk) GetSnapshot() string {
	if x, ok := x.GetDataSource().(*AllocationPolicy_Disk_Snapshot); ok {
		return x.Snapshot
	}
	return ""
}

func (x *AllocationPolicy_Disk) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *AllocationPolicy_Disk) GetSizeGb() int64 {
	if x != nil {
		return x.SizeGb
	}
	return 0
}

func (x *AllocationPolicy_Disk) GetDiskInterface() string {
	if x != nil {
		return x.DiskInterface
	}
	return ""
}

type isAllocationPolicy_Disk_DataSource interface {
	isAllocationPolicy_Disk_DataSource()
}

type AllocationPolicy_Disk_Image struct {
	// Name of a public or custom image used as the data source.
	Image string `protobuf:"bytes,4,opt,name=image,proto3,oneof"`
}

type AllocationPolicy_Disk_Snapshot struct {
	// Name of a snapshot used as the data source.
	Snapshot string `protobuf:"bytes,5,opt,name=snapshot,proto3,oneof"`
}

func (*AllocationPolicy_Disk_Image) isAllocationPolicy_Disk_DataSource() {}

func (*AllocationPolicy_Disk_Snapshot) isAllocationPolicy_Disk_DataSource() {}

// A new or an existing persistent disk (PD) or a local ssd attached to a VM
// instance.
type AllocationPolicy_AttachedDisk struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Attached:
	//
	//	*AllocationPolicy_AttachedDisk_NewDisk
	//	*AllocationPolicy_AttachedDisk_ExistingDisk
	Attached isAllocationPolicy_AttachedDisk_Attached `protobuf_oneof:"attached"`
	// Device name that the guest operating system will see.
	// It is used by Runnable.volumes field to mount disks. So please specify
	// the device_name if you want Batch to help mount the disk, and it should
	// match the device_name field in volumes.
	DeviceName string `protobuf:"bytes,3,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"`
}

func (x *AllocationPolicy_AttachedDisk) Reset() {
	*x = AllocationPolicy_AttachedDisk{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_AttachedDisk) ProtoMessage() {}

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

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

func (m *AllocationPolicy_AttachedDisk) GetAttached() isAllocationPolicy_AttachedDisk_Attached {
	if m != nil {
		return m.Attached
	}
	return nil
}

func (x *AllocationPolicy_AttachedDisk) GetNewDisk() *AllocationPolicy_Disk {
	if x, ok := x.GetAttached().(*AllocationPolicy_AttachedDisk_NewDisk); ok {
		return x.NewDisk
	}
	return nil
}

func (x *AllocationPolicy_AttachedDisk) GetExistingDisk() string {
	if x, ok := x.GetAttached().(*AllocationPolicy_AttachedDisk_ExistingDisk); ok {
		return x.ExistingDisk
	}
	return ""
}

func (x *AllocationPolicy_AttachedDisk) GetDeviceName() string {
	if x != nil {
		return x.DeviceName
	}
	return ""
}

type isAllocationPolicy_AttachedDisk_Attached interface {
	isAllocationPolicy_AttachedDisk_Attached()
}

type AllocationPolicy_AttachedDisk_NewDisk struct {
	NewDisk *AllocationPolicy_Disk `protobuf:"bytes,1,opt,name=new_disk,json=newDisk,proto3,oneof"`
}

type AllocationPolicy_AttachedDisk_ExistingDisk struct {
	// Name of an existing PD.
	ExistingDisk string `protobuf:"bytes,2,opt,name=existing_disk,json=existingDisk,proto3,oneof"`
}

func (*AllocationPolicy_AttachedDisk_NewDisk) isAllocationPolicy_AttachedDisk_Attached() {}

func (*AllocationPolicy_AttachedDisk_ExistingDisk) isAllocationPolicy_AttachedDisk_Attached() {}

// Accelerator describes Compute Engine accelerators to be attached to the VM.
type AllocationPolicy_Accelerator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The accelerator type. For example, "nvidia-tesla-t4".
	// See `gcloud compute accelerator-types list`.
	Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
	// The number of accelerators of this type.
	Count int64 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
	// Deprecated: please use instances[0].install_gpu_drivers instead.
	//
	// Deprecated: Do not use.
	InstallGpuDrivers bool `protobuf:"varint,3,opt,name=install_gpu_drivers,json=installGpuDrivers,proto3" json:"install_gpu_drivers,omitempty"`
}

func (x *AllocationPolicy_Accelerator) Reset() {
	*x = AllocationPolicy_Accelerator{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_Accelerator) ProtoMessage() {}

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

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

func (x *AllocationPolicy_Accelerator) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *AllocationPolicy_Accelerator) GetCount() int64 {
	if x != nil {
		return x.Count
	}
	return 0
}

// Deprecated: Do not use.
func (x *AllocationPolicy_Accelerator) GetInstallGpuDrivers() bool {
	if x != nil {
		return x.InstallGpuDrivers
	}
	return false
}

// InstancePolicy describes an instance type and resources attached to each VM
// created by this InstancePolicy.
type AllocationPolicy_InstancePolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Deprecated: please use machine_type instead.
	//
	// Deprecated: Do not use.
	AllowedMachineTypes []string `protobuf:"bytes,1,rep,name=allowed_machine_types,json=allowedMachineTypes,proto3" json:"allowed_machine_types,omitempty"`
	// The Compute Engine machine type.
	MachineType string `protobuf:"bytes,2,opt,name=machine_type,json=machineType,proto3" json:"machine_type,omitempty"`
	// The minimum CPU platform.
	// See
	// `https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform`.
	// Not yet implemented.
	MinCpuPlatform string `protobuf:"bytes,3,opt,name=min_cpu_platform,json=minCpuPlatform,proto3" json:"min_cpu_platform,omitempty"`
	// The provisioning model.
	ProvisioningModel AllocationPolicy_ProvisioningModel `protobuf:"varint,4,opt,name=provisioning_model,json=provisioningModel,proto3,enum=google.cloud.batch.v1alpha.AllocationPolicy_ProvisioningModel" json:"provisioning_model,omitempty"`
	// The accelerators attached to each VM instance.
	Accelerators []*AllocationPolicy_Accelerator `protobuf:"bytes,5,rep,name=accelerators,proto3" json:"accelerators,omitempty"`
	// Book disk to be created and attached to each VM by this InstancePolicy.
	// Boot disk will be deleted when the VM is deleted.
	BootDisk *AllocationPolicy_Disk `protobuf:"bytes,8,opt,name=boot_disk,json=bootDisk,proto3" json:"boot_disk,omitempty"`
	// Non-boot disks to be attached for each VM created by this InstancePolicy.
	// New disks will be deleted when the VM is deleted.
	Disks []*AllocationPolicy_AttachedDisk `protobuf:"bytes,6,rep,name=disks,proto3" json:"disks,omitempty"`
	// If specified, VMs will be allocated only inside the matching reservation.
	Reservation string `protobuf:"bytes,7,opt,name=reservation,proto3" json:"reservation,omitempty"`
}

func (x *AllocationPolicy_InstancePolicy) Reset() {
	*x = AllocationPolicy_InstancePolicy{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_InstancePolicy) ProtoMessage() {}

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

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

// Deprecated: Do not use.
func (x *AllocationPolicy_InstancePolicy) GetAllowedMachineTypes() []string {
	if x != nil {
		return x.AllowedMachineTypes
	}
	return nil
}

func (x *AllocationPolicy_InstancePolicy) GetMachineType() string {
	if x != nil {
		return x.MachineType
	}
	return ""
}

func (x *AllocationPolicy_InstancePolicy) GetMinCpuPlatform() string {
	if x != nil {
		return x.MinCpuPlatform
	}
	return ""
}

func (x *AllocationPolicy_InstancePolicy) GetProvisioningModel() AllocationPolicy_ProvisioningModel {
	if x != nil {
		return x.ProvisioningModel
	}
	return AllocationPolicy_PROVISIONING_MODEL_UNSPECIFIED
}

func (x *AllocationPolicy_InstancePolicy) GetAccelerators() []*AllocationPolicy_Accelerator {
	if x != nil {
		return x.Accelerators
	}
	return nil
}

func (x *AllocationPolicy_InstancePolicy) GetBootDisk() *AllocationPolicy_Disk {
	if x != nil {
		return x.BootDisk
	}
	return nil
}

func (x *AllocationPolicy_InstancePolicy) GetDisks() []*AllocationPolicy_AttachedDisk {
	if x != nil {
		return x.Disks
	}
	return nil
}

func (x *AllocationPolicy_InstancePolicy) GetReservation() string {
	if x != nil {
		return x.Reservation
	}
	return ""
}

// Either an InstancePolicy or an instance template.
type AllocationPolicy_InstancePolicyOrTemplate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to PolicyTemplate:
	//
	//	*AllocationPolicy_InstancePolicyOrTemplate_Policy
	//	*AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate
	PolicyTemplate isAllocationPolicy_InstancePolicyOrTemplate_PolicyTemplate `protobuf_oneof:"policy_template"`
	// Set this field true if users want Batch to help fetch drivers from a
	// third party location and install them for GPUs specified in
	// policy.accelerators or instance_template on their behalf. Default is
	// false.
	InstallGpuDrivers bool `protobuf:"varint,3,opt,name=install_gpu_drivers,json=installGpuDrivers,proto3" json:"install_gpu_drivers,omitempty"`
}

func (x *AllocationPolicy_InstancePolicyOrTemplate) Reset() {
	*x = AllocationPolicy_InstancePolicyOrTemplate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_InstancePolicyOrTemplate) ProtoMessage() {}

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

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

func (m *AllocationPolicy_InstancePolicyOrTemplate) GetPolicyTemplate() isAllocationPolicy_InstancePolicyOrTemplate_PolicyTemplate {
	if m != nil {
		return m.PolicyTemplate
	}
	return nil
}

func (x *AllocationPolicy_InstancePolicyOrTemplate) GetPolicy() *AllocationPolicy_InstancePolicy {
	if x, ok := x.GetPolicyTemplate().(*AllocationPolicy_InstancePolicyOrTemplate_Policy); ok {
		return x.Policy
	}
	return nil
}

func (x *AllocationPolicy_InstancePolicyOrTemplate) GetInstanceTemplate() string {
	if x, ok := x.GetPolicyTemplate().(*AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate); ok {
		return x.InstanceTemplate
	}
	return ""
}

func (x *AllocationPolicy_InstancePolicyOrTemplate) GetInstallGpuDrivers() bool {
	if x != nil {
		return x.InstallGpuDrivers
	}
	return false
}

type isAllocationPolicy_InstancePolicyOrTemplate_PolicyTemplate interface {
	isAllocationPolicy_InstancePolicyOrTemplate_PolicyTemplate()
}

type AllocationPolicy_InstancePolicyOrTemplate_Policy struct {
	// InstancePolicy.
	Policy *AllocationPolicy_InstancePolicy `protobuf:"bytes,1,opt,name=policy,proto3,oneof"`
}

type AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate struct {
	// Name of an instance template used to create VMs.
	// Named the field as 'instance_template' instead of 'template' to avoid
	// c++ keyword conflict.
	InstanceTemplate string `protobuf:"bytes,2,opt,name=instance_template,json=instanceTemplate,proto3,oneof"`
}

func (*AllocationPolicy_InstancePolicyOrTemplate_Policy) isAllocationPolicy_InstancePolicyOrTemplate_PolicyTemplate() {
}

func (*AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate) isAllocationPolicy_InstancePolicyOrTemplate_PolicyTemplate() {
}

// A network interface.
type AllocationPolicy_NetworkInterface struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The URL of an existing network resource.
	// You can specify the network as a full or partial URL.
	// For example, the following are all valid URLs:
	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
	// projects/{project}/global/networks/{network}
	// global/networks/{network}
	Network string `protobuf:"bytes,1,opt,name=network,proto3" json:"network,omitempty"`
	// The URL of an existing subnetwork resource in the network.
	// You can specify the subnetwork as a full or partial URL.
	// For example, the following are all valid URLs:
	// https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}
	// projects/{project}/regions/{region}/subnetworks/{subnetwork}
	// regions/{region}/subnetworks/{subnetwork}
	Subnetwork string `protobuf:"bytes,2,opt,name=subnetwork,proto3" json:"subnetwork,omitempty"`
	// Default is false (with an external IP address). Required if
	// no external public IP address is attached to the VM. If no external
	// public IP address, additional configuration is required to allow the VM
	// to access Google Services. See
	// https://cloud.google.com/vpc/docs/configure-private-google-access and
	// https://cloud.google.com/nat/docs/gce-example#create-nat for more
	// information.
	NoExternalIpAddress bool `protobuf:"varint,3,opt,name=no_external_ip_address,json=noExternalIpAddress,proto3" json:"no_external_ip_address,omitempty"`
}

func (x *AllocationPolicy_NetworkInterface) Reset() {
	*x = AllocationPolicy_NetworkInterface{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_NetworkInterface) ProtoMessage() {}

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

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

func (x *AllocationPolicy_NetworkInterface) GetNetwork() string {
	if x != nil {
		return x.Network
	}
	return ""
}

func (x *AllocationPolicy_NetworkInterface) GetSubnetwork() string {
	if x != nil {
		return x.Subnetwork
	}
	return ""
}

func (x *AllocationPolicy_NetworkInterface) GetNoExternalIpAddress() bool {
	if x != nil {
		return x.NoExternalIpAddress
	}
	return false
}

// NetworkPolicy describes VM instance network configurations.
type AllocationPolicy_NetworkPolicy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Network configurations.
	NetworkInterfaces []*AllocationPolicy_NetworkInterface `protobuf:"bytes,1,rep,name=network_interfaces,json=networkInterfaces,proto3" json:"network_interfaces,omitempty"`
}

func (x *AllocationPolicy_NetworkPolicy) Reset() {
	*x = AllocationPolicy_NetworkPolicy{}
	if protoimpl.UnsafeEnabled {
		mi := &file_google_cloud_batch_v1alpha_job_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AllocationPolicy_NetworkPolicy) ProtoMessage() {}

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

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

func (x *AllocationPolicy_NetworkPolicy) GetNetworkInterfaces() []*AllocationPolicy_NetworkInterface {
	if x != nil {
		return x.NetworkInterfaces
	}
	return nil
}

var File_google_cloud_batch_v1alpha_job_proto protoreflect.FileDescriptor

var file_google_cloud_batch_v1alpha_job_proto_rawDesc = []byte{
	0x0a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x6a, 0x6f, 0x62,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
	0x68, 0x61, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, 0x61, 0x74,
	0x63, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x09, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x17,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a,
	0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x0b, 0x74, 0x61,
	0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x61, 0x73,
	0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x74, 0x61, 0x73,
	0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x5d, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64,
	0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
	0x4a, 0x6f, 0x62, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f,
	0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4d, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64,
	0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63,
	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x70,
	0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65,
	0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x59, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x10,
	0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x12, 0x43, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f,
	0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c,
	0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
	0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41,
	0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x53, 0x0a, 0x0c, 0x6e, 0x6f, 0x74,
	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62,
	0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01,
	0x52, 0x0c, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40,
	0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,
	0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63,
	0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61,
	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
	0x0a, 0x6c, 0x6f, 0x67, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x51, 0x0a, 0x0d, 0x6e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
	0x4a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39,
	0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4e, 0x0a, 0x10, 0x53, 0x63, 0x68,
	0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a,
	0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x4c, 0x49,
	0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
	0x12, 0x17, 0x0a, 0x13, 0x41, 0x53, 0x5f, 0x53, 0x4f, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x5f, 0x50,
	0x4f, 0x53, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x3a, 0x51, 0xea, 0x41, 0x4e, 0x0a, 0x18,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4a, 0x6f, 0x62, 0x12, 0x32, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
	0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, 0x62, 0x7d, 0x22, 0xc8, 0x01, 0x0a,
	0x0a, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x54, 0x0a, 0x0b, 0x64,
	0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x6f,
	0x67, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x73, 0x50, 0x61, 0x74, 0x68, 0x22, 0x47,
	0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a,
	0x17, 0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53,
	0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4c,
	0x4f, 0x55, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a,
	0x04, 0x50, 0x41, 0x54, 0x48, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x0d, 0x4a, 0x6f, 0x62, 0x44,
	0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x4a, 0x0a, 0x05, 0x69, 0x74, 0x65,
	0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65,
	0x6e, 0x63, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05,
	0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x68, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
	0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x2e,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0x45, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a,
	0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06,
	0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x49,
	0x53, 0x48, 0x45, 0x44, 0x10, 0x03, 0x22, 0xe5, 0x07, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
	0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61,
	0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45,
	0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x56, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e,
	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x3c, 0x0a,
	0x0c, 0x72, 0x75, 0x6e, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b,
	0x72, 0x75, 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbf, 0x01, 0x0a, 0x0e,
	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21,
	0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x6d, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e,
	0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74,
	0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x76,
	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x11, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x1a, 0xfb, 0x01,
	0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x59, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a,
	0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x09,
	0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73,
	0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x0f, 0x54,
	0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
	0x12, 0x4b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0x7b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54,
	0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, 0x45, 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a,
	0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07,
	0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43,
	0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c,
	0x45, 0x44, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e,
	0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x06, 0x22, 0xc7,
	0x03, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70,
	0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62,
	0x54, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x4d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
	0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x1a, 0xf4, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61,
	0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x4e,
	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x6a, 0x6f,
	0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74,
	0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4a,
	0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x74,
	0x61, 0x73, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x61, 0x73,
	0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x6e,
	0x65, 0x77, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x4b, 0x0a, 0x04, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x42,
	0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x01,
	0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43,
	0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x02, 0x22, 0xe6, 0x13, 0x0a, 0x10, 0x41, 0x6c, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x57, 0x0a,
	0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4c, 0x6f,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x08, 0x6c, 0x6f,
	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
	0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61,
	0x6e, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73,
	0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
	0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f,
	0x6c, 0x69, 0x63, 0x79, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6c,
	0x69, 0x63, 0x79, 0x4f, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x09, 0x69,
	0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x74,
	0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x18, 0x03,
	0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e,
	0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x12, 0x73, 0x0a, 0x13, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
	0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x70, 0x72,
	0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73,
	0x12, 0x36, 0x0a, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x02, 0x18, 0x01, 0x52, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x53, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x53,
	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0e, 0x73,
	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x50, 0x0a,
	0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74,
	0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4c, 0x61, 0x62, 0x65,
	0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12,
	0x54, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4e,
	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x07, 0x6e, 0x65,
	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x1a, 0x68, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x5f, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f,
	0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a,
	0x9f, 0x01, 0x0a, 0x04, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x12, 0x1c, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x67, 0x62, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x69, 0x7a, 0x65, 0x47, 0x62, 0x12, 0x25, 0x0a, 0x0e, 0x64,
	0x69, 0x73, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61,
	0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x1a, 0xb2, 0x01, 0x0a, 0x0c, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x69,
	0x73, 0x6b, 0x12, 0x4e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
	0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x44, 0x69,
	0x73, 0x6b, 0x12, 0x25, 0x0a, 0x0d, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x64,
	0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x78, 0x69,
	0x73, 0x74, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x61, 0x74,
	0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x1a, 0x6b, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x6c, 0x65,
	0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x32, 0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x64,
	0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01,
	0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x47, 0x70, 0x75, 0x44, 0x72, 0x69, 0x76,
	0x65, 0x72, 0x73, 0x1a, 0xa5, 0x04, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x36, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65,
	0x64, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x65, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x21,
	0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x69, 0x6e,
	0x43, 0x70, 0x75, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x6d, 0x0a, 0x12, 0x70,
	0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61,
	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69,
	0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x5c, 0x0a, 0x0c, 0x61, 0x63,
	0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c,
	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41,
	0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65,
	0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74,
	0x5f, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68,
	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x08,
	0x62, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x4f, 0x0a, 0x05, 0x64, 0x69, 0x73, 0x6b,
	0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61,
	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x44, 0x69,
	0x73, 0x6b, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73,
	0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xe3, 0x01, 0x0a, 0x18,
	0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4f, 0x72,
	0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69,
	0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12,
	0x2d, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e,
	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x2e,
	0x0a, 0x13, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x64, 0x72,
	0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x6e, 0x73,
	0x74, 0x61, 0x6c, 0x6c, 0x47, 0x70, 0x75, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x42, 0x11,
	0x0a, 0x0f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
	0x65, 0x1a, 0x81, 0x01, 0x0a, 0x10, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x74,
	0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
	0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x12, 0x33, 0x0a, 0x16, 0x6e, 0x6f, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f,
	0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x13, 0x6e, 0x6f, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x7d, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6c, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
	0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e,
	0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
	0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63,
	0x65, 0x52, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66,
	0x61, 0x63, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
	0x60, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x4d,
	0x6f, 0x64, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f,
	0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e,
	0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x50, 0x4f, 0x54, 0x10, 0x02,
	0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x10,
	0x03, 0x22, 0x8e, 0x07, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
	0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b,
	0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68,
	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65,
	0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73,
	0x6d, 0x12, 0x63, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f,
	0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63,
	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x6f,
	0x6c, 0x69, 0x63, 0x79, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67,
	0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x59, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x41,
	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
	0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63,
	0x79, 0x12, 0x49, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54,
	0x61, 0x73, 0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x11,
	0x74, 0x61, 0x73, 0x6b, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
	0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31, 0x61,
	0x6c, 0x70, 0x68, 0x61, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
	0x52, 0x10, 0x74, 0x61, 0x73, 0x6b, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
	0x74, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x10, 0x74, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64,
	0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x68, 0x6f, 0x73,
	0x74, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72,
	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12,
	0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x73,
	0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
	0x69, 0x76, 0x65, 0x53, 0x73, 0x68, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
	0x01, 0x22, 0x4e, 0x0a, 0x10, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x50,
	0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c,
	0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x53, 0x5f, 0x53,
	0x4f, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x10,
	0x01, 0x3a, 0x6f, 0xea, 0x41, 0x6c, 0x0a, 0x1e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x73,
	0x6b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x4a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
	0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, 0x62, 0x7d, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x7d, 0x22, 0x3e, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63,
	0x6f, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70,
	0x65, 0x73, 0x42, 0xcd, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x76, 0x31,
	0x61, 0x6c, 0x70, 0x68, 0x61, 0x42, 0x08, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
	0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62,
	0x61, 0x74, 0x63, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x62, 0x61, 0x74,
	0x63, 0x68, 0xa2, 0x02, 0x03, 0x47, 0x43, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x56, 0x31,
	0x41, 0x6c, 0x70, 0x68, 0x61, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43,
	0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70,
	0x68, 0x61, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f,
	0x75, 0x64, 0x3a, 0x3a, 0x42, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70,
	0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_batch_v1alpha_job_proto_rawDescOnce sync.Once
	file_google_cloud_batch_v1alpha_job_proto_rawDescData = file_google_cloud_batch_v1alpha_job_proto_rawDesc
)

func file_google_cloud_batch_v1alpha_job_proto_rawDescGZIP() []byte {
	file_google_cloud_batch_v1alpha_job_proto_rawDescOnce.Do(func() {
		file_google_cloud_batch_v1alpha_job_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_batch_v1alpha_job_proto_rawDescData)
	})
	return file_google_cloud_batch_v1alpha_job_proto_rawDescData
}

var file_google_cloud_batch_v1alpha_job_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
var file_google_cloud_batch_v1alpha_job_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
var file_google_cloud_batch_v1alpha_job_proto_goTypes = []interface{}{
	(Job_SchedulingPolicy)(0),               // 0: google.cloud.batch.v1alpha.Job.SchedulingPolicy
	(LogsPolicy_Destination)(0),             // 1: google.cloud.batch.v1alpha.LogsPolicy.Destination
	(JobDependency_Type)(0),                 // 2: google.cloud.batch.v1alpha.JobDependency.Type
	(JobStatus_State)(0),                    // 3: google.cloud.batch.v1alpha.JobStatus.State
	(JobNotification_Type)(0),               // 4: google.cloud.batch.v1alpha.JobNotification.Type
	(AllocationPolicy_ProvisioningModel)(0), // 5: google.cloud.batch.v1alpha.AllocationPolicy.ProvisioningModel
	(TaskGroup_SchedulingPolicy)(0),         // 6: google.cloud.batch.v1alpha.TaskGroup.SchedulingPolicy
	(*Job)(nil),                             // 7: google.cloud.batch.v1alpha.Job
	(*LogsPolicy)(nil),                      // 8: google.cloud.batch.v1alpha.LogsPolicy
	(*JobDependency)(nil),                   // 9: google.cloud.batch.v1alpha.JobDependency
	(*JobStatus)(nil),                       // 10: google.cloud.batch.v1alpha.JobStatus
	(*JobNotification)(nil),                 // 11: google.cloud.batch.v1alpha.JobNotification
	(*AllocationPolicy)(nil),                // 12: google.cloud.batch.v1alpha.AllocationPolicy
	(*TaskGroup)(nil),                       // 13: google.cloud.batch.v1alpha.TaskGroup
	(*ServiceAccount)(nil),                  // 14: google.cloud.batch.v1alpha.ServiceAccount
	nil,                                     // 15: google.cloud.batch.v1alpha.Job.LabelsEntry
	nil,                                     // 16: google.cloud.batch.v1alpha.JobDependency.ItemsEntry
	(*JobStatus_InstanceStatus)(nil),        // 17: google.cloud.batch.v1alpha.JobStatus.InstanceStatus
	(*JobStatus_TaskGroupStatus)(nil),       // 18: google.cloud.batch.v1alpha.JobStatus.TaskGroupStatus
	nil,                                     // 19: google.cloud.batch.v1alpha.JobStatus.TaskGroupsEntry
	nil,                                     // 20: google.cloud.batch.v1alpha.JobStatus.TaskGroupStatus.CountsEntry
	(*JobNotification_Message)(nil),         // 21: google.cloud.batch.v1alpha.JobNotification.Message
	(*AllocationPolicy_LocationPolicy)(nil), // 22: google.cloud.batch.v1alpha.AllocationPolicy.LocationPolicy
	(*AllocationPolicy_Disk)(nil),           // 23: google.cloud.batch.v1alpha.AllocationPolicy.Disk
	(*AllocationPolicy_AttachedDisk)(nil),   // 24: google.cloud.batch.v1alpha.AllocationPolicy.AttachedDisk
	(*AllocationPolicy_Accelerator)(nil),    // 25: google.cloud.batch.v1alpha.AllocationPolicy.Accelerator
	(*AllocationPolicy_InstancePolicy)(nil), // 26: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy
	(*AllocationPolicy_InstancePolicyOrTemplate)(nil), // 27: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicyOrTemplate
	(*AllocationPolicy_NetworkInterface)(nil),         // 28: google.cloud.batch.v1alpha.AllocationPolicy.NetworkInterface
	(*AllocationPolicy_NetworkPolicy)(nil),            // 29: google.cloud.batch.v1alpha.AllocationPolicy.NetworkPolicy
	nil,                                               // 30: google.cloud.batch.v1alpha.AllocationPolicy.LabelsEntry
	nil,                                               // 31: google.cloud.batch.v1alpha.TaskGroup.LabelsEntry
	(*timestamppb.Timestamp)(nil),                     // 32: google.protobuf.Timestamp
	(*StatusEvent)(nil),                               // 33: google.cloud.batch.v1alpha.StatusEvent
	(*durationpb.Duration)(nil),                       // 34: google.protobuf.Duration
	(*TaskSpec)(nil),                                  // 35: google.cloud.batch.v1alpha.TaskSpec
	(*Environment)(nil),                               // 36: google.cloud.batch.v1alpha.Environment
	(TaskStatus_State)(0),                             // 37: google.cloud.batch.v1alpha.TaskStatus.State
}
var file_google_cloud_batch_v1alpha_job_proto_depIdxs = []int32{
	13, // 0: google.cloud.batch.v1alpha.Job.task_groups:type_name -> google.cloud.batch.v1alpha.TaskGroup
	0,  // 1: google.cloud.batch.v1alpha.Job.scheduling_policy:type_name -> google.cloud.batch.v1alpha.Job.SchedulingPolicy
	9,  // 2: google.cloud.batch.v1alpha.Job.dependencies:type_name -> google.cloud.batch.v1alpha.JobDependency
	12, // 3: google.cloud.batch.v1alpha.Job.allocation_policy:type_name -> google.cloud.batch.v1alpha.AllocationPolicy
	15, // 4: google.cloud.batch.v1alpha.Job.labels:type_name -> google.cloud.batch.v1alpha.Job.LabelsEntry
	10, // 5: google.cloud.batch.v1alpha.Job.status:type_name -> google.cloud.batch.v1alpha.JobStatus
	11, // 6: google.cloud.batch.v1alpha.Job.notification:type_name -> google.cloud.batch.v1alpha.JobNotification
	32, // 7: google.cloud.batch.v1alpha.Job.create_time:type_name -> google.protobuf.Timestamp
	32, // 8: google.cloud.batch.v1alpha.Job.update_time:type_name -> google.protobuf.Timestamp
	8,  // 9: google.cloud.batch.v1alpha.Job.logs_policy:type_name -> google.cloud.batch.v1alpha.LogsPolicy
	11, // 10: google.cloud.batch.v1alpha.Job.notifications:type_name -> google.cloud.batch.v1alpha.JobNotification
	1,  // 11: google.cloud.batch.v1alpha.LogsPolicy.destination:type_name -> google.cloud.batch.v1alpha.LogsPolicy.Destination
	16, // 12: google.cloud.batch.v1alpha.JobDependency.items:type_name -> google.cloud.batch.v1alpha.JobDependency.ItemsEntry
	3,  // 13: google.cloud.batch.v1alpha.JobStatus.state:type_name -> google.cloud.batch.v1alpha.JobStatus.State
	33, // 14: google.cloud.batch.v1alpha.JobStatus.status_events:type_name -> google.cloud.batch.v1alpha.StatusEvent
	19, // 15: google.cloud.batch.v1alpha.JobStatus.task_groups:type_name -> google.cloud.batch.v1alpha.JobStatus.TaskGroupsEntry
	34, // 16: google.cloud.batch.v1alpha.JobStatus.run_duration:type_name -> google.protobuf.Duration
	21, // 17: google.cloud.batch.v1alpha.JobNotification.message:type_name -> google.cloud.batch.v1alpha.JobNotification.Message
	22, // 18: google.cloud.batch.v1alpha.AllocationPolicy.location:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.LocationPolicy
	26, // 19: google.cloud.batch.v1alpha.AllocationPolicy.instance:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy
	27, // 20: google.cloud.batch.v1alpha.AllocationPolicy.instances:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicyOrTemplate
	5,  // 21: google.cloud.batch.v1alpha.AllocationPolicy.provisioning_models:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.ProvisioningModel
	14, // 22: google.cloud.batch.v1alpha.AllocationPolicy.service_account:type_name -> google.cloud.batch.v1alpha.ServiceAccount
	30, // 23: google.cloud.batch.v1alpha.AllocationPolicy.labels:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.LabelsEntry
	29, // 24: google.cloud.batch.v1alpha.AllocationPolicy.network:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.NetworkPolicy
	35, // 25: google.cloud.batch.v1alpha.TaskGroup.task_spec:type_name -> google.cloud.batch.v1alpha.TaskSpec
	6,  // 26: google.cloud.batch.v1alpha.TaskGroup.scheduling_policy:type_name -> google.cloud.batch.v1alpha.TaskGroup.SchedulingPolicy
	12, // 27: google.cloud.batch.v1alpha.TaskGroup.allocation_policy:type_name -> google.cloud.batch.v1alpha.AllocationPolicy
	31, // 28: google.cloud.batch.v1alpha.TaskGroup.labels:type_name -> google.cloud.batch.v1alpha.TaskGroup.LabelsEntry
	36, // 29: google.cloud.batch.v1alpha.TaskGroup.task_environments:type_name -> google.cloud.batch.v1alpha.Environment
	2,  // 30: google.cloud.batch.v1alpha.JobDependency.ItemsEntry.value:type_name -> google.cloud.batch.v1alpha.JobDependency.Type
	5,  // 31: google.cloud.batch.v1alpha.JobStatus.InstanceStatus.provisioning_model:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.ProvisioningModel
	20, // 32: google.cloud.batch.v1alpha.JobStatus.TaskGroupStatus.counts:type_name -> google.cloud.batch.v1alpha.JobStatus.TaskGroupStatus.CountsEntry
	17, // 33: google.cloud.batch.v1alpha.JobStatus.TaskGroupStatus.instances:type_name -> google.cloud.batch.v1alpha.JobStatus.InstanceStatus
	18, // 34: google.cloud.batch.v1alpha.JobStatus.TaskGroupsEntry.value:type_name -> google.cloud.batch.v1alpha.JobStatus.TaskGroupStatus
	4,  // 35: google.cloud.batch.v1alpha.JobNotification.Message.type:type_name -> google.cloud.batch.v1alpha.JobNotification.Type
	3,  // 36: google.cloud.batch.v1alpha.JobNotification.Message.new_job_state:type_name -> google.cloud.batch.v1alpha.JobStatus.State
	37, // 37: google.cloud.batch.v1alpha.JobNotification.Message.new_task_state:type_name -> google.cloud.batch.v1alpha.TaskStatus.State
	23, // 38: google.cloud.batch.v1alpha.AllocationPolicy.AttachedDisk.new_disk:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.Disk
	5,  // 39: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy.provisioning_model:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.ProvisioningModel
	25, // 40: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy.accelerators:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.Accelerator
	23, // 41: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy.boot_disk:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.Disk
	24, // 42: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy.disks:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.AttachedDisk
	26, // 43: google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicyOrTemplate.policy:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.InstancePolicy
	28, // 44: google.cloud.batch.v1alpha.AllocationPolicy.NetworkPolicy.network_interfaces:type_name -> google.cloud.batch.v1alpha.AllocationPolicy.NetworkInterface
	45, // [45:45] is the sub-list for method output_type
	45, // [45:45] is the sub-list for method input_type
	45, // [45:45] is the sub-list for extension type_name
	45, // [45:45] is the sub-list for extension extendee
	0,  // [0:45] is the sub-list for field type_name
}

func init() { file_google_cloud_batch_v1alpha_job_proto_init() }
func file_google_cloud_batch_v1alpha_job_proto_init() {
	if File_google_cloud_batch_v1alpha_job_proto != nil {
		return
	}
	file_google_cloud_batch_v1alpha_task_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Job); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogsPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobDependency); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobNotification); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TaskGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ServiceAccount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobStatus_InstanceStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobStatus_TaskGroupStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*JobNotification_Message); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_LocationPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_Disk); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_AttachedDisk); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_Accelerator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_InstancePolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_InstancePolicyOrTemplate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_NetworkInterface); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_google_cloud_batch_v1alpha_job_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AllocationPolicy_NetworkPolicy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_google_cloud_batch_v1alpha_job_proto_msgTypes[16].OneofWrappers = []interface{}{
		(*AllocationPolicy_Disk_Image)(nil),
		(*AllocationPolicy_Disk_Snapshot)(nil),
	}
	file_google_cloud_batch_v1alpha_job_proto_msgTypes[17].OneofWrappers = []interface{}{
		(*AllocationPolicy_AttachedDisk_NewDisk)(nil),
		(*AllocationPolicy_AttachedDisk_ExistingDisk)(nil),
	}
	file_google_cloud_batch_v1alpha_job_proto_msgTypes[20].OneofWrappers = []interface{}{
		(*AllocationPolicy_InstancePolicyOrTemplate_Policy)(nil),
		(*AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_batch_v1alpha_job_proto_rawDesc,
			NumEnums:      7,
			NumMessages:   25,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_google_cloud_batch_v1alpha_job_proto_goTypes,
		DependencyIndexes: file_google_cloud_batch_v1alpha_job_proto_depIdxs,
		EnumInfos:         file_google_cloud_batch_v1alpha_job_proto_enumTypes,
		MessageInfos:      file_google_cloud_batch_v1alpha_job_proto_msgTypes,
	}.Build()
	File_google_cloud_batch_v1alpha_job_proto = out.File
	file_google_cloud_batch_v1alpha_job_proto_rawDesc = nil
	file_google_cloud_batch_v1alpha_job_proto_goTypes = nil
	file_google_cloud_batch_v1alpha_job_proto_depIdxs = nil
}
