// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.31.0 // protoc v4.25.1 // source: gateway.proto package proto import ( _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) 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) ) type SyncContainerWorkspaceOperation int32 const ( SyncContainerWorkspaceOperation_WRITE SyncContainerWorkspaceOperation = 0 SyncContainerWorkspaceOperation_DELETE SyncContainerWorkspaceOperation = 1 SyncContainerWorkspaceOperation_MOVED SyncContainerWorkspaceOperation = 2 ) // Enum value maps for SyncContainerWorkspaceOperation. var ( SyncContainerWorkspaceOperation_name = map[int32]string{ 0: "WRITE", 1: "DELETE", 2: "MOVED", } SyncContainerWorkspaceOperation_value = map[string]int32{ "WRITE": 0, "DELETE": 1, "MOVED": 2, } ) func (x SyncContainerWorkspaceOperation) Enum() *SyncContainerWorkspaceOperation { p := new(SyncContainerWorkspaceOperation) *p = x return p } func (x SyncContainerWorkspaceOperation) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (SyncContainerWorkspaceOperation) Descriptor() protoreflect.EnumDescriptor { return file_gateway_proto_enumTypes[0].Descriptor() } func (SyncContainerWorkspaceOperation) Type() protoreflect.EnumType { return &file_gateway_proto_enumTypes[0] } func (x SyncContainerWorkspaceOperation) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use SyncContainerWorkspaceOperation.Descriptor instead. func (SyncContainerWorkspaceOperation) EnumDescriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{0} } type AuthorizeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *AuthorizeRequest) Reset() { *x = AuthorizeRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AuthorizeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuthorizeRequest) ProtoMessage() {} func (x *AuthorizeRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 AuthorizeRequest.ProtoReflect.Descriptor instead. func (*AuthorizeRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{0} } type AuthorizeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` NewToken string `protobuf:"bytes,3,opt,name=new_token,json=newToken,proto3" json:"new_token,omitempty"` ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *AuthorizeResponse) Reset() { *x = AuthorizeResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AuthorizeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AuthorizeResponse) ProtoMessage() {} func (x *AuthorizeResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 AuthorizeResponse.ProtoReflect.Descriptor instead. func (*AuthorizeResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{1} } func (x *AuthorizeResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *AuthorizeResponse) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *AuthorizeResponse) GetNewToken() string { if x != nil { return x.NewToken } return "" } func (x *AuthorizeResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type SignPayloadRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Payload []byte `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` } func (x *SignPayloadRequest) Reset() { *x = SignPayloadRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignPayloadRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignPayloadRequest) ProtoMessage() {} func (x *SignPayloadRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 SignPayloadRequest.ProtoReflect.Descriptor instead. func (*SignPayloadRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{2} } func (x *SignPayloadRequest) GetPayload() []byte { if x != nil { return x.Payload } return nil } type SignPayloadResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *SignPayloadResponse) Reset() { *x = SignPayloadResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SignPayloadResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SignPayloadResponse) ProtoMessage() {} func (x *SignPayloadResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 SignPayloadResponse.ProtoReflect.Descriptor instead. func (*SignPayloadResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{3} } func (x *SignPayloadResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *SignPayloadResponse) GetSignature() string { if x != nil { return x.Signature } return "" } func (x *SignPayloadResponse) GetTimestamp() int64 { if x != nil { return x.Timestamp } return 0 } func (x *SignPayloadResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type ObjectMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` } func (x *ObjectMetadata) Reset() { *x = ObjectMetadata{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ObjectMetadata) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectMetadata) ProtoMessage() {} func (x *ObjectMetadata) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 ObjectMetadata.ProtoReflect.Descriptor instead. func (*ObjectMetadata) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{4} } func (x *ObjectMetadata) GetName() string { if x != nil { return x.Name } return "" } func (x *ObjectMetadata) GetSize() int64 { if x != nil { return x.Size } return 0 } type HeadObjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` SupportsPutHeaders bool `protobuf:"varint,2,opt,name=supports_put_headers,json=supportsPutHeaders,proto3" json:"supports_put_headers,omitempty"` } func (x *HeadObjectRequest) Reset() { *x = HeadObjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HeadObjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*HeadObjectRequest) ProtoMessage() {} func (x *HeadObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 HeadObjectRequest.ProtoReflect.Descriptor instead. func (*HeadObjectRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{5} } func (x *HeadObjectRequest) GetHash() string { if x != nil { return x.Hash } return "" } func (x *HeadObjectRequest) GetSupportsPutHeaders() bool { if x != nil { return x.SupportsPutHeaders } return false } type HeadObjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` Exists bool `protobuf:"varint,2,opt,name=exists,proto3" json:"exists,omitempty"` ObjectId string `protobuf:"bytes,3,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` ObjectMetadata *ObjectMetadata `protobuf:"bytes,4,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` ErrorMsg string `protobuf:"bytes,5,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` UseWorkspaceStorage bool `protobuf:"varint,6,opt,name=use_workspace_storage,json=useWorkspaceStorage,proto3" json:"use_workspace_storage,omitempty"` } func (x *HeadObjectResponse) Reset() { *x = HeadObjectResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *HeadObjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*HeadObjectResponse) ProtoMessage() {} func (x *HeadObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 HeadObjectResponse.ProtoReflect.Descriptor instead. func (*HeadObjectResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{6} } func (x *HeadObjectResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *HeadObjectResponse) GetExists() bool { if x != nil { return x.Exists } return false } func (x *HeadObjectResponse) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *HeadObjectResponse) GetObjectMetadata() *ObjectMetadata { if x != nil { return x.ObjectMetadata } return nil } func (x *HeadObjectResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } func (x *HeadObjectResponse) GetUseWorkspaceStorage() bool { if x != nil { return x.UseWorkspaceStorage } return false } type CreateObjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ObjectMetadata *ObjectMetadata `protobuf:"bytes,1,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` Hash string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` Overwrite bool `protobuf:"varint,4,opt,name=overwrite,proto3" json:"overwrite,omitempty"` SupportsPutHeaders bool `protobuf:"varint,5,opt,name=supports_put_headers,json=supportsPutHeaders,proto3" json:"supports_put_headers,omitempty"` // When > 0 the client can upload the object as concurrent parts of this // many bytes; the gateway answers with upload_parts instead of a single // presigned_url for objects larger than one part. MultipartPartSize int64 `protobuf:"varint,6,opt,name=multipart_part_size,json=multipartPartSize,proto3" json:"multipart_part_size,omitempty"` // Byte length of the archive the parts cover (size is the manifest's // uncompressed total, which is what the object record stores). MultipartTotalSize int64 `protobuf:"varint,7,opt,name=multipart_total_size,json=multipartTotalSize,proto3" json:"multipart_total_size,omitempty"` } func (x *CreateObjectRequest) Reset() { *x = CreateObjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateObjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateObjectRequest) ProtoMessage() {} func (x *CreateObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 CreateObjectRequest.ProtoReflect.Descriptor instead. func (*CreateObjectRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{7} } func (x *CreateObjectRequest) GetObjectMetadata() *ObjectMetadata { if x != nil { return x.ObjectMetadata } return nil } func (x *CreateObjectRequest) GetHash() string { if x != nil { return x.Hash } return "" } func (x *CreateObjectRequest) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *CreateObjectRequest) GetOverwrite() bool { if x != nil { return x.Overwrite } return false } func (x *CreateObjectRequest) GetSupportsPutHeaders() bool { if x != nil { return x.SupportsPutHeaders } return false } func (x *CreateObjectRequest) GetMultipartPartSize() int64 { if x != nil { return x.MultipartPartSize } return 0 } func (x *CreateObjectRequest) GetMultipartTotalSize() int64 { if x != nil { return x.MultipartTotalSize } return 0 } type ObjectUploadPart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` Start int64 `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"` End int64 `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"` Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` } func (x *ObjectUploadPart) Reset() { *x = ObjectUploadPart{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ObjectUploadPart) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectUploadPart) ProtoMessage() {} func (x *ObjectUploadPart) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[8] 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 ObjectUploadPart.ProtoReflect.Descriptor instead. func (*ObjectUploadPart) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{8} } func (x *ObjectUploadPart) GetNumber() uint32 { if x != nil { return x.Number } return 0 } func (x *ObjectUploadPart) GetStart() int64 { if x != nil { return x.Start } return 0 } func (x *ObjectUploadPart) GetEnd() int64 { if x != nil { return x.End } return 0 } func (x *ObjectUploadPart) GetUrl() string { if x != nil { return x.Url } return "" } type CreateObjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` PresignedUrl string `protobuf:"bytes,3,opt,name=presigned_url,json=presignedUrl,proto3" json:"presigned_url,omitempty"` ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` PutHeaders map[string]string `protobuf:"bytes,5,rep,name=put_headers,json=putHeaders,proto3" json:"put_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` UploadId string `protobuf:"bytes,6,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` UploadParts []*ObjectUploadPart `protobuf:"bytes,7,rep,name=upload_parts,json=uploadParts,proto3" json:"upload_parts,omitempty"` } func (x *CreateObjectResponse) Reset() { *x = CreateObjectResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateObjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateObjectResponse) ProtoMessage() {} func (x *CreateObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[9] 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 CreateObjectResponse.ProtoReflect.Descriptor instead. func (*CreateObjectResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{9} } func (x *CreateObjectResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreateObjectResponse) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *CreateObjectResponse) GetPresignedUrl() string { if x != nil { return x.PresignedUrl } return "" } func (x *CreateObjectResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } func (x *CreateObjectResponse) GetPutHeaders() map[string]string { if x != nil { return x.PutHeaders } return nil } func (x *CreateObjectResponse) GetUploadId() string { if x != nil { return x.UploadId } return "" } func (x *CreateObjectResponse) GetUploadParts() []*ObjectUploadPart { if x != nil { return x.UploadParts } return nil } type ObjectUploadedPart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` } func (x *ObjectUploadedPart) Reset() { *x = ObjectUploadedPart{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ObjectUploadedPart) String() string { return protoimpl.X.MessageStringOf(x) } func (*ObjectUploadedPart) ProtoMessage() {} func (x *ObjectUploadedPart) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 ObjectUploadedPart.ProtoReflect.Descriptor instead. func (*ObjectUploadedPart) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{10} } func (x *ObjectUploadedPart) GetNumber() uint32 { if x != nil { return x.Number } return 0 } func (x *ObjectUploadedPart) GetEtag() string { if x != nil { return x.Etag } return "" } type CompleteObjectUploadRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ObjectId string `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` UploadId string `protobuf:"bytes,2,opt,name=upload_id,json=uploadId,proto3" json:"upload_id,omitempty"` Parts []*ObjectUploadedPart `protobuf:"bytes,3,rep,name=parts,proto3" json:"parts,omitempty"` } func (x *CompleteObjectUploadRequest) Reset() { *x = CompleteObjectUploadRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CompleteObjectUploadRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompleteObjectUploadRequest) ProtoMessage() {} func (x *CompleteObjectUploadRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 CompleteObjectUploadRequest.ProtoReflect.Descriptor instead. func (*CompleteObjectUploadRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{11} } func (x *CompleteObjectUploadRequest) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *CompleteObjectUploadRequest) GetUploadId() string { if x != nil { return x.UploadId } return "" } func (x *CompleteObjectUploadRequest) GetParts() []*ObjectUploadedPart { if x != nil { return x.Parts } return nil } type CompleteObjectUploadResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *CompleteObjectUploadResponse) Reset() { *x = CompleteObjectUploadResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CompleteObjectUploadResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompleteObjectUploadResponse) ProtoMessage() {} func (x *CompleteObjectUploadResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[12] 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 CompleteObjectUploadResponse.ProtoReflect.Descriptor instead. func (*CompleteObjectUploadResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{12} } func (x *CompleteObjectUploadResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CompleteObjectUploadResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type PutObjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ObjectContent []byte `protobuf:"bytes,1,opt,name=object_content,json=objectContent,proto3" json:"object_content,omitempty"` ObjectMetadata *ObjectMetadata `protobuf:"bytes,2,opt,name=object_metadata,json=objectMetadata,proto3" json:"object_metadata,omitempty"` Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"` Overwrite bool `protobuf:"varint,4,opt,name=overwrite,proto3" json:"overwrite,omitempty"` } func (x *PutObjectRequest) Reset() { *x = PutObjectRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PutObjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PutObjectRequest) ProtoMessage() {} func (x *PutObjectRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[13] 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 PutObjectRequest.ProtoReflect.Descriptor instead. func (*PutObjectRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{13} } func (x *PutObjectRequest) GetObjectContent() []byte { if x != nil { return x.ObjectContent } return nil } func (x *PutObjectRequest) GetObjectMetadata() *ObjectMetadata { if x != nil { return x.ObjectMetadata } return nil } func (x *PutObjectRequest) GetHash() string { if x != nil { return x.Hash } return "" } func (x *PutObjectRequest) GetOverwrite() bool { if x != nil { return x.Overwrite } return false } type PutObjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *PutObjectResponse) Reset() { *x = PutObjectResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PutObjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PutObjectResponse) ProtoMessage() {} func (x *PutObjectResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 PutObjectResponse.ProtoReflect.Descriptor instead. func (*PutObjectResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{14} } func (x *PutObjectResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *PutObjectResponse) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *PutObjectResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } // Incremental sync: instead of re-uploading a whole workspace archive when a // few files changed, the client uploads an archive holding only the added and // modified files (the delta) and the gateway merges it with the archive of a // previous object of the same workspace into the new object. type CreateObjectDeltaRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` // identity of the merged object (content manifest hash) Size int64 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` // expected size of the merged archive BaseObjectId string `protobuf:"bytes,3,opt,name=base_object_id,json=baseObjectId,proto3" json:"base_object_id,omitempty"` // object the delta is relative to DeltaSize int64 `protobuf:"varint,4,opt,name=delta_size,json=deltaSize,proto3" json:"delta_size,omitempty"` } func (x *CreateObjectDeltaRequest) Reset() { *x = CreateObjectDeltaRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateObjectDeltaRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateObjectDeltaRequest) ProtoMessage() {} func (x *CreateObjectDeltaRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 CreateObjectDeltaRequest.ProtoReflect.Descriptor instead. func (*CreateObjectDeltaRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{15} } func (x *CreateObjectDeltaRequest) GetHash() string { if x != nil { return x.Hash } return "" } func (x *CreateObjectDeltaRequest) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *CreateObjectDeltaRequest) GetBaseObjectId() string { if x != nil { return x.BaseObjectId } return "" } func (x *CreateObjectDeltaRequest) GetDeltaSize() int64 { if x != nil { return x.DeltaSize } return 0 } type CreateObjectDeltaResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` PresignedUrl string `protobuf:"bytes,3,opt,name=presigned_url,json=presignedUrl,proto3" json:"presigned_url,omitempty"` // PUT the delta archive here PutHeaders map[string]string `protobuf:"bytes,4,rep,name=put_headers,json=putHeaders,proto3" json:"put_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` ErrorMsg string `protobuf:"bytes,5,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` BaseMissing bool `protobuf:"varint,6,opt,name=base_missing,json=baseMissing,proto3" json:"base_missing,omitempty"` // base object is gone: fall back to a full upload } func (x *CreateObjectDeltaResponse) Reset() { *x = CreateObjectDeltaResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateObjectDeltaResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateObjectDeltaResponse) ProtoMessage() {} func (x *CreateObjectDeltaResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 CreateObjectDeltaResponse.ProtoReflect.Descriptor instead. func (*CreateObjectDeltaResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{16} } func (x *CreateObjectDeltaResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreateObjectDeltaResponse) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *CreateObjectDeltaResponse) GetPresignedUrl() string { if x != nil { return x.PresignedUrl } return "" } func (x *CreateObjectDeltaResponse) GetPutHeaders() map[string]string { if x != nil { return x.PutHeaders } return nil } func (x *CreateObjectDeltaResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } func (x *CreateObjectDeltaResponse) GetBaseMissing() bool { if x != nil { return x.BaseMissing } return false } type CommitObjectDeltaRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ObjectId string `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` BaseObjectId string `protobuf:"bytes,2,opt,name=base_object_id,json=baseObjectId,proto3" json:"base_object_id,omitempty"` RemovedPaths []string `protobuf:"bytes,3,rep,name=removed_paths,json=removedPaths,proto3" json:"removed_paths,omitempty"` // base archive entries that no longer exist } func (x *CommitObjectDeltaRequest) Reset() { *x = CommitObjectDeltaRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CommitObjectDeltaRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CommitObjectDeltaRequest) ProtoMessage() {} func (x *CommitObjectDeltaRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 CommitObjectDeltaRequest.ProtoReflect.Descriptor instead. func (*CommitObjectDeltaRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{17} } func (x *CommitObjectDeltaRequest) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *CommitObjectDeltaRequest) GetBaseObjectId() string { if x != nil { return x.BaseObjectId } return "" } func (x *CommitObjectDeltaRequest) GetRemovedPaths() []string { if x != nil { return x.RemovedPaths } return nil } type CommitObjectDeltaResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ObjectId string `protobuf:"bytes,2,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` ErrorMsg string `protobuf:"bytes,4,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *CommitObjectDeltaResponse) Reset() { *x = CommitObjectDeltaResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CommitObjectDeltaResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CommitObjectDeltaResponse) ProtoMessage() {} func (x *CommitObjectDeltaResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 CommitObjectDeltaResponse.ProtoReflect.Descriptor instead. func (*CommitObjectDeltaResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{18} } func (x *CommitObjectDeltaResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CommitObjectDeltaResponse) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *CommitObjectDeltaResponse) GetSize() int64 { if x != nil { return x.Size } return 0 } func (x *CommitObjectDeltaResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type SyncContainerWorkspaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` NewPath string `protobuf:"bytes,3,opt,name=new_path,json=newPath,proto3" json:"new_path,omitempty"` IsDir bool `protobuf:"varint,4,opt,name=is_dir,json=isDir,proto3" json:"is_dir,omitempty"` Data []byte `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` Op SyncContainerWorkspaceOperation `protobuf:"varint,6,opt,name=op,proto3,enum=gateway.SyncContainerWorkspaceOperation" json:"op,omitempty"` } func (x *SyncContainerWorkspaceRequest) Reset() { *x = SyncContainerWorkspaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SyncContainerWorkspaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SyncContainerWorkspaceRequest) ProtoMessage() {} func (x *SyncContainerWorkspaceRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 SyncContainerWorkspaceRequest.ProtoReflect.Descriptor instead. func (*SyncContainerWorkspaceRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{19} } func (x *SyncContainerWorkspaceRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *SyncContainerWorkspaceRequest) GetPath() string { if x != nil { return x.Path } return "" } func (x *SyncContainerWorkspaceRequest) GetNewPath() string { if x != nil { return x.NewPath } return "" } func (x *SyncContainerWorkspaceRequest) GetIsDir() bool { if x != nil { return x.IsDir } return false } func (x *SyncContainerWorkspaceRequest) GetData() []byte { if x != nil { return x.Data } return nil } func (x *SyncContainerWorkspaceRequest) GetOp() SyncContainerWorkspaceOperation { if x != nil { return x.Op } return SyncContainerWorkspaceOperation_WRITE } type SyncContainerWorkspaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` } func (x *SyncContainerWorkspaceResponse) Reset() { *x = SyncContainerWorkspaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SyncContainerWorkspaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SyncContainerWorkspaceResponse) ProtoMessage() {} func (x *SyncContainerWorkspaceResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 SyncContainerWorkspaceResponse.ProtoReflect.Descriptor instead. func (*SyncContainerWorkspaceResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{20} } func (x *SyncContainerWorkspaceResponse) GetOk() bool { if x != nil { return x.Ok } return false } type ListContainersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListContainersRequest) Reset() { *x = ListContainersRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListContainersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListContainersRequest) ProtoMessage() {} func (x *ListContainersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 ListContainersRequest.ProtoReflect.Descriptor instead. func (*ListContainersRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{21} } type ListContainersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Containers []*Container `protobuf:"bytes,1,rep,name=containers,proto3" json:"containers,omitempty"` Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *ListContainersResponse) Reset() { *x = ListContainersResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListContainersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListContainersResponse) ProtoMessage() {} func (x *ListContainersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_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 ListContainersResponse.ProtoReflect.Descriptor instead. func (*ListContainersResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{22} } func (x *ListContainersResponse) GetContainers() []*Container { if x != nil { return x.Containers } return nil } func (x *ListContainersResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListContainersResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type StopContainerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` } func (x *StopContainerRequest) Reset() { *x = StopContainerRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StopContainerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StopContainerRequest) ProtoMessage() {} func (x *StopContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[23] 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 StopContainerRequest.ProtoReflect.Descriptor instead. func (*StopContainerRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{23} } func (x *StopContainerRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } type StopContainerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *StopContainerResponse) Reset() { *x = StopContainerResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StopContainerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StopContainerResponse) ProtoMessage() {} func (x *StopContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[24] 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 StopContainerResponse.ProtoReflect.Descriptor instead. func (*StopContainerResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{24} } func (x *StopContainerResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *StopContainerResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type CheckpointContainerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` } func (x *CheckpointContainerRequest) Reset() { *x = CheckpointContainerRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckpointContainerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckpointContainerRequest) ProtoMessage() {} func (x *CheckpointContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[25] 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 CheckpointContainerRequest.ProtoReflect.Descriptor instead. func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{25} } func (x *CheckpointContainerRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } type CheckpointContainerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` CheckpointId string `protobuf:"bytes,2,opt,name=checkpoint_id,json=checkpointId,proto3" json:"checkpoint_id,omitempty"` ErrorMsg string `protobuf:"bytes,3,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *CheckpointContainerResponse) Reset() { *x = CheckpointContainerResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CheckpointContainerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CheckpointContainerResponse) ProtoMessage() {} func (x *CheckpointContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[26] 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 CheckpointContainerResponse.ProtoReflect.Descriptor instead. func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{26} } func (x *CheckpointContainerResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CheckpointContainerResponse) GetCheckpointId() string { if x != nil { return x.CheckpointId } return "" } func (x *CheckpointContainerResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type ContainerStreamMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Types that are assignable to Payload: // // *ContainerStreamMessage_AttachRequest // *ContainerStreamMessage_SyncContainerWorkspace Payload isContainerStreamMessage_Payload `protobuf_oneof:"payload"` } func (x *ContainerStreamMessage) Reset() { *x = ContainerStreamMessage{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ContainerStreamMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*ContainerStreamMessage) ProtoMessage() {} func (x *ContainerStreamMessage) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[27] 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 ContainerStreamMessage.ProtoReflect.Descriptor instead. func (*ContainerStreamMessage) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{27} } func (m *ContainerStreamMessage) GetPayload() isContainerStreamMessage_Payload { if m != nil { return m.Payload } return nil } func (x *ContainerStreamMessage) GetAttachRequest() *AttachToContainerRequest { if x, ok := x.GetPayload().(*ContainerStreamMessage_AttachRequest); ok { return x.AttachRequest } return nil } func (x *ContainerStreamMessage) GetSyncContainerWorkspace() *SyncContainerWorkspaceRequest { if x, ok := x.GetPayload().(*ContainerStreamMessage_SyncContainerWorkspace); ok { return x.SyncContainerWorkspace } return nil } type isContainerStreamMessage_Payload interface { isContainerStreamMessage_Payload() } type ContainerStreamMessage_AttachRequest struct { AttachRequest *AttachToContainerRequest `protobuf:"bytes,1,opt,name=attach_request,json=attachRequest,proto3,oneof"` } type ContainerStreamMessage_SyncContainerWorkspace struct { SyncContainerWorkspace *SyncContainerWorkspaceRequest `protobuf:"bytes,2,opt,name=sync_container_workspace,json=syncContainerWorkspace,proto3,oneof"` } func (*ContainerStreamMessage_AttachRequest) isContainerStreamMessage_Payload() {} func (*ContainerStreamMessage_SyncContainerWorkspace) isContainerStreamMessage_Payload() {} type AttachToContainerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` } func (x *AttachToContainerRequest) Reset() { *x = AttachToContainerRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AttachToContainerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AttachToContainerRequest) ProtoMessage() {} func (x *AttachToContainerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[28] 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 AttachToContainerRequest.ProtoReflect.Descriptor instead. func (*AttachToContainerRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{28} } func (x *AttachToContainerRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } type AttachToContainerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Output string `protobuf:"bytes,1,opt,name=output,proto3" json:"output,omitempty"` Done bool `protobuf:"varint,2,opt,name=done,proto3" json:"done,omitempty"` ExitCode int32 `protobuf:"varint,3,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"` } func (x *AttachToContainerResponse) Reset() { *x = AttachToContainerResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AttachToContainerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AttachToContainerResponse) ProtoMessage() {} func (x *AttachToContainerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[29] 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 AttachToContainerResponse.ProtoReflect.Descriptor instead. func (*AttachToContainerResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{29} } func (x *AttachToContainerResponse) GetOutput() string { if x != nil { return x.Output } return "" } func (x *AttachToContainerResponse) GetDone() bool { if x != nil { return x.Done } return false } func (x *AttachToContainerResponse) GetExitCode() int32 { if x != nil { return x.ExitCode } return 0 } // Task messages type StartTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` ContainerId string `protobuf:"bytes,2,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` } func (x *StartTaskRequest) Reset() { *x = StartTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StartTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StartTaskRequest) ProtoMessage() {} func (x *StartTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[30] 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 StartTaskRequest.ProtoReflect.Descriptor instead. func (*StartTaskRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{30} } func (x *StartTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *StartTaskRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } type StartTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` } func (x *StartTaskResponse) Reset() { *x = StartTaskResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StartTaskResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StartTaskResponse) ProtoMessage() {} func (x *StartTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[31] 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 StartTaskResponse.ProtoReflect.Descriptor instead. func (*StartTaskResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{31} } func (x *StartTaskResponse) GetOk() bool { if x != nil { return x.Ok } return false } type EndTaskRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"` TaskDuration float32 `protobuf:"fixed32,2,opt,name=task_duration,json=taskDuration,proto3" json:"task_duration,omitempty"` TaskStatus string `protobuf:"bytes,3,opt,name=task_status,json=taskStatus,proto3" json:"task_status,omitempty"` ContainerId string `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` ContainerHostname string `protobuf:"bytes,5,opt,name=container_hostname,json=containerHostname,proto3" json:"container_hostname,omitempty"` KeepWarmSeconds float32 `protobuf:"fixed32,6,opt,name=keep_warm_seconds,json=keepWarmSeconds,proto3" json:"keep_warm_seconds,omitempty"` Result []byte `protobuf:"bytes,7,opt,name=result,proto3" json:"result,omitempty"` } func (x *EndTaskRequest) Reset() { *x = EndTaskRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EndTaskRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*EndTaskRequest) ProtoMessage() {} func (x *EndTaskRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[32] 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 EndTaskRequest.ProtoReflect.Descriptor instead. func (*EndTaskRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{32} } func (x *EndTaskRequest) GetTaskId() string { if x != nil { return x.TaskId } return "" } func (x *EndTaskRequest) GetTaskDuration() float32 { if x != nil { return x.TaskDuration } return 0 } func (x *EndTaskRequest) GetTaskStatus() string { if x != nil { return x.TaskStatus } return "" } func (x *EndTaskRequest) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *EndTaskRequest) GetContainerHostname() string { if x != nil { return x.ContainerHostname } return "" } func (x *EndTaskRequest) GetKeepWarmSeconds() float32 { if x != nil { return x.KeepWarmSeconds } return 0 } func (x *EndTaskRequest) GetResult() []byte { if x != nil { return x.Result } return nil } type EndTaskResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` } func (x *EndTaskResponse) Reset() { *x = EndTaskResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EndTaskResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*EndTaskResponse) ProtoMessage() {} func (x *EndTaskResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[33] 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 EndTaskResponse.ProtoReflect.Descriptor instead. func (*EndTaskResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{33} } func (x *EndTaskResponse) GetOk() bool { if x != nil { return x.Ok } return false } type StringList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` } func (x *StringList) Reset() { *x = StringList{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StringList) String() string { return protoimpl.X.MessageStringOf(x) } func (*StringList) ProtoMessage() {} func (x *StringList) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[34] 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 StringList.ProtoReflect.Descriptor instead. func (*StringList) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{34} } func (x *StringList) GetValues() []string { if x != nil { return x.Values } return nil } type ListTasksRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListTasksRequest) Reset() { *x = ListTasksRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListTasksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListTasksRequest) ProtoMessage() {} func (x *ListTasksRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[35] 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 ListTasksRequest.ProtoReflect.Descriptor instead. func (*ListTasksRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{35} } func (x *ListTasksRequest) GetFilters() map[string]*StringList { if x != nil { return x.Filters } return nil } func (x *ListTasksRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } type Task struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` ContainerId string `protobuf:"bytes,4,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` StartedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` EndedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=ended_at,json=endedAt,proto3" json:"ended_at,omitempty"` StubId string `protobuf:"bytes,7,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` StubName string `protobuf:"bytes,8,opt,name=stub_name,json=stubName,proto3" json:"stub_name,omitempty"` WorkspaceId string `protobuf:"bytes,9,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` WorkspaceName string `protobuf:"bytes,10,opt,name=workspace_name,json=workspaceName,proto3" json:"workspace_name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *Task) Reset() { *x = Task{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Task) String() string { return protoimpl.X.MessageStringOf(x) } func (*Task) ProtoMessage() {} func (x *Task) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[36] 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 Task.ProtoReflect.Descriptor instead. func (*Task) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{36} } func (x *Task) GetId() string { if x != nil { return x.Id } return "" } func (x *Task) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Task) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *Task) GetStartedAt() *timestamppb.Timestamp { if x != nil { return x.StartedAt } return nil } func (x *Task) GetEndedAt() *timestamppb.Timestamp { if x != nil { return x.EndedAt } return nil } func (x *Task) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *Task) GetStubName() string { if x != nil { return x.StubName } return "" } func (x *Task) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *Task) GetWorkspaceName() string { if x != nil { return x.WorkspaceName } return "" } func (x *Task) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Task) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } type ListTasksResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Tasks []*Task `protobuf:"bytes,3,rep,name=tasks,proto3" json:"tasks,omitempty"` Total int32 `protobuf:"varint,4,opt,name=total,proto3" json:"total,omitempty"` } func (x *ListTasksResponse) Reset() { *x = ListTasksResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListTasksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListTasksResponse) ProtoMessage() {} func (x *ListTasksResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[37] 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 ListTasksResponse.ProtoReflect.Descriptor instead. func (*ListTasksResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{37} } func (x *ListTasksResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListTasksResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListTasksResponse) GetTasks() []*Task { if x != nil { return x.Tasks } return nil } func (x *ListTasksResponse) GetTotal() int32 { if x != nil { return x.Total } return 0 } type StopTasksRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TaskIds []string `protobuf:"bytes,1,rep,name=task_ids,json=taskIds,proto3" json:"task_ids,omitempty"` } func (x *StopTasksRequest) Reset() { *x = StopTasksRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StopTasksRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StopTasksRequest) ProtoMessage() {} func (x *StopTasksRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[38] 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 StopTasksRequest.ProtoReflect.Descriptor instead. func (*StopTasksRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{38} } func (x *StopTasksRequest) GetTaskIds() []string { if x != nil { return x.TaskIds } return nil } type StopTasksResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *StopTasksResponse) Reset() { *x = StopTasksResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StopTasksResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StopTasksResponse) ProtoMessage() {} func (x *StopTasksResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[39] 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 StopTasksResponse.ProtoReflect.Descriptor instead. func (*StopTasksResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{39} } func (x *StopTasksResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *StopTasksResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type Volume struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` MountPath string `protobuf:"bytes,2,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` Config *MountPointConfig `protobuf:"bytes,3,opt,name=config,proto3,oneof" json:"config,omitempty"` } func (x *Volume) Reset() { *x = Volume{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Volume) String() string { return protoimpl.X.MessageStringOf(x) } func (*Volume) ProtoMessage() {} func (x *Volume) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[40] 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 Volume.ProtoReflect.Descriptor instead. func (*Volume) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{40} } func (x *Volume) GetId() string { if x != nil { return x.Id } return "" } func (x *Volume) GetMountPath() string { if x != nil { return x.MountPath } return "" } func (x *Volume) GetConfig() *MountPointConfig { if x != nil { return x.Config } return nil } type SecretVar struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *SecretVar) Reset() { *x = SecretVar{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SecretVar) String() string { return protoimpl.X.MessageStringOf(x) } func (*SecretVar) ProtoMessage() {} func (x *SecretVar) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[41] 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 SecretVar.ProtoReflect.Descriptor instead. func (*SecretVar) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{41} } func (x *SecretVar) GetName() string { if x != nil { return x.Name } return "" } type Autoscaler struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` MaxContainers uint32 `protobuf:"varint,2,opt,name=max_containers,json=maxContainers,proto3" json:"max_containers,omitempty"` TasksPerContainer uint32 `protobuf:"varint,3,opt,name=tasks_per_container,json=tasksPerContainer,proto3" json:"tasks_per_container,omitempty"` MinContainers uint32 `protobuf:"varint,4,opt,name=min_containers,json=minContainers,proto3" json:"min_containers,omitempty"` } func (x *Autoscaler) Reset() { *x = Autoscaler{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Autoscaler) String() string { return protoimpl.X.MessageStringOf(x) } func (*Autoscaler) ProtoMessage() {} func (x *Autoscaler) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[42] 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 Autoscaler.ProtoReflect.Descriptor instead. func (*Autoscaler) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{42} } func (x *Autoscaler) GetType() string { if x != nil { return x.Type } return "" } func (x *Autoscaler) GetMaxContainers() uint32 { if x != nil { return x.MaxContainers } return 0 } func (x *Autoscaler) GetTasksPerContainer() uint32 { if x != nil { return x.TasksPerContainer } return 0 } func (x *Autoscaler) GetMinContainers() uint32 { if x != nil { return x.MinContainers } return 0 } type DatabaseServingConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` ReadinessProbe string `protobuf:"bytes,3,opt,name=readiness_probe,json=readinessProbe,proto3" json:"readiness_probe,omitempty"` ConnectionEnvName string `protobuf:"bytes,4,opt,name=connection_env_name,json=connectionEnvName,proto3" json:"connection_env_name,omitempty"` CredentialSecretNames []string `protobuf:"bytes,5,rep,name=credential_secret_names,json=credentialSecretNames,proto3" json:"credential_secret_names,omitempty"` DurabilityMode string `protobuf:"bytes,6,opt,name=durability_mode,json=durabilityMode,proto3" json:"durability_mode,omitempty"` UsernameSecretName string `protobuf:"bytes,7,opt,name=username_secret_name,json=usernameSecretName,proto3" json:"username_secret_name,omitempty"` PasswordSecretName string `protobuf:"bytes,8,opt,name=password_secret_name,json=passwordSecretName,proto3" json:"password_secret_name,omitempty"` DatabaseSecretName string `protobuf:"bytes,9,opt,name=database_secret_name,json=databaseSecretName,proto3" json:"database_secret_name,omitempty"` ConnectionUrlSecretName string `protobuf:"bytes,10,opt,name=connection_url_secret_name,json=connectionUrlSecretName,proto3" json:"connection_url_secret_name,omitempty"` // How long an object-store-flush disk may answer flushes before their // commits; zero answers each only once it is committed. CommitLagMs uint32 `protobuf:"varint,11,opt,name=commit_lag_ms,json=commitLagMs,proto3" json:"commit_lag_ms,omitempty"` } func (x *DatabaseServingConfig) Reset() { *x = DatabaseServingConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DatabaseServingConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*DatabaseServingConfig) ProtoMessage() {} func (x *DatabaseServingConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[43] 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 DatabaseServingConfig.ProtoReflect.Descriptor instead. func (*DatabaseServingConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{43} } func (x *DatabaseServingConfig) GetKind() string { if x != nil { return x.Kind } return "" } func (x *DatabaseServingConfig) GetPort() uint32 { if x != nil { return x.Port } return 0 } func (x *DatabaseServingConfig) GetReadinessProbe() string { if x != nil { return x.ReadinessProbe } return "" } func (x *DatabaseServingConfig) GetConnectionEnvName() string { if x != nil { return x.ConnectionEnvName } return "" } func (x *DatabaseServingConfig) GetCredentialSecretNames() []string { if x != nil { return x.CredentialSecretNames } return nil } func (x *DatabaseServingConfig) GetDurabilityMode() string { if x != nil { return x.DurabilityMode } return "" } func (x *DatabaseServingConfig) GetUsernameSecretName() string { if x != nil { return x.UsernameSecretName } return "" } func (x *DatabaseServingConfig) GetPasswordSecretName() string { if x != nil { return x.PasswordSecretName } return "" } func (x *DatabaseServingConfig) GetDatabaseSecretName() string { if x != nil { return x.DatabaseSecretName } return "" } func (x *DatabaseServingConfig) GetConnectionUrlSecretName() string { if x != nil { return x.ConnectionUrlSecretName } return "" } func (x *DatabaseServingConfig) GetCommitLagMs() uint32 { if x != nil { return x.CommitLagMs } return 0 } type ServingConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AppKind string `protobuf:"bytes,1,opt,name=app_kind,json=appKind,proto3" json:"app_kind,omitempty"` ServingProtocol string `protobuf:"bytes,2,opt,name=serving_protocol,json=servingProtocol,proto3" json:"serving_protocol,omitempty"` Database *DatabaseServingConfig `protobuf:"bytes,4,opt,name=database,proto3" json:"database,omitempty"` } func (x *ServingConfig) Reset() { *x = ServingConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServingConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServingConfig) ProtoMessage() {} func (x *ServingConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[44] 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 ServingConfig.ProtoReflect.Descriptor instead. func (*ServingConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{44} } func (x *ServingConfig) GetAppKind() string { if x != nil { return x.AppKind } return "" } func (x *ServingConfig) GetServingProtocol() string { if x != nil { return x.ServingProtocol } return "" } func (x *ServingConfig) GetDatabase() *DatabaseServingConfig { if x != nil { return x.Database } return nil } type DurableDisk struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Size string `protobuf:"bytes,2,opt,name=size,proto3" json:"size,omitempty"` MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` Filesystem string `protobuf:"bytes,4,opt,name=filesystem,proto3" json:"filesystem,omitempty"` Driver string `protobuf:"bytes,5,opt,name=driver,proto3" json:"driver,omitempty"` ReadOnly bool `protobuf:"varint,6,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` // Snapshot used to initialize a disk with no snapshot history. SourceSnapshotId string `protobuf:"bytes,7,opt,name=source_snapshot_id,json=sourceSnapshotId,proto3" json:"source_snapshot_id,omitempty"` } func (x *DurableDisk) Reset() { *x = DurableDisk{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DurableDisk) String() string { return protoimpl.X.MessageStringOf(x) } func (*DurableDisk) ProtoMessage() {} func (x *DurableDisk) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[45] 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 DurableDisk.ProtoReflect.Descriptor instead. func (*DurableDisk) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{45} } func (x *DurableDisk) GetName() string { if x != nil { return x.Name } return "" } func (x *DurableDisk) GetSize() string { if x != nil { return x.Size } return "" } func (x *DurableDisk) GetMountPath() string { if x != nil { return x.MountPath } return "" } func (x *DurableDisk) GetFilesystem() string { if x != nil { return x.Filesystem } return "" } func (x *DurableDisk) GetDriver() string { if x != nil { return x.Driver } return "" } func (x *DurableDisk) GetReadOnly() bool { if x != nil { return x.ReadOnly } return false } func (x *DurableDisk) GetSourceSnapshotId() string { if x != nil { return x.SourceSnapshotId } return "" } // A durable machine-root disk. The container's entire root filesystem delta // lives on a qcow-backed volume mounted at "/", so disk snapshots capture the // whole machine state. Shorthand for a DurableDisk with mount_path "/" and // the qcow driver. type PersistentRoot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Size string `protobuf:"bytes,1,opt,name=size,proto3" json:"size,omitempty"` // Snapshot used to initialize the root with no snapshot history. SourceSnapshotId string `protobuf:"bytes,2,opt,name=source_snapshot_id,json=sourceSnapshotId,proto3" json:"source_snapshot_id,omitempty"` // Disk name backing the root. Disk snapshot history is keyed by this name // within the workspace, so each machine wanting its own root lineage must // use a distinct name (e.g. the machine id). Defaults to "root". Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` } func (x *PersistentRoot) Reset() { *x = PersistentRoot{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PersistentRoot) String() string { return protoimpl.X.MessageStringOf(x) } func (*PersistentRoot) ProtoMessage() {} func (x *PersistentRoot) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[46] 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 PersistentRoot.ProtoReflect.Descriptor instead. func (*PersistentRoot) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{46} } func (x *PersistentRoot) GetSize() string { if x != nil { return x.Size } return "" } func (x *PersistentRoot) GetSourceSnapshotId() string { if x != nil { return x.SourceSnapshotId } return "" } func (x *PersistentRoot) GetName() string { if x != nil { return x.Name } return "" } type TaskPolicy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Timeout int64 `protobuf:"varint,1,opt,name=timeout,proto3" json:"timeout,omitempty"` MaxRetries uint32 `protobuf:"varint,2,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` Ttl uint32 `protobuf:"varint,3,opt,name=ttl,proto3" json:"ttl,omitempty"` } func (x *TaskPolicy) Reset() { *x = TaskPolicy{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TaskPolicy) String() string { return protoimpl.X.MessageStringOf(x) } func (*TaskPolicy) ProtoMessage() {} func (x *TaskPolicy) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[47] 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 TaskPolicy.ProtoReflect.Descriptor instead. func (*TaskPolicy) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{47} } func (x *TaskPolicy) GetTimeout() int64 { if x != nil { return x.Timeout } return 0 } func (x *TaskPolicy) GetMaxRetries() uint32 { if x != nil { return x.MaxRetries } return 0 } func (x *TaskPolicy) GetTtl() uint32 { if x != nil { return x.Ttl } return 0 } type Schema struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Fields map[string]*SchemaField `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Schema) Reset() { *x = Schema{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Schema) String() string { return protoimpl.X.MessageStringOf(x) } func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[48] 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 Schema.ProtoReflect.Descriptor instead. func (*Schema) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{48} } func (x *Schema) GetFields() map[string]*SchemaField { if x != nil { return x.Fields } return nil } type SchemaField struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` Fields *Schema `protobuf:"bytes,2,opt,name=fields,proto3" json:"fields,omitempty"` } func (x *SchemaField) Reset() { *x = SchemaField{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SchemaField) String() string { return protoimpl.X.MessageStringOf(x) } func (*SchemaField) ProtoMessage() {} func (x *SchemaField) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[49] 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 SchemaField.ProtoReflect.Descriptor instead. func (*SchemaField) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{49} } func (x *SchemaField) GetType() string { if x != nil { return x.Type } return "" } func (x *SchemaField) GetFields() *Schema { if x != nil { return x.Fields } return nil } type GetOrCreateStubRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ObjectId string `protobuf:"bytes,1,opt,name=object_id,json=objectId,proto3" json:"object_id,omitempty"` ImageId string `protobuf:"bytes,2,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` StubType string `protobuf:"bytes,3,opt,name=stub_type,json=stubType,proto3" json:"stub_type,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` PythonVersion string `protobuf:"bytes,5,opt,name=python_version,json=pythonVersion,proto3" json:"python_version,omitempty"` Cpu int64 `protobuf:"varint,6,opt,name=cpu,proto3" json:"cpu,omitempty"` Memory int64 `protobuf:"varint,7,opt,name=memory,proto3" json:"memory,omitempty"` Gpu string `protobuf:"bytes,8,opt,name=gpu,proto3" json:"gpu,omitempty"` Handler string `protobuf:"bytes,9,opt,name=handler,proto3" json:"handler,omitempty"` Retries uint32 `protobuf:"varint,10,opt,name=retries,proto3" json:"retries,omitempty"` Timeout int64 `protobuf:"varint,11,opt,name=timeout,proto3" json:"timeout,omitempty"` KeepWarmSeconds float32 `protobuf:"fixed32,12,opt,name=keep_warm_seconds,json=keepWarmSeconds,proto3" json:"keep_warm_seconds,omitempty"` Workers uint32 `protobuf:"varint,13,opt,name=workers,proto3" json:"workers,omitempty"` MaxPendingTasks uint32 `protobuf:"varint,15,opt,name=max_pending_tasks,json=maxPendingTasks,proto3" json:"max_pending_tasks,omitempty"` Volumes []*Volume `protobuf:"bytes,16,rep,name=volumes,proto3" json:"volumes,omitempty"` ForceCreate bool `protobuf:"varint,17,opt,name=force_create,json=forceCreate,proto3" json:"force_create,omitempty"` OnStart string `protobuf:"bytes,18,opt,name=on_start,json=onStart,proto3" json:"on_start,omitempty"` CallbackUrl string `protobuf:"bytes,19,opt,name=callback_url,json=callbackUrl,proto3" json:"callback_url,omitempty"` Authorized bool `protobuf:"varint,20,opt,name=authorized,proto3" json:"authorized,omitempty"` Secrets []*SecretVar `protobuf:"bytes,21,rep,name=secrets,proto3" json:"secrets,omitempty"` Autoscaler *Autoscaler `protobuf:"bytes,22,opt,name=autoscaler,proto3" json:"autoscaler,omitempty"` TaskPolicy *TaskPolicy `protobuf:"bytes,23,opt,name=task_policy,json=taskPolicy,proto3" json:"task_policy,omitempty"` ConcurrentRequests uint32 `protobuf:"varint,24,opt,name=concurrent_requests,json=concurrentRequests,proto3" json:"concurrent_requests,omitempty"` Extra string `protobuf:"bytes,25,opt,name=extra,proto3" json:"extra,omitempty"` CheckpointEnabled bool `protobuf:"varint,26,opt,name=checkpoint_enabled,json=checkpointEnabled,proto3" json:"checkpoint_enabled,omitempty"` GpuCount uint32 `protobuf:"varint,27,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` OnDeploy string `protobuf:"bytes,28,opt,name=on_deploy,json=onDeploy,proto3" json:"on_deploy,omitempty"` OnDeployStubId string `protobuf:"bytes,29,opt,name=on_deploy_stub_id,json=onDeployStubId,proto3" json:"on_deploy_stub_id,omitempty"` Entrypoint []string `protobuf:"bytes,30,rep,name=entrypoint,proto3" json:"entrypoint,omitempty"` Ports []uint32 `protobuf:"varint,31,rep,packed,name=ports,proto3" json:"ports,omitempty"` Env []string `protobuf:"bytes,32,rep,name=env,proto3" json:"env,omitempty"` AppName string `protobuf:"bytes,33,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` Inputs *Schema `protobuf:"bytes,35,opt,name=inputs,proto3" json:"inputs,omitempty"` Outputs *Schema `protobuf:"bytes,36,opt,name=outputs,proto3" json:"outputs,omitempty"` Tcp bool `protobuf:"varint,37,opt,name=tcp,proto3" json:"tcp,omitempty"` BlockNetwork bool `protobuf:"varint,38,opt,name=block_network,json=blockNetwork,proto3" json:"block_network,omitempty"` AllowList []string `protobuf:"bytes,39,rep,name=allow_list,json=allowList,proto3" json:"allow_list,omitempty"` DockerEnabled bool `protobuf:"varint,40,opt,name=docker_enabled,json=dockerEnabled,proto3" json:"docker_enabled,omitempty"` Pool *PoolConfig `protobuf:"bytes,41,opt,name=pool,proto3" json:"pool,omitempty"` IsService bool `protobuf:"varint,42,opt,name=is_service,json=isService,proto3" json:"is_service,omitempty"` Serving *ServingConfig `protobuf:"bytes,43,opt,name=serving,proto3" json:"serving,omitempty"` Disks []*DurableDisk `protobuf:"bytes,44,rep,name=disks,proto3" json:"disks,omitempty"` CheckpointTrigger *CheckpointTrigger `protobuf:"bytes,46,opt,name=checkpoint_trigger,json=checkpointTrigger,proto3" json:"checkpoint_trigger,omitempty"` // Hostname to set inside the container. Hostname string `protobuf:"bytes,47,opt,name=hostname,proto3" json:"hostname,omitempty"` PersistentRoot *PersistentRoot `protobuf:"bytes,48,opt,name=persistent_root,json=persistentRoot,proto3" json:"persistent_root,omitempty"` // JSON-encoded types.ManagedEndpointStubConfig for managed_endpoint/* and // managed_service/* stubs (system workspace only). ManagedEndpoint string `protobuf:"bytes,49,opt,name=managed_endpoint,json=managedEndpoint,proto3" json:"managed_endpoint,omitempty"` // Run the sandbox in its own virtual machine (microvm pools only). UseVm bool `protobuf:"varint,50,opt,name=use_vm,json=useVm,proto3" json:"use_vm,omitempty"` CpuTier string `protobuf:"bytes,51,opt,name=cpu_tier,json=cpuTier,proto3" json:"cpu_tier,omitempty"` } func (x *GetOrCreateStubRequest) Reset() { *x = GetOrCreateStubRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetOrCreateStubRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetOrCreateStubRequest) ProtoMessage() {} func (x *GetOrCreateStubRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[50] 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 GetOrCreateStubRequest.ProtoReflect.Descriptor instead. func (*GetOrCreateStubRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{50} } func (x *GetOrCreateStubRequest) GetObjectId() string { if x != nil { return x.ObjectId } return "" } func (x *GetOrCreateStubRequest) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *GetOrCreateStubRequest) GetStubType() string { if x != nil { return x.StubType } return "" } func (x *GetOrCreateStubRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *GetOrCreateStubRequest) GetPythonVersion() string { if x != nil { return x.PythonVersion } return "" } func (x *GetOrCreateStubRequest) GetCpu() int64 { if x != nil { return x.Cpu } return 0 } func (x *GetOrCreateStubRequest) GetMemory() int64 { if x != nil { return x.Memory } return 0 } func (x *GetOrCreateStubRequest) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *GetOrCreateStubRequest) GetHandler() string { if x != nil { return x.Handler } return "" } func (x *GetOrCreateStubRequest) GetRetries() uint32 { if x != nil { return x.Retries } return 0 } func (x *GetOrCreateStubRequest) GetTimeout() int64 { if x != nil { return x.Timeout } return 0 } func (x *GetOrCreateStubRequest) GetKeepWarmSeconds() float32 { if x != nil { return x.KeepWarmSeconds } return 0 } func (x *GetOrCreateStubRequest) GetWorkers() uint32 { if x != nil { return x.Workers } return 0 } func (x *GetOrCreateStubRequest) GetMaxPendingTasks() uint32 { if x != nil { return x.MaxPendingTasks } return 0 } func (x *GetOrCreateStubRequest) GetVolumes() []*Volume { if x != nil { return x.Volumes } return nil } func (x *GetOrCreateStubRequest) GetForceCreate() bool { if x != nil { return x.ForceCreate } return false } func (x *GetOrCreateStubRequest) GetOnStart() string { if x != nil { return x.OnStart } return "" } func (x *GetOrCreateStubRequest) GetCallbackUrl() string { if x != nil { return x.CallbackUrl } return "" } func (x *GetOrCreateStubRequest) GetAuthorized() bool { if x != nil { return x.Authorized } return false } func (x *GetOrCreateStubRequest) GetSecrets() []*SecretVar { if x != nil { return x.Secrets } return nil } func (x *GetOrCreateStubRequest) GetAutoscaler() *Autoscaler { if x != nil { return x.Autoscaler } return nil } func (x *GetOrCreateStubRequest) GetTaskPolicy() *TaskPolicy { if x != nil { return x.TaskPolicy } return nil } func (x *GetOrCreateStubRequest) GetConcurrentRequests() uint32 { if x != nil { return x.ConcurrentRequests } return 0 } func (x *GetOrCreateStubRequest) GetExtra() string { if x != nil { return x.Extra } return "" } func (x *GetOrCreateStubRequest) GetCheckpointEnabled() bool { if x != nil { return x.CheckpointEnabled } return false } func (x *GetOrCreateStubRequest) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *GetOrCreateStubRequest) GetOnDeploy() string { if x != nil { return x.OnDeploy } return "" } func (x *GetOrCreateStubRequest) GetOnDeployStubId() string { if x != nil { return x.OnDeployStubId } return "" } func (x *GetOrCreateStubRequest) GetEntrypoint() []string { if x != nil { return x.Entrypoint } return nil } func (x *GetOrCreateStubRequest) GetPorts() []uint32 { if x != nil { return x.Ports } return nil } func (x *GetOrCreateStubRequest) GetEnv() []string { if x != nil { return x.Env } return nil } func (x *GetOrCreateStubRequest) GetAppName() string { if x != nil { return x.AppName } return "" } func (x *GetOrCreateStubRequest) GetInputs() *Schema { if x != nil { return x.Inputs } return nil } func (x *GetOrCreateStubRequest) GetOutputs() *Schema { if x != nil { return x.Outputs } return nil } func (x *GetOrCreateStubRequest) GetTcp() bool { if x != nil { return x.Tcp } return false } func (x *GetOrCreateStubRequest) GetBlockNetwork() bool { if x != nil { return x.BlockNetwork } return false } func (x *GetOrCreateStubRequest) GetAllowList() []string { if x != nil { return x.AllowList } return nil } func (x *GetOrCreateStubRequest) GetDockerEnabled() bool { if x != nil { return x.DockerEnabled } return false } func (x *GetOrCreateStubRequest) GetPool() *PoolConfig { if x != nil { return x.Pool } return nil } func (x *GetOrCreateStubRequest) GetIsService() bool { if x != nil { return x.IsService } return false } func (x *GetOrCreateStubRequest) GetServing() *ServingConfig { if x != nil { return x.Serving } return nil } func (x *GetOrCreateStubRequest) GetDisks() []*DurableDisk { if x != nil { return x.Disks } return nil } func (x *GetOrCreateStubRequest) GetCheckpointTrigger() *CheckpointTrigger { if x != nil { return x.CheckpointTrigger } return nil } func (x *GetOrCreateStubRequest) GetHostname() string { if x != nil { return x.Hostname } return "" } func (x *GetOrCreateStubRequest) GetPersistentRoot() *PersistentRoot { if x != nil { return x.PersistentRoot } return nil } func (x *GetOrCreateStubRequest) GetManagedEndpoint() string { if x != nil { return x.ManagedEndpoint } return "" } func (x *GetOrCreateStubRequest) GetUseVm() bool { if x != nil { return x.UseVm } return false } func (x *GetOrCreateStubRequest) GetCpuTier() string { if x != nil { return x.CpuTier } return "" } type GetOrCreateStubResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` StubId string `protobuf:"bytes,2,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` ErrMsg string `protobuf:"bytes,3,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` WarnMsg string `protobuf:"bytes,4,opt,name=warn_msg,json=warnMsg,proto3" json:"warn_msg,omitempty"` // Capacity verdict for the requested GPU types, computed at stub creation: // "available", "low", or "none". Empty when no check applies (CPU-only // workloads, private-pool-only stubs, or pool-selector-bound stubs). CapacityStatus string `protobuf:"bytes,5,opt,name=capacity_status,json=capacityStatus,proto3" json:"capacity_status,omitempty"` // GPU types from the request that no serverless pool supports. UnsupportedGpus []string `protobuf:"bytes,6,rep,name=unsupported_gpus,json=unsupportedGpus,proto3" json:"unsupported_gpus,omitempty"` // Name of an existing ready private pool in the workspace that satisfies // the GPU request. Set instead of capacity_status "none" so clients can // re-issue stub creation targeting this pool. MatchedPrivatePool string `protobuf:"bytes,7,opt,name=matched_private_pool,json=matchedPrivatePool,proto3" json:"matched_private_pool,omitempty"` } func (x *GetOrCreateStubResponse) Reset() { *x = GetOrCreateStubResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetOrCreateStubResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetOrCreateStubResponse) ProtoMessage() {} func (x *GetOrCreateStubResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[51] 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 GetOrCreateStubResponse.ProtoReflect.Descriptor instead. func (*GetOrCreateStubResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{51} } func (x *GetOrCreateStubResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetOrCreateStubResponse) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *GetOrCreateStubResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetOrCreateStubResponse) GetWarnMsg() string { if x != nil { return x.WarnMsg } return "" } func (x *GetOrCreateStubResponse) GetCapacityStatus() string { if x != nil { return x.CapacityStatus } return "" } func (x *GetOrCreateStubResponse) GetUnsupportedGpus() []string { if x != nil { return x.UnsupportedGpus } return nil } func (x *GetOrCreateStubResponse) GetMatchedPrivatePool() string { if x != nil { return x.MatchedPrivatePool } return "" } type DeployStubRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StubId string `protobuf:"bytes,1,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Rollout string `protobuf:"bytes,3,opt,name=rollout,proto3" json:"rollout,omitempty"` } func (x *DeployStubRequest) Reset() { *x = DeployStubRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeployStubRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeployStubRequest) ProtoMessage() {} func (x *DeployStubRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[52] 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 DeployStubRequest.ProtoReflect.Descriptor instead. func (*DeployStubRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{52} } func (x *DeployStubRequest) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *DeployStubRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *DeployStubRequest) GetRollout() string { if x != nil { return x.Rollout } return "" } type DeployStubResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` InvokeUrl string `protobuf:"bytes,4,opt,name=invoke_url,json=invokeUrl,proto3" json:"invoke_url,omitempty"` ErrMsg string `protobuf:"bytes,5,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` WarnMsg string `protobuf:"bytes,6,opt,name=warn_msg,json=warnMsg,proto3" json:"warn_msg,omitempty"` RolloutAction string `protobuf:"bytes,7,opt,name=rollout_action,json=rolloutAction,proto3" json:"rollout_action,omitempty"` } func (x *DeployStubResponse) Reset() { *x = DeployStubResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeployStubResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeployStubResponse) ProtoMessage() {} func (x *DeployStubResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[53] 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 DeployStubResponse.ProtoReflect.Descriptor instead. func (*DeployStubResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{53} } func (x *DeployStubResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DeployStubResponse) GetDeploymentId() string { if x != nil { return x.DeploymentId } return "" } func (x *DeployStubResponse) GetVersion() uint32 { if x != nil { return x.Version } return 0 } func (x *DeployStubResponse) GetInvokeUrl() string { if x != nil { return x.InvokeUrl } return "" } func (x *DeployStubResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *DeployStubResponse) GetWarnMsg() string { if x != nil { return x.WarnMsg } return "" } func (x *DeployStubResponse) GetRolloutAction() string { if x != nil { return x.RolloutAction } return "" } type Deployment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` StubId string `protobuf:"bytes,4,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` StubType string `protobuf:"bytes,5,opt,name=stub_type,json=stubType,proto3" json:"stub_type,omitempty"` StubName string `protobuf:"bytes,6,opt,name=stub_name,json=stubName,proto3" json:"stub_name,omitempty"` Version uint32 `protobuf:"varint,7,opt,name=version,proto3" json:"version,omitempty"` WorkspaceId string `protobuf:"bytes,8,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` WorkspaceName string `protobuf:"bytes,9,opt,name=workspace_name,json=workspaceName,proto3" json:"workspace_name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` AppId string `protobuf:"bytes,12,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` DatabaseKind string `protobuf:"bytes,13,opt,name=database_kind,json=databaseKind,proto3" json:"database_kind,omitempty"` ConnectionStringSecret string `protobuf:"bytes,14,opt,name=connection_string_secret,json=connectionStringSecret,proto3" json:"connection_string_secret,omitempty"` ConnectionEnvName string `protobuf:"bytes,15,opt,name=connection_env_name,json=connectionEnvName,proto3" json:"connection_env_name,omitempty"` } func (x *Deployment) Reset() { *x = Deployment{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Deployment) String() string { return protoimpl.X.MessageStringOf(x) } func (*Deployment) ProtoMessage() {} func (x *Deployment) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[54] 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 Deployment.ProtoReflect.Descriptor instead. func (*Deployment) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{54} } func (x *Deployment) GetId() string { if x != nil { return x.Id } return "" } func (x *Deployment) GetName() string { if x != nil { return x.Name } return "" } func (x *Deployment) GetActive() bool { if x != nil { return x.Active } return false } func (x *Deployment) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *Deployment) GetStubType() string { if x != nil { return x.StubType } return "" } func (x *Deployment) GetStubName() string { if x != nil { return x.StubName } return "" } func (x *Deployment) GetVersion() uint32 { if x != nil { return x.Version } return 0 } func (x *Deployment) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *Deployment) GetWorkspaceName() string { if x != nil { return x.WorkspaceName } return "" } func (x *Deployment) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Deployment) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Deployment) GetAppId() string { if x != nil { return x.AppId } return "" } func (x *Deployment) GetDatabaseKind() string { if x != nil { return x.DatabaseKind } return "" } func (x *Deployment) GetConnectionStringSecret() string { if x != nil { return x.ConnectionStringSecret } return "" } func (x *Deployment) GetConnectionEnvName() string { if x != nil { return x.ConnectionEnvName } return "" } type ListDeploymentsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListDeploymentsRequest) Reset() { *x = ListDeploymentsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListDeploymentsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDeploymentsRequest) ProtoMessage() {} func (x *ListDeploymentsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[55] 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 ListDeploymentsRequest.ProtoReflect.Descriptor instead. func (*ListDeploymentsRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{55} } func (x *ListDeploymentsRequest) GetFilters() map[string]*StringList { if x != nil { return x.Filters } return nil } func (x *ListDeploymentsRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } type ListDeploymentsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Deployments []*Deployment `protobuf:"bytes,3,rep,name=deployments,proto3" json:"deployments,omitempty"` } func (x *ListDeploymentsResponse) Reset() { *x = ListDeploymentsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListDeploymentsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListDeploymentsResponse) ProtoMessage() {} func (x *ListDeploymentsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[56] 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 ListDeploymentsResponse.ProtoReflect.Descriptor instead. func (*ListDeploymentsResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{56} } func (x *ListDeploymentsResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListDeploymentsResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListDeploymentsResponse) GetDeployments() []*Deployment { if x != nil { return x.Deployments } return nil } type StopDeploymentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *StopDeploymentRequest) Reset() { *x = StopDeploymentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StopDeploymentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StopDeploymentRequest) ProtoMessage() {} func (x *StopDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[57] 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 StopDeploymentRequest.ProtoReflect.Descriptor instead. func (*StopDeploymentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{57} } func (x *StopDeploymentRequest) GetId() string { if x != nil { return x.Id } return "" } type StopDeploymentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *StopDeploymentResponse) Reset() { *x = StopDeploymentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StopDeploymentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StopDeploymentResponse) ProtoMessage() {} func (x *StopDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[58] 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 StopDeploymentResponse.ProtoReflect.Descriptor instead. func (*StopDeploymentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{58} } func (x *StopDeploymentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *StopDeploymentResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type StartDeploymentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *StartDeploymentRequest) Reset() { *x = StartDeploymentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StartDeploymentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StartDeploymentRequest) ProtoMessage() {} func (x *StartDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[59] 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 StartDeploymentRequest.ProtoReflect.Descriptor instead. func (*StartDeploymentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{59} } func (x *StartDeploymentRequest) GetId() string { if x != nil { return x.Id } return "" } type StartDeploymentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *StartDeploymentResponse) Reset() { *x = StartDeploymentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StartDeploymentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StartDeploymentResponse) ProtoMessage() {} func (x *StartDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[60] 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 StartDeploymentResponse.ProtoReflect.Descriptor instead. func (*StartDeploymentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{60} } func (x *StartDeploymentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *StartDeploymentResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type ScaleDeploymentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Containers uint32 `protobuf:"varint,2,opt,name=containers,proto3" json:"containers,omitempty"` } func (x *ScaleDeploymentRequest) Reset() { *x = ScaleDeploymentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScaleDeploymentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScaleDeploymentRequest) ProtoMessage() {} func (x *ScaleDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[61] 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 ScaleDeploymentRequest.ProtoReflect.Descriptor instead. func (*ScaleDeploymentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{61} } func (x *ScaleDeploymentRequest) GetId() string { if x != nil { return x.Id } return "" } func (x *ScaleDeploymentRequest) GetContainers() uint32 { if x != nil { return x.Containers } return 0 } type ScaleDeploymentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *ScaleDeploymentResponse) Reset() { *x = ScaleDeploymentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScaleDeploymentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScaleDeploymentResponse) ProtoMessage() {} func (x *ScaleDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[62] 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 ScaleDeploymentResponse.ProtoReflect.Descriptor instead. func (*ScaleDeploymentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{62} } func (x *ScaleDeploymentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ScaleDeploymentResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type DeleteDeploymentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *DeleteDeploymentRequest) Reset() { *x = DeleteDeploymentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteDeploymentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteDeploymentRequest) ProtoMessage() {} func (x *DeleteDeploymentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[63] 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 DeleteDeploymentRequest.ProtoReflect.Descriptor instead. func (*DeleteDeploymentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{63} } func (x *DeleteDeploymentRequest) GetId() string { if x != nil { return x.Id } return "" } type DeleteDeploymentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *DeleteDeploymentResponse) Reset() { *x = DeleteDeploymentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteDeploymentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteDeploymentResponse) ProtoMessage() {} func (x *DeleteDeploymentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[64] 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 DeleteDeploymentResponse.ProtoReflect.Descriptor instead. func (*DeleteDeploymentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{64} } func (x *DeleteDeploymentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DeleteDeploymentResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type Pool struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` Gpu string `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"` MinFreeGpu string `protobuf:"bytes,5,opt,name=minFreeGpu,proto3" json:"minFreeGpu,omitempty"` MinFreeCpu string `protobuf:"bytes,6,opt,name=minFreeCpu,proto3" json:"minFreeCpu,omitempty"` MinFreeMemory string `protobuf:"bytes,7,opt,name=minFreeMemory,proto3" json:"minFreeMemory,omitempty"` DefaultWorkerCpu string `protobuf:"bytes,8,opt,name=defaultWorkerCpu,proto3" json:"defaultWorkerCpu,omitempty"` DefaultWorkerMemory string `protobuf:"bytes,9,opt,name=defaultWorkerMemory,proto3" json:"defaultWorkerMemory,omitempty"` DefaultWorkerGpuCount string `protobuf:"bytes,10,opt,name=defaultWorkerGpuCount,proto3" json:"defaultWorkerGpuCount,omitempty"` State *WorkerPoolState `protobuf:"bytes,11,opt,name=state,proto3" json:"state,omitempty"` } func (x *Pool) Reset() { *x = Pool{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Pool) String() string { return protoimpl.X.MessageStringOf(x) } func (*Pool) ProtoMessage() {} func (x *Pool) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[65] 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 Pool.ProtoReflect.Descriptor instead. func (*Pool) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{65} } func (x *Pool) GetName() string { if x != nil { return x.Name } return "" } func (x *Pool) GetActive() bool { if x != nil { return x.Active } return false } func (x *Pool) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *Pool) GetMinFreeGpu() string { if x != nil { return x.MinFreeGpu } return "" } func (x *Pool) GetMinFreeCpu() string { if x != nil { return x.MinFreeCpu } return "" } func (x *Pool) GetMinFreeMemory() string { if x != nil { return x.MinFreeMemory } return "" } func (x *Pool) GetDefaultWorkerCpu() string { if x != nil { return x.DefaultWorkerCpu } return "" } func (x *Pool) GetDefaultWorkerMemory() string { if x != nil { return x.DefaultWorkerMemory } return "" } func (x *Pool) GetDefaultWorkerGpuCount() string { if x != nil { return x.DefaultWorkerGpuCount } return "" } func (x *Pool) GetState() *WorkerPoolState { if x != nil { return x.State } return nil } type ListPoolsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListPoolsRequest) Reset() { *x = ListPoolsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPoolsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPoolsRequest) ProtoMessage() {} func (x *ListPoolsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[66] 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 ListPoolsRequest.ProtoReflect.Descriptor instead. func (*ListPoolsRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{66} } func (x *ListPoolsRequest) GetFilters() map[string]*StringList { if x != nil { return x.Filters } return nil } func (x *ListPoolsRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } type ListPoolsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pools []*Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` } func (x *ListPoolsResponse) Reset() { *x = ListPoolsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPoolsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPoolsResponse) ProtoMessage() {} func (x *ListPoolsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[67] 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 ListPoolsResponse.ProtoReflect.Descriptor instead. func (*ListPoolsResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{67} } func (x *ListPoolsResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListPoolsResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListPoolsResponse) GetPools() []*Pool { if x != nil { return x.Pools } return nil } type PoolConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Gpu []string `protobuf:"bytes,2,rep,name=gpu,proto3" json:"gpu,omitempty"` Nodes uint32 `protobuf:"varint,3,opt,name=nodes,proto3" json:"nodes,omitempty"` Ttl string `protobuf:"bytes,4,opt,name=ttl,proto3" json:"ttl,omitempty"` MaxSpend float64 `protobuf:"fixed64,5,opt,name=max_spend,json=maxSpend,proto3" json:"max_spend,omitempty"` Providers []string `protobuf:"bytes,6,rep,name=providers,proto3" json:"providers,omitempty"` Regions []string `protobuf:"bytes,7,rep,name=regions,proto3" json:"regions,omitempty"` MinReliability float64 `protobuf:"fixed64,8,opt,name=min_reliability,json=minReliability,proto3" json:"min_reliability,omitempty"` Selector string `protobuf:"bytes,9,opt,name=selector,proto3" json:"selector,omitempty"` Mode string `protobuf:"bytes,10,opt,name=mode,proto3" json:"mode,omitempty"` Transport string `protobuf:"bytes,11,opt,name=transport,proto3" json:"transport,omitempty"` Fallback string `protobuf:"bytes,12,opt,name=fallback,proto3" json:"fallback,omitempty"` Priority int32 `protobuf:"varint,13,opt,name=priority,proto3" json:"priority,omitempty"` OfferId string `protobuf:"bytes,14,opt,name=offer_id,json=offerId,proto3" json:"offer_id,omitempty"` // Runtime for workers in this pool. ContainerRuntime string `protobuf:"bytes,15,opt,name=container_runtime,json=containerRuntime,proto3" json:"container_runtime,omitempty"` } func (x *PoolConfig) Reset() { *x = PoolConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PoolConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*PoolConfig) ProtoMessage() {} func (x *PoolConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[68] 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 PoolConfig.ProtoReflect.Descriptor instead. func (*PoolConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{68} } func (x *PoolConfig) GetName() string { if x != nil { return x.Name } return "" } func (x *PoolConfig) GetGpu() []string { if x != nil { return x.Gpu } return nil } func (x *PoolConfig) GetNodes() uint32 { if x != nil { return x.Nodes } return 0 } func (x *PoolConfig) GetTtl() string { if x != nil { return x.Ttl } return "" } func (x *PoolConfig) GetMaxSpend() float64 { if x != nil { return x.MaxSpend } return 0 } func (x *PoolConfig) GetProviders() []string { if x != nil { return x.Providers } return nil } func (x *PoolConfig) GetRegions() []string { if x != nil { return x.Regions } return nil } func (x *PoolConfig) GetMinReliability() float64 { if x != nil { return x.MinReliability } return 0 } func (x *PoolConfig) GetSelector() string { if x != nil { return x.Selector } return "" } func (x *PoolConfig) GetMode() string { if x != nil { return x.Mode } return "" } func (x *PoolConfig) GetTransport() string { if x != nil { return x.Transport } return "" } func (x *PoolConfig) GetFallback() string { if x != nil { return x.Fallback } return "" } func (x *PoolConfig) GetPriority() int32 { if x != nil { return x.Priority } return 0 } func (x *PoolConfig) GetOfferId() string { if x != nil { return x.OfferId } return "" } func (x *PoolConfig) GetContainerRuntime() string { if x != nil { return x.ContainerRuntime } return "" } type PoolOffer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Provider string `protobuf:"bytes,2,opt,name=provider,proto3" json:"provider,omitempty"` InstanceType string `protobuf:"bytes,3,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` Region string `protobuf:"bytes,4,opt,name=region,proto3" json:"region,omitempty"` Gpu string `protobuf:"bytes,5,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` CpuMillicores int64 `protobuf:"varint,7,opt,name=cpu_millicores,json=cpuMillicores,proto3" json:"cpu_millicores,omitempty"` MemoryMb int64 `protobuf:"varint,8,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"` HourlyCostMicros int64 `protobuf:"varint,9,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` Reliability float64 `protobuf:"fixed64,10,opt,name=reliability,proto3" json:"reliability,omitempty"` Available uint32 `protobuf:"varint,11,opt,name=available,proto3" json:"available,omitempty"` StorageMb int64 `protobuf:"varint,12,opt,name=storage_mb,json=storageMb,proto3" json:"storage_mb,omitempty"` Cloud string `protobuf:"bytes,13,opt,name=cloud,proto3" json:"cloud,omitempty"` NodeCount uint32 `protobuf:"varint,14,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` DisplayName string `protobuf:"bytes,15,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` Category string `protobuf:"bytes,16,opt,name=category,proto3" json:"category,omitempty"` RegionDisplayName string `protobuf:"bytes,17,opt,name=region_display_name,json=regionDisplayName,proto3" json:"region_display_name,omitempty"` Latitude float64 `protobuf:"fixed64,18,opt,name=latitude,proto3" json:"latitude,omitempty"` Longitude float64 `protobuf:"fixed64,19,opt,name=longitude,proto3" json:"longitude,omitempty"` } func (x *PoolOffer) Reset() { *x = PoolOffer{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PoolOffer) String() string { return protoimpl.X.MessageStringOf(x) } func (*PoolOffer) ProtoMessage() {} func (x *PoolOffer) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[69] 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 PoolOffer.ProtoReflect.Descriptor instead. func (*PoolOffer) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{69} } func (x *PoolOffer) GetId() string { if x != nil { return x.Id } return "" } func (x *PoolOffer) GetProvider() string { if x != nil { return x.Provider } return "" } func (x *PoolOffer) GetInstanceType() string { if x != nil { return x.InstanceType } return "" } func (x *PoolOffer) GetRegion() string { if x != nil { return x.Region } return "" } func (x *PoolOffer) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *PoolOffer) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *PoolOffer) GetCpuMillicores() int64 { if x != nil { return x.CpuMillicores } return 0 } func (x *PoolOffer) GetMemoryMb() int64 { if x != nil { return x.MemoryMb } return 0 } func (x *PoolOffer) GetHourlyCostMicros() int64 { if x != nil { return x.HourlyCostMicros } return 0 } func (x *PoolOffer) GetReliability() float64 { if x != nil { return x.Reliability } return 0 } func (x *PoolOffer) GetAvailable() uint32 { if x != nil { return x.Available } return 0 } func (x *PoolOffer) GetStorageMb() int64 { if x != nil { return x.StorageMb } return 0 } func (x *PoolOffer) GetCloud() string { if x != nil { return x.Cloud } return "" } func (x *PoolOffer) GetNodeCount() uint32 { if x != nil { return x.NodeCount } return 0 } func (x *PoolOffer) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *PoolOffer) GetCategory() string { if x != nil { return x.Category } return "" } func (x *PoolOffer) GetRegionDisplayName() string { if x != nil { return x.RegionDisplayName } return "" } func (x *PoolOffer) GetLatitude() float64 { if x != nil { return x.Latitude } return 0 } func (x *PoolOffer) GetLongitude() float64 { if x != nil { return x.Longitude } return 0 } type ProviderInstance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"` OfferId string `protobuf:"bytes,4,opt,name=offer_id,json=offerId,proto3" json:"offer_id,omitempty"` Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` HourlyCostMicros int64 `protobuf:"varint,7,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` Source string `protobuf:"bytes,8,opt,name=source,proto3" json:"source,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` BillingRenewalAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=billing_renewal_at,json=billingRenewalAt,proto3" json:"billing_renewal_at,omitempty"` StatusMessage string `protobuf:"bytes,12,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` TerminatingReason string `protobuf:"bytes,13,opt,name=terminating_reason,json=terminatingReason,proto3" json:"terminating_reason,omitempty"` MachineId string `protobuf:"bytes,14,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` Cloud string `protobuf:"bytes,15,opt,name=cloud,proto3" json:"cloud,omitempty"` Region string `protobuf:"bytes,16,opt,name=region,proto3" json:"region,omitempty"` NodeCount uint32 `protobuf:"varint,17,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"` InstanceType string `protobuf:"bytes,18,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` CpuMillicores int64 `protobuf:"varint,19,opt,name=cpu_millicores,json=cpuMillicores,proto3" json:"cpu_millicores,omitempty"` MemoryMb int64 `protobuf:"varint,20,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"` StorageMb int64 `protobuf:"varint,21,opt,name=storage_mb,json=storageMb,proto3" json:"storage_mb,omitempty"` } func (x *ProviderInstance) Reset() { *x = ProviderInstance{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ProviderInstance) String() string { return protoimpl.X.MessageStringOf(x) } func (*ProviderInstance) ProtoMessage() {} func (x *ProviderInstance) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[70] 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 ProviderInstance.ProtoReflect.Descriptor instead. func (*ProviderInstance) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{70} } func (x *ProviderInstance) GetId() string { if x != nil { return x.Id } return "" } func (x *ProviderInstance) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *ProviderInstance) GetProvider() string { if x != nil { return x.Provider } return "" } func (x *ProviderInstance) GetOfferId() string { if x != nil { return x.OfferId } return "" } func (x *ProviderInstance) GetStatus() string { if x != nil { return x.Status } return "" } func (x *ProviderInstance) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *ProviderInstance) GetHourlyCostMicros() int64 { if x != nil { return x.HourlyCostMicros } return 0 } func (x *ProviderInstance) GetSource() string { if x != nil { return x.Source } return "" } func (x *ProviderInstance) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ProviderInstance) GetExpiresAt() *timestamppb.Timestamp { if x != nil { return x.ExpiresAt } return nil } func (x *ProviderInstance) GetBillingRenewalAt() *timestamppb.Timestamp { if x != nil { return x.BillingRenewalAt } return nil } func (x *ProviderInstance) GetStatusMessage() string { if x != nil { return x.StatusMessage } return "" } func (x *ProviderInstance) GetTerminatingReason() string { if x != nil { return x.TerminatingReason } return "" } func (x *ProviderInstance) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *ProviderInstance) GetCloud() string { if x != nil { return x.Cloud } return "" } func (x *ProviderInstance) GetRegion() string { if x != nil { return x.Region } return "" } func (x *ProviderInstance) GetNodeCount() uint32 { if x != nil { return x.NodeCount } return 0 } func (x *ProviderInstance) GetInstanceType() string { if x != nil { return x.InstanceType } return "" } func (x *ProviderInstance) GetCpuMillicores() int64 { if x != nil { return x.CpuMillicores } return 0 } func (x *ProviderInstance) GetMemoryMb() int64 { if x != nil { return x.MemoryMb } return 0 } func (x *ProviderInstance) GetStorageMb() int64 { if x != nil { return x.StorageMb } return 0 } type PrivatePool struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Selector string `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` Config *PoolConfig `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"` Reservations []*ProviderInstance `protobuf:"bytes,4,rep,name=reservations,proto3" json:"reservations,omitempty"` CommittedSpendMicros int64 `protobuf:"varint,6,opt,name=committed_spend_micros,json=committedSpendMicros,proto3" json:"committed_spend_micros,omitempty"` Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` Source string `protobuf:"bytes,8,opt,name=source,proto3" json:"source,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` MachineCount uint32 `protobuf:"varint,11,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` ReadyMachineCount uint32 `protobuf:"varint,12,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` ReservedNodes uint32 `protobuf:"varint,13,opt,name=reserved_nodes,json=reservedNodes,proto3" json:"reserved_nodes,omitempty"` Byoc *BYOCPoolState `protobuf:"bytes,14,opt,name=byoc,proto3" json:"byoc,omitempty"` } func (x *PrivatePool) Reset() { *x = PrivatePool{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PrivatePool) String() string { return protoimpl.X.MessageStringOf(x) } func (*PrivatePool) ProtoMessage() {} func (x *PrivatePool) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[71] 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 PrivatePool.ProtoReflect.Descriptor instead. func (*PrivatePool) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{71} } func (x *PrivatePool) GetName() string { if x != nil { return x.Name } return "" } func (x *PrivatePool) GetSelector() string { if x != nil { return x.Selector } return "" } func (x *PrivatePool) GetConfig() *PoolConfig { if x != nil { return x.Config } return nil } func (x *PrivatePool) GetReservations() []*ProviderInstance { if x != nil { return x.Reservations } return nil } func (x *PrivatePool) GetCommittedSpendMicros() int64 { if x != nil { return x.CommittedSpendMicros } return 0 } func (x *PrivatePool) GetStatus() string { if x != nil { return x.Status } return "" } func (x *PrivatePool) GetSource() string { if x != nil { return x.Source } return "" } func (x *PrivatePool) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *PrivatePool) GetExpiresAt() *timestamppb.Timestamp { if x != nil { return x.ExpiresAt } return nil } func (x *PrivatePool) GetMachineCount() uint32 { if x != nil { return x.MachineCount } return 0 } func (x *PrivatePool) GetReadyMachineCount() uint32 { if x != nil { return x.ReadyMachineCount } return 0 } func (x *PrivatePool) GetReservedNodes() uint32 { if x != nil { return x.ReservedNodes } return 0 } func (x *PrivatePool) GetByoc() *BYOCPoolState { if x != nil { return x.Byoc } return nil } type ListPoolOffersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` } func (x *ListPoolOffersRequest) Reset() { *x = ListPoolOffersRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPoolOffersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPoolOffersRequest) ProtoMessage() {} func (x *ListPoolOffersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[72] 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 ListPoolOffersRequest.ProtoReflect.Descriptor instead. func (*ListPoolOffersRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{72} } func (x *ListPoolOffersRequest) GetPool() *PoolConfig { if x != nil { return x.Pool } return nil } type ListPoolOffersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Offers []*PoolOffer `protobuf:"bytes,3,rep,name=offers,proto3" json:"offers,omitempty"` } func (x *ListPoolOffersResponse) Reset() { *x = ListPoolOffersResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPoolOffersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPoolOffersResponse) ProtoMessage() {} func (x *ListPoolOffersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[73] 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 ListPoolOffersResponse.ProtoReflect.Descriptor instead. func (*ListPoolOffersResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{73} } func (x *ListPoolOffersResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListPoolOffersResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListPoolOffersResponse) GetOffers() []*PoolOffer { if x != nil { return x.Offers } return nil } type LaunchPoolCapacityRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` Nodes uint32 `protobuf:"varint,2,opt,name=nodes,proto3" json:"nodes,omitempty"` } func (x *LaunchPoolCapacityRequest) Reset() { *x = LaunchPoolCapacityRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LaunchPoolCapacityRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*LaunchPoolCapacityRequest) ProtoMessage() {} func (x *LaunchPoolCapacityRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[74] 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 LaunchPoolCapacityRequest.ProtoReflect.Descriptor instead. func (*LaunchPoolCapacityRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{74} } func (x *LaunchPoolCapacityRequest) GetPool() *PoolConfig { if x != nil { return x.Pool } return nil } func (x *LaunchPoolCapacityRequest) GetNodes() uint32 { if x != nil { return x.Nodes } return 0 } type LaunchPoolCapacityResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` ErrorCode string `protobuf:"bytes,4,opt,name=error_code,json=errorCode,proto3" json:"error_code,omitempty"` RequiredCents int64 `protobuf:"varint,5,opt,name=required_cents,json=requiredCents,proto3" json:"required_cents,omitempty"` AvailableCents int64 `protobuf:"varint,6,opt,name=available_cents,json=availableCents,proto3" json:"available_cents,omitempty"` } func (x *LaunchPoolCapacityResponse) Reset() { *x = LaunchPoolCapacityResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *LaunchPoolCapacityResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*LaunchPoolCapacityResponse) ProtoMessage() {} func (x *LaunchPoolCapacityResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[75] 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 LaunchPoolCapacityResponse.ProtoReflect.Descriptor instead. func (*LaunchPoolCapacityResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{75} } func (x *LaunchPoolCapacityResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *LaunchPoolCapacityResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *LaunchPoolCapacityResponse) GetPool() *PrivatePool { if x != nil { return x.Pool } return nil } func (x *LaunchPoolCapacityResponse) GetErrorCode() string { if x != nil { return x.ErrorCode } return "" } func (x *LaunchPoolCapacityResponse) GetRequiredCents() int64 { if x != nil { return x.RequiredCents } return 0 } func (x *LaunchPoolCapacityResponse) GetAvailableCents() int64 { if x != nil { return x.AvailableCents } return 0 } type ListPrivatePoolsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Filters map[string]*StringList `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListPrivatePoolsRequest) Reset() { *x = ListPrivatePoolsRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPrivatePoolsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPrivatePoolsRequest) ProtoMessage() {} func (x *ListPrivatePoolsRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[76] 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 ListPrivatePoolsRequest.ProtoReflect.Descriptor instead. func (*ListPrivatePoolsRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{76} } func (x *ListPrivatePoolsRequest) GetFilters() map[string]*StringList { if x != nil { return x.Filters } return nil } func (x *ListPrivatePoolsRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } type ListPrivatePoolsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pools []*PrivatePool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"` } func (x *ListPrivatePoolsResponse) Reset() { *x = ListPrivatePoolsResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPrivatePoolsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPrivatePoolsResponse) ProtoMessage() {} func (x *ListPrivatePoolsResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[77] 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 ListPrivatePoolsResponse.ProtoReflect.Descriptor instead. func (*ListPrivatePoolsResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{77} } func (x *ListPrivatePoolsResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListPrivatePoolsResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListPrivatePoolsResponse) GetPools() []*PrivatePool { if x != nil { return x.Pools } return nil } type CreateBYOCPoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` InstanceType string `protobuf:"bytes,4,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` DesiredNodes uint32 `protobuf:"varint,5,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` MaxNodes uint32 `protobuf:"varint,6,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` AccountId string `protobuf:"bytes,7,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` Gpu string `protobuf:"bytes,8,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,9,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` } func (x *CreateBYOCPoolRequest) Reset() { *x = CreateBYOCPoolRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateBYOCPoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateBYOCPoolRequest) ProtoMessage() {} func (x *CreateBYOCPoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[78] 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 CreateBYOCPoolRequest.ProtoReflect.Descriptor instead. func (*CreateBYOCPoolRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{78} } func (x *CreateBYOCPoolRequest) GetProvider() string { if x != nil { return x.Provider } return "" } func (x *CreateBYOCPoolRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *CreateBYOCPoolRequest) GetRegion() string { if x != nil { return x.Region } return "" } func (x *CreateBYOCPoolRequest) GetInstanceType() string { if x != nil { return x.InstanceType } return "" } func (x *CreateBYOCPoolRequest) GetDesiredNodes() uint32 { if x != nil { return x.DesiredNodes } return 0 } func (x *CreateBYOCPoolRequest) GetMaxNodes() uint32 { if x != nil { return x.MaxNodes } return 0 } func (x *CreateBYOCPoolRequest) GetAccountId() string { if x != nil { return x.AccountId } return "" } func (x *CreateBYOCPoolRequest) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *CreateBYOCPoolRequest) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } type CreateBYOCPoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` SetupUrl string `protobuf:"bytes,4,opt,name=setup_url,json=setupUrl,proto3" json:"setup_url,omitempty"` ResourceName string `protobuf:"bytes,5,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` ResourceUrl string `protobuf:"bytes,6,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` Byoc *BYOCPoolState `protobuf:"bytes,7,opt,name=byoc,proto3" json:"byoc,omitempty"` } func (x *CreateBYOCPoolResponse) Reset() { *x = CreateBYOCPoolResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateBYOCPoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateBYOCPoolResponse) ProtoMessage() {} func (x *CreateBYOCPoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[79] 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 CreateBYOCPoolResponse.ProtoReflect.Descriptor instead. func (*CreateBYOCPoolResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{79} } func (x *CreateBYOCPoolResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreateBYOCPoolResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *CreateBYOCPoolResponse) GetPool() *PrivatePool { if x != nil { return x.Pool } return nil } func (x *CreateBYOCPoolResponse) GetSetupUrl() string { if x != nil { return x.SetupUrl } return "" } func (x *CreateBYOCPoolResponse) GetResourceName() string { if x != nil { return x.ResourceName } return "" } func (x *CreateBYOCPoolResponse) GetResourceUrl() string { if x != nil { return x.ResourceUrl } return "" } func (x *CreateBYOCPoolResponse) GetByoc() *BYOCPoolState { if x != nil { return x.Byoc } return nil } type BYOCPoolState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Provider string `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"` AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` ResourceName string `protobuf:"bytes,4,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` ResourceUrl string `protobuf:"bytes,5,opt,name=resource_url,json=resourceUrl,proto3" json:"resource_url,omitempty"` DestroyUrl string `protobuf:"bytes,6,opt,name=destroy_url,json=destroyUrl,proto3" json:"destroy_url,omitempty"` Phase string `protobuf:"bytes,7,opt,name=phase,proto3" json:"phase,omitempty"` DesiredNodes uint32 `protobuf:"varint,8,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` MaxNodes uint32 `protobuf:"varint,9,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` TargetSandboxes uint32 `protobuf:"varint,10,opt,name=target_sandboxes,json=targetSandboxes,proto3" json:"target_sandboxes,omitempty"` SandboxesPerNode uint32 `protobuf:"varint,11,opt,name=sandboxes_per_node,json=sandboxesPerNode,proto3" json:"sandboxes_per_node,omitempty"` InstanceType string `protobuf:"bytes,12,opt,name=instance_type,json=instanceType,proto3" json:"instance_type,omitempty"` MachineCount uint32 `protobuf:"varint,13,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` ReadyMachineCount uint32 `protobuf:"varint,14,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` Message string `protobuf:"bytes,15,opt,name=message,proto3" json:"message,omitempty"` HourlyCostMicros int64 `protobuf:"varint,16,opt,name=hourly_cost_micros,json=hourlyCostMicros,proto3" json:"hourly_cost_micros,omitempty"` TotalHourlyCostMicros int64 `protobuf:"varint,17,opt,name=total_hourly_cost_micros,json=totalHourlyCostMicros,proto3" json:"total_hourly_cost_micros,omitempty"` DirectScaleEnabled bool `protobuf:"varint,18,opt,name=direct_scale_enabled,json=directScaleEnabled,proto3" json:"direct_scale_enabled,omitempty"` Gpu string `protobuf:"bytes,19,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,20,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` } func (x *BYOCPoolState) Reset() { *x = BYOCPoolState{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BYOCPoolState) String() string { return protoimpl.X.MessageStringOf(x) } func (*BYOCPoolState) ProtoMessage() {} func (x *BYOCPoolState) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[80] 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 BYOCPoolState.ProtoReflect.Descriptor instead. func (*BYOCPoolState) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{80} } func (x *BYOCPoolState) GetProvider() string { if x != nil { return x.Provider } return "" } func (x *BYOCPoolState) GetAccountId() string { if x != nil { return x.AccountId } return "" } func (x *BYOCPoolState) GetRegion() string { if x != nil { return x.Region } return "" } func (x *BYOCPoolState) GetResourceName() string { if x != nil { return x.ResourceName } return "" } func (x *BYOCPoolState) GetResourceUrl() string { if x != nil { return x.ResourceUrl } return "" } func (x *BYOCPoolState) GetDestroyUrl() string { if x != nil { return x.DestroyUrl } return "" } func (x *BYOCPoolState) GetPhase() string { if x != nil { return x.Phase } return "" } func (x *BYOCPoolState) GetDesiredNodes() uint32 { if x != nil { return x.DesiredNodes } return 0 } func (x *BYOCPoolState) GetMaxNodes() uint32 { if x != nil { return x.MaxNodes } return 0 } func (x *BYOCPoolState) GetTargetSandboxes() uint32 { if x != nil { return x.TargetSandboxes } return 0 } func (x *BYOCPoolState) GetSandboxesPerNode() uint32 { if x != nil { return x.SandboxesPerNode } return 0 } func (x *BYOCPoolState) GetInstanceType() string { if x != nil { return x.InstanceType } return "" } func (x *BYOCPoolState) GetMachineCount() uint32 { if x != nil { return x.MachineCount } return 0 } func (x *BYOCPoolState) GetReadyMachineCount() uint32 { if x != nil { return x.ReadyMachineCount } return 0 } func (x *BYOCPoolState) GetMessage() string { if x != nil { return x.Message } return "" } func (x *BYOCPoolState) GetHourlyCostMicros() int64 { if x != nil { return x.HourlyCostMicros } return 0 } func (x *BYOCPoolState) GetTotalHourlyCostMicros() int64 { if x != nil { return x.TotalHourlyCostMicros } return 0 } func (x *BYOCPoolState) GetDirectScaleEnabled() bool { if x != nil { return x.DirectScaleEnabled } return false } func (x *BYOCPoolState) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *BYOCPoolState) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } type GetBYOCPoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` } func (x *GetBYOCPoolRequest) Reset() { *x = GetBYOCPoolRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetBYOCPoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBYOCPoolRequest) ProtoMessage() {} func (x *GetBYOCPoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[81] 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 GetBYOCPoolRequest.ProtoReflect.Descriptor instead. func (*GetBYOCPoolRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{81} } func (x *GetBYOCPoolRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } type GetBYOCPoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` Ready bool `protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"` ReadyMachineCount uint32 `protobuf:"varint,5,opt,name=ready_machine_count,json=readyMachineCount,proto3" json:"ready_machine_count,omitempty"` MachineCount uint32 `protobuf:"varint,6,opt,name=machine_count,json=machineCount,proto3" json:"machine_count,omitempty"` Byoc *BYOCPoolState `protobuf:"bytes,7,opt,name=byoc,proto3" json:"byoc,omitempty"` } func (x *GetBYOCPoolResponse) Reset() { *x = GetBYOCPoolResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetBYOCPoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetBYOCPoolResponse) ProtoMessage() {} func (x *GetBYOCPoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[82] 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 GetBYOCPoolResponse.ProtoReflect.Descriptor instead. func (*GetBYOCPoolResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{82} } func (x *GetBYOCPoolResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetBYOCPoolResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetBYOCPoolResponse) GetPool() *PrivatePool { if x != nil { return x.Pool } return nil } func (x *GetBYOCPoolResponse) GetReady() bool { if x != nil { return x.Ready } return false } func (x *GetBYOCPoolResponse) GetReadyMachineCount() uint32 { if x != nil { return x.ReadyMachineCount } return 0 } func (x *GetBYOCPoolResponse) GetMachineCount() uint32 { if x != nil { return x.MachineCount } return 0 } func (x *GetBYOCPoolResponse) GetByoc() *BYOCPoolState { if x != nil { return x.Byoc } return nil } type ScaleBYOCPoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` DesiredNodes uint32 `protobuf:"varint,2,opt,name=desired_nodes,json=desiredNodes,proto3" json:"desired_nodes,omitempty"` MaxNodes uint32 `protobuf:"varint,3,opt,name=max_nodes,json=maxNodes,proto3" json:"max_nodes,omitempty"` } func (x *ScaleBYOCPoolRequest) Reset() { *x = ScaleBYOCPoolRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScaleBYOCPoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScaleBYOCPoolRequest) ProtoMessage() {} func (x *ScaleBYOCPoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[83] 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 ScaleBYOCPoolRequest.ProtoReflect.Descriptor instead. func (*ScaleBYOCPoolRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{83} } func (x *ScaleBYOCPoolRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *ScaleBYOCPoolRequest) GetDesiredNodes() uint32 { if x != nil { return x.DesiredNodes } return 0 } func (x *ScaleBYOCPoolRequest) GetMaxNodes() uint32 { if x != nil { return x.MaxNodes } return 0 } type ScaleBYOCPoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` Byoc *BYOCPoolState `protobuf:"bytes,4,opt,name=byoc,proto3" json:"byoc,omitempty"` } func (x *ScaleBYOCPoolResponse) Reset() { *x = ScaleBYOCPoolResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ScaleBYOCPoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScaleBYOCPoolResponse) ProtoMessage() {} func (x *ScaleBYOCPoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[84] 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 ScaleBYOCPoolResponse.ProtoReflect.Descriptor instead. func (*ScaleBYOCPoolResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{84} } func (x *ScaleBYOCPoolResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ScaleBYOCPoolResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ScaleBYOCPoolResponse) GetPool() *PrivatePool { if x != nil { return x.Pool } return nil } func (x *ScaleBYOCPoolResponse) GetByoc() *BYOCPoolState { if x != nil { return x.Byoc } return nil } type GetProviderJoinCommandRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // GPU type of the machines that will join (one provider pool per GPU type). Gpu string `protobuf:"bytes,1,opt,name=gpu,proto3" json:"gpu,omitempty"` Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` } func (x *GetProviderJoinCommandRequest) Reset() { *x = GetProviderJoinCommandRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetProviderJoinCommandRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetProviderJoinCommandRequest) ProtoMessage() {} func (x *GetProviderJoinCommandRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[85] 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 GetProviderJoinCommandRequest.ProtoReflect.Descriptor instead. func (*GetProviderJoinCommandRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{85} } func (x *GetProviderJoinCommandRequest) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *GetProviderJoinCommandRequest) GetTtl() string { if x != nil { return x.Ttl } return "" } type GetProviderJoinCommandResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` PoolName string `protobuf:"bytes,6,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` } func (x *GetProviderJoinCommandResponse) Reset() { *x = GetProviderJoinCommandResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetProviderJoinCommandResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetProviderJoinCommandResponse) ProtoMessage() {} func (x *GetProviderJoinCommandResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[86] 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 GetProviderJoinCommandResponse.ProtoReflect.Descriptor instead. func (*GetProviderJoinCommandResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{86} } func (x *GetProviderJoinCommandResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetProviderJoinCommandResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetProviderJoinCommandResponse) GetCommand() string { if x != nil { return x.Command } return "" } func (x *GetProviderJoinCommandResponse) GetToken() string { if x != nil { return x.Token } return "" } func (x *GetProviderJoinCommandResponse) GetExpiresAt() *timestamppb.Timestamp { if x != nil { return x.ExpiresAt } return nil } func (x *GetProviderJoinCommandResponse) GetPoolName() string { if x != nil { return x.PoolName } return "" } type ListProviderMachinesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListProviderMachinesRequest) Reset() { *x = ListProviderMachinesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListProviderMachinesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProviderMachinesRequest) ProtoMessage() {} func (x *ListProviderMachinesRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[87] 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 ListProviderMachinesRequest.ProtoReflect.Descriptor instead. func (*ListProviderMachinesRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{87} } type ListProviderMachinesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` } func (x *ListProviderMachinesResponse) Reset() { *x = ListProviderMachinesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListProviderMachinesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProviderMachinesResponse) ProtoMessage() {} func (x *ListProviderMachinesResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[88] 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 ListProviderMachinesResponse.ProtoReflect.Descriptor instead. func (*ListProviderMachinesResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{88} } func (x *ListProviderMachinesResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListProviderMachinesResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListProviderMachinesResponse) GetMachines() []*Machine { if x != nil { return x.Machines } return nil } // Managed endpoint usage of the calling workspace: what it spent calling // models ("spend") or earned serving them on its contributed machines ("earned"). type GetEndpointUsageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // spend (default) | earned // Inclusive UTC day bounds (YYYY-MM-DD); end_date defaults to today. StartDate string `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` EndDate string `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` } func (x *GetEndpointUsageRequest) Reset() { *x = GetEndpointUsageRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetEndpointUsageRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetEndpointUsageRequest) ProtoMessage() {} func (x *GetEndpointUsageRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[89] 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 GetEndpointUsageRequest.ProtoReflect.Descriptor instead. func (*GetEndpointUsageRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{89} } func (x *GetEndpointUsageRequest) GetKind() string { if x != nil { return x.Kind } return "" } func (x *GetEndpointUsageRequest) GetStartDate() string { if x != nil { return x.StartDate } return "" } func (x *GetEndpointUsageRequest) GetEndDate() string { if x != nil { return x.EndDate } return "" } type EndpointUsage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Requests int64 `protobuf:"varint,1,opt,name=requests,proto3" json:"requests,omitempty"` PromptTokens int64 `protobuf:"varint,2,opt,name=prompt_tokens,json=promptTokens,proto3" json:"prompt_tokens,omitempty"` CompletionTokens int64 `protobuf:"varint,3,opt,name=completion_tokens,json=completionTokens,proto3" json:"completion_tokens,omitempty"` Images int64 `protobuf:"varint,4,opt,name=images,proto3" json:"images,omitempty"` MicroUsd int64 `protobuf:"varint,5,opt,name=micro_usd,json=microUsd,proto3" json:"micro_usd,omitempty"` // Cached tokens are included in prompt_tokens. Prompt cost excludes cache. CachedTokens int64 `protobuf:"varint,6,opt,name=cached_tokens,json=cachedTokens,proto3" json:"cached_tokens,omitempty"` PromptMicroUsd int64 `protobuf:"varint,7,opt,name=prompt_micro_usd,json=promptMicroUsd,proto3" json:"prompt_micro_usd,omitempty"` CompletionMicroUsd int64 `protobuf:"varint,8,opt,name=completion_micro_usd,json=completionMicroUsd,proto3" json:"completion_micro_usd,omitempty"` CachedMicroUsd int64 `protobuf:"varint,9,opt,name=cached_micro_usd,json=cachedMicroUsd,proto3" json:"cached_micro_usd,omitempty"` RequestMicroUsd int64 `protobuf:"varint,10,opt,name=request_micro_usd,json=requestMicroUsd,proto3" json:"request_micro_usd,omitempty"` ImageMicroUsd int64 `protobuf:"varint,11,opt,name=image_micro_usd,json=imageMicroUsd,proto3" json:"image_micro_usd,omitempty"` } func (x *EndpointUsage) Reset() { *x = EndpointUsage{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EndpointUsage) String() string { return protoimpl.X.MessageStringOf(x) } func (*EndpointUsage) ProtoMessage() {} func (x *EndpointUsage) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[90] 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 EndpointUsage.ProtoReflect.Descriptor instead. func (*EndpointUsage) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{90} } func (x *EndpointUsage) GetRequests() int64 { if x != nil { return x.Requests } return 0 } func (x *EndpointUsage) GetPromptTokens() int64 { if x != nil { return x.PromptTokens } return 0 } func (x *EndpointUsage) GetCompletionTokens() int64 { if x != nil { return x.CompletionTokens } return 0 } func (x *EndpointUsage) GetImages() int64 { if x != nil { return x.Images } return 0 } func (x *EndpointUsage) GetMicroUsd() int64 { if x != nil { return x.MicroUsd } return 0 } func (x *EndpointUsage) GetCachedTokens() int64 { if x != nil { return x.CachedTokens } return 0 } func (x *EndpointUsage) GetPromptMicroUsd() int64 { if x != nil { return x.PromptMicroUsd } return 0 } func (x *EndpointUsage) GetCompletionMicroUsd() int64 { if x != nil { return x.CompletionMicroUsd } return 0 } func (x *EndpointUsage) GetCachedMicroUsd() int64 { if x != nil { return x.CachedMicroUsd } return 0 } func (x *EndpointUsage) GetRequestMicroUsd() int64 { if x != nil { return x.RequestMicroUsd } return 0 } func (x *EndpointUsage) GetImageMicroUsd() int64 { if x != nil { return x.ImageMicroUsd } return 0 } type GetEndpointUsageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Total *EndpointUsage `protobuf:"bytes,3,opt,name=total,proto3" json:"total,omitempty"` PerModel map[string]*EndpointUsage `protobuf:"bytes,4,rep,name=per_model,json=perModel,proto3" json:"per_model,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` PerDay map[string]*EndpointUsage `protobuf:"bytes,5,rep,name=per_day,json=perDay,proto3" json:"per_day,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *GetEndpointUsageResponse) Reset() { *x = GetEndpointUsageResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetEndpointUsageResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetEndpointUsageResponse) ProtoMessage() {} func (x *GetEndpointUsageResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[91] 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 GetEndpointUsageResponse.ProtoReflect.Descriptor instead. func (*GetEndpointUsageResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{91} } func (x *GetEndpointUsageResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetEndpointUsageResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetEndpointUsageResponse) GetTotal() *EndpointUsage { if x != nil { return x.Total } return nil } func (x *GetEndpointUsageResponse) GetPerModel() map[string]*EndpointUsage { if x != nil { return x.PerModel } return nil } func (x *GetEndpointUsageResponse) GetPerDay() map[string]*EndpointUsage { if x != nil { return x.PerDay } return nil } type ListMachineContainersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` } func (x *ListMachineContainersRequest) Reset() { *x = ListMachineContainersRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListMachineContainersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListMachineContainersRequest) ProtoMessage() {} func (x *ListMachineContainersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[92] 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 ListMachineContainersRequest.ProtoReflect.Descriptor instead. func (*ListMachineContainersRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{92} } func (x *ListMachineContainersRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *ListMachineContainersRequest) GetMachineId() string { if x != nil { return x.MachineId } return "" } type MachineContainer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` StubId string `protobuf:"bytes,2,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` WorkspaceId string `protobuf:"bytes,4,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` Gpu string `protobuf:"bytes,5,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,6,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` Cpu int64 `protobuf:"varint,7,opt,name=cpu,proto3" json:"cpu,omitempty"` Memory int64 `protobuf:"varint,8,opt,name=memory,proto3" json:"memory,omitempty"` ScheduledAt int64 `protobuf:"varint,9,opt,name=scheduled_at,json=scheduledAt,proto3" json:"scheduled_at,omitempty"` StartedAt int64 `protobuf:"varint,10,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` } func (x *MachineContainer) Reset() { *x = MachineContainer{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MachineContainer) String() string { return protoimpl.X.MessageStringOf(x) } func (*MachineContainer) ProtoMessage() {} func (x *MachineContainer) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[93] 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 MachineContainer.ProtoReflect.Descriptor instead. func (*MachineContainer) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{93} } func (x *MachineContainer) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *MachineContainer) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *MachineContainer) GetStatus() string { if x != nil { return x.Status } return "" } func (x *MachineContainer) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *MachineContainer) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *MachineContainer) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *MachineContainer) GetCpu() int64 { if x != nil { return x.Cpu } return 0 } func (x *MachineContainer) GetMemory() int64 { if x != nil { return x.Memory } return 0 } func (x *MachineContainer) GetScheduledAt() int64 { if x != nil { return x.ScheduledAt } return 0 } func (x *MachineContainer) GetStartedAt() int64 { if x != nil { return x.StartedAt } return 0 } type ListMachineContainersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Containers []*MachineContainer `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty"` } func (x *ListMachineContainersResponse) Reset() { *x = ListMachineContainersResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListMachineContainersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListMachineContainersResponse) ProtoMessage() {} func (x *ListMachineContainersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[94] 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 ListMachineContainersResponse.ProtoReflect.Descriptor instead. func (*ListMachineContainersResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{94} } func (x *ListMachineContainersResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListMachineContainersResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListMachineContainersResponse) GetContainers() []*MachineContainer { if x != nil { return x.Containers } return nil } type CreatePoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Pool *PoolConfig `protobuf:"bytes,1,opt,name=pool,proto3" json:"pool,omitempty"` } func (x *CreatePoolRequest) Reset() { *x = CreatePoolRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreatePoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreatePoolRequest) ProtoMessage() {} func (x *CreatePoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[95] 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 CreatePoolRequest.ProtoReflect.Descriptor instead. func (*CreatePoolRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{95} } func (x *CreatePoolRequest) GetPool() *PoolConfig { if x != nil { return x.Pool } return nil } type CreatePoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` } func (x *CreatePoolResponse) Reset() { *x = CreatePoolResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreatePoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreatePoolResponse) ProtoMessage() {} func (x *CreatePoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[96] 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 CreatePoolResponse.ProtoReflect.Descriptor instead. func (*CreatePoolResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{96} } func (x *CreatePoolResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreatePoolResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *CreatePoolResponse) GetPool() *PrivatePool { if x != nil { return x.Pool } return nil } type DeletePoolRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeletePoolRequest) Reset() { *x = DeletePoolRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeletePoolRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeletePoolRequest) ProtoMessage() {} func (x *DeletePoolRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[97] 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 DeletePoolRequest.ProtoReflect.Descriptor instead. func (*DeletePoolRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{97} } func (x *DeletePoolRequest) GetName() string { if x != nil { return x.Name } return "" } type DeletePoolResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *DeletePoolResponse) Reset() { *x = DeletePoolResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeletePoolResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeletePoolResponse) ProtoMessage() {} func (x *DeletePoolResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[98] 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 DeletePoolResponse.ProtoReflect.Descriptor instead. func (*DeletePoolResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{98} } func (x *DeletePoolResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DeletePoolResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type ExtendPoolCapacityRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` MaxSpend float64 `protobuf:"fixed64,3,opt,name=max_spend,json=maxSpend,proto3" json:"max_spend,omitempty"` } func (x *ExtendPoolCapacityRequest) Reset() { *x = ExtendPoolCapacityRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExtendPoolCapacityRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExtendPoolCapacityRequest) ProtoMessage() {} func (x *ExtendPoolCapacityRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[99] 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 ExtendPoolCapacityRequest.ProtoReflect.Descriptor instead. func (*ExtendPoolCapacityRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{99} } func (x *ExtendPoolCapacityRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *ExtendPoolCapacityRequest) GetTtl() string { if x != nil { return x.Ttl } return "" } func (x *ExtendPoolCapacityRequest) GetMaxSpend() float64 { if x != nil { return x.MaxSpend } return 0 } type ExtendPoolCapacityResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Pool *PrivatePool `protobuf:"bytes,3,opt,name=pool,proto3" json:"pool,omitempty"` } func (x *ExtendPoolCapacityResponse) Reset() { *x = ExtendPoolCapacityResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExtendPoolCapacityResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExtendPoolCapacityResponse) ProtoMessage() {} func (x *ExtendPoolCapacityResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[100] 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 ExtendPoolCapacityResponse.ProtoReflect.Descriptor instead. func (*ExtendPoolCapacityResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{100} } func (x *ExtendPoolCapacityResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ExtendPoolCapacityResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ExtendPoolCapacityResponse) GetPool() *PrivatePool { if x != nil { return x.Pool } return nil } type CreatePoolJoinTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` } func (x *CreatePoolJoinTokenRequest) Reset() { *x = CreatePoolJoinTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreatePoolJoinTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreatePoolJoinTokenRequest) ProtoMessage() {} func (x *CreatePoolJoinTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[101] 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 CreatePoolJoinTokenRequest.ProtoReflect.Descriptor instead. func (*CreatePoolJoinTokenRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{101} } func (x *CreatePoolJoinTokenRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *CreatePoolJoinTokenRequest) GetTtl() string { if x != nil { return x.Ttl } return "" } type CreatePoolJoinTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } func (x *CreatePoolJoinTokenResponse) Reset() { *x = CreatePoolJoinTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreatePoolJoinTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreatePoolJoinTokenResponse) ProtoMessage() {} func (x *CreatePoolJoinTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[102] 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 CreatePoolJoinTokenResponse.ProtoReflect.Descriptor instead. func (*CreatePoolJoinTokenResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{102} } func (x *CreatePoolJoinTokenResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreatePoolJoinTokenResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *CreatePoolJoinTokenResponse) GetToken() string { if x != nil { return x.Token } return "" } func (x *CreatePoolJoinTokenResponse) GetExpiresAt() *timestamppb.Timestamp { if x != nil { return x.ExpiresAt } return nil } type RevokePoolJoinTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` } func (x *RevokePoolJoinTokenRequest) Reset() { *x = RevokePoolJoinTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokePoolJoinTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokePoolJoinTokenRequest) ProtoMessage() {} func (x *RevokePoolJoinTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[103] 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 RevokePoolJoinTokenRequest.ProtoReflect.Descriptor instead. func (*RevokePoolJoinTokenRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{103} } func (x *RevokePoolJoinTokenRequest) GetToken() string { if x != nil { return x.Token } return "" } type RevokePoolJoinTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *RevokePoolJoinTokenResponse) Reset() { *x = RevokePoolJoinTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RevokePoolJoinTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RevokePoolJoinTokenResponse) ProtoMessage() {} func (x *RevokePoolJoinTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[104] 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 RevokePoolJoinTokenResponse.ProtoReflect.Descriptor instead. func (*RevokePoolJoinTokenResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{104} } func (x *RevokePoolJoinTokenResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *RevokePoolJoinTokenResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type GetPoolJoinCommandRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Ttl string `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` } func (x *GetPoolJoinCommandRequest) Reset() { *x = GetPoolJoinCommandRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPoolJoinCommandRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPoolJoinCommandRequest) ProtoMessage() {} func (x *GetPoolJoinCommandRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[105] 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 GetPoolJoinCommandRequest.ProtoReflect.Descriptor instead. func (*GetPoolJoinCommandRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{105} } func (x *GetPoolJoinCommandRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *GetPoolJoinCommandRequest) GetTtl() string { if x != nil { return x.Ttl } return "" } type GetPoolJoinCommandResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"` ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` } func (x *GetPoolJoinCommandResponse) Reset() { *x = GetPoolJoinCommandResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetPoolJoinCommandResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetPoolJoinCommandResponse) ProtoMessage() {} func (x *GetPoolJoinCommandResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[106] 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 GetPoolJoinCommandResponse.ProtoReflect.Descriptor instead. func (*GetPoolJoinCommandResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{106} } func (x *GetPoolJoinCommandResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetPoolJoinCommandResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetPoolJoinCommandResponse) GetCommand() string { if x != nil { return x.Command } return "" } func (x *GetPoolJoinCommandResponse) GetToken() string { if x != nil { return x.Token } return "" } func (x *GetPoolJoinCommandResponse) GetExpiresAt() *timestamppb.Timestamp { if x != nil { return x.ExpiresAt } return nil } type ListPoolMachinesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListPoolMachinesRequest) Reset() { *x = ListPoolMachinesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPoolMachinesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPoolMachinesRequest) ProtoMessage() {} func (x *ListPoolMachinesRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[107] 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 ListPoolMachinesRequest.ProtoReflect.Descriptor instead. func (*ListPoolMachinesRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{107} } func (x *ListPoolMachinesRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *ListPoolMachinesRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } type ListPoolMachinesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` } func (x *ListPoolMachinesResponse) Reset() { *x = ListPoolMachinesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListPoolMachinesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListPoolMachinesResponse) ProtoMessage() {} func (x *ListPoolMachinesResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[108] 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 ListPoolMachinesResponse.ProtoReflect.Descriptor instead. func (*ListPoolMachinesResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{108} } func (x *ListPoolMachinesResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListPoolMachinesResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListPoolMachinesResponse) GetMachines() []*Machine { if x != nil { return x.Machines } return nil } type AgentBootstrapConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GatewayHttpUrl string `protobuf:"bytes,1,opt,name=gateway_http_url,json=gatewayHttpUrl,proto3" json:"gateway_http_url,omitempty"` GatewayGrpcHost string `protobuf:"bytes,2,opt,name=gateway_grpc_host,json=gatewayGrpcHost,proto3" json:"gateway_grpc_host,omitempty"` GatewayGrpcPort int32 `protobuf:"varint,3,opt,name=gateway_grpc_port,json=gatewayGrpcPort,proto3" json:"gateway_grpc_port,omitempty"` GatewayGrpcTls bool `protobuf:"varint,4,opt,name=gateway_grpc_tls,json=gatewayGrpcTls,proto3" json:"gateway_grpc_tls,omitempty"` WorkspaceId string `protobuf:"bytes,5,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` PoolName string `protobuf:"bytes,6,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Transport string `protobuf:"bytes,7,opt,name=transport,proto3" json:"transport,omitempty"` Executor string `protobuf:"bytes,8,opt,name=executor,proto3" json:"executor,omitempty"` Fallback string `protobuf:"bytes,9,opt,name=fallback,proto3" json:"fallback,omitempty"` ImageRegistryStore string `protobuf:"bytes,11,opt,name=image_registry_store,json=imageRegistryStore,proto3" json:"image_registry_store,omitempty"` ImageClipVersion uint32 `protobuf:"varint,12,opt,name=image_clip_version,json=imageClipVersion,proto3" json:"image_clip_version,omitempty"` ImageLocalCacheEnabled bool `protobuf:"varint,13,opt,name=image_local_cache_enabled,json=imageLocalCacheEnabled,proto3" json:"image_local_cache_enabled,omitempty"` Telemetry *AgentTelemetryConfig `protobuf:"bytes,14,opt,name=telemetry,proto3" json:"telemetry,omitempty"` // Non-secret publishing settings; registry credentials remain gateway-brokered. ImageBuildRegistry string `protobuf:"bytes,15,opt,name=image_build_registry,json=imageBuildRegistry,proto3" json:"image_build_registry,omitempty"` ImageBuildRepositoryName string `protobuf:"bytes,16,opt,name=image_build_repository_name,json=imageBuildRepositoryName,proto3" json:"image_build_repository_name,omitempty"` ImageBuildRegistryInsecure bool `protobuf:"varint,17,opt,name=image_build_registry_insecure,json=imageBuildRegistryInsecure,proto3" json:"image_build_registry_insecure,omitempty"` } func (x *AgentBootstrapConfig) Reset() { *x = AgentBootstrapConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentBootstrapConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentBootstrapConfig) ProtoMessage() {} func (x *AgentBootstrapConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[109] 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 AgentBootstrapConfig.ProtoReflect.Descriptor instead. func (*AgentBootstrapConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{109} } func (x *AgentBootstrapConfig) GetGatewayHttpUrl() string { if x != nil { return x.GatewayHttpUrl } return "" } func (x *AgentBootstrapConfig) GetGatewayGrpcHost() string { if x != nil { return x.GatewayGrpcHost } return "" } func (x *AgentBootstrapConfig) GetGatewayGrpcPort() int32 { if x != nil { return x.GatewayGrpcPort } return 0 } func (x *AgentBootstrapConfig) GetGatewayGrpcTls() bool { if x != nil { return x.GatewayGrpcTls } return false } func (x *AgentBootstrapConfig) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *AgentBootstrapConfig) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *AgentBootstrapConfig) GetTransport() string { if x != nil { return x.Transport } return "" } func (x *AgentBootstrapConfig) GetExecutor() string { if x != nil { return x.Executor } return "" } func (x *AgentBootstrapConfig) GetFallback() string { if x != nil { return x.Fallback } return "" } func (x *AgentBootstrapConfig) GetImageRegistryStore() string { if x != nil { return x.ImageRegistryStore } return "" } func (x *AgentBootstrapConfig) GetImageClipVersion() uint32 { if x != nil { return x.ImageClipVersion } return 0 } func (x *AgentBootstrapConfig) GetImageLocalCacheEnabled() bool { if x != nil { return x.ImageLocalCacheEnabled } return false } func (x *AgentBootstrapConfig) GetTelemetry() *AgentTelemetryConfig { if x != nil { return x.Telemetry } return nil } func (x *AgentBootstrapConfig) GetImageBuildRegistry() string { if x != nil { return x.ImageBuildRegistry } return "" } func (x *AgentBootstrapConfig) GetImageBuildRepositoryName() string { if x != nil { return x.ImageBuildRepositoryName } return "" } func (x *AgentBootstrapConfig) GetImageBuildRegistryInsecure() bool { if x != nil { return x.ImageBuildRegistryInsecure } return false } type AgentTelemetryConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` StreamPrefix string `protobuf:"bytes,2,opt,name=stream_prefix,json=streamPrefix,proto3" json:"stream_prefix,omitempty"` Logs *AgentTelemetrySinkConfig `protobuf:"bytes,3,opt,name=logs,proto3" json:"logs,omitempty"` Events *AgentTelemetrySinkConfig `protobuf:"bytes,4,opt,name=events,proto3" json:"events,omitempty"` } func (x *AgentTelemetryConfig) Reset() { *x = AgentTelemetryConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentTelemetryConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentTelemetryConfig) ProtoMessage() {} func (x *AgentTelemetryConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[110] 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 AgentTelemetryConfig.ProtoReflect.Descriptor instead. func (*AgentTelemetryConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{110} } func (x *AgentTelemetryConfig) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *AgentTelemetryConfig) GetStreamPrefix() string { if x != nil { return x.StreamPrefix } return "" } func (x *AgentTelemetryConfig) GetLogs() *AgentTelemetrySinkConfig { if x != nil { return x.Logs } return nil } func (x *AgentTelemetryConfig) GetEvents() *AgentTelemetrySinkConfig { if x != nil { return x.Events } return nil } type AgentTelemetrySinkConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` Credential string `protobuf:"bytes,2,opt,name=credential,proto3" json:"credential,omitempty"` StreamPrefix string `protobuf:"bytes,3,opt,name=stream_prefix,json=streamPrefix,proto3" json:"stream_prefix,omitempty"` } func (x *AgentTelemetrySinkConfig) Reset() { *x = AgentTelemetrySinkConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentTelemetrySinkConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentTelemetrySinkConfig) ProtoMessage() {} func (x *AgentTelemetrySinkConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[111] 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 AgentTelemetrySinkConfig.ProtoReflect.Descriptor instead. func (*AgentTelemetrySinkConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{111} } func (x *AgentTelemetrySinkConfig) GetDestination() string { if x != nil { return x.Destination } return "" } func (x *AgentTelemetrySinkConfig) GetCredential() string { if x != nil { return x.Credential } return "" } func (x *AgentTelemetrySinkConfig) GetStreamPrefix() string { if x != nil { return x.StreamPrefix } return "" } type JoinAgentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields JoinToken string `protobuf:"bytes,1,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"` MachineFingerprint string `protobuf:"bytes,2,opt,name=machine_fingerprint,json=machineFingerprint,proto3" json:"machine_fingerprint,omitempty"` Hostname string `protobuf:"bytes,3,opt,name=hostname,proto3" json:"hostname,omitempty"` Os string `protobuf:"bytes,4,opt,name=os,proto3" json:"os,omitempty"` Arch string `protobuf:"bytes,5,opt,name=arch,proto3" json:"arch,omitempty"` CpuCount uint32 `protobuf:"varint,6,opt,name=cpu_count,json=cpuCount,proto3" json:"cpu_count,omitempty"` MemoryMb uint64 `protobuf:"varint,7,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"` Gpu []string `protobuf:"bytes,8,rep,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,9,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` Preflight []*AgentPreflightCheck `protobuf:"bytes,10,rep,name=preflight,proto3" json:"preflight,omitempty"` Schedulable bool `protobuf:"varint,11,opt,name=schedulable,proto3" json:"schedulable,omitempty"` Executor string `protobuf:"bytes,12,opt,name=executor,proto3" json:"executor,omitempty"` CpuMillicores int64 `protobuf:"varint,13,opt,name=cpu_millicores,json=cpuMillicores,proto3" json:"cpu_millicores,omitempty"` GpuIds []string `protobuf:"bytes,14,rep,name=gpu_ids,json=gpuIds,proto3" json:"gpu_ids,omitempty"` NetworkSlotPoolSize uint32 `protobuf:"varint,15,opt,name=network_slot_pool_size,json=networkSlotPoolSize,proto3" json:"network_slot_pool_size,omitempty"` ContainerStartConcurrency uint32 `protobuf:"varint,16,opt,name=container_start_concurrency,json=containerStartConcurrency,proto3" json:"container_start_concurrency,omitempty"` // Optional per-machine worker image override. The gateway remembers the // generated value as a baseline so untouched installs continue to follow // future image tag changes while manually edited values remain pinned. WorkerImage string `protobuf:"bytes,17,opt,name=worker_image,json=workerImage,proto3" json:"worker_image,omitempty"` Capabilities []string `protobuf:"bytes,18,rep,name=capabilities,proto3" json:"capabilities,omitempty"` } func (x *JoinAgentRequest) Reset() { *x = JoinAgentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *JoinAgentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*JoinAgentRequest) ProtoMessage() {} func (x *JoinAgentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[112] 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 JoinAgentRequest.ProtoReflect.Descriptor instead. func (*JoinAgentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{112} } func (x *JoinAgentRequest) GetJoinToken() string { if x != nil { return x.JoinToken } return "" } func (x *JoinAgentRequest) GetMachineFingerprint() string { if x != nil { return x.MachineFingerprint } return "" } func (x *JoinAgentRequest) GetHostname() string { if x != nil { return x.Hostname } return "" } func (x *JoinAgentRequest) GetOs() string { if x != nil { return x.Os } return "" } func (x *JoinAgentRequest) GetArch() string { if x != nil { return x.Arch } return "" } func (x *JoinAgentRequest) GetCpuCount() uint32 { if x != nil { return x.CpuCount } return 0 } func (x *JoinAgentRequest) GetMemoryMb() uint64 { if x != nil { return x.MemoryMb } return 0 } func (x *JoinAgentRequest) GetGpu() []string { if x != nil { return x.Gpu } return nil } func (x *JoinAgentRequest) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *JoinAgentRequest) GetPreflight() []*AgentPreflightCheck { if x != nil { return x.Preflight } return nil } func (x *JoinAgentRequest) GetSchedulable() bool { if x != nil { return x.Schedulable } return false } func (x *JoinAgentRequest) GetExecutor() string { if x != nil { return x.Executor } return "" } func (x *JoinAgentRequest) GetCpuMillicores() int64 { if x != nil { return x.CpuMillicores } return 0 } func (x *JoinAgentRequest) GetGpuIds() []string { if x != nil { return x.GpuIds } return nil } func (x *JoinAgentRequest) GetNetworkSlotPoolSize() uint32 { if x != nil { return x.NetworkSlotPoolSize } return 0 } func (x *JoinAgentRequest) GetContainerStartConcurrency() uint32 { if x != nil { return x.ContainerStartConcurrency } return 0 } func (x *JoinAgentRequest) GetWorkerImage() string { if x != nil { return x.WorkerImage } return "" } func (x *JoinAgentRequest) GetCapabilities() []string { if x != nil { return x.Capabilities } return nil } type JoinAgentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` WorkspaceId string `protobuf:"bytes,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` PoolName string `protobuf:"bytes,4,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,5,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` AgentToken string `protobuf:"bytes,6,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` Bootstrap *AgentBootstrapConfig `protobuf:"bytes,7,opt,name=bootstrap,proto3" json:"bootstrap,omitempty"` } func (x *JoinAgentResponse) Reset() { *x = JoinAgentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *JoinAgentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*JoinAgentResponse) ProtoMessage() {} func (x *JoinAgentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[113] 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 JoinAgentResponse.ProtoReflect.Descriptor instead. func (*JoinAgentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{113} } func (x *JoinAgentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *JoinAgentResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *JoinAgentResponse) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *JoinAgentResponse) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *JoinAgentResponse) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *JoinAgentResponse) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } func (x *JoinAgentResponse) GetBootstrap() *AgentBootstrapConfig { if x != nil { return x.Bootstrap } return nil } type AgentPreflightCheck struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` Severity string `protobuf:"bytes,4,opt,name=severity,proto3" json:"severity,omitempty"` } func (x *AgentPreflightCheck) Reset() { *x = AgentPreflightCheck{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentPreflightCheck) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentPreflightCheck) ProtoMessage() {} func (x *AgentPreflightCheck) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[114] 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 AgentPreflightCheck.ProtoReflect.Descriptor instead. func (*AgentPreflightCheck) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{114} } func (x *AgentPreflightCheck) GetName() string { if x != nil { return x.Name } return "" } func (x *AgentPreflightCheck) GetOk() bool { if x != nil { return x.Ok } return false } func (x *AgentPreflightCheck) GetMessage() string { if x != nil { return x.Message } return "" } func (x *AgentPreflightCheck) GetSeverity() string { if x != nil { return x.Severity } return "" } type AgentRoute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields RouteId string `protobuf:"bytes,1,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` PoolName string `protobuf:"bytes,3,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,4,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` WorkerId string `protobuf:"bytes,5,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` ContainerId string `protobuf:"bytes,6,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` Kind string `protobuf:"bytes,7,opt,name=kind,proto3" json:"kind,omitempty"` Port int32 `protobuf:"varint,8,opt,name=port,proto3" json:"port,omitempty"` Protocol string `protobuf:"bytes,9,opt,name=protocol,proto3" json:"protocol,omitempty"` Transport string `protobuf:"bytes,10,opt,name=transport,proto3" json:"transport,omitempty"` LocalTarget string `protobuf:"bytes,11,opt,name=local_target,json=localTarget,proto3" json:"local_target,omitempty"` ProxyTarget string `protobuf:"bytes,12,opt,name=proxy_target,json=proxyTarget,proto3" json:"proxy_target,omitempty"` State string `protobuf:"bytes,13,opt,name=state,proto3" json:"state,omitempty"` Error string `protobuf:"bytes,14,opt,name=error,proto3" json:"error,omitempty"` UpdatedAt int64 `protobuf:"varint,15,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *AgentRoute) Reset() { *x = AgentRoute{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentRoute) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentRoute) ProtoMessage() {} func (x *AgentRoute) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[115] 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 AgentRoute.ProtoReflect.Descriptor instead. func (*AgentRoute) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{115} } func (x *AgentRoute) GetRouteId() string { if x != nil { return x.RouteId } return "" } func (x *AgentRoute) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *AgentRoute) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *AgentRoute) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *AgentRoute) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *AgentRoute) GetContainerId() string { if x != nil { return x.ContainerId } return "" } func (x *AgentRoute) GetKind() string { if x != nil { return x.Kind } return "" } func (x *AgentRoute) GetPort() int32 { if x != nil { return x.Port } return 0 } func (x *AgentRoute) GetProtocol() string { if x != nil { return x.Protocol } return "" } func (x *AgentRoute) GetTransport() string { if x != nil { return x.Transport } return "" } func (x *AgentRoute) GetLocalTarget() string { if x != nil { return x.LocalTarget } return "" } func (x *AgentRoute) GetProxyTarget() string { if x != nil { return x.ProxyTarget } return "" } func (x *AgentRoute) GetState() string { if x != nil { return x.State } return "" } func (x *AgentRoute) GetError() string { if x != nil { return x.Error } return "" } func (x *AgentRoute) GetUpdatedAt() int64 { if x != nil { return x.UpdatedAt } return 0 } type RequestAgentTransportCredentialRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` Transport string `protobuf:"bytes,2,opt,name=transport,proto3" json:"transport,omitempty"` } func (x *RequestAgentTransportCredentialRequest) Reset() { *x = RequestAgentTransportCredentialRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RequestAgentTransportCredentialRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RequestAgentTransportCredentialRequest) ProtoMessage() {} func (x *RequestAgentTransportCredentialRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[116] 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 RequestAgentTransportCredentialRequest.ProtoReflect.Descriptor instead. func (*RequestAgentTransportCredentialRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{116} } func (x *RequestAgentTransportCredentialRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } func (x *RequestAgentTransportCredentialRequest) GetTransport() string { if x != nil { return x.Transport } return "" } type RequestAgentTransportCredentialResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` AuthKey string `protobuf:"bytes,3,opt,name=auth_key,json=authKey,proto3" json:"auth_key,omitempty"` ControlUrl string `protobuf:"bytes,4,opt,name=control_url,json=controlUrl,proto3" json:"control_url,omitempty"` Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` Ephemeral bool `protobuf:"varint,6,opt,name=ephemeral,proto3" json:"ephemeral,omitempty"` // Run Tailscale SSH on the node; the tailnet policy decides who may log in. TailnetSsh bool `protobuf:"varint,7,opt,name=tailnet_ssh,json=tailnetSsh,proto3" json:"tailnet_ssh,omitempty"` } func (x *RequestAgentTransportCredentialResponse) Reset() { *x = RequestAgentTransportCredentialResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RequestAgentTransportCredentialResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RequestAgentTransportCredentialResponse) ProtoMessage() {} func (x *RequestAgentTransportCredentialResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[117] 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 RequestAgentTransportCredentialResponse.ProtoReflect.Descriptor instead. func (*RequestAgentTransportCredentialResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{117} } func (x *RequestAgentTransportCredentialResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *RequestAgentTransportCredentialResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *RequestAgentTransportCredentialResponse) GetAuthKey() string { if x != nil { return x.AuthKey } return "" } func (x *RequestAgentTransportCredentialResponse) GetControlUrl() string { if x != nil { return x.ControlUrl } return "" } func (x *RequestAgentTransportCredentialResponse) GetHostname() string { if x != nil { return x.Hostname } return "" } func (x *RequestAgentTransportCredentialResponse) GetEphemeral() bool { if x != nil { return x.Ephemeral } return false } func (x *RequestAgentTransportCredentialResponse) GetTailnetSsh() bool { if x != nil { return x.TailnetSsh } return false } type CreateNodeEnrollmentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` } func (x *CreateNodeEnrollmentRequest) Reset() { *x = CreateNodeEnrollmentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateNodeEnrollmentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateNodeEnrollmentRequest) ProtoMessage() {} func (x *CreateNodeEnrollmentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[118] 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 CreateNodeEnrollmentRequest.ProtoReflect.Descriptor instead. func (*CreateNodeEnrollmentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{118} } func (x *CreateNodeEnrollmentRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } type CreateNodeEnrollmentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` EnrollmentToken string `protobuf:"bytes,3,opt,name=enrollment_token,json=enrollmentToken,proto3" json:"enrollment_token,omitempty"` } func (x *CreateNodeEnrollmentResponse) Reset() { *x = CreateNodeEnrollmentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateNodeEnrollmentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateNodeEnrollmentResponse) ProtoMessage() {} func (x *CreateNodeEnrollmentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[119] 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 CreateNodeEnrollmentResponse.ProtoReflect.Descriptor instead. func (*CreateNodeEnrollmentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{119} } func (x *CreateNodeEnrollmentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreateNodeEnrollmentResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } func (x *CreateNodeEnrollmentResponse) GetEnrollmentToken() string { if x != nil { return x.EnrollmentToken } return "" } type DeleteNodeEnrollmentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` } func (x *DeleteNodeEnrollmentRequest) Reset() { *x = DeleteNodeEnrollmentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteNodeEnrollmentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteNodeEnrollmentRequest) ProtoMessage() {} func (x *DeleteNodeEnrollmentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[120] 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 DeleteNodeEnrollmentRequest.ProtoReflect.Descriptor instead. func (*DeleteNodeEnrollmentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{120} } func (x *DeleteNodeEnrollmentRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } type DeleteNodeEnrollmentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrorMsg string `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"` } func (x *DeleteNodeEnrollmentResponse) Reset() { *x = DeleteNodeEnrollmentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteNodeEnrollmentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteNodeEnrollmentResponse) ProtoMessage() {} func (x *DeleteNodeEnrollmentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[121] 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 DeleteNodeEnrollmentResponse.ProtoReflect.Descriptor instead. func (*DeleteNodeEnrollmentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{121} } func (x *DeleteNodeEnrollmentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DeleteNodeEnrollmentResponse) GetErrorMsg() string { if x != nil { return x.ErrorMsg } return "" } type ListAgentRoutesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` } func (x *ListAgentRoutesRequest) Reset() { *x = ListAgentRoutesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListAgentRoutesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListAgentRoutesRequest) ProtoMessage() {} func (x *ListAgentRoutesRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[122] 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 ListAgentRoutesRequest.ProtoReflect.Descriptor instead. func (*ListAgentRoutesRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{122} } func (x *ListAgentRoutesRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } type ListAgentRoutesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Routes []*AgentRoute `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` } func (x *ListAgentRoutesResponse) Reset() { *x = ListAgentRoutesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListAgentRoutesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListAgentRoutesResponse) ProtoMessage() {} func (x *ListAgentRoutesResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[123] 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 ListAgentRoutesResponse.ProtoReflect.Descriptor instead. func (*ListAgentRoutesResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{123} } func (x *ListAgentRoutesResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListAgentRoutesResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListAgentRoutesResponse) GetRoutes() []*AgentRoute { if x != nil { return x.Routes } return nil } type UpdateAgentRouteStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` RouteId string `protobuf:"bytes,2,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"` State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` ProxyTarget string `protobuf:"bytes,4,opt,name=proxy_target,json=proxyTarget,proto3" json:"proxy_target,omitempty"` Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"` Attrs map[string]string `protobuf:"bytes,6,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *UpdateAgentRouteStatusRequest) Reset() { *x = UpdateAgentRouteStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAgentRouteStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAgentRouteStatusRequest) ProtoMessage() {} func (x *UpdateAgentRouteStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[124] 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 UpdateAgentRouteStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateAgentRouteStatusRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{124} } func (x *UpdateAgentRouteStatusRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } func (x *UpdateAgentRouteStatusRequest) GetRouteId() string { if x != nil { return x.RouteId } return "" } func (x *UpdateAgentRouteStatusRequest) GetState() string { if x != nil { return x.State } return "" } func (x *UpdateAgentRouteStatusRequest) GetProxyTarget() string { if x != nil { return x.ProxyTarget } return "" } func (x *UpdateAgentRouteStatusRequest) GetError() string { if x != nil { return x.Error } return "" } func (x *UpdateAgentRouteStatusRequest) GetAttrs() map[string]string { if x != nil { return x.Attrs } return nil } type UpdateAgentRouteStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *UpdateAgentRouteStatusResponse) Reset() { *x = UpdateAgentRouteStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAgentRouteStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAgentRouteStatusResponse) ProtoMessage() {} func (x *UpdateAgentRouteStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[125] 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 UpdateAgentRouteStatusResponse.ProtoReflect.Descriptor instead. func (*UpdateAgentRouteStatusResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{125} } func (x *UpdateAgentRouteStatusResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *UpdateAgentRouteStatusResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type AgentWorkerSlot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` WorkerToken string `protobuf:"bytes,2,opt,name=worker_token,json=workerToken,proto3" json:"worker_token,omitempty"` PoolName string `protobuf:"bytes,3,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,4,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` Cpu int64 `protobuf:"varint,5,opt,name=cpu,proto3" json:"cpu,omitempty"` Memory int64 `protobuf:"varint,6,opt,name=memory,proto3" json:"memory,omitempty"` Gpu string `protobuf:"bytes,7,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,8,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` GpuAssignment string `protobuf:"bytes,9,opt,name=gpu_assignment,json=gpuAssignment,proto3" json:"gpu_assignment,omitempty"` NetworkPrefix string `protobuf:"bytes,10,opt,name=network_prefix,json=networkPrefix,proto3" json:"network_prefix,omitempty"` WorkerImage string `protobuf:"bytes,11,opt,name=worker_image,json=workerImage,proto3" json:"worker_image,omitempty"` NetworkSlotPoolSize uint32 `protobuf:"varint,12,opt,name=network_slot_pool_size,json=networkSlotPoolSize,proto3" json:"network_slot_pool_size,omitempty"` ContainerStartConcurrency uint32 `protobuf:"varint,13,opt,name=container_start_concurrency,json=containerStartConcurrency,proto3" json:"container_start_concurrency,omitempty"` // Pool mode ("private" / "provider" / "external") and the container // runtime the worker must run with. Mode string `protobuf:"bytes,14,opt,name=mode,proto3" json:"mode,omitempty"` ContainerRuntime string `protobuf:"bytes,15,opt,name=container_runtime,json=containerRuntime,proto3" json:"container_runtime,omitempty"` RequiresPoolSelector bool `protobuf:"varint,18,opt,name=requires_pool_selector,json=requiresPoolSelector,proto3" json:"requires_pool_selector,omitempty"` Priority int32 `protobuf:"varint,19,opt,name=priority,proto3" json:"priority,omitempty"` Preemptable bool `protobuf:"varint,20,opt,name=preemptable,proto3" json:"preemptable,omitempty"` // Distinguishes an explicitly configured zero priority from legacy // gateways that did not send scheduling priority metadata. PrioritySet bool `protobuf:"varint,21,opt,name=priority_set,json=prioritySet,proto3" json:"priority_set,omitempty"` GvisorPlatform string `protobuf:"bytes,22,opt,name=gvisor_platform,json=gvisorPlatform,proto3" json:"gvisor_platform,omitempty"` GvisorRoot string `protobuf:"bytes,23,opt,name=gvisor_root,json=gvisorRoot,proto3" json:"gvisor_root,omitempty"` GvisorExtraArgs []string `protobuf:"bytes,24,rep,name=gvisor_extra_args,json=gvisorExtraArgs,proto3" json:"gvisor_extra_args,omitempty"` // Deterministic identity of the restart-relevant slot specification. Generation string `protobuf:"bytes,25,opt,name=generation,proto3" json:"generation,omitempty"` CpuAffinityEnforced bool `protobuf:"varint,26,opt,name=cpu_affinity_enforced,json=cpuAffinityEnforced,proto3" json:"cpu_affinity_enforced,omitempty"` PoolConfig *AgentPoolRuntimeConfig `protobuf:"bytes,27,opt,name=pool_config,json=poolConfig,proto3" json:"pool_config,omitempty"` } func (x *AgentWorkerSlot) Reset() { *x = AgentWorkerSlot{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentWorkerSlot) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentWorkerSlot) ProtoMessage() {} func (x *AgentWorkerSlot) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[126] 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 AgentWorkerSlot.ProtoReflect.Descriptor instead. func (*AgentWorkerSlot) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{126} } func (x *AgentWorkerSlot) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *AgentWorkerSlot) GetWorkerToken() string { if x != nil { return x.WorkerToken } return "" } func (x *AgentWorkerSlot) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *AgentWorkerSlot) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *AgentWorkerSlot) GetCpu() int64 { if x != nil { return x.Cpu } return 0 } func (x *AgentWorkerSlot) GetMemory() int64 { if x != nil { return x.Memory } return 0 } func (x *AgentWorkerSlot) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *AgentWorkerSlot) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *AgentWorkerSlot) GetGpuAssignment() string { if x != nil { return x.GpuAssignment } return "" } func (x *AgentWorkerSlot) GetNetworkPrefix() string { if x != nil { return x.NetworkPrefix } return "" } func (x *AgentWorkerSlot) GetWorkerImage() string { if x != nil { return x.WorkerImage } return "" } func (x *AgentWorkerSlot) GetNetworkSlotPoolSize() uint32 { if x != nil { return x.NetworkSlotPoolSize } return 0 } func (x *AgentWorkerSlot) GetContainerStartConcurrency() uint32 { if x != nil { return x.ContainerStartConcurrency } return 0 } func (x *AgentWorkerSlot) GetMode() string { if x != nil { return x.Mode } return "" } func (x *AgentWorkerSlot) GetContainerRuntime() string { if x != nil { return x.ContainerRuntime } return "" } func (x *AgentWorkerSlot) GetRequiresPoolSelector() bool { if x != nil { return x.RequiresPoolSelector } return false } func (x *AgentWorkerSlot) GetPriority() int32 { if x != nil { return x.Priority } return 0 } func (x *AgentWorkerSlot) GetPreemptable() bool { if x != nil { return x.Preemptable } return false } func (x *AgentWorkerSlot) GetPrioritySet() bool { if x != nil { return x.PrioritySet } return false } func (x *AgentWorkerSlot) GetGvisorPlatform() string { if x != nil { return x.GvisorPlatform } return "" } func (x *AgentWorkerSlot) GetGvisorRoot() string { if x != nil { return x.GvisorRoot } return "" } func (x *AgentWorkerSlot) GetGvisorExtraArgs() []string { if x != nil { return x.GvisorExtraArgs } return nil } func (x *AgentWorkerSlot) GetGeneration() string { if x != nil { return x.Generation } return "" } func (x *AgentWorkerSlot) GetCpuAffinityEnforced() bool { if x != nil { return x.CpuAffinityEnforced } return false } func (x *AgentWorkerSlot) GetPoolConfig() *AgentPoolRuntimeConfig { if x != nil { return x.PoolConfig } return nil } type StreamAgentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` } func (x *StreamAgentRequest) Reset() { *x = StreamAgentRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StreamAgentRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*StreamAgentRequest) ProtoMessage() {} func (x *StreamAgentRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[127] 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 StreamAgentRequest.ProtoReflect.Descriptor instead. func (*StreamAgentRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{127} } func (x *StreamAgentRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } type StreamAgentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Routes []*AgentRoute `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` Slots []*AgentWorkerSlot `protobuf:"bytes,4,rep,name=slots,proto3" json:"slots,omitempty"` Ssh *AgentSSHConfig `protobuf:"bytes,5,opt,name=ssh,proto3" json:"ssh,omitempty"` } func (x *StreamAgentResponse) Reset() { *x = StreamAgentResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *StreamAgentResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*StreamAgentResponse) ProtoMessage() {} func (x *StreamAgentResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[128] 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 StreamAgentResponse.ProtoReflect.Descriptor instead. func (*StreamAgentResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{128} } func (x *StreamAgentResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *StreamAgentResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *StreamAgentResponse) GetRoutes() []*AgentRoute { if x != nil { return x.Routes } return nil } func (x *StreamAgentResponse) GetSlots() []*AgentWorkerSlot { if x != nil { return x.Slots } return nil } func (x *StreamAgentResponse) GetSsh() *AgentSSHConfig { if x != nil { return x.Ssh } return nil } type AgentLogRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` WorkerId string `protobuf:"bytes,2,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` Level string `protobuf:"bytes,3,opt,name=level,proto3" json:"level,omitempty"` Stream string `protobuf:"bytes,4,opt,name=stream,proto3" json:"stream,omitempty"` Line string `protobuf:"bytes,5,opt,name=line,proto3" json:"line,omitempty"` TimestampUnixNano int64 `protobuf:"varint,6,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` } func (x *AgentLogRecord) Reset() { *x = AgentLogRecord{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentLogRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentLogRecord) ProtoMessage() {} func (x *AgentLogRecord) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[129] 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 AgentLogRecord.ProtoReflect.Descriptor instead. func (*AgentLogRecord) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{129} } func (x *AgentLogRecord) GetSource() string { if x != nil { return x.Source } return "" } func (x *AgentLogRecord) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *AgentLogRecord) GetLevel() string { if x != nil { return x.Level } return "" } func (x *AgentLogRecord) GetStream() string { if x != nil { return x.Stream } return "" } func (x *AgentLogRecord) GetLine() string { if x != nil { return x.Line } return "" } func (x *AgentLogRecord) GetTimestampUnixNano() int64 { if x != nil { return x.TimestampUnixNano } return 0 } type AgentMetricSnapshot struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TimestampUnixNano int64 `protobuf:"varint,1,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` CpuUtilizationPct float32 `protobuf:"fixed32,2,opt,name=cpu_utilization_pct,json=cpuUtilizationPct,proto3" json:"cpu_utilization_pct,omitempty"` MemoryUsedMb uint64 `protobuf:"varint,3,opt,name=memory_used_mb,json=memoryUsedMb,proto3" json:"memory_used_mb,omitempty"` MemoryTotalMb uint64 `protobuf:"varint,4,opt,name=memory_total_mb,json=memoryTotalMb,proto3" json:"memory_total_mb,omitempty"` MemoryUtilizationPct float32 `protobuf:"fixed32,5,opt,name=memory_utilization_pct,json=memoryUtilizationPct,proto3" json:"memory_utilization_pct,omitempty"` DiskUsedMb uint64 `protobuf:"varint,6,opt,name=disk_used_mb,json=diskUsedMb,proto3" json:"disk_used_mb,omitempty"` DiskTotalMb uint64 `protobuf:"varint,7,opt,name=disk_total_mb,json=diskTotalMb,proto3" json:"disk_total_mb,omitempty"` DiskUsagePct float32 `protobuf:"fixed32,8,opt,name=disk_usage_pct,json=diskUsagePct,proto3" json:"disk_usage_pct,omitempty"` DiskPath string `protobuf:"bytes,9,opt,name=disk_path,json=diskPath,proto3" json:"disk_path,omitempty"` WorkerCount uint32 `protobuf:"varint,10,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` ContainerCount uint32 `protobuf:"varint,11,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` FreeGpuCount uint32 `protobuf:"varint,12,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` PathMetrics []*MachinePathMetrics `protobuf:"bytes,13,rep,name=path_metrics,json=pathMetrics,proto3" json:"path_metrics,omitempty"` } func (x *AgentMetricSnapshot) Reset() { *x = AgentMetricSnapshot{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentMetricSnapshot) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentMetricSnapshot) ProtoMessage() {} func (x *AgentMetricSnapshot) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[130] 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 AgentMetricSnapshot.ProtoReflect.Descriptor instead. func (*AgentMetricSnapshot) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{130} } func (x *AgentMetricSnapshot) GetTimestampUnixNano() int64 { if x != nil { return x.TimestampUnixNano } return 0 } func (x *AgentMetricSnapshot) GetCpuUtilizationPct() float32 { if x != nil { return x.CpuUtilizationPct } return 0 } func (x *AgentMetricSnapshot) GetMemoryUsedMb() uint64 { if x != nil { return x.MemoryUsedMb } return 0 } func (x *AgentMetricSnapshot) GetMemoryTotalMb() uint64 { if x != nil { return x.MemoryTotalMb } return 0 } func (x *AgentMetricSnapshot) GetMemoryUtilizationPct() float32 { if x != nil { return x.MemoryUtilizationPct } return 0 } func (x *AgentMetricSnapshot) GetDiskUsedMb() uint64 { if x != nil { return x.DiskUsedMb } return 0 } func (x *AgentMetricSnapshot) GetDiskTotalMb() uint64 { if x != nil { return x.DiskTotalMb } return 0 } func (x *AgentMetricSnapshot) GetDiskUsagePct() float32 { if x != nil { return x.DiskUsagePct } return 0 } func (x *AgentMetricSnapshot) GetDiskPath() string { if x != nil { return x.DiskPath } return "" } func (x *AgentMetricSnapshot) GetWorkerCount() uint32 { if x != nil { return x.WorkerCount } return 0 } func (x *AgentMetricSnapshot) GetContainerCount() uint32 { if x != nil { return x.ContainerCount } return 0 } func (x *AgentMetricSnapshot) GetFreeGpuCount() uint32 { if x != nil { return x.FreeGpuCount } return 0 } func (x *AgentMetricSnapshot) GetPathMetrics() []*MachinePathMetrics { if x != nil { return x.PathMetrics } return nil } type AgentEventRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` Attrs map[string]string `protobuf:"bytes,4,rep,name=attrs,proto3" json:"attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` TimestampUnixNano int64 `protobuf:"varint,5,opt,name=timestamp_unix_nano,json=timestampUnixNano,proto3" json:"timestamp_unix_nano,omitempty"` EventType string `protobuf:"bytes,6,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` } func (x *AgentEventRecord) Reset() { *x = AgentEventRecord{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentEventRecord) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentEventRecord) ProtoMessage() {} func (x *AgentEventRecord) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[131] 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 AgentEventRecord.ProtoReflect.Descriptor instead. func (*AgentEventRecord) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{131} } func (x *AgentEventRecord) GetAction() string { if x != nil { return x.Action } return "" } func (x *AgentEventRecord) GetStatus() string { if x != nil { return x.Status } return "" } func (x *AgentEventRecord) GetMessage() string { if x != nil { return x.Message } return "" } func (x *AgentEventRecord) GetAttrs() map[string]string { if x != nil { return x.Attrs } return nil } func (x *AgentEventRecord) GetTimestampUnixNano() int64 { if x != nil { return x.TimestampUnixNano } return 0 } func (x *AgentEventRecord) GetEventType() string { if x != nil { return x.EventType } return "" } type AgentNetworkInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PublicIp string `protobuf:"bytes,1,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` TailnetIp string `protobuf:"bytes,2,opt,name=tailnet_ip,json=tailnetIp,proto3" json:"tailnet_ip,omitempty"` TailnetHostname string `protobuf:"bytes,3,opt,name=tailnet_hostname,json=tailnetHostname,proto3" json:"tailnet_hostname,omitempty"` TailnetSsh bool `protobuf:"varint,4,opt,name=tailnet_ssh,json=tailnetSsh,proto3" json:"tailnet_ssh,omitempty"` } func (x *AgentNetworkInfo) Reset() { *x = AgentNetworkInfo{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentNetworkInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentNetworkInfo) ProtoMessage() {} func (x *AgentNetworkInfo) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[132] 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 AgentNetworkInfo.ProtoReflect.Descriptor instead. func (*AgentNetworkInfo) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{132} } func (x *AgentNetworkInfo) GetPublicIp() string { if x != nil { return x.PublicIp } return "" } func (x *AgentNetworkInfo) GetTailnetIp() string { if x != nil { return x.TailnetIp } return "" } func (x *AgentNetworkInfo) GetTailnetHostname() string { if x != nil { return x.TailnetHostname } return "" } func (x *AgentNetworkInfo) GetTailnetSsh() bool { if x != nil { return x.TailnetSsh } return false } type AgentTelemetryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` Logs []*AgentLogRecord `protobuf:"bytes,2,rep,name=logs,proto3" json:"logs,omitempty"` Metrics *AgentMetricSnapshot `protobuf:"bytes,3,opt,name=metrics,proto3" json:"metrics,omitempty"` Events []*AgentEventRecord `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` Network *AgentNetworkInfo `protobuf:"bytes,5,opt,name=network,proto3" json:"network,omitempty"` } func (x *AgentTelemetryRequest) Reset() { *x = AgentTelemetryRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentTelemetryRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentTelemetryRequest) ProtoMessage() {} func (x *AgentTelemetryRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[133] 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 AgentTelemetryRequest.ProtoReflect.Descriptor instead. func (*AgentTelemetryRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{133} } func (x *AgentTelemetryRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } func (x *AgentTelemetryRequest) GetLogs() []*AgentLogRecord { if x != nil { return x.Logs } return nil } func (x *AgentTelemetryRequest) GetMetrics() *AgentMetricSnapshot { if x != nil { return x.Metrics } return nil } func (x *AgentTelemetryRequest) GetEvents() []*AgentEventRecord { if x != nil { return x.Events } return nil } func (x *AgentTelemetryRequest) GetNetwork() *AgentNetworkInfo { if x != nil { return x.Network } return nil } type AgentTelemetryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *AgentTelemetryResponse) Reset() { *x = AgentTelemetryResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentTelemetryResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentTelemetryResponse) ProtoMessage() {} func (x *AgentTelemetryResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[134] 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 AgentTelemetryResponse.ProtoReflect.Descriptor instead. func (*AgentTelemetryResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{134} } func (x *AgentTelemetryResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *AgentTelemetryResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type Machine struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Cpu int64 `protobuf:"varint,2,opt,name=cpu,proto3" json:"cpu,omitempty"` Memory int64 `protobuf:"varint,3,opt,name=memory,proto3" json:"memory,omitempty"` Gpu string `protobuf:"bytes,4,opt,name=gpu,proto3" json:"gpu,omitempty"` GpuCount uint32 `protobuf:"varint,5,opt,name=gpu_count,json=gpuCount,proto3" json:"gpu_count,omitempty"` Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` PoolName string `protobuf:"bytes,7,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` LastKeepalive string `protobuf:"bytes,12,opt,name=last_keepalive,json=lastKeepalive,proto3" json:"last_keepalive,omitempty"` Created string `protobuf:"bytes,13,opt,name=created,proto3" json:"created,omitempty"` AgentVersion string `protobuf:"bytes,14,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"` MachineMetrics *MachineMetrics `protobuf:"bytes,15,opt,name=machine_metrics,json=machineMetrics,proto3" json:"machine_metrics,omitempty"` Ssh *MachineSSHAccess `protobuf:"bytes,17,opt,name=ssh,proto3" json:"ssh,omitempty"` PublicIp string `protobuf:"bytes,18,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` TailnetHostname string `protobuf:"bytes,19,opt,name=tailnet_hostname,json=tailnetHostname,proto3" json:"tailnet_hostname,omitempty"` TailnetIp string `protobuf:"bytes,20,opt,name=tailnet_ip,json=tailnetIp,proto3" json:"tailnet_ip,omitempty"` TailnetSsh bool `protobuf:"varint,21,opt,name=tailnet_ssh,json=tailnetSsh,proto3" json:"tailnet_ssh,omitempty"` } func (x *Machine) Reset() { *x = Machine{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Machine) String() string { return protoimpl.X.MessageStringOf(x) } func (*Machine) ProtoMessage() {} func (x *Machine) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[135] 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 Machine.ProtoReflect.Descriptor instead. func (*Machine) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{135} } func (x *Machine) GetId() string { if x != nil { return x.Id } return "" } func (x *Machine) GetCpu() int64 { if x != nil { return x.Cpu } return 0 } func (x *Machine) GetMemory() int64 { if x != nil { return x.Memory } return 0 } func (x *Machine) GetGpu() string { if x != nil { return x.Gpu } return "" } func (x *Machine) GetGpuCount() uint32 { if x != nil { return x.GpuCount } return 0 } func (x *Machine) GetStatus() string { if x != nil { return x.Status } return "" } func (x *Machine) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *Machine) GetLastKeepalive() string { if x != nil { return x.LastKeepalive } return "" } func (x *Machine) GetCreated() string { if x != nil { return x.Created } return "" } func (x *Machine) GetAgentVersion() string { if x != nil { return x.AgentVersion } return "" } func (x *Machine) GetMachineMetrics() *MachineMetrics { if x != nil { return x.MachineMetrics } return nil } func (x *Machine) GetSsh() *MachineSSHAccess { if x != nil { return x.Ssh } return nil } func (x *Machine) GetPublicIp() string { if x != nil { return x.PublicIp } return "" } func (x *Machine) GetTailnetHostname() string { if x != nil { return x.TailnetHostname } return "" } func (x *Machine) GetTailnetIp() string { if x != nil { return x.TailnetIp } return "" } func (x *Machine) GetTailnetSsh() bool { if x != nil { return x.TailnetSsh } return false } type MachineMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TotalCpuAvailable int32 `protobuf:"varint,1,opt,name=total_cpu_available,json=totalCpuAvailable,proto3" json:"total_cpu_available,omitempty"` TotalMemoryAvailable int32 `protobuf:"varint,2,opt,name=total_memory_available,json=totalMemoryAvailable,proto3" json:"total_memory_available,omitempty"` CpuUtilizationPct float32 `protobuf:"fixed32,3,opt,name=cpu_utilization_pct,json=cpuUtilizationPct,proto3" json:"cpu_utilization_pct,omitempty"` MemoryUtilizationPct float32 `protobuf:"fixed32,4,opt,name=memory_utilization_pct,json=memoryUtilizationPct,proto3" json:"memory_utilization_pct,omitempty"` WorkerCount int32 `protobuf:"varint,5,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` ContainerCount int32 `protobuf:"varint,6,opt,name=container_count,json=containerCount,proto3" json:"container_count,omitempty"` FreeGpuCount int32 `protobuf:"varint,7,opt,name=free_gpu_count,json=freeGpuCount,proto3" json:"free_gpu_count,omitempty"` CacheUsagePct float32 `protobuf:"fixed32,8,opt,name=cache_usage_pct,json=cacheUsagePct,proto3" json:"cache_usage_pct,omitempty"` CacheCapacity int32 `protobuf:"varint,9,opt,name=cache_capacity,json=cacheCapacity,proto3" json:"cache_capacity,omitempty"` CacheMemoryUsage int32 `protobuf:"varint,10,opt,name=cache_memory_usage,json=cacheMemoryUsage,proto3" json:"cache_memory_usage,omitempty"` CacheCpuUsage float32 `protobuf:"fixed32,11,opt,name=cache_cpu_usage,json=cacheCpuUsage,proto3" json:"cache_cpu_usage,omitempty"` MemoryUsedMb int64 `protobuf:"varint,12,opt,name=memory_used_mb,json=memoryUsedMb,proto3" json:"memory_used_mb,omitempty"` MemoryTotalMb int64 `protobuf:"varint,13,opt,name=memory_total_mb,json=memoryTotalMb,proto3" json:"memory_total_mb,omitempty"` DiskUsedMb int64 `protobuf:"varint,14,opt,name=disk_used_mb,json=diskUsedMb,proto3" json:"disk_used_mb,omitempty"` DiskTotalMb int64 `protobuf:"varint,15,opt,name=disk_total_mb,json=diskTotalMb,proto3" json:"disk_total_mb,omitempty"` DiskUsagePct float32 `protobuf:"fixed32,16,opt,name=disk_usage_pct,json=diskUsagePct,proto3" json:"disk_usage_pct,omitempty"` PathMetrics []*MachinePathMetrics `protobuf:"bytes,17,rep,name=path_metrics,json=pathMetrics,proto3" json:"path_metrics,omitempty"` } func (x *MachineMetrics) Reset() { *x = MachineMetrics{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MachineMetrics) String() string { return protoimpl.X.MessageStringOf(x) } func (*MachineMetrics) ProtoMessage() {} func (x *MachineMetrics) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[136] 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 MachineMetrics.ProtoReflect.Descriptor instead. func (*MachineMetrics) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{136} } func (x *MachineMetrics) GetTotalCpuAvailable() int32 { if x != nil { return x.TotalCpuAvailable } return 0 } func (x *MachineMetrics) GetTotalMemoryAvailable() int32 { if x != nil { return x.TotalMemoryAvailable } return 0 } func (x *MachineMetrics) GetCpuUtilizationPct() float32 { if x != nil { return x.CpuUtilizationPct } return 0 } func (x *MachineMetrics) GetMemoryUtilizationPct() float32 { if x != nil { return x.MemoryUtilizationPct } return 0 } func (x *MachineMetrics) GetWorkerCount() int32 { if x != nil { return x.WorkerCount } return 0 } func (x *MachineMetrics) GetContainerCount() int32 { if x != nil { return x.ContainerCount } return 0 } func (x *MachineMetrics) GetFreeGpuCount() int32 { if x != nil { return x.FreeGpuCount } return 0 } func (x *MachineMetrics) GetCacheUsagePct() float32 { if x != nil { return x.CacheUsagePct } return 0 } func (x *MachineMetrics) GetCacheCapacity() int32 { if x != nil { return x.CacheCapacity } return 0 } func (x *MachineMetrics) GetCacheMemoryUsage() int32 { if x != nil { return x.CacheMemoryUsage } return 0 } func (x *MachineMetrics) GetCacheCpuUsage() float32 { if x != nil { return x.CacheCpuUsage } return 0 } func (x *MachineMetrics) GetMemoryUsedMb() int64 { if x != nil { return x.MemoryUsedMb } return 0 } func (x *MachineMetrics) GetMemoryTotalMb() int64 { if x != nil { return x.MemoryTotalMb } return 0 } func (x *MachineMetrics) GetDiskUsedMb() int64 { if x != nil { return x.DiskUsedMb } return 0 } func (x *MachineMetrics) GetDiskTotalMb() int64 { if x != nil { return x.DiskTotalMb } return 0 } func (x *MachineMetrics) GetDiskUsagePct() float32 { if x != nil { return x.DiskUsagePct } return 0 } func (x *MachineMetrics) GetPathMetrics() []*MachinePathMetrics { if x != nil { return x.PathMetrics } return nil } type MachinePathMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` UsedMb uint64 `protobuf:"varint,3,opt,name=used_mb,json=usedMb,proto3" json:"used_mb,omitempty"` TotalMb uint64 `protobuf:"varint,4,opt,name=total_mb,json=totalMb,proto3" json:"total_mb,omitempty"` AvailableMb uint64 `protobuf:"varint,5,opt,name=available_mb,json=availableMb,proto3" json:"available_mb,omitempty"` UsagePct float32 `protobuf:"fixed32,6,opt,name=usage_pct,json=usagePct,proto3" json:"usage_pct,omitempty"` } func (x *MachinePathMetrics) Reset() { *x = MachinePathMetrics{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MachinePathMetrics) String() string { return protoimpl.X.MessageStringOf(x) } func (*MachinePathMetrics) ProtoMessage() {} func (x *MachinePathMetrics) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[137] 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 MachinePathMetrics.ProtoReflect.Descriptor instead. func (*MachinePathMetrics) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{137} } func (x *MachinePathMetrics) GetLabel() string { if x != nil { return x.Label } return "" } func (x *MachinePathMetrics) GetPath() string { if x != nil { return x.Path } return "" } func (x *MachinePathMetrics) GetUsedMb() uint64 { if x != nil { return x.UsedMb } return 0 } func (x *MachinePathMetrics) GetTotalMb() uint64 { if x != nil { return x.TotalMb } return 0 } func (x *MachinePathMetrics) GetAvailableMb() uint64 { if x != nil { return x.AvailableMb } return 0 } func (x *MachinePathMetrics) GetUsagePct() float32 { if x != nil { return x.UsagePct } return 0 } type ListMachinesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"` } func (x *ListMachinesRequest) Reset() { *x = ListMachinesRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListMachinesRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListMachinesRequest) ProtoMessage() {} func (x *ListMachinesRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[138] 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 ListMachinesRequest.ProtoReflect.Descriptor instead. func (*ListMachinesRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{138} } func (x *ListMachinesRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *ListMachinesRequest) GetLimit() uint32 { if x != nil { return x.Limit } return 0 } type ListMachinesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` // gpus reports live worker availability per GPU type (a worker with that // GPU is currently registered). Gpus map[string]bool `protobuf:"bytes,4,rep,name=gpus,proto3" json:"gpus,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // supported_gpus reports pool-config-based serverless support per GPU // type: true when a pool could serve the GPU even if scaled to zero. SupportedGpus map[string]bool `protobuf:"bytes,5,rep,name=supported_gpus,json=supportedGpus,proto3" json:"supported_gpus,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Resource ceilings enforced when creating a serverless stub. Private // on-demand pools own their machine and do not use these limits. MaxCpuMillicores uint32 `protobuf:"varint,6,opt,name=max_cpu_millicores,json=maxCpuMillicores,proto3" json:"max_cpu_millicores,omitempty"` MaxMemoryMb uint32 `protobuf:"varint,7,opt,name=max_memory_mb,json=maxMemoryMb,proto3" json:"max_memory_mb,omitempty"` } func (x *ListMachinesResponse) Reset() { *x = ListMachinesResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListMachinesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListMachinesResponse) ProtoMessage() {} func (x *ListMachinesResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[139] 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 ListMachinesResponse.ProtoReflect.Descriptor instead. func (*ListMachinesResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{139} } func (x *ListMachinesResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListMachinesResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListMachinesResponse) GetMachines() []*Machine { if x != nil { return x.Machines } return nil } func (x *ListMachinesResponse) GetGpus() map[string]bool { if x != nil { return x.Gpus } return nil } func (x *ListMachinesResponse) GetSupportedGpus() map[string]bool { if x != nil { return x.SupportedGpus } return nil } func (x *ListMachinesResponse) GetMaxCpuMillicores() uint32 { if x != nil { return x.MaxCpuMillicores } return 0 } func (x *ListMachinesResponse) GetMaxMemoryMb() uint32 { if x != nil { return x.MaxMemoryMb } return 0 } type CreateMachineRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` } func (x *CreateMachineRequest) Reset() { *x = CreateMachineRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateMachineRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateMachineRequest) ProtoMessage() {} func (x *CreateMachineRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[140] 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 CreateMachineRequest.ProtoReflect.Descriptor instead. func (*CreateMachineRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{140} } func (x *CreateMachineRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } type CreateMachineResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Machine *Machine `protobuf:"bytes,3,opt,name=machine,proto3" json:"machine,omitempty"` // Agent-backed managed pools return the systemd installer here. The join // token embedded in the command is short-lived and machine-bound. InstallCommand string `protobuf:"bytes,7,opt,name=install_command,json=installCommand,proto3" json:"install_command,omitempty"` } func (x *CreateMachineResponse) Reset() { *x = CreateMachineResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateMachineResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateMachineResponse) ProtoMessage() {} func (x *CreateMachineResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[141] 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 CreateMachineResponse.ProtoReflect.Descriptor instead. func (*CreateMachineResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{141} } func (x *CreateMachineResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreateMachineResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *CreateMachineResponse) GetMachine() *Machine { if x != nil { return x.Machine } return nil } func (x *CreateMachineResponse) GetInstallCommand() string { if x != nil { return x.InstallCommand } return "" } type DeleteMachineRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MachineId string `protobuf:"bytes,1,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` PoolName string `protobuf:"bytes,2,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` } func (x *DeleteMachineRequest) Reset() { *x = DeleteMachineRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteMachineRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteMachineRequest) ProtoMessage() {} func (x *DeleteMachineRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[142] 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 DeleteMachineRequest.ProtoReflect.Descriptor instead. func (*DeleteMachineRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{142} } func (x *DeleteMachineRequest) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *DeleteMachineRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } type DeleteMachineResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *DeleteMachineResponse) Reset() { *x = DeleteMachineResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteMachineResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteMachineResponse) ProtoMessage() {} func (x *DeleteMachineResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[143] 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 DeleteMachineResponse.ProtoReflect.Descriptor instead. func (*DeleteMachineResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{143} } func (x *DeleteMachineResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DeleteMachineResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type Token struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` Reusable bool `protobuf:"varint,4,opt,name=reusable,proto3" json:"reusable,omitempty"` WorkspaceId *uint32 `protobuf:"varint,5,opt,name=workspace_id,json=workspaceId,proto3,oneof" json:"workspace_id,omitempty"` TokenType string `protobuf:"bytes,6,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *Token) Reset() { *x = Token{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Token) String() string { return protoimpl.X.MessageStringOf(x) } func (*Token) ProtoMessage() {} func (x *Token) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[144] 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 Token.ProtoReflect.Descriptor instead. func (*Token) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{144} } func (x *Token) GetTokenId() string { if x != nil { return x.TokenId } return "" } func (x *Token) GetKey() string { if x != nil { return x.Key } return "" } func (x *Token) GetActive() bool { if x != nil { return x.Active } return false } func (x *Token) GetReusable() bool { if x != nil { return x.Reusable } return false } func (x *Token) GetWorkspaceId() uint32 { if x != nil && x.WorkspaceId != nil { return *x.WorkspaceId } return 0 } func (x *Token) GetTokenType() string { if x != nil { return x.TokenType } return "" } func (x *Token) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Token) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } type ListTokensRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListTokensRequest) Reset() { *x = ListTokensRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListTokensRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListTokensRequest) ProtoMessage() {} func (x *ListTokensRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[145] 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 ListTokensRequest.ProtoReflect.Descriptor instead. func (*ListTokensRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{145} } type ListTokensResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Tokens []*Token `protobuf:"bytes,3,rep,name=tokens,proto3" json:"tokens,omitempty"` } func (x *ListTokensResponse) Reset() { *x = ListTokensResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListTokensResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListTokensResponse) ProtoMessage() {} func (x *ListTokensResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[146] 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 ListTokensResponse.ProtoReflect.Descriptor instead. func (*ListTokensResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{146} } func (x *ListTokensResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListTokensResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListTokensResponse) GetTokens() []*Token { if x != nil { return x.Tokens } return nil } type CreateTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TokenType string `protobuf:"bytes,1,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"` } func (x *CreateTokenRequest) Reset() { *x = CreateTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateTokenRequest) ProtoMessage() {} func (x *CreateTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[147] 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 CreateTokenRequest.ProtoReflect.Descriptor instead. func (*CreateTokenRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{147} } func (x *CreateTokenRequest) GetTokenType() string { if x != nil { return x.TokenType } return "" } type CreateTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } func (x *CreateTokenResponse) Reset() { *x = CreateTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateTokenResponse) ProtoMessage() {} func (x *CreateTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[148] 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 CreateTokenResponse.ProtoReflect.Descriptor instead. func (*CreateTokenResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{148} } func (x *CreateTokenResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CreateTokenResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *CreateTokenResponse) GetToken() *Token { if x != nil { return x.Token } return nil } type ToggleTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` } func (x *ToggleTokenRequest) Reset() { *x = ToggleTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ToggleTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ToggleTokenRequest) ProtoMessage() {} func (x *ToggleTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[149] 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 ToggleTokenRequest.ProtoReflect.Descriptor instead. func (*ToggleTokenRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{149} } func (x *ToggleTokenRequest) GetTokenId() string { if x != nil { return x.TokenId } return "" } type ToggleTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Token *Token `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` } func (x *ToggleTokenResponse) Reset() { *x = ToggleTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ToggleTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ToggleTokenResponse) ProtoMessage() {} func (x *ToggleTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[150] 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 ToggleTokenResponse.ProtoReflect.Descriptor instead. func (*ToggleTokenResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{150} } func (x *ToggleTokenResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ToggleTokenResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ToggleTokenResponse) GetToken() *Token { if x != nil { return x.Token } return nil } type DeleteTokenRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TokenId string `protobuf:"bytes,1,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` } func (x *DeleteTokenRequest) Reset() { *x = DeleteTokenRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteTokenRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteTokenRequest) ProtoMessage() {} func (x *DeleteTokenRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[151] 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 DeleteTokenRequest.ProtoReflect.Descriptor instead. func (*DeleteTokenRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{151} } func (x *DeleteTokenRequest) GetTokenId() string { if x != nil { return x.TokenId } return "" } type DeleteTokenResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *DeleteTokenResponse) Reset() { *x = DeleteTokenResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteTokenResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteTokenResponse) ProtoMessage() {} func (x *DeleteTokenResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[152] 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 DeleteTokenResponse.ProtoReflect.Descriptor instead. func (*DeleteTokenResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{152} } func (x *DeleteTokenResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DeleteTokenResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type GetURLRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StubId string `protobuf:"bytes,1,opt,name=stub_id,json=stubId,proto3" json:"stub_id,omitempty"` DeploymentId string `protobuf:"bytes,2,opt,name=deployment_id,json=deploymentId,proto3" json:"deployment_id,omitempty"` UrlType string `protobuf:"bytes,3,opt,name=url_type,json=urlType,proto3" json:"url_type,omitempty"` IsShell bool `protobuf:"varint,4,opt,name=is_shell,json=isShell,proto3" json:"is_shell,omitempty"` } func (x *GetURLRequest) Reset() { *x = GetURLRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetURLRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetURLRequest) ProtoMessage() {} func (x *GetURLRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[153] 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 GetURLRequest.ProtoReflect.Descriptor instead. func (*GetURLRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{153} } func (x *GetURLRequest) GetStubId() string { if x != nil { return x.StubId } return "" } func (x *GetURLRequest) GetDeploymentId() string { if x != nil { return x.DeploymentId } return "" } func (x *GetURLRequest) GetUrlType() string { if x != nil { return x.UrlType } return "" } func (x *GetURLRequest) GetIsShell() bool { if x != nil { return x.IsShell } return false } type GetURLResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` } func (x *GetURLResponse) Reset() { *x = GetURLResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetURLResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetURLResponse) ProtoMessage() {} func (x *GetURLResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[154] 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 GetURLResponse.ProtoReflect.Descriptor instead. func (*GetURLResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{154} } func (x *GetURLResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetURLResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetURLResponse) GetUrl() string { if x != nil { return x.Url } return "" } type ListWorkersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListWorkersRequest) Reset() { *x = ListWorkersRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkersRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkersRequest) ProtoMessage() {} func (x *ListWorkersRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[155] 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 ListWorkersRequest.ProtoReflect.Descriptor instead. func (*ListWorkersRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{155} } type ListWorkersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Workers []*Worker `protobuf:"bytes,3,rep,name=workers,proto3" json:"workers,omitempty"` } func (x *ListWorkersResponse) Reset() { *x = ListWorkersResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListWorkersResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListWorkersResponse) ProtoMessage() {} func (x *ListWorkersResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[156] 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 ListWorkersResponse.ProtoReflect.Descriptor instead. func (*ListWorkersResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{156} } func (x *ListWorkersResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ListWorkersResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ListWorkersResponse) GetWorkers() []*Worker { if x != nil { return x.Workers } return nil } type CordonWorkerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` } func (x *CordonWorkerRequest) Reset() { *x = CordonWorkerRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CordonWorkerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CordonWorkerRequest) ProtoMessage() {} func (x *CordonWorkerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[157] 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 CordonWorkerRequest.ProtoReflect.Descriptor instead. func (*CordonWorkerRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{157} } func (x *CordonWorkerRequest) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } type CordonWorkerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *CordonWorkerResponse) Reset() { *x = CordonWorkerResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CordonWorkerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CordonWorkerResponse) ProtoMessage() {} func (x *CordonWorkerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[158] 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 CordonWorkerResponse.ProtoReflect.Descriptor instead. func (*CordonWorkerResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{158} } func (x *CordonWorkerResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *CordonWorkerResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type UncordonWorkerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` } func (x *UncordonWorkerRequest) Reset() { *x = UncordonWorkerRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UncordonWorkerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UncordonWorkerRequest) ProtoMessage() {} func (x *UncordonWorkerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[159] 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 UncordonWorkerRequest.ProtoReflect.Descriptor instead. func (*UncordonWorkerRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{159} } func (x *UncordonWorkerRequest) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } type UncordonWorkerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *UncordonWorkerResponse) Reset() { *x = UncordonWorkerResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UncordonWorkerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UncordonWorkerResponse) ProtoMessage() {} func (x *UncordonWorkerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[160] 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 UncordonWorkerResponse.ProtoReflect.Descriptor instead. func (*UncordonWorkerResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{160} } func (x *UncordonWorkerResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *UncordonWorkerResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type DrainWorkerRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId,proto3" json:"worker_id,omitempty"` // Recreate an agent-managed worker after its outstanding work has drained. // The replacement remains cordoned until explicitly uncordoned. Restart bool `protobuf:"varint,2,opt,name=restart,proto3" json:"restart,omitempty"` } func (x *DrainWorkerRequest) Reset() { *x = DrainWorkerRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DrainWorkerRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DrainWorkerRequest) ProtoMessage() {} func (x *DrainWorkerRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[161] 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 DrainWorkerRequest.ProtoReflect.Descriptor instead. func (*DrainWorkerRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{161} } func (x *DrainWorkerRequest) GetWorkerId() string { if x != nil { return x.WorkerId } return "" } func (x *DrainWorkerRequest) GetRestart() bool { if x != nil { return x.Restart } return false } type DrainWorkerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *DrainWorkerResponse) Reset() { *x = DrainWorkerResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DrainWorkerResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DrainWorkerResponse) ProtoMessage() {} func (x *DrainWorkerResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[162] 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 DrainWorkerResponse.ProtoReflect.Descriptor instead. func (*DrainWorkerResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{162} } func (x *DrainWorkerResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DrainWorkerResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type ExportWorkspaceConfigRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ExportWorkspaceConfigRequest) Reset() { *x = ExportWorkspaceConfigRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExportWorkspaceConfigRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExportWorkspaceConfigRequest) ProtoMessage() {} func (x *ExportWorkspaceConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[163] 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 ExportWorkspaceConfigRequest.ProtoReflect.Descriptor instead. func (*ExportWorkspaceConfigRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{163} } type ExportWorkspaceConfigResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields GatewayHttpHost string `protobuf:"bytes,1,opt,name=gateway_http_host,json=gatewayHttpHost,proto3" json:"gateway_http_host,omitempty"` GatewayHttpPort int32 `protobuf:"varint,2,opt,name=gateway_http_port,json=gatewayHttpPort,proto3" json:"gateway_http_port,omitempty"` GatewayHttpTls bool `protobuf:"varint,3,opt,name=gateway_http_tls,json=gatewayHttpTls,proto3" json:"gateway_http_tls,omitempty"` GatewayGrpcHost string `protobuf:"bytes,4,opt,name=gateway_grpc_host,json=gatewayGrpcHost,proto3" json:"gateway_grpc_host,omitempty"` GatewayGrpcPort int32 `protobuf:"varint,5,opt,name=gateway_grpc_port,json=gatewayGrpcPort,proto3" json:"gateway_grpc_port,omitempty"` GatewayGrpcTls bool `protobuf:"varint,6,opt,name=gateway_grpc_tls,json=gatewayGrpcTls,proto3" json:"gateway_grpc_tls,omitempty"` WorkspaceId string `protobuf:"bytes,7,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // Advertises gateway support for the persistent VM HTTP management API. // When true, clients can skip the VM API capability preflight. False/unset // leaves support unknown (older gateways), so clients must probe the API. // Independent of any VM's existence, lifecycle state or readiness. PersistentVms bool `protobuf:"varint,8,opt,name=persistent_vms,json=persistentVms,proto3" json:"persistent_vms,omitempty"` } func (x *ExportWorkspaceConfigResponse) Reset() { *x = ExportWorkspaceConfigResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ExportWorkspaceConfigResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExportWorkspaceConfigResponse) ProtoMessage() {} func (x *ExportWorkspaceConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[164] 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 ExportWorkspaceConfigResponse.ProtoReflect.Descriptor instead. func (*ExportWorkspaceConfigResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{164} } func (x *ExportWorkspaceConfigResponse) GetGatewayHttpHost() string { if x != nil { return x.GatewayHttpHost } return "" } func (x *ExportWorkspaceConfigResponse) GetGatewayHttpPort() int32 { if x != nil { return x.GatewayHttpPort } return 0 } func (x *ExportWorkspaceConfigResponse) GetGatewayHttpTls() bool { if x != nil { return x.GatewayHttpTls } return false } func (x *ExportWorkspaceConfigResponse) GetGatewayGrpcHost() string { if x != nil { return x.GatewayGrpcHost } return "" } func (x *ExportWorkspaceConfigResponse) GetGatewayGrpcPort() int32 { if x != nil { return x.GatewayGrpcPort } return 0 } func (x *ExportWorkspaceConfigResponse) GetGatewayGrpcTls() bool { if x != nil { return x.GatewayGrpcTls } return false } func (x *ExportWorkspaceConfigResponse) GetWorkspaceId() string { if x != nil { return x.WorkspaceId } return "" } func (x *ExportWorkspaceConfigResponse) GetPersistentVms() bool { if x != nil { return x.PersistentVms } return false } type UpdateAgentAvailabilityRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` Schedulable bool `protobuf:"varint,2,opt,name=schedulable,proto3" json:"schedulable,omitempty"` Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // Unix nanoseconds, matching the *_unix_nano convention used elsewhere in // this file (e.g. AgentLogRecord.timestamp_unix_nano). ObservedAtUnixNano int64 `protobuf:"varint,4,opt,name=observed_at_unix_nano,json=observedAtUnixNano,proto3" json:"observed_at_unix_nano,omitempty"` } func (x *UpdateAgentAvailabilityRequest) Reset() { *x = UpdateAgentAvailabilityRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAgentAvailabilityRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAgentAvailabilityRequest) ProtoMessage() {} func (x *UpdateAgentAvailabilityRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[165] 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 UpdateAgentAvailabilityRequest.ProtoReflect.Descriptor instead. func (*UpdateAgentAvailabilityRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{165} } func (x *UpdateAgentAvailabilityRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } func (x *UpdateAgentAvailabilityRequest) GetSchedulable() bool { if x != nil { return x.Schedulable } return false } func (x *UpdateAgentAvailabilityRequest) GetReason() string { if x != nil { return x.Reason } return "" } func (x *UpdateAgentAvailabilityRequest) GetObservedAtUnixNano() int64 { if x != nil { return x.ObservedAtUnixNano } return 0 } type UpdateAgentAvailabilityResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *UpdateAgentAvailabilityResponse) Reset() { *x = UpdateAgentAvailabilityResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAgentAvailabilityResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAgentAvailabilityResponse) ProtoMessage() {} func (x *UpdateAgentAvailabilityResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[166] 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 UpdateAgentAvailabilityResponse.ProtoReflect.Descriptor instead. func (*UpdateAgentAvailabilityResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{166} } func (x *UpdateAgentAvailabilityResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *UpdateAgentAvailabilityResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } // Managed SSH messages live at the end of this file so adding the feature // does not renumber every existing generated message implementation. type DownloadMachineSSHKeyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` } func (x *DownloadMachineSSHKeyRequest) Reset() { *x = DownloadMachineSSHKeyRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadMachineSSHKeyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadMachineSSHKeyRequest) ProtoMessage() {} func (x *DownloadMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[167] 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 DownloadMachineSSHKeyRequest.ProtoReflect.Descriptor instead. func (*DownloadMachineSSHKeyRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{167} } func (x *DownloadMachineSSHKeyRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *DownloadMachineSSHKeyRequest) GetMachineId() string { if x != nil { return x.MachineId } return "" } type DownloadMachineSSHKeyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` PrivateKey string `protobuf:"bytes,3,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` Filename string `protobuf:"bytes,4,opt,name=filename,proto3" json:"filename,omitempty"` Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` Fingerprint string `protobuf:"bytes,6,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` ActivationRequired bool `protobuf:"varint,7,opt,name=activation_required,json=activationRequired,proto3" json:"activation_required,omitempty"` } func (x *DownloadMachineSSHKeyResponse) Reset() { *x = DownloadMachineSSHKeyResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DownloadMachineSSHKeyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DownloadMachineSSHKeyResponse) ProtoMessage() {} func (x *DownloadMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[168] 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 DownloadMachineSSHKeyResponse.ProtoReflect.Descriptor instead. func (*DownloadMachineSSHKeyResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{168} } func (x *DownloadMachineSSHKeyResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *DownloadMachineSSHKeyResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *DownloadMachineSSHKeyResponse) GetPrivateKey() string { if x != nil { return x.PrivateKey } return "" } func (x *DownloadMachineSSHKeyResponse) GetFilename() string { if x != nil { return x.Filename } return "" } func (x *DownloadMachineSSHKeyResponse) GetGeneration() uint64 { if x != nil { return x.Generation } return 0 } func (x *DownloadMachineSSHKeyResponse) GetFingerprint() string { if x != nil { return x.Fingerprint } return "" } func (x *DownloadMachineSSHKeyResponse) GetActivationRequired() bool { if x != nil { return x.ActivationRequired } return false } type RotateMachineSSHKeyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` } func (x *RotateMachineSSHKeyRequest) Reset() { *x = RotateMachineSSHKeyRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RotateMachineSSHKeyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*RotateMachineSSHKeyRequest) ProtoMessage() {} func (x *RotateMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[169] 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 RotateMachineSSHKeyRequest.ProtoReflect.Descriptor instead. func (*RotateMachineSSHKeyRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{169} } func (x *RotateMachineSSHKeyRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *RotateMachineSSHKeyRequest) GetMachineId() string { if x != nil { return x.MachineId } return "" } type RotateMachineSSHKeyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Ssh *MachineSSHAccess `protobuf:"bytes,3,opt,name=ssh,proto3" json:"ssh,omitempty"` } func (x *RotateMachineSSHKeyResponse) Reset() { *x = RotateMachineSSHKeyResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RotateMachineSSHKeyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*RotateMachineSSHKeyResponse) ProtoMessage() {} func (x *RotateMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[170] 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 RotateMachineSSHKeyResponse.ProtoReflect.Descriptor instead. func (*RotateMachineSSHKeyResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{170} } func (x *RotateMachineSSHKeyResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *RotateMachineSSHKeyResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *RotateMachineSSHKeyResponse) GetSsh() *MachineSSHAccess { if x != nil { return x.Ssh } return nil } type ActivateMachineSSHKeyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PoolName string `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"` MachineId string `protobuf:"bytes,2,opt,name=machine_id,json=machineId,proto3" json:"machine_id,omitempty"` Generation uint64 `protobuf:"varint,3,opt,name=generation,proto3" json:"generation,omitempty"` } func (x *ActivateMachineSSHKeyRequest) Reset() { *x = ActivateMachineSSHKeyRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActivateMachineSSHKeyRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActivateMachineSSHKeyRequest) ProtoMessage() {} func (x *ActivateMachineSSHKeyRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[171] 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 ActivateMachineSSHKeyRequest.ProtoReflect.Descriptor instead. func (*ActivateMachineSSHKeyRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{171} } func (x *ActivateMachineSSHKeyRequest) GetPoolName() string { if x != nil { return x.PoolName } return "" } func (x *ActivateMachineSSHKeyRequest) GetMachineId() string { if x != nil { return x.MachineId } return "" } func (x *ActivateMachineSSHKeyRequest) GetGeneration() uint64 { if x != nil { return x.Generation } return 0 } type ActivateMachineSSHKeyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` Ssh *MachineSSHAccess `protobuf:"bytes,3,opt,name=ssh,proto3" json:"ssh,omitempty"` } func (x *ActivateMachineSSHKeyResponse) Reset() { *x = ActivateMachineSSHKeyResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ActivateMachineSSHKeyResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ActivateMachineSSHKeyResponse) ProtoMessage() {} func (x *ActivateMachineSSHKeyResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[172] 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 ActivateMachineSSHKeyResponse.ProtoReflect.Descriptor instead. func (*ActivateMachineSSHKeyResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{172} } func (x *ActivateMachineSSHKeyResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *ActivateMachineSSHKeyResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *ActivateMachineSSHKeyResponse) GetSsh() *MachineSSHAccess { if x != nil { return x.Ssh } return nil } type AgentSSHConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` KeyFingerprint string `protobuf:"bytes,4,opt,name=key_fingerprint,json=keyFingerprint,proto3" json:"key_fingerprint,omitempty"` Generation uint64 `protobuf:"varint,5,opt,name=generation,proto3" json:"generation,omitempty"` } func (x *AgentSSHConfig) Reset() { *x = AgentSSHConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentSSHConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentSSHConfig) ProtoMessage() {} func (x *AgentSSHConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[173] 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 AgentSSHConfig.ProtoReflect.Descriptor instead. func (*AgentSSHConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{173} } func (x *AgentSSHConfig) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *AgentSSHConfig) GetUsername() string { if x != nil { return x.Username } return "" } func (x *AgentSSHConfig) GetPublicKey() string { if x != nil { return x.PublicKey } return "" } func (x *AgentSSHConfig) GetKeyFingerprint() string { if x != nil { return x.KeyFingerprint } return "" } func (x *AgentSSHConfig) GetGeneration() uint64 { if x != nil { return x.Generation } return 0 } type UpdateAgentSSHStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` Generation uint64 `protobuf:"varint,2,opt,name=generation,proto3" json:"generation,omitempty"` Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` PublicIp string `protobuf:"bytes,4,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` HostKeyFingerprint string `protobuf:"bytes,5,opt,name=host_key_fingerprint,json=hostKeyFingerprint,proto3" json:"host_key_fingerprint,omitempty"` Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` ListenPort uint32 `protobuf:"varint,7,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` } func (x *UpdateAgentSSHStatusRequest) Reset() { *x = UpdateAgentSSHStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAgentSSHStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAgentSSHStatusRequest) ProtoMessage() {} func (x *UpdateAgentSSHStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[174] 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 UpdateAgentSSHStatusRequest.ProtoReflect.Descriptor instead. func (*UpdateAgentSSHStatusRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{174} } func (x *UpdateAgentSSHStatusRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } func (x *UpdateAgentSSHStatusRequest) GetGeneration() uint64 { if x != nil { return x.Generation } return 0 } func (x *UpdateAgentSSHStatusRequest) GetStatus() string { if x != nil { return x.Status } return "" } func (x *UpdateAgentSSHStatusRequest) GetPublicIp() string { if x != nil { return x.PublicIp } return "" } func (x *UpdateAgentSSHStatusRequest) GetHostKeyFingerprint() string { if x != nil { return x.HostKeyFingerprint } return "" } func (x *UpdateAgentSSHStatusRequest) GetError() string { if x != nil { return x.Error } return "" } func (x *UpdateAgentSSHStatusRequest) GetListenPort() uint32 { if x != nil { return x.ListenPort } return 0 } type UpdateAgentSSHStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` } func (x *UpdateAgentSSHStatusResponse) Reset() { *x = UpdateAgentSSHStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateAgentSSHStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateAgentSSHStatusResponse) ProtoMessage() {} func (x *UpdateAgentSSHStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[175] 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 UpdateAgentSSHStatusResponse.ProtoReflect.Descriptor instead. func (*UpdateAgentSSHStatusResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{175} } func (x *UpdateAgentSSHStatusResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *UpdateAgentSSHStatusResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } type MachineSSHAccess struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Supported bool `protobuf:"varint,1,opt,name=supported,proto3" json:"supported,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` PublicIp string `protobuf:"bytes,3,opt,name=public_ip,json=publicIp,proto3" json:"public_ip,omitempty"` Host string `protobuf:"bytes,4,opt,name=host,proto3" json:"host,omitempty"` Port uint32 `protobuf:"varint,5,opt,name=port,proto3" json:"port,omitempty"` Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` ActiveGeneration uint64 `protobuf:"varint,7,opt,name=active_generation,json=activeGeneration,proto3" json:"active_generation,omitempty"` AppliedGeneration uint64 `protobuf:"varint,8,opt,name=applied_generation,json=appliedGeneration,proto3" json:"applied_generation,omitempty"` KeyFingerprint string `protobuf:"bytes,9,opt,name=key_fingerprint,json=keyFingerprint,proto3" json:"key_fingerprint,omitempty"` HostKeyFingerprint string `protobuf:"bytes,10,opt,name=host_key_fingerprint,json=hostKeyFingerprint,proto3" json:"host_key_fingerprint,omitempty"` PrivateKeyAvailable bool `protobuf:"varint,11,opt,name=private_key_available,json=privateKeyAvailable,proto3" json:"private_key_available,omitempty"` PendingRotation bool `protobuf:"varint,12,opt,name=pending_rotation,json=pendingRotation,proto3" json:"pending_rotation,omitempty"` PendingGeneration uint64 `protobuf:"varint,13,opt,name=pending_generation,json=pendingGeneration,proto3" json:"pending_generation,omitempty"` PendingFingerprint string `protobuf:"bytes,14,opt,name=pending_fingerprint,json=pendingFingerprint,proto3" json:"pending_fingerprint,omitempty"` PendingKeyAvailable bool `protobuf:"varint,15,opt,name=pending_key_available,json=pendingKeyAvailable,proto3" json:"pending_key_available,omitempty"` PendingKeyDownloaded bool `protobuf:"varint,16,opt,name=pending_key_downloaded,json=pendingKeyDownloaded,proto3" json:"pending_key_downloaded,omitempty"` Error string `protobuf:"bytes,17,opt,name=error,proto3" json:"error,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *MachineSSHAccess) Reset() { *x = MachineSSHAccess{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *MachineSSHAccess) String() string { return protoimpl.X.MessageStringOf(x) } func (*MachineSSHAccess) ProtoMessage() {} func (x *MachineSSHAccess) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[176] 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 MachineSSHAccess.ProtoReflect.Descriptor instead. func (*MachineSSHAccess) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{176} } func (x *MachineSSHAccess) GetSupported() bool { if x != nil { return x.Supported } return false } func (x *MachineSSHAccess) GetStatus() string { if x != nil { return x.Status } return "" } func (x *MachineSSHAccess) GetPublicIp() string { if x != nil { return x.PublicIp } return "" } func (x *MachineSSHAccess) GetHost() string { if x != nil { return x.Host } return "" } func (x *MachineSSHAccess) GetPort() uint32 { if x != nil { return x.Port } return 0 } func (x *MachineSSHAccess) GetUsername() string { if x != nil { return x.Username } return "" } func (x *MachineSSHAccess) GetActiveGeneration() uint64 { if x != nil { return x.ActiveGeneration } return 0 } func (x *MachineSSHAccess) GetAppliedGeneration() uint64 { if x != nil { return x.AppliedGeneration } return 0 } func (x *MachineSSHAccess) GetKeyFingerprint() string { if x != nil { return x.KeyFingerprint } return "" } func (x *MachineSSHAccess) GetHostKeyFingerprint() string { if x != nil { return x.HostKeyFingerprint } return "" } func (x *MachineSSHAccess) GetPrivateKeyAvailable() bool { if x != nil { return x.PrivateKeyAvailable } return false } func (x *MachineSSHAccess) GetPendingRotation() bool { if x != nil { return x.PendingRotation } return false } func (x *MachineSSHAccess) GetPendingGeneration() uint64 { if x != nil { return x.PendingGeneration } return 0 } func (x *MachineSSHAccess) GetPendingFingerprint() string { if x != nil { return x.PendingFingerprint } return "" } func (x *MachineSSHAccess) GetPendingKeyAvailable() bool { if x != nil { return x.PendingKeyAvailable } return false } func (x *MachineSSHAccess) GetPendingKeyDownloaded() bool { if x != nil { return x.PendingKeyDownloaded } return false } func (x *MachineSSHAccess) GetError() string { if x != nil { return x.Error } return "" } func (x *MachineSSHAccess) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } // Host-backed runtime settings for an agent worker. Presence of this message // means the managed pool configuration is authoritative; older gateways omit // it and agents retain their installer-level state/cache defaults. type AgentPoolCacheDiskConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` HostPath string `protobuf:"bytes,2,opt,name=host_path,json=hostPath,proto3" json:"host_path,omitempty"` MountPath string `protobuf:"bytes,3,opt,name=mount_path,json=mountPath,proto3" json:"mount_path,omitempty"` MaxUsagePct float64 `protobuf:"fixed64,4,opt,name=max_usage_pct,json=maxUsagePct,proto3" json:"max_usage_pct,omitempty"` MinFreeBytes int64 `protobuf:"varint,5,opt,name=min_free_bytes,json=minFreeBytes,proto3" json:"min_free_bytes,omitempty"` } func (x *AgentPoolCacheDiskConfig) Reset() { *x = AgentPoolCacheDiskConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentPoolCacheDiskConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentPoolCacheDiskConfig) ProtoMessage() {} func (x *AgentPoolCacheDiskConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[177] 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 AgentPoolCacheDiskConfig.ProtoReflect.Descriptor instead. func (*AgentPoolCacheDiskConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{177} } func (x *AgentPoolCacheDiskConfig) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *AgentPoolCacheDiskConfig) GetHostPath() string { if x != nil { return x.HostPath } return "" } func (x *AgentPoolCacheDiskConfig) GetMountPath() string { if x != nil { return x.MountPath } return "" } func (x *AgentPoolCacheDiskConfig) GetMaxUsagePct() float64 { if x != nil { return x.MaxUsagePct } return 0 } func (x *AgentPoolCacheDiskConfig) GetMinFreeBytes() int64 { if x != nil { return x.MinFreeBytes } return 0 } type AgentPoolCacheConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` Disk *AgentPoolCacheDiskConfig `protobuf:"bytes,2,opt,name=disk,proto3" json:"disk,omitempty"` } func (x *AgentPoolCacheConfig) Reset() { *x = AgentPoolCacheConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentPoolCacheConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentPoolCacheConfig) ProtoMessage() {} func (x *AgentPoolCacheConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[178] 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 AgentPoolCacheConfig.ProtoReflect.Descriptor instead. func (*AgentPoolCacheConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{178} } func (x *AgentPoolCacheConfig) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *AgentPoolCacheConfig) GetDisk() *AgentPoolCacheDiskConfig { if x != nil { return x.Disk } return nil } type AgentPoolRuntimeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields NetworkPreallocation bool `protobuf:"varint,1,opt,name=network_preallocation,json=networkPreallocation,proto3" json:"network_preallocation,omitempty"` CriuEnabled bool `protobuf:"varint,2,opt,name=criu_enabled,json=criuEnabled,proto3" json:"criu_enabled,omitempty"` TmpSizeLimit string `protobuf:"bytes,3,opt,name=tmp_size_limit,json=tmpSizeLimit,proto3" json:"tmp_size_limit,omitempty"` StorageMode string `protobuf:"bytes,4,opt,name=storage_mode,json=storageMode,proto3" json:"storage_mode,omitempty"` StoragePath string `protobuf:"bytes,5,opt,name=storage_path,json=storagePath,proto3" json:"storage_path,omitempty"` ImagesPath string `protobuf:"bytes,6,opt,name=images_path,json=imagesPath,proto3" json:"images_path,omitempty"` DurableDisksPath string `protobuf:"bytes,7,opt,name=durable_disks_path,json=durableDisksPath,proto3" json:"durable_disks_path,omitempty"` Cache *AgentPoolCacheConfig `protobuf:"bytes,8,opt,name=cache,proto3" json:"cache,omitempty"` ConfigGroup string `protobuf:"bytes,9,opt,name=config_group,json=configGroup,proto3" json:"config_group,omitempty"` GpuVirtualized bool `protobuf:"varint,10,opt,name=gpu_virtualized,json=gpuVirtualized,proto3" json:"gpu_virtualized,omitempty"` } func (x *AgentPoolRuntimeConfig) Reset() { *x = AgentPoolRuntimeConfig{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AgentPoolRuntimeConfig) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgentPoolRuntimeConfig) ProtoMessage() {} func (x *AgentPoolRuntimeConfig) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[179] 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 AgentPoolRuntimeConfig.ProtoReflect.Descriptor instead. func (*AgentPoolRuntimeConfig) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{179} } func (x *AgentPoolRuntimeConfig) GetNetworkPreallocation() bool { if x != nil { return x.NetworkPreallocation } return false } func (x *AgentPoolRuntimeConfig) GetCriuEnabled() bool { if x != nil { return x.CriuEnabled } return false } func (x *AgentPoolRuntimeConfig) GetTmpSizeLimit() string { if x != nil { return x.TmpSizeLimit } return "" } func (x *AgentPoolRuntimeConfig) GetStorageMode() string { if x != nil { return x.StorageMode } return "" } func (x *AgentPoolRuntimeConfig) GetStoragePath() string { if x != nil { return x.StoragePath } return "" } func (x *AgentPoolRuntimeConfig) GetImagesPath() string { if x != nil { return x.ImagesPath } return "" } func (x *AgentPoolRuntimeConfig) GetDurableDisksPath() string { if x != nil { return x.DurableDisksPath } return "" } func (x *AgentPoolRuntimeConfig) GetCache() *AgentPoolCacheConfig { if x != nil { return x.Cache } return nil } func (x *AgentPoolRuntimeConfig) GetConfigGroup() string { if x != nil { return x.ConfigGroup } return "" } func (x *AgentPoolRuntimeConfig) GetGpuVirtualized() bool { if x != nil { return x.GpuVirtualized } return false } type GetAgentPoolVirtualizationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AgentToken string `protobuf:"bytes,1,opt,name=agent_token,json=agentToken,proto3" json:"agent_token,omitempty"` } func (x *GetAgentPoolVirtualizationRequest) Reset() { *x = GetAgentPoolVirtualizationRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAgentPoolVirtualizationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAgentPoolVirtualizationRequest) ProtoMessage() {} func (x *GetAgentPoolVirtualizationRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[180] 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 GetAgentPoolVirtualizationRequest.ProtoReflect.Descriptor instead. func (*GetAgentPoolVirtualizationRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{180} } func (x *GetAgentPoolVirtualizationRequest) GetAgentToken() string { if x != nil { return x.AgentToken } return "" } type GetAgentPoolVirtualizationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` ErrMsg string `protobuf:"bytes,2,opt,name=err_msg,json=errMsg,proto3" json:"err_msg,omitempty"` GpuVirtualized bool `protobuf:"varint,3,opt,name=gpu_virtualized,json=gpuVirtualized,proto3" json:"gpu_virtualized,omitempty"` } func (x *GetAgentPoolVirtualizationResponse) Reset() { *x = GetAgentPoolVirtualizationResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetAgentPoolVirtualizationResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetAgentPoolVirtualizationResponse) ProtoMessage() {} func (x *GetAgentPoolVirtualizationResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[181] 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 GetAgentPoolVirtualizationResponse.ProtoReflect.Descriptor instead. func (*GetAgentPoolVirtualizationResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{181} } func (x *GetAgentPoolVirtualizationResponse) GetOk() bool { if x != nil { return x.Ok } return false } func (x *GetAgentPoolVirtualizationResponse) GetErrMsg() string { if x != nil { return x.ErrMsg } return "" } func (x *GetAgentPoolVirtualizationResponse) GetGpuVirtualized() bool { if x != nil { return x.GpuVirtualized } return false } type GetCPUTierCatalogRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *GetCPUTierCatalogRequest) Reset() { *x = GetCPUTierCatalogRequest{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCPUTierCatalogRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCPUTierCatalogRequest) ProtoMessage() {} func (x *GetCPUTierCatalogRequest) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[182] 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 GetCPUTierCatalogRequest.ProtoReflect.Descriptor instead. func (*GetCPUTierCatalogRequest) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{182} } type GetCPUTierCatalogResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // JSON object with the workspace's tier policy (enabled, default_cpu_tier), // the hosted CPU pools and the tier each sells (pools: {name: {cpu_class, // ready, ready_runtimes}}) and the gateway's tier features (capabilities). Catalog string `protobuf:"bytes,1,opt,name=catalog,proto3" json:"catalog,omitempty"` } func (x *GetCPUTierCatalogResponse) Reset() { *x = GetCPUTierCatalogResponse{} if protoimpl.UnsafeEnabled { mi := &file_gateway_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCPUTierCatalogResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCPUTierCatalogResponse) ProtoMessage() {} func (x *GetCPUTierCatalogResponse) ProtoReflect() protoreflect.Message { mi := &file_gateway_proto_msgTypes[183] 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 GetCPUTierCatalogResponse.ProtoReflect.Descriptor instead. func (*GetCPUTierCatalogResponse) Descriptor() ([]byte, []int) { return file_gateway_proto_rawDescGZIP(), []int{183} } func (x *GetCPUTierCatalogResponse) GetCatalog() string { if x != nil { return x.Catalog } return "" } var File_gateway_proto protoreflect.FileDescriptor var file_gateway_proto_rawDesc = []byte{ 0x0a, 0x0d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 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, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x7e, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x38, 0x0a, 0x0e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x59, 0x0a, 0x11, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x70, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0xec, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x75, 0x73, 0x65, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x75, 0x73, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0xb1, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x70, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x50, 0x61, 0x72, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x64, 0x0a, 0x10, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xef, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x4e, 0x0a, 0x0b, 0x70, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x72, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x40, 0x0a, 0x12, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0x8a, 0x01, 0x0a, 0x1b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x22, 0x4b, 0x0a, 0x1c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xad, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x87, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x82, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x79, 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xd6, 0x01, 0x0a, 0x1d, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x74, 0x68, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x44, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x30, 0x0a, 0x1e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x22, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x77, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x3f, 0x0a, 0x1a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x6f, 0x0a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xd3, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x62, 0x0a, 0x18, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x16, 0x73, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x3d, 0x0a, 0x18, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x19, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4e, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x22, 0x85, 0x02, 0x0a, 0x0e, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x57, 0x61, 0x72, 0x6d, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x21, 0x0a, 0x0f, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x22, 0x24, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb9, 0x03, 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 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, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x77, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x2d, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x78, 0x0a, 0x06, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1f, 0x0a, 0x09, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x50, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xf0, 0x03, 0x0a, 0x15, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x75, 0x72, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x67, 0x4d, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xd7, 0x01, 0x0a, 0x0b, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x8e, 0x01, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x33, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x4f, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 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, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0xa8, 0x0d, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x57, 0x61, 0x72, 0x6d, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x07, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x55, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x61, 0x72, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x6e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x63, 0x70, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x63, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x27, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x11, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x5f, 0x76, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x75, 0x73, 0x65, 0x56, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x33, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x70, 0x75, 0x54, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x22, 0x10, 0x23, 0x22, 0xfc, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x5a, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x22, 0xdd, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x61, 0x72, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x6c, 0x6f, 0x75, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x75, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x79, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x27, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x41, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x28, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x48, 0x0a, 0x16, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x42, 0x0a, 0x17, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x29, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xec, 0x02, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x43, 0x70, 0x75, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x43, 0x70, 0x75, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x70, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x70, 0x75, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x61, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x23, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0xa6, 0x03, 0x0a, 0x0a, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xd2, 0x04, 0x0a, 0x09, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, 0xfb, 0x05, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x5f, 0x61, 0x74, 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, 0x52, 0x10, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x61, 0x6c, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x62, 0x22, 0xad, 0x04, 0x0a, 0x0b, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x0a, 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, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0x40, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x6d, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x22, 0x5a, 0x0a, 0x19, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x1a, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc9, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x4f, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x22, 0x9d, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x74, 0x75, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0xd8, 0x05, 0x0a, 0x0d, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x50, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x48, 0x6f, 0x75, 0x72, 0x6c, 0x79, 0x43, 0x6f, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x31, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, 0x61, 0x64, 0x79, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0x75, 0x0a, 0x14, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x62, 0x79, 0x6f, 0x63, 0x22, 0x43, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0xd1, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x75, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x22, 0xb1, 0x03, 0x0a, 0x0d, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x55, 0x73, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x55, 0x73, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x55, 0x73, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x55, 0x73, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x55, 0x73, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x55, 0x73, 0x64, 0x22, 0xaf, 0x03, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x4c, 0x0a, 0x09, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x46, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x65, 0x72, 0x44, 0x61, 0x79, 0x1a, 0x53, 0x0a, 0x0d, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x44, 0x61, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xa4, 0x02, 0x0a, 0x10, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x67, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x27, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x5e, 0x0a, 0x19, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x6f, 0x0a, 0x1a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x04, 0x70, 0x6f, 0x6f, 0x6c, 0x22, 0x4b, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0x97, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 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, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x32, 0x0a, 0x1a, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x46, 0x0a, 0x1b, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x4a, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x22, 0xb0, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 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, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x22, 0x4c, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x71, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x22, 0xfd, 0x05, 0x0a, 0x14, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x54, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x69, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x19, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x3d, 0x0a, 0x1b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x1d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x14, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x35, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x18, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x81, 0x05, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x09, 0x70, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x70, 0x75, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x70, 0x75, 0x49, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x11, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3b, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x22, 0x6f, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x22, 0xb9, 0x03, 0x0a, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x67, 0x0a, 0x26, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x27, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x70, 0x68, 0x65, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x53, 0x73, 0x68, 0x22, 0x3e, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x76, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4b, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x39, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x22, 0xad, 0x02, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 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, 0x49, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xb0, 0x07, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x70, 0x75, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x67, 0x70, 0x75, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x6c, 0x6f, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61, 0x41, 0x72, 0x67, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x70, 0x75, 0x41, 0x66, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x6f, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x35, 0x0a, 0x12, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc6, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0xb7, 0x01, 0x0a, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x22, 0xb4, 0x04, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x63, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xa1, 0x02, 0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 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, 0x9a, 0x01, 0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x49, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x53, 0x73, 0x68, 0x22, 0x85, 0x02, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x41, 0x0a, 0x16, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xef, 0x04, 0x0a, 0x07, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x70, 0x75, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4b, 0x65, 0x65, 0x70, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0e, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x49, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x5f, 0x73, 0x73, 0x68, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x61, 0x69, 0x6c, 0x6e, 0x65, 0x74, 0x53, 0x73, 0x68, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x12, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0d, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x52, 0x0e, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0xed, 0x05, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x70, 0x75, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x63, 0x70, 0x75, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x63, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x66, 0x72, 0x65, 0x65, 0x47, 0x70, 0x75, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x61, 0x63, 0x68, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x63, 0x61, 0x63, 0x68, 0x65, 0x43, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x20, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x22, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x6b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x12, 0x3e, 0x0a, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0b, 0x70, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x12, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x62, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x62, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x62, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x75, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x22, 0x48, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xd0, 0x03, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x67, 0x70, 0x75, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x70, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x67, 0x70, 0x75, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x70, 0x75, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x43, 0x70, 0x75, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x62, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x62, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x70, 0x75, 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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x47, 0x70, 0x75, 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, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x33, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2a, 0x0a, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x52, 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x52, 0x15, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x14, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xb6, 0x02, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x65, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x26, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x22, 0x33, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2f, 0x0a, 0x12, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x13, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x2f, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x75, 0x62, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x75, 0x72, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x75, 0x72, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x22, 0x4b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x67, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x27, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x22, 0x32, 0x0a, 0x13, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x14, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x34, 0x0a, 0x15, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x16, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x4b, 0x0a, 0x12, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x3e, 0x0a, 0x13, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x1e, 0x0a, 0x1c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xed, 0x02, 0x0a, 0x1d, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, 0x70, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x48, 0x74, 0x74, 0x70, 0x54, 0x6c, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x47, 0x72, 0x70, 0x63, 0x54, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x56, 0x6d, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x22, 0x4a, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x5a, 0x0a, 0x1c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xf8, 0x01, 0x0a, 0x1d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x58, 0x0a, 0x1a, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x73, 0x0a, 0x1b, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0x7a, 0x0a, 0x1c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x1d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x2b, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x03, 0x73, 0x73, 0x68, 0x22, 0xae, 0x01, 0x0a, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfc, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x47, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x22, 0xda, 0x05, 0x0a, 0x10, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x12, 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, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x46, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x14, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x22, 0xac, 0x03, 0x0a, 0x16, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x15, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x72, 0x69, 0x75, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x72, 0x69, 0x75, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6d, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x6d, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x64, 0x75, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x33, 0x0a, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x63, 0x68, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x63, 0x61, 0x63, 0x68, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x67, 0x70, 0x75, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x44, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x76, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x72, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x72, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x27, 0x0a, 0x0f, 0x67, 0x70, 0x75, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x67, 0x70, 0x75, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x54, 0x69, 0x65, 0x72, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x35, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x54, 0x69, 0x65, 0x72, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2a, 0x43, 0x0a, 0x1f, 0x53, 0x79, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x02, 0x32, 0xdf, 0x3c, 0x0a, 0x0e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0f, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x5f, 0x0a, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x5e, 0x0a, 0x0a, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x68, 0x61, 0x73, 0x68, 0x7d, 0x12, 0x60, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x22, 0x08, 0x2f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x50, 0x75, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x65, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x5e, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x54, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x3a, 0x01, 0x2a, 0x22, 0x0c, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x53, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x6e, 0x64, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x65, 0x6e, 0x64, 0x12, 0x5a, 0x0a, 0x09, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x52, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x6e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x54, 0x69, 0x65, 0x72, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x54, 0x69, 0x65, 0x72, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x50, 0x55, 0x54, 0x69, 0x65, 0x72, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x63, 0x70, 0x75, 0x2d, 0x74, 0x69, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x12, 0x5f, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x57, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x12, 0x16, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x52, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x73, 0x74, 0x75, 0x62, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x75, 0x62, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x72, 0x6c, 0x12, 0x6a, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x71, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x16, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x75, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x17, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x78, 0x0a, 0x0f, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x72, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x52, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x08, 0x12, 0x06, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x3a, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x12, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x3a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x12, 0x6f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x69, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x62, 0x79, 0x6f, 0x63, 0x12, 0x69, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x79, 0x6f, 0x63, 0x12, 0x78, 0x0a, 0x0d, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x42, 0x59, 0x4f, 0x43, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x62, 0x79, 0x6f, 0x63, 0x2f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x71, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x3a, 0x01, 0x2a, 0x22, 0x06, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x5c, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x2a, 0x0d, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x7e, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x8b, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x7c, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x15, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x6b, 0x65, 0x79, 0x3a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0xa4, 0x01, 0x0a, 0x13, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x12, 0x23, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x6b, 0x65, 0x79, 0x3a, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x15, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x53, 0x48, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 0x2f, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x6b, 0x65, 0x79, 0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x09, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0xac, 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2d, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x75, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x8a, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x53, 0x48, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x73, 0x68, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x27, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x12, 0x5e, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x3a, 0x01, 0x2a, 0x22, 0x09, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x2a, 0x16, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x56, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x22, 0x07, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x6b, 0x0a, 0x0b, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x19, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x64, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x5a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x70, 0x0a, 0x0c, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x1b, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x12, 0x78, 0x0a, 0x0e, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x55, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x6e, 0x63, 0x6f, 0x72, 0x64, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x1a, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x81, 0x01, 0x0a, 0x15, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x23, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x65, 0x61, 0x6d, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, 0x65, 0x74, 0x61, 0x39, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_gateway_proto_rawDescOnce sync.Once file_gateway_proto_rawDescData = file_gateway_proto_rawDesc ) func file_gateway_proto_rawDescGZIP() []byte { file_gateway_proto_rawDescOnce.Do(func() { file_gateway_proto_rawDescData = protoimpl.X.CompressGZIP(file_gateway_proto_rawDescData) }) return file_gateway_proto_rawDescData } var file_gateway_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_gateway_proto_msgTypes = make([]protoimpl.MessageInfo, 197) var file_gateway_proto_goTypes = []interface{}{ (SyncContainerWorkspaceOperation)(0), // 0: gateway.SyncContainerWorkspaceOperation (*AuthorizeRequest)(nil), // 1: gateway.AuthorizeRequest (*AuthorizeResponse)(nil), // 2: gateway.AuthorizeResponse (*SignPayloadRequest)(nil), // 3: gateway.SignPayloadRequest (*SignPayloadResponse)(nil), // 4: gateway.SignPayloadResponse (*ObjectMetadata)(nil), // 5: gateway.ObjectMetadata (*HeadObjectRequest)(nil), // 6: gateway.HeadObjectRequest (*HeadObjectResponse)(nil), // 7: gateway.HeadObjectResponse (*CreateObjectRequest)(nil), // 8: gateway.CreateObjectRequest (*ObjectUploadPart)(nil), // 9: gateway.ObjectUploadPart (*CreateObjectResponse)(nil), // 10: gateway.CreateObjectResponse (*ObjectUploadedPart)(nil), // 11: gateway.ObjectUploadedPart (*CompleteObjectUploadRequest)(nil), // 12: gateway.CompleteObjectUploadRequest (*CompleteObjectUploadResponse)(nil), // 13: gateway.CompleteObjectUploadResponse (*PutObjectRequest)(nil), // 14: gateway.PutObjectRequest (*PutObjectResponse)(nil), // 15: gateway.PutObjectResponse (*CreateObjectDeltaRequest)(nil), // 16: gateway.CreateObjectDeltaRequest (*CreateObjectDeltaResponse)(nil), // 17: gateway.CreateObjectDeltaResponse (*CommitObjectDeltaRequest)(nil), // 18: gateway.CommitObjectDeltaRequest (*CommitObjectDeltaResponse)(nil), // 19: gateway.CommitObjectDeltaResponse (*SyncContainerWorkspaceRequest)(nil), // 20: gateway.SyncContainerWorkspaceRequest (*SyncContainerWorkspaceResponse)(nil), // 21: gateway.SyncContainerWorkspaceResponse (*ListContainersRequest)(nil), // 22: gateway.ListContainersRequest (*ListContainersResponse)(nil), // 23: gateway.ListContainersResponse (*StopContainerRequest)(nil), // 24: gateway.StopContainerRequest (*StopContainerResponse)(nil), // 25: gateway.StopContainerResponse (*CheckpointContainerRequest)(nil), // 26: gateway.CheckpointContainerRequest (*CheckpointContainerResponse)(nil), // 27: gateway.CheckpointContainerResponse (*ContainerStreamMessage)(nil), // 28: gateway.ContainerStreamMessage (*AttachToContainerRequest)(nil), // 29: gateway.AttachToContainerRequest (*AttachToContainerResponse)(nil), // 30: gateway.AttachToContainerResponse (*StartTaskRequest)(nil), // 31: gateway.StartTaskRequest (*StartTaskResponse)(nil), // 32: gateway.StartTaskResponse (*EndTaskRequest)(nil), // 33: gateway.EndTaskRequest (*EndTaskResponse)(nil), // 34: gateway.EndTaskResponse (*StringList)(nil), // 35: gateway.StringList (*ListTasksRequest)(nil), // 36: gateway.ListTasksRequest (*Task)(nil), // 37: gateway.Task (*ListTasksResponse)(nil), // 38: gateway.ListTasksResponse (*StopTasksRequest)(nil), // 39: gateway.StopTasksRequest (*StopTasksResponse)(nil), // 40: gateway.StopTasksResponse (*Volume)(nil), // 41: gateway.Volume (*SecretVar)(nil), // 42: gateway.SecretVar (*Autoscaler)(nil), // 43: gateway.Autoscaler (*DatabaseServingConfig)(nil), // 44: gateway.DatabaseServingConfig (*ServingConfig)(nil), // 45: gateway.ServingConfig (*DurableDisk)(nil), // 46: gateway.DurableDisk (*PersistentRoot)(nil), // 47: gateway.PersistentRoot (*TaskPolicy)(nil), // 48: gateway.TaskPolicy (*Schema)(nil), // 49: gateway.Schema (*SchemaField)(nil), // 50: gateway.SchemaField (*GetOrCreateStubRequest)(nil), // 51: gateway.GetOrCreateStubRequest (*GetOrCreateStubResponse)(nil), // 52: gateway.GetOrCreateStubResponse (*DeployStubRequest)(nil), // 53: gateway.DeployStubRequest (*DeployStubResponse)(nil), // 54: gateway.DeployStubResponse (*Deployment)(nil), // 55: gateway.Deployment (*ListDeploymentsRequest)(nil), // 56: gateway.ListDeploymentsRequest (*ListDeploymentsResponse)(nil), // 57: gateway.ListDeploymentsResponse (*StopDeploymentRequest)(nil), // 58: gateway.StopDeploymentRequest (*StopDeploymentResponse)(nil), // 59: gateway.StopDeploymentResponse (*StartDeploymentRequest)(nil), // 60: gateway.StartDeploymentRequest (*StartDeploymentResponse)(nil), // 61: gateway.StartDeploymentResponse (*ScaleDeploymentRequest)(nil), // 62: gateway.ScaleDeploymentRequest (*ScaleDeploymentResponse)(nil), // 63: gateway.ScaleDeploymentResponse (*DeleteDeploymentRequest)(nil), // 64: gateway.DeleteDeploymentRequest (*DeleteDeploymentResponse)(nil), // 65: gateway.DeleteDeploymentResponse (*Pool)(nil), // 66: gateway.Pool (*ListPoolsRequest)(nil), // 67: gateway.ListPoolsRequest (*ListPoolsResponse)(nil), // 68: gateway.ListPoolsResponse (*PoolConfig)(nil), // 69: gateway.PoolConfig (*PoolOffer)(nil), // 70: gateway.PoolOffer (*ProviderInstance)(nil), // 71: gateway.ProviderInstance (*PrivatePool)(nil), // 72: gateway.PrivatePool (*ListPoolOffersRequest)(nil), // 73: gateway.ListPoolOffersRequest (*ListPoolOffersResponse)(nil), // 74: gateway.ListPoolOffersResponse (*LaunchPoolCapacityRequest)(nil), // 75: gateway.LaunchPoolCapacityRequest (*LaunchPoolCapacityResponse)(nil), // 76: gateway.LaunchPoolCapacityResponse (*ListPrivatePoolsRequest)(nil), // 77: gateway.ListPrivatePoolsRequest (*ListPrivatePoolsResponse)(nil), // 78: gateway.ListPrivatePoolsResponse (*CreateBYOCPoolRequest)(nil), // 79: gateway.CreateBYOCPoolRequest (*CreateBYOCPoolResponse)(nil), // 80: gateway.CreateBYOCPoolResponse (*BYOCPoolState)(nil), // 81: gateway.BYOCPoolState (*GetBYOCPoolRequest)(nil), // 82: gateway.GetBYOCPoolRequest (*GetBYOCPoolResponse)(nil), // 83: gateway.GetBYOCPoolResponse (*ScaleBYOCPoolRequest)(nil), // 84: gateway.ScaleBYOCPoolRequest (*ScaleBYOCPoolResponse)(nil), // 85: gateway.ScaleBYOCPoolResponse (*GetProviderJoinCommandRequest)(nil), // 86: gateway.GetProviderJoinCommandRequest (*GetProviderJoinCommandResponse)(nil), // 87: gateway.GetProviderJoinCommandResponse (*ListProviderMachinesRequest)(nil), // 88: gateway.ListProviderMachinesRequest (*ListProviderMachinesResponse)(nil), // 89: gateway.ListProviderMachinesResponse (*GetEndpointUsageRequest)(nil), // 90: gateway.GetEndpointUsageRequest (*EndpointUsage)(nil), // 91: gateway.EndpointUsage (*GetEndpointUsageResponse)(nil), // 92: gateway.GetEndpointUsageResponse (*ListMachineContainersRequest)(nil), // 93: gateway.ListMachineContainersRequest (*MachineContainer)(nil), // 94: gateway.MachineContainer (*ListMachineContainersResponse)(nil), // 95: gateway.ListMachineContainersResponse (*CreatePoolRequest)(nil), // 96: gateway.CreatePoolRequest (*CreatePoolResponse)(nil), // 97: gateway.CreatePoolResponse (*DeletePoolRequest)(nil), // 98: gateway.DeletePoolRequest (*DeletePoolResponse)(nil), // 99: gateway.DeletePoolResponse (*ExtendPoolCapacityRequest)(nil), // 100: gateway.ExtendPoolCapacityRequest (*ExtendPoolCapacityResponse)(nil), // 101: gateway.ExtendPoolCapacityResponse (*CreatePoolJoinTokenRequest)(nil), // 102: gateway.CreatePoolJoinTokenRequest (*CreatePoolJoinTokenResponse)(nil), // 103: gateway.CreatePoolJoinTokenResponse (*RevokePoolJoinTokenRequest)(nil), // 104: gateway.RevokePoolJoinTokenRequest (*RevokePoolJoinTokenResponse)(nil), // 105: gateway.RevokePoolJoinTokenResponse (*GetPoolJoinCommandRequest)(nil), // 106: gateway.GetPoolJoinCommandRequest (*GetPoolJoinCommandResponse)(nil), // 107: gateway.GetPoolJoinCommandResponse (*ListPoolMachinesRequest)(nil), // 108: gateway.ListPoolMachinesRequest (*ListPoolMachinesResponse)(nil), // 109: gateway.ListPoolMachinesResponse (*AgentBootstrapConfig)(nil), // 110: gateway.AgentBootstrapConfig (*AgentTelemetryConfig)(nil), // 111: gateway.AgentTelemetryConfig (*AgentTelemetrySinkConfig)(nil), // 112: gateway.AgentTelemetrySinkConfig (*JoinAgentRequest)(nil), // 113: gateway.JoinAgentRequest (*JoinAgentResponse)(nil), // 114: gateway.JoinAgentResponse (*AgentPreflightCheck)(nil), // 115: gateway.AgentPreflightCheck (*AgentRoute)(nil), // 116: gateway.AgentRoute (*RequestAgentTransportCredentialRequest)(nil), // 117: gateway.RequestAgentTransportCredentialRequest (*RequestAgentTransportCredentialResponse)(nil), // 118: gateway.RequestAgentTransportCredentialResponse (*CreateNodeEnrollmentRequest)(nil), // 119: gateway.CreateNodeEnrollmentRequest (*CreateNodeEnrollmentResponse)(nil), // 120: gateway.CreateNodeEnrollmentResponse (*DeleteNodeEnrollmentRequest)(nil), // 121: gateway.DeleteNodeEnrollmentRequest (*DeleteNodeEnrollmentResponse)(nil), // 122: gateway.DeleteNodeEnrollmentResponse (*ListAgentRoutesRequest)(nil), // 123: gateway.ListAgentRoutesRequest (*ListAgentRoutesResponse)(nil), // 124: gateway.ListAgentRoutesResponse (*UpdateAgentRouteStatusRequest)(nil), // 125: gateway.UpdateAgentRouteStatusRequest (*UpdateAgentRouteStatusResponse)(nil), // 126: gateway.UpdateAgentRouteStatusResponse (*AgentWorkerSlot)(nil), // 127: gateway.AgentWorkerSlot (*StreamAgentRequest)(nil), // 128: gateway.StreamAgentRequest (*StreamAgentResponse)(nil), // 129: gateway.StreamAgentResponse (*AgentLogRecord)(nil), // 130: gateway.AgentLogRecord (*AgentMetricSnapshot)(nil), // 131: gateway.AgentMetricSnapshot (*AgentEventRecord)(nil), // 132: gateway.AgentEventRecord (*AgentNetworkInfo)(nil), // 133: gateway.AgentNetworkInfo (*AgentTelemetryRequest)(nil), // 134: gateway.AgentTelemetryRequest (*AgentTelemetryResponse)(nil), // 135: gateway.AgentTelemetryResponse (*Machine)(nil), // 136: gateway.Machine (*MachineMetrics)(nil), // 137: gateway.MachineMetrics (*MachinePathMetrics)(nil), // 138: gateway.MachinePathMetrics (*ListMachinesRequest)(nil), // 139: gateway.ListMachinesRequest (*ListMachinesResponse)(nil), // 140: gateway.ListMachinesResponse (*CreateMachineRequest)(nil), // 141: gateway.CreateMachineRequest (*CreateMachineResponse)(nil), // 142: gateway.CreateMachineResponse (*DeleteMachineRequest)(nil), // 143: gateway.DeleteMachineRequest (*DeleteMachineResponse)(nil), // 144: gateway.DeleteMachineResponse (*Token)(nil), // 145: gateway.Token (*ListTokensRequest)(nil), // 146: gateway.ListTokensRequest (*ListTokensResponse)(nil), // 147: gateway.ListTokensResponse (*CreateTokenRequest)(nil), // 148: gateway.CreateTokenRequest (*CreateTokenResponse)(nil), // 149: gateway.CreateTokenResponse (*ToggleTokenRequest)(nil), // 150: gateway.ToggleTokenRequest (*ToggleTokenResponse)(nil), // 151: gateway.ToggleTokenResponse (*DeleteTokenRequest)(nil), // 152: gateway.DeleteTokenRequest (*DeleteTokenResponse)(nil), // 153: gateway.DeleteTokenResponse (*GetURLRequest)(nil), // 154: gateway.GetURLRequest (*GetURLResponse)(nil), // 155: gateway.GetURLResponse (*ListWorkersRequest)(nil), // 156: gateway.ListWorkersRequest (*ListWorkersResponse)(nil), // 157: gateway.ListWorkersResponse (*CordonWorkerRequest)(nil), // 158: gateway.CordonWorkerRequest (*CordonWorkerResponse)(nil), // 159: gateway.CordonWorkerResponse (*UncordonWorkerRequest)(nil), // 160: gateway.UncordonWorkerRequest (*UncordonWorkerResponse)(nil), // 161: gateway.UncordonWorkerResponse (*DrainWorkerRequest)(nil), // 162: gateway.DrainWorkerRequest (*DrainWorkerResponse)(nil), // 163: gateway.DrainWorkerResponse (*ExportWorkspaceConfigRequest)(nil), // 164: gateway.ExportWorkspaceConfigRequest (*ExportWorkspaceConfigResponse)(nil), // 165: gateway.ExportWorkspaceConfigResponse (*UpdateAgentAvailabilityRequest)(nil), // 166: gateway.UpdateAgentAvailabilityRequest (*UpdateAgentAvailabilityResponse)(nil), // 167: gateway.UpdateAgentAvailabilityResponse (*DownloadMachineSSHKeyRequest)(nil), // 168: gateway.DownloadMachineSSHKeyRequest (*DownloadMachineSSHKeyResponse)(nil), // 169: gateway.DownloadMachineSSHKeyResponse (*RotateMachineSSHKeyRequest)(nil), // 170: gateway.RotateMachineSSHKeyRequest (*RotateMachineSSHKeyResponse)(nil), // 171: gateway.RotateMachineSSHKeyResponse (*ActivateMachineSSHKeyRequest)(nil), // 172: gateway.ActivateMachineSSHKeyRequest (*ActivateMachineSSHKeyResponse)(nil), // 173: gateway.ActivateMachineSSHKeyResponse (*AgentSSHConfig)(nil), // 174: gateway.AgentSSHConfig (*UpdateAgentSSHStatusRequest)(nil), // 175: gateway.UpdateAgentSSHStatusRequest (*UpdateAgentSSHStatusResponse)(nil), // 176: gateway.UpdateAgentSSHStatusResponse (*MachineSSHAccess)(nil), // 177: gateway.MachineSSHAccess (*AgentPoolCacheDiskConfig)(nil), // 178: gateway.AgentPoolCacheDiskConfig (*AgentPoolCacheConfig)(nil), // 179: gateway.AgentPoolCacheConfig (*AgentPoolRuntimeConfig)(nil), // 180: gateway.AgentPoolRuntimeConfig (*GetAgentPoolVirtualizationRequest)(nil), // 181: gateway.GetAgentPoolVirtualizationRequest (*GetAgentPoolVirtualizationResponse)(nil), // 182: gateway.GetAgentPoolVirtualizationResponse (*GetCPUTierCatalogRequest)(nil), // 183: gateway.GetCPUTierCatalogRequest (*GetCPUTierCatalogResponse)(nil), // 184: gateway.GetCPUTierCatalogResponse nil, // 185: gateway.CreateObjectResponse.PutHeadersEntry nil, // 186: gateway.CreateObjectDeltaResponse.PutHeadersEntry nil, // 187: gateway.ListTasksRequest.FiltersEntry nil, // 188: gateway.Schema.FieldsEntry nil, // 189: gateway.ListDeploymentsRequest.FiltersEntry nil, // 190: gateway.ListPoolsRequest.FiltersEntry nil, // 191: gateway.ListPrivatePoolsRequest.FiltersEntry nil, // 192: gateway.GetEndpointUsageResponse.PerModelEntry nil, // 193: gateway.GetEndpointUsageResponse.PerDayEntry nil, // 194: gateway.UpdateAgentRouteStatusRequest.AttrsEntry nil, // 195: gateway.AgentEventRecord.AttrsEntry nil, // 196: gateway.ListMachinesResponse.GpusEntry nil, // 197: gateway.ListMachinesResponse.SupportedGpusEntry (*Container)(nil), // 198: types.Container (*timestamppb.Timestamp)(nil), // 199: google.protobuf.Timestamp (*MountPointConfig)(nil), // 200: types.MountPointConfig (*CheckpointTrigger)(nil), // 201: types.CheckpointTrigger (*WorkerPoolState)(nil), // 202: types.WorkerPoolState (*Worker)(nil), // 203: types.Worker } var file_gateway_proto_depIdxs = []int32{ 5, // 0: gateway.HeadObjectResponse.object_metadata:type_name -> gateway.ObjectMetadata 5, // 1: gateway.CreateObjectRequest.object_metadata:type_name -> gateway.ObjectMetadata 185, // 2: gateway.CreateObjectResponse.put_headers:type_name -> gateway.CreateObjectResponse.PutHeadersEntry 9, // 3: gateway.CreateObjectResponse.upload_parts:type_name -> gateway.ObjectUploadPart 11, // 4: gateway.CompleteObjectUploadRequest.parts:type_name -> gateway.ObjectUploadedPart 5, // 5: gateway.PutObjectRequest.object_metadata:type_name -> gateway.ObjectMetadata 186, // 6: gateway.CreateObjectDeltaResponse.put_headers:type_name -> gateway.CreateObjectDeltaResponse.PutHeadersEntry 0, // 7: gateway.SyncContainerWorkspaceRequest.op:type_name -> gateway.SyncContainerWorkspaceOperation 198, // 8: gateway.ListContainersResponse.containers:type_name -> types.Container 29, // 9: gateway.ContainerStreamMessage.attach_request:type_name -> gateway.AttachToContainerRequest 20, // 10: gateway.ContainerStreamMessage.sync_container_workspace:type_name -> gateway.SyncContainerWorkspaceRequest 187, // 11: gateway.ListTasksRequest.filters:type_name -> gateway.ListTasksRequest.FiltersEntry 199, // 12: gateway.Task.started_at:type_name -> google.protobuf.Timestamp 199, // 13: gateway.Task.ended_at:type_name -> google.protobuf.Timestamp 199, // 14: gateway.Task.created_at:type_name -> google.protobuf.Timestamp 199, // 15: gateway.Task.updated_at:type_name -> google.protobuf.Timestamp 37, // 16: gateway.ListTasksResponse.tasks:type_name -> gateway.Task 200, // 17: gateway.Volume.config:type_name -> types.MountPointConfig 44, // 18: gateway.ServingConfig.database:type_name -> gateway.DatabaseServingConfig 188, // 19: gateway.Schema.fields:type_name -> gateway.Schema.FieldsEntry 49, // 20: gateway.SchemaField.fields:type_name -> gateway.Schema 41, // 21: gateway.GetOrCreateStubRequest.volumes:type_name -> gateway.Volume 42, // 22: gateway.GetOrCreateStubRequest.secrets:type_name -> gateway.SecretVar 43, // 23: gateway.GetOrCreateStubRequest.autoscaler:type_name -> gateway.Autoscaler 48, // 24: gateway.GetOrCreateStubRequest.task_policy:type_name -> gateway.TaskPolicy 49, // 25: gateway.GetOrCreateStubRequest.inputs:type_name -> gateway.Schema 49, // 26: gateway.GetOrCreateStubRequest.outputs:type_name -> gateway.Schema 69, // 27: gateway.GetOrCreateStubRequest.pool:type_name -> gateway.PoolConfig 45, // 28: gateway.GetOrCreateStubRequest.serving:type_name -> gateway.ServingConfig 46, // 29: gateway.GetOrCreateStubRequest.disks:type_name -> gateway.DurableDisk 201, // 30: gateway.GetOrCreateStubRequest.checkpoint_trigger:type_name -> types.CheckpointTrigger 47, // 31: gateway.GetOrCreateStubRequest.persistent_root:type_name -> gateway.PersistentRoot 199, // 32: gateway.Deployment.created_at:type_name -> google.protobuf.Timestamp 199, // 33: gateway.Deployment.updated_at:type_name -> google.protobuf.Timestamp 189, // 34: gateway.ListDeploymentsRequest.filters:type_name -> gateway.ListDeploymentsRequest.FiltersEntry 55, // 35: gateway.ListDeploymentsResponse.deployments:type_name -> gateway.Deployment 202, // 36: gateway.Pool.state:type_name -> types.WorkerPoolState 190, // 37: gateway.ListPoolsRequest.filters:type_name -> gateway.ListPoolsRequest.FiltersEntry 66, // 38: gateway.ListPoolsResponse.pools:type_name -> gateway.Pool 199, // 39: gateway.ProviderInstance.created_at:type_name -> google.protobuf.Timestamp 199, // 40: gateway.ProviderInstance.expires_at:type_name -> google.protobuf.Timestamp 199, // 41: gateway.ProviderInstance.billing_renewal_at:type_name -> google.protobuf.Timestamp 69, // 42: gateway.PrivatePool.config:type_name -> gateway.PoolConfig 71, // 43: gateway.PrivatePool.reservations:type_name -> gateway.ProviderInstance 199, // 44: gateway.PrivatePool.created_at:type_name -> google.protobuf.Timestamp 199, // 45: gateway.PrivatePool.expires_at:type_name -> google.protobuf.Timestamp 81, // 46: gateway.PrivatePool.byoc:type_name -> gateway.BYOCPoolState 69, // 47: gateway.ListPoolOffersRequest.pool:type_name -> gateway.PoolConfig 70, // 48: gateway.ListPoolOffersResponse.offers:type_name -> gateway.PoolOffer 69, // 49: gateway.LaunchPoolCapacityRequest.pool:type_name -> gateway.PoolConfig 72, // 50: gateway.LaunchPoolCapacityResponse.pool:type_name -> gateway.PrivatePool 191, // 51: gateway.ListPrivatePoolsRequest.filters:type_name -> gateway.ListPrivatePoolsRequest.FiltersEntry 72, // 52: gateway.ListPrivatePoolsResponse.pools:type_name -> gateway.PrivatePool 72, // 53: gateway.CreateBYOCPoolResponse.pool:type_name -> gateway.PrivatePool 81, // 54: gateway.CreateBYOCPoolResponse.byoc:type_name -> gateway.BYOCPoolState 72, // 55: gateway.GetBYOCPoolResponse.pool:type_name -> gateway.PrivatePool 81, // 56: gateway.GetBYOCPoolResponse.byoc:type_name -> gateway.BYOCPoolState 72, // 57: gateway.ScaleBYOCPoolResponse.pool:type_name -> gateway.PrivatePool 81, // 58: gateway.ScaleBYOCPoolResponse.byoc:type_name -> gateway.BYOCPoolState 199, // 59: gateway.GetProviderJoinCommandResponse.expires_at:type_name -> google.protobuf.Timestamp 136, // 60: gateway.ListProviderMachinesResponse.machines:type_name -> gateway.Machine 91, // 61: gateway.GetEndpointUsageResponse.total:type_name -> gateway.EndpointUsage 192, // 62: gateway.GetEndpointUsageResponse.per_model:type_name -> gateway.GetEndpointUsageResponse.PerModelEntry 193, // 63: gateway.GetEndpointUsageResponse.per_day:type_name -> gateway.GetEndpointUsageResponse.PerDayEntry 94, // 64: gateway.ListMachineContainersResponse.containers:type_name -> gateway.MachineContainer 69, // 65: gateway.CreatePoolRequest.pool:type_name -> gateway.PoolConfig 72, // 66: gateway.CreatePoolResponse.pool:type_name -> gateway.PrivatePool 72, // 67: gateway.ExtendPoolCapacityResponse.pool:type_name -> gateway.PrivatePool 199, // 68: gateway.CreatePoolJoinTokenResponse.expires_at:type_name -> google.protobuf.Timestamp 199, // 69: gateway.GetPoolJoinCommandResponse.expires_at:type_name -> google.protobuf.Timestamp 136, // 70: gateway.ListPoolMachinesResponse.machines:type_name -> gateway.Machine 111, // 71: gateway.AgentBootstrapConfig.telemetry:type_name -> gateway.AgentTelemetryConfig 112, // 72: gateway.AgentTelemetryConfig.logs:type_name -> gateway.AgentTelemetrySinkConfig 112, // 73: gateway.AgentTelemetryConfig.events:type_name -> gateway.AgentTelemetrySinkConfig 115, // 74: gateway.JoinAgentRequest.preflight:type_name -> gateway.AgentPreflightCheck 110, // 75: gateway.JoinAgentResponse.bootstrap:type_name -> gateway.AgentBootstrapConfig 116, // 76: gateway.ListAgentRoutesResponse.routes:type_name -> gateway.AgentRoute 194, // 77: gateway.UpdateAgentRouteStatusRequest.attrs:type_name -> gateway.UpdateAgentRouteStatusRequest.AttrsEntry 180, // 78: gateway.AgentWorkerSlot.pool_config:type_name -> gateway.AgentPoolRuntimeConfig 116, // 79: gateway.StreamAgentResponse.routes:type_name -> gateway.AgentRoute 127, // 80: gateway.StreamAgentResponse.slots:type_name -> gateway.AgentWorkerSlot 174, // 81: gateway.StreamAgentResponse.ssh:type_name -> gateway.AgentSSHConfig 138, // 82: gateway.AgentMetricSnapshot.path_metrics:type_name -> gateway.MachinePathMetrics 195, // 83: gateway.AgentEventRecord.attrs:type_name -> gateway.AgentEventRecord.AttrsEntry 130, // 84: gateway.AgentTelemetryRequest.logs:type_name -> gateway.AgentLogRecord 131, // 85: gateway.AgentTelemetryRequest.metrics:type_name -> gateway.AgentMetricSnapshot 132, // 86: gateway.AgentTelemetryRequest.events:type_name -> gateway.AgentEventRecord 133, // 87: gateway.AgentTelemetryRequest.network:type_name -> gateway.AgentNetworkInfo 137, // 88: gateway.Machine.machine_metrics:type_name -> gateway.MachineMetrics 177, // 89: gateway.Machine.ssh:type_name -> gateway.MachineSSHAccess 138, // 90: gateway.MachineMetrics.path_metrics:type_name -> gateway.MachinePathMetrics 136, // 91: gateway.ListMachinesResponse.machines:type_name -> gateway.Machine 196, // 92: gateway.ListMachinesResponse.gpus:type_name -> gateway.ListMachinesResponse.GpusEntry 197, // 93: gateway.ListMachinesResponse.supported_gpus:type_name -> gateway.ListMachinesResponse.SupportedGpusEntry 136, // 94: gateway.CreateMachineResponse.machine:type_name -> gateway.Machine 199, // 95: gateway.Token.created_at:type_name -> google.protobuf.Timestamp 199, // 96: gateway.Token.updated_at:type_name -> google.protobuf.Timestamp 145, // 97: gateway.ListTokensResponse.tokens:type_name -> gateway.Token 145, // 98: gateway.CreateTokenResponse.token:type_name -> gateway.Token 145, // 99: gateway.ToggleTokenResponse.token:type_name -> gateway.Token 203, // 100: gateway.ListWorkersResponse.workers:type_name -> types.Worker 177, // 101: gateway.RotateMachineSSHKeyResponse.ssh:type_name -> gateway.MachineSSHAccess 177, // 102: gateway.ActivateMachineSSHKeyResponse.ssh:type_name -> gateway.MachineSSHAccess 199, // 103: gateway.MachineSSHAccess.updated_at:type_name -> google.protobuf.Timestamp 178, // 104: gateway.AgentPoolCacheConfig.disk:type_name -> gateway.AgentPoolCacheDiskConfig 179, // 105: gateway.AgentPoolRuntimeConfig.cache:type_name -> gateway.AgentPoolCacheConfig 35, // 106: gateway.ListTasksRequest.FiltersEntry.value:type_name -> gateway.StringList 50, // 107: gateway.Schema.FieldsEntry.value:type_name -> gateway.SchemaField 35, // 108: gateway.ListDeploymentsRequest.FiltersEntry.value:type_name -> gateway.StringList 35, // 109: gateway.ListPoolsRequest.FiltersEntry.value:type_name -> gateway.StringList 35, // 110: gateway.ListPrivatePoolsRequest.FiltersEntry.value:type_name -> gateway.StringList 91, // 111: gateway.GetEndpointUsageResponse.PerModelEntry.value:type_name -> gateway.EndpointUsage 91, // 112: gateway.GetEndpointUsageResponse.PerDayEntry.value:type_name -> gateway.EndpointUsage 1, // 113: gateway.GatewayService.Authorize:input_type -> gateway.AuthorizeRequest 3, // 114: gateway.GatewayService.SignPayload:input_type -> gateway.SignPayloadRequest 6, // 115: gateway.GatewayService.HeadObject:input_type -> gateway.HeadObjectRequest 8, // 116: gateway.GatewayService.CreateObject:input_type -> gateway.CreateObjectRequest 14, // 117: gateway.GatewayService.PutObjectStream:input_type -> gateway.PutObjectRequest 12, // 118: gateway.GatewayService.CompleteObjectUpload:input_type -> gateway.CompleteObjectUploadRequest 16, // 119: gateway.GatewayService.CreateObjectDelta:input_type -> gateway.CreateObjectDeltaRequest 18, // 120: gateway.GatewayService.CommitObjectDelta:input_type -> gateway.CommitObjectDeltaRequest 26, // 121: gateway.GatewayService.CheckpointContainer:input_type -> gateway.CheckpointContainerRequest 22, // 122: gateway.GatewayService.ListContainers:input_type -> gateway.ListContainersRequest 24, // 123: gateway.GatewayService.StopContainer:input_type -> gateway.StopContainerRequest 28, // 124: gateway.GatewayService.AttachToContainer:input_type -> gateway.ContainerStreamMessage 31, // 125: gateway.GatewayService.StartTask:input_type -> gateway.StartTaskRequest 33, // 126: gateway.GatewayService.EndTask:input_type -> gateway.EndTaskRequest 39, // 127: gateway.GatewayService.StopTasks:input_type -> gateway.StopTasksRequest 36, // 128: gateway.GatewayService.ListTasks:input_type -> gateway.ListTasksRequest 183, // 129: gateway.GatewayService.GetCPUTierCatalog:input_type -> gateway.GetCPUTierCatalogRequest 51, // 130: gateway.GatewayService.GetOrCreateStub:input_type -> gateway.GetOrCreateStubRequest 53, // 131: gateway.GatewayService.DeployStub:input_type -> gateway.DeployStubRequest 154, // 132: gateway.GatewayService.GetURL:input_type -> gateway.GetURLRequest 56, // 133: gateway.GatewayService.ListDeployments:input_type -> gateway.ListDeploymentsRequest 58, // 134: gateway.GatewayService.StopDeployment:input_type -> gateway.StopDeploymentRequest 60, // 135: gateway.GatewayService.StartDeployment:input_type -> gateway.StartDeploymentRequest 62, // 136: gateway.GatewayService.ScaleDeployment:input_type -> gateway.ScaleDeploymentRequest 64, // 137: gateway.GatewayService.DeleteDeployment:input_type -> gateway.DeleteDeploymentRequest 67, // 138: gateway.GatewayService.ListPools:input_type -> gateway.ListPoolsRequest 73, // 139: gateway.GatewayService.ListPoolOffers:input_type -> gateway.ListPoolOffersRequest 75, // 140: gateway.GatewayService.LaunchPoolCapacity:input_type -> gateway.LaunchPoolCapacityRequest 77, // 141: gateway.GatewayService.ListPrivatePools:input_type -> gateway.ListPrivatePoolsRequest 79, // 142: gateway.GatewayService.CreateBYOCPool:input_type -> gateway.CreateBYOCPoolRequest 82, // 143: gateway.GatewayService.GetBYOCPool:input_type -> gateway.GetBYOCPoolRequest 84, // 144: gateway.GatewayService.ScaleBYOCPool:input_type -> gateway.ScaleBYOCPoolRequest 86, // 145: gateway.GatewayService.GetProviderJoinCommand:input_type -> gateway.GetProviderJoinCommandRequest 88, // 146: gateway.GatewayService.ListProviderMachines:input_type -> gateway.ListProviderMachinesRequest 90, // 147: gateway.GatewayService.GetEndpointUsage:input_type -> gateway.GetEndpointUsageRequest 93, // 148: gateway.GatewayService.ListMachineContainers:input_type -> gateway.ListMachineContainersRequest 96, // 149: gateway.GatewayService.CreatePool:input_type -> gateway.CreatePoolRequest 98, // 150: gateway.GatewayService.DeletePool:input_type -> gateway.DeletePoolRequest 100, // 151: gateway.GatewayService.ExtendPoolCapacity:input_type -> gateway.ExtendPoolCapacityRequest 102, // 152: gateway.GatewayService.CreatePoolJoinToken:input_type -> gateway.CreatePoolJoinTokenRequest 104, // 153: gateway.GatewayService.RevokePoolJoinToken:input_type -> gateway.RevokePoolJoinTokenRequest 106, // 154: gateway.GatewayService.GetPoolJoinCommand:input_type -> gateway.GetPoolJoinCommandRequest 108, // 155: gateway.GatewayService.ListPoolMachines:input_type -> gateway.ListPoolMachinesRequest 168, // 156: gateway.GatewayService.DownloadMachineSSHKey:input_type -> gateway.DownloadMachineSSHKeyRequest 170, // 157: gateway.GatewayService.RotateMachineSSHKey:input_type -> gateway.RotateMachineSSHKeyRequest 172, // 158: gateway.GatewayService.ActivateMachineSSHKey:input_type -> gateway.ActivateMachineSSHKeyRequest 113, // 159: gateway.GatewayService.JoinAgent:input_type -> gateway.JoinAgentRequest 117, // 160: gateway.GatewayService.RequestAgentTransportCredential:input_type -> gateway.RequestAgentTransportCredentialRequest 181, // 161: gateway.GatewayService.GetAgentPoolVirtualization:input_type -> gateway.GetAgentPoolVirtualizationRequest 119, // 162: gateway.GatewayService.CreateNodeEnrollment:input_type -> gateway.CreateNodeEnrollmentRequest 121, // 163: gateway.GatewayService.DeleteNodeEnrollment:input_type -> gateway.DeleteNodeEnrollmentRequest 123, // 164: gateway.GatewayService.ListAgentRoutes:input_type -> gateway.ListAgentRoutesRequest 125, // 165: gateway.GatewayService.UpdateAgentRouteStatus:input_type -> gateway.UpdateAgentRouteStatusRequest 175, // 166: gateway.GatewayService.UpdateAgentSSHStatus:input_type -> gateway.UpdateAgentSSHStatusRequest 166, // 167: gateway.GatewayService.UpdateAgentAvailability:input_type -> gateway.UpdateAgentAvailabilityRequest 128, // 168: gateway.GatewayService.StreamAgent:input_type -> gateway.StreamAgentRequest 134, // 169: gateway.GatewayService.StreamAgentTelemetry:input_type -> gateway.AgentTelemetryRequest 139, // 170: gateway.GatewayService.ListMachines:input_type -> gateway.ListMachinesRequest 141, // 171: gateway.GatewayService.CreateMachine:input_type -> gateway.CreateMachineRequest 143, // 172: gateway.GatewayService.DeleteMachine:input_type -> gateway.DeleteMachineRequest 146, // 173: gateway.GatewayService.ListTokens:input_type -> gateway.ListTokensRequest 148, // 174: gateway.GatewayService.CreateToken:input_type -> gateway.CreateTokenRequest 150, // 175: gateway.GatewayService.ToggleToken:input_type -> gateway.ToggleTokenRequest 152, // 176: gateway.GatewayService.DeleteToken:input_type -> gateway.DeleteTokenRequest 156, // 177: gateway.GatewayService.ListWorkers:input_type -> gateway.ListWorkersRequest 158, // 178: gateway.GatewayService.CordonWorker:input_type -> gateway.CordonWorkerRequest 160, // 179: gateway.GatewayService.UncordonWorker:input_type -> gateway.UncordonWorkerRequest 162, // 180: gateway.GatewayService.DrainWorker:input_type -> gateway.DrainWorkerRequest 164, // 181: gateway.GatewayService.ExportWorkspaceConfig:input_type -> gateway.ExportWorkspaceConfigRequest 2, // 182: gateway.GatewayService.Authorize:output_type -> gateway.AuthorizeResponse 4, // 183: gateway.GatewayService.SignPayload:output_type -> gateway.SignPayloadResponse 7, // 184: gateway.GatewayService.HeadObject:output_type -> gateway.HeadObjectResponse 10, // 185: gateway.GatewayService.CreateObject:output_type -> gateway.CreateObjectResponse 15, // 186: gateway.GatewayService.PutObjectStream:output_type -> gateway.PutObjectResponse 13, // 187: gateway.GatewayService.CompleteObjectUpload:output_type -> gateway.CompleteObjectUploadResponse 17, // 188: gateway.GatewayService.CreateObjectDelta:output_type -> gateway.CreateObjectDeltaResponse 19, // 189: gateway.GatewayService.CommitObjectDelta:output_type -> gateway.CommitObjectDeltaResponse 27, // 190: gateway.GatewayService.CheckpointContainer:output_type -> gateway.CheckpointContainerResponse 23, // 191: gateway.GatewayService.ListContainers:output_type -> gateway.ListContainersResponse 25, // 192: gateway.GatewayService.StopContainer:output_type -> gateway.StopContainerResponse 30, // 193: gateway.GatewayService.AttachToContainer:output_type -> gateway.AttachToContainerResponse 32, // 194: gateway.GatewayService.StartTask:output_type -> gateway.StartTaskResponse 34, // 195: gateway.GatewayService.EndTask:output_type -> gateway.EndTaskResponse 40, // 196: gateway.GatewayService.StopTasks:output_type -> gateway.StopTasksResponse 38, // 197: gateway.GatewayService.ListTasks:output_type -> gateway.ListTasksResponse 184, // 198: gateway.GatewayService.GetCPUTierCatalog:output_type -> gateway.GetCPUTierCatalogResponse 52, // 199: gateway.GatewayService.GetOrCreateStub:output_type -> gateway.GetOrCreateStubResponse 54, // 200: gateway.GatewayService.DeployStub:output_type -> gateway.DeployStubResponse 155, // 201: gateway.GatewayService.GetURL:output_type -> gateway.GetURLResponse 57, // 202: gateway.GatewayService.ListDeployments:output_type -> gateway.ListDeploymentsResponse 59, // 203: gateway.GatewayService.StopDeployment:output_type -> gateway.StopDeploymentResponse 61, // 204: gateway.GatewayService.StartDeployment:output_type -> gateway.StartDeploymentResponse 63, // 205: gateway.GatewayService.ScaleDeployment:output_type -> gateway.ScaleDeploymentResponse 65, // 206: gateway.GatewayService.DeleteDeployment:output_type -> gateway.DeleteDeploymentResponse 68, // 207: gateway.GatewayService.ListPools:output_type -> gateway.ListPoolsResponse 74, // 208: gateway.GatewayService.ListPoolOffers:output_type -> gateway.ListPoolOffersResponse 76, // 209: gateway.GatewayService.LaunchPoolCapacity:output_type -> gateway.LaunchPoolCapacityResponse 78, // 210: gateway.GatewayService.ListPrivatePools:output_type -> gateway.ListPrivatePoolsResponse 80, // 211: gateway.GatewayService.CreateBYOCPool:output_type -> gateway.CreateBYOCPoolResponse 83, // 212: gateway.GatewayService.GetBYOCPool:output_type -> gateway.GetBYOCPoolResponse 85, // 213: gateway.GatewayService.ScaleBYOCPool:output_type -> gateway.ScaleBYOCPoolResponse 87, // 214: gateway.GatewayService.GetProviderJoinCommand:output_type -> gateway.GetProviderJoinCommandResponse 89, // 215: gateway.GatewayService.ListProviderMachines:output_type -> gateway.ListProviderMachinesResponse 92, // 216: gateway.GatewayService.GetEndpointUsage:output_type -> gateway.GetEndpointUsageResponse 95, // 217: gateway.GatewayService.ListMachineContainers:output_type -> gateway.ListMachineContainersResponse 97, // 218: gateway.GatewayService.CreatePool:output_type -> gateway.CreatePoolResponse 99, // 219: gateway.GatewayService.DeletePool:output_type -> gateway.DeletePoolResponse 101, // 220: gateway.GatewayService.ExtendPoolCapacity:output_type -> gateway.ExtendPoolCapacityResponse 103, // 221: gateway.GatewayService.CreatePoolJoinToken:output_type -> gateway.CreatePoolJoinTokenResponse 105, // 222: gateway.GatewayService.RevokePoolJoinToken:output_type -> gateway.RevokePoolJoinTokenResponse 107, // 223: gateway.GatewayService.GetPoolJoinCommand:output_type -> gateway.GetPoolJoinCommandResponse 109, // 224: gateway.GatewayService.ListPoolMachines:output_type -> gateway.ListPoolMachinesResponse 169, // 225: gateway.GatewayService.DownloadMachineSSHKey:output_type -> gateway.DownloadMachineSSHKeyResponse 171, // 226: gateway.GatewayService.RotateMachineSSHKey:output_type -> gateway.RotateMachineSSHKeyResponse 173, // 227: gateway.GatewayService.ActivateMachineSSHKey:output_type -> gateway.ActivateMachineSSHKeyResponse 114, // 228: gateway.GatewayService.JoinAgent:output_type -> gateway.JoinAgentResponse 118, // 229: gateway.GatewayService.RequestAgentTransportCredential:output_type -> gateway.RequestAgentTransportCredentialResponse 182, // 230: gateway.GatewayService.GetAgentPoolVirtualization:output_type -> gateway.GetAgentPoolVirtualizationResponse 120, // 231: gateway.GatewayService.CreateNodeEnrollment:output_type -> gateway.CreateNodeEnrollmentResponse 122, // 232: gateway.GatewayService.DeleteNodeEnrollment:output_type -> gateway.DeleteNodeEnrollmentResponse 124, // 233: gateway.GatewayService.ListAgentRoutes:output_type -> gateway.ListAgentRoutesResponse 126, // 234: gateway.GatewayService.UpdateAgentRouteStatus:output_type -> gateway.UpdateAgentRouteStatusResponse 176, // 235: gateway.GatewayService.UpdateAgentSSHStatus:output_type -> gateway.UpdateAgentSSHStatusResponse 167, // 236: gateway.GatewayService.UpdateAgentAvailability:output_type -> gateway.UpdateAgentAvailabilityResponse 129, // 237: gateway.GatewayService.StreamAgent:output_type -> gateway.StreamAgentResponse 135, // 238: gateway.GatewayService.StreamAgentTelemetry:output_type -> gateway.AgentTelemetryResponse 140, // 239: gateway.GatewayService.ListMachines:output_type -> gateway.ListMachinesResponse 142, // 240: gateway.GatewayService.CreateMachine:output_type -> gateway.CreateMachineResponse 144, // 241: gateway.GatewayService.DeleteMachine:output_type -> gateway.DeleteMachineResponse 147, // 242: gateway.GatewayService.ListTokens:output_type -> gateway.ListTokensResponse 149, // 243: gateway.GatewayService.CreateToken:output_type -> gateway.CreateTokenResponse 151, // 244: gateway.GatewayService.ToggleToken:output_type -> gateway.ToggleTokenResponse 153, // 245: gateway.GatewayService.DeleteToken:output_type -> gateway.DeleteTokenResponse 157, // 246: gateway.GatewayService.ListWorkers:output_type -> gateway.ListWorkersResponse 159, // 247: gateway.GatewayService.CordonWorker:output_type -> gateway.CordonWorkerResponse 161, // 248: gateway.GatewayService.UncordonWorker:output_type -> gateway.UncordonWorkerResponse 163, // 249: gateway.GatewayService.DrainWorker:output_type -> gateway.DrainWorkerResponse 165, // 250: gateway.GatewayService.ExportWorkspaceConfig:output_type -> gateway.ExportWorkspaceConfigResponse 182, // [182:251] is the sub-list for method output_type 113, // [113:182] is the sub-list for method input_type 113, // [113:113] is the sub-list for extension type_name 113, // [113:113] is the sub-list for extension extendee 0, // [0:113] is the sub-list for field type_name } func init() { file_gateway_proto_init() } func file_gateway_proto_init() { if File_gateway_proto != nil { return } file_types_proto_init() if !protoimpl.UnsafeEnabled { file_gateway_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuthorizeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AuthorizeResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignPayloadRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SignPayloadResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObjectMetadata); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HeadObjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HeadObjectResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateObjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObjectUploadPart); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateObjectResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObjectUploadedPart); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompleteObjectUploadRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompleteObjectUploadResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PutObjectRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PutObjectResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateObjectDeltaRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateObjectDeltaResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommitObjectDeltaRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommitObjectDeltaResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncContainerWorkspaceRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SyncContainerWorkspaceResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListContainersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListContainersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopContainerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopContainerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckpointContainerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckpointContainerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ContainerStreamMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AttachToContainerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AttachToContainerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartTaskResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EndTaskRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EndTaskResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StringList); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTasksRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Task); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTasksResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopTasksRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopTasksResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Volume); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SecretVar); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Autoscaler); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DatabaseServingConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServingConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DurableDisk); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PersistentRoot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TaskPolicy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Schema); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SchemaField); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrCreateStubRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrCreateStubResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeployStubRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeployStubResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Deployment); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDeploymentsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDeploymentsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopDeploymentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopDeploymentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartDeploymentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartDeploymentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScaleDeploymentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScaleDeploymentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteDeploymentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteDeploymentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Pool); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPoolsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPoolsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PoolConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PoolOffer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProviderInstance); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrivatePool); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPoolOffersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPoolOffersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LaunchPoolCapacityRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LaunchPoolCapacityResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPrivatePoolsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPrivatePoolsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateBYOCPoolRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateBYOCPoolResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BYOCPoolState); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBYOCPoolRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBYOCPoolResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScaleBYOCPoolRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ScaleBYOCPoolResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProviderJoinCommandRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProviderJoinCommandResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProviderMachinesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProviderMachinesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEndpointUsageRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EndpointUsage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEndpointUsageResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMachineContainersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MachineContainer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMachineContainersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePoolRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePoolResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeletePoolRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeletePoolResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtendPoolCapacityRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtendPoolCapacityResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePoolJoinTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreatePoolJoinTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokePoolJoinTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RevokePoolJoinTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPoolJoinCommandRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPoolJoinCommandResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPoolMachinesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPoolMachinesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentBootstrapConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentTelemetryConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentTelemetrySinkConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JoinAgentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JoinAgentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentPreflightCheck); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentRoute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestAgentTransportCredentialRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestAgentTransportCredentialResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateNodeEnrollmentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateNodeEnrollmentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteNodeEnrollmentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteNodeEnrollmentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAgentRoutesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAgentRoutesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAgentRouteStatusRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAgentRouteStatusResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentWorkerSlot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamAgentRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamAgentResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentLogRecord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentMetricSnapshot); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentEventRecord); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentNetworkInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentTelemetryRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentTelemetryResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Machine); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MachineMetrics); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MachinePathMetrics); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMachinesRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMachinesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateMachineRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateMachineResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteMachineRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteMachineResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Token); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTokensRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTokensResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ToggleTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ToggleTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTokenRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteTokenResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetURLRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetURLResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkersRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWorkersResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CordonWorkerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CordonWorkerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UncordonWorkerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UncordonWorkerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DrainWorkerRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DrainWorkerResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExportWorkspaceConfigRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExportWorkspaceConfigResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAgentAvailabilityRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAgentAvailabilityResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadMachineSSHKeyRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DownloadMachineSSHKeyResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RotateMachineSSHKeyRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RotateMachineSSHKeyResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivateMachineSSHKeyRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ActivateMachineSSHKeyResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentSSHConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAgentSSHStatusRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAgentSSHStatusResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MachineSSHAccess); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentPoolCacheDiskConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentPoolCacheConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AgentPoolRuntimeConfig); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAgentPoolVirtualizationRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAgentPoolVirtualizationResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCPUTierCatalogRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_gateway_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCPUTierCatalogResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_gateway_proto_msgTypes[27].OneofWrappers = []interface{}{ (*ContainerStreamMessage_AttachRequest)(nil), (*ContainerStreamMessage_SyncContainerWorkspace)(nil), } file_gateway_proto_msgTypes[40].OneofWrappers = []interface{}{} file_gateway_proto_msgTypes[144].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gateway_proto_rawDesc, NumEnums: 1, NumMessages: 197, NumExtensions: 0, NumServices: 1, }, GoTypes: file_gateway_proto_goTypes, DependencyIndexes: file_gateway_proto_depIdxs, EnumInfos: file_gateway_proto_enumTypes, MessageInfos: file_gateway_proto_msgTypes, }.Build() File_gateway_proto = out.File file_gateway_proto_rawDesc = nil file_gateway_proto_goTypes = nil file_gateway_proto_depIdxs = nil }