// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.0
// 	protoc        v3.19.3
// source: jsm.proto

package coolbeans_api_v1

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	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 ReservationStatus int32

const (
	// Unknown ~~> UnknownRS (yuck!!)
	// Note that enum values use C++ scoping rules, meaning
	// that enum values are siblings of their type, not children of it.
	// Therefore, "Unknown" must be unique within "coolbeans.api.v1",
	// not just within "ResultCode"
	ReservationStatus_UnknownRS    ReservationStatus = 0
	ReservationStatus_Queued       ReservationStatus = 1
	ReservationStatus_DeadlineSoon ReservationStatus = 2
	ReservationStatus_Matched      ReservationStatus = 3
	ReservationStatus_Timeout      ReservationStatus = 4
	ReservationStatus_Error        ReservationStatus = 5
)

// Enum value maps for ReservationStatus.
var (
	ReservationStatus_name = map[int32]string{
		0: "UnknownRS",
		1: "Queued",
		2: "DeadlineSoon",
		3: "Matched",
		4: "Timeout",
		5: "Error",
	}
	ReservationStatus_value = map[string]int32{
		"UnknownRS":    0,
		"Queued":       1,
		"DeadlineSoon": 2,
		"Matched":      3,
		"Timeout":      4,
		"Error":        5,
	}
)

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

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

func (ReservationStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_jsm_proto_enumTypes[0].Descriptor()
}

func (ReservationStatus) Type() protoreflect.EnumType {
	return &file_jsm_proto_enumTypes[0]
}

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

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

type OpType int32

const (
	OpType_UNKNOWN            OpType = 0
	OpType_PUT                OpType = 1
	OpType_RESERVE            OpType = 2
	OpType_TICK               OpType = 3
	OpType_DELETE             OpType = 4
	OpType_RELEASE            OpType = 5
	OpType_CHECK_CLIENT_STATE OpType = 6
	OpType_BURY               OpType = 7
	OpType_KICK               OpType = 8
	OpType_KICKN              OpType = 9
	OpType_TOUCH              OpType = 10
	OpType_GET_JOB            OpType = 11
	OpType_PEEK_READY         OpType = 12
	OpType_PEEK_BURIED        OpType = 13
	OpType_PEEK_DELAYED       OpType = 14
	OpType_STATS_JOB_YAML     OpType = 15
	OpType_STATS_TUBE_YAML    OpType = 16
	OpType_STATS_YAML         OpType = 17
	OpType_LIST_TUBES         OpType = 18
)

// Enum value maps for OpType.
var (
	OpType_name = map[int32]string{
		0:  "UNKNOWN",
		1:  "PUT",
		2:  "RESERVE",
		3:  "TICK",
		4:  "DELETE",
		5:  "RELEASE",
		6:  "CHECK_CLIENT_STATE",
		7:  "BURY",
		8:  "KICK",
		9:  "KICKN",
		10: "TOUCH",
		11: "GET_JOB",
		12: "PEEK_READY",
		13: "PEEK_BURIED",
		14: "PEEK_DELAYED",
		15: "STATS_JOB_YAML",
		16: "STATS_TUBE_YAML",
		17: "STATS_YAML",
		18: "LIST_TUBES",
	}
	OpType_value = map[string]int32{
		"UNKNOWN":            0,
		"PUT":                1,
		"RESERVE":            2,
		"TICK":               3,
		"DELETE":             4,
		"RELEASE":            5,
		"CHECK_CLIENT_STATE": 6,
		"BURY":               7,
		"KICK":               8,
		"KICKN":              9,
		"TOUCH":              10,
		"GET_JOB":            11,
		"PEEK_READY":         12,
		"PEEK_BURIED":        13,
		"PEEK_DELAYED":       14,
		"STATS_JOB_YAML":     15,
		"STATS_TUBE_YAML":    16,
		"STATS_YAML":         17,
		"LIST_TUBES":         18,
	}
)

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

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

func (OpType) Descriptor() protoreflect.EnumDescriptor {
	return file_jsm_proto_enumTypes[1].Descriptor()
}

func (OpType) Type() protoreflect.EnumType {
	return &file_jsm_proto_enumTypes[1]
}

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

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

// C & P from GRPC error codes
// https://github.com/grpc/grpc-go/blob/master/codes/codes.go
type ResultCode int32

const (
	// OK is returned on success.
	ResultCode_OK ResultCode = 0
	// Canceled indicates the operation was canceled (typically by the caller).
	ResultCode_Canceled ResultCode = 1
	// Unknown error. An example of where this error may be returned is
	// if a Status value received from another address space belongs to
	// an error-space that is not known in this address space. Also
	// errors raised by APIs that do not return enough error information
	// may be converted to this error.
	ResultCode_Unknown ResultCode = 2
	// InvalidArgument indicates client specified an invalid argument.
	// Note that this differs from FailedPrecondition. It indicates arguments
	// that are problematic regardless of the state of the system
	// (e.g., a malformed file name).
	ResultCode_InvalidArgument ResultCode = 3
	// DeadlineExceeded means operation expired before completion.
	// For operations that change the state of the system, this error may be
	// returned even if the operation has completed successfully. For
	// example, a successful response from a server could have been delayed
	// long enough for the deadline to expire.
	ResultCode_DeadlineExceeded ResultCode = 4
	// NotFound means some requested entity (e.g., file or directory) was
	// not found.
	ResultCode_NotFound ResultCode = 5
	// AlreadyExists means an attempt to create an entity failed because one
	// already exists.
	ResultCode_AlreadyExists ResultCode = 6
	// PermissionDenied indicates the caller does not have permission to
	// execute the specified operation. It must not be used for rejections
	// caused by exhausting some resource (use ResourceExhausted
	// instead for those errors). It must not be
	// used if the caller cannot be identified (use Unauthenticated
	// instead for those errors).
	ResultCode_PermissionDenied ResultCode = 7
	// ResourceExhausted indicates some resource has been exhausted, perhaps
	// a per-user quota, or perhaps the entire file system is out of space.
	ResultCode_ResourceExhausted ResultCode = 8
	// FailedPrecondition indicates operation was rejected because the
	// system is not in a state required for the operation's execution.
	// For example, directory to be deleted may be non-empty, an rmdir
	// operation is applied to a non-directory, etc.
	//
	// A litmus test that may help a service implementor in deciding
	// between FailedPrecondition, Aborted, and Unavailable:
	//  (a) Use Unavailable if the client can retry just the failing call.
	//  (b) Use Aborted if the client should retry at a higher-level
	//      (e.g., restarting a read-modify-write sequence).
	//  (c) Use FailedPrecondition if the client should not retry until
	//      the system state has been explicitly fixed. E.g., if an "rmdir"
	//      fails because the directory is non-empty, FailedPrecondition
	//      should be returned since the client should not retry unless
	//      they have first fixed up the directory by deleting files from it.
	//  (d) Use FailedPrecondition if the client performs conditional
	//      REST Get/Update/Delete on a resource and the resource on the
	//      server does not match the condition. E.g., conflicting
	//      read-modify-write on the same resource.
	ResultCode_FailedPrecondition ResultCode = 9
	// Aborted indicates the operation was aborted, typically due to a
	// concurrency issue like sequencer check failures, transaction aborts,
	// etc.
	//
	// See litmus test above for deciding between FailedPrecondition,
	// Aborted, and Unavailable.
	ResultCode_Aborted ResultCode = 10
	// OutOfRange means operation was attempted past the valid range.
	// E.g., seeking or reading past end of file.
	//
	// Unlike InvalidArgument, this error indicates a problem that may
	// be fixed if the system state changes. For example, a 32-bit file
	// system will generate InvalidArgument if asked to read at an
	// offset that is not in the range [0,2^32-1], but it will generate
	// OutOfRange if asked to read from an offset past the current
	// file size.
	//
	// There is a fair bit of overlap between FailedPrecondition and
	// OutOfRange. We recommend using OutOfRange (the more specific
	// error) when it applies so that callers who are iterating through
	// a space can easily look for an OutOfRange error to detect when
	// they are done.
	ResultCode_OutOfRange ResultCode = 11
	// Unimplemented indicates operation is not implemented or not
	// supported/enabled in this service.
	ResultCode_Unimplemented ResultCode = 12
	// Internal errors. Means some invariants expected by underlying
	// system has been broken. If you see one of these errors,
	// something is very broken.
	ResultCode_Internal ResultCode = 13
	// Unavailable indicates the service is currently unavailable.
	// This is a most likely a transient condition and may be corrected
	// by retrying with a backoff. Note that it is not always safe to retry
	// non-idempotent operations.
	//
	// See litmus test above for deciding between FailedPrecondition,
	// Aborted, and Unavailable.
	ResultCode_Unavailable ResultCode = 14
	// DataLoss indicates unrecoverable data loss or corruption.
	ResultCode_DataLoss ResultCode = 15
	// Unauthenticated indicates the request does not have valid
	// authentication credentials for the operation.
	ResultCode_Unauthenticated ResultCode = 16
)

// Enum value maps for ResultCode.
var (
	ResultCode_name = map[int32]string{
		0:  "OK",
		1:  "Canceled",
		2:  "Unknown",
		3:  "InvalidArgument",
		4:  "DeadlineExceeded",
		5:  "NotFound",
		6:  "AlreadyExists",
		7:  "PermissionDenied",
		8:  "ResourceExhausted",
		9:  "FailedPrecondition",
		10: "Aborted",
		11: "OutOfRange",
		12: "Unimplemented",
		13: "Internal",
		14: "Unavailable",
		15: "DataLoss",
		16: "Unauthenticated",
	}
	ResultCode_value = map[string]int32{
		"OK":                 0,
		"Canceled":           1,
		"Unknown":            2,
		"InvalidArgument":    3,
		"DeadlineExceeded":   4,
		"NotFound":           5,
		"AlreadyExists":      6,
		"PermissionDenied":   7,
		"ResourceExhausted":  8,
		"FailedPrecondition": 9,
		"Aborted":            10,
		"OutOfRange":         11,
		"Unimplemented":      12,
		"Internal":           13,
		"Unavailable":        14,
		"DataLoss":           15,
		"Unauthenticated":    16,
	}
)

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

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

func (ResultCode) Descriptor() protoreflect.EnumDescriptor {
	return file_jsm_proto_enumTypes[2].Descriptor()
}

func (ResultCode) Type() protoreflect.EnumType {
	return &file_jsm_proto_enumTypes[2]
}

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

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

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

	// Refer Job.priority
	Priority uint32 `protobuf:"varint,1,opt,name=priority,proto3" json:"priority,omitempty"`
	// Refer Job.delay
	Delay int64 `protobuf:"varint,2,opt,name=delay,proto3" json:"delay,omitempty"`
	// Refer Job.ttr
	Ttr int32 `protobuf:"varint,3,opt,name=ttr,proto3" json:"ttr,omitempty"`
	// Refer Job.tube_na,e
	TubeName string `protobuf:"bytes,4,opt,name=tube_name,json=tubeName,proto3" json:"tube_name,omitempty"`
	// Refer Job.body_size
	BodySize int32 `protobuf:"varint,5,opt,name=body_size,json=bodySize,proto3" json:"body_size,omitempty"`
	// Refer Job.body
	Body []byte `protobuf:"bytes,6,opt,name=body,proto3" json:"body,omitempty"`
}

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

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

func (*PutRequest) ProtoMessage() {}

func (x *PutRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 PutRequest.ProtoReflect.Descriptor instead.
func (*PutRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{0}
}

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

func (x *PutRequest) GetDelay() int64 {
	if x != nil {
		return x.Delay
	}
	return 0
}

func (x *PutRequest) GetTtr() int32 {
	if x != nil {
		return x.Ttr
	}
	return 0
}

func (x *PutRequest) GetTubeName() string {
	if x != nil {
		return x.TubeName
	}
	return ""
}

func (x *PutRequest) GetBodySize() int32 {
	if x != nil {
		return x.BodySize
	}
	return 0
}

func (x *PutRequest) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

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

	// The job identifier of the new job created
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
}

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

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

func (*PutResponse) ProtoMessage() {}

func (x *PutResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 PutResponse.ProtoReflect.Descriptor instead.
func (*PutResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{1}
}

func (x *PutResponse) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

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

	// The job identifier of the job to be deleted
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// the proxy identifier forwarding the client's request
	ProxyId string `protobuf:"bytes,2,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
	// the client identifier of the client (deleting this job)
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
}

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

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

func (*DeleteRequest) ProtoMessage() {}

func (x *DeleteRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 DeleteRequest.ProtoReflect.Descriptor instead.
func (*DeleteRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{2}
}

func (x *DeleteRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

func (x *DeleteRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

func (x *DeleteRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

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

	// client id of the reservation
	ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// request id identify this reservation
	RequestId string `protobuf:"bytes,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// reservation timeout in seconds
	TimeoutSecs int32 `protobuf:"varint,3,opt,name=timeout_secs,json=timeoutSecs,proto3" json:"timeout_secs,omitempty"`
	// array of tubes to watch
	WatchedTubes []string `protobuf:"bytes,4,rep,name=watched_tubes,json=watchedTubes,proto3" json:"watched_tubes,omitempty"`
	// the proxy identifier forwarding the client's request
	ProxyId string `protobuf:"bytes,5,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
}

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

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

func (*ReserveRequest) ProtoMessage() {}

func (x *ReserveRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ReserveRequest.ProtoReflect.Descriptor instead.
func (*ReserveRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{3}
}

func (x *ReserveRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *ReserveRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *ReserveRequest) GetTimeoutSecs() int32 {
	if x != nil {
		return x.TimeoutSecs
	}
	return 0
}

func (x *ReserveRequest) GetWatchedTubes() []string {
	if x != nil {
		return x.WatchedTubes
	}
	return nil
}

func (x *ReserveRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

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

	// Reservation object encapsulated in this response
	Reservation *Reservation `protobuf:"bytes,1,opt,name=reservation,proto3" json:"reservation,omitempty"`
}

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

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

func (*ReserveResponse) ProtoMessage() {}

func (x *ReserveResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ReserveResponse.ProtoReflect.Descriptor instead.
func (*ReserveResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{4}
}

func (x *ReserveResponse) GetReservation() *Reservation {
	if x != nil {
		return x.Reservation
	}
	return nil
}

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

	// the proxy identifier requesting reservation update
	ProxyId string `protobuf:"bytes,1,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
}

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

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

func (*ReserveUpdateRequest) ProtoMessage() {}

func (x *ReserveUpdateRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ReserveUpdateRequest.ProtoReflect.Descriptor instead.
func (*ReserveUpdateRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{5}
}

func (x *ReserveUpdateRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

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

	// Reservations  encapsulated in this response
	Reservation *Reservation `protobuf:"bytes,1,opt,name=reservation,proto3" json:"reservation,omitempty"`
}

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

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

func (*ReserveUpdateResponse) ProtoMessage() {}

func (x *ReserveUpdateResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ReserveUpdateResponse.ProtoReflect.Descriptor instead.
func (*ReserveUpdateResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{6}
}

func (x *ReserveUpdateResponse) GetReservation() *Reservation {
	if x != nil {
		return x.Reservation
	}
	return nil
}

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

	// Reservations grouped by proxy id
	ProxyReservations map[string]*Reservations `protobuf:"bytes,3,rep,name=proxy_reservations,json=proxyReservations,proto3" json:"proxy_reservations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*TickResponse) ProtoMessage() {}

func (x *TickResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 TickResponse.ProtoReflect.Descriptor instead.
func (*TickResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{7}
}

func (x *TickResponse) GetProxyReservations() map[string]*Reservations {
	if x != nil {
		return x.ProxyReservations
	}
	return nil
}

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

	// Reservation object encapsulated in this response
	Entries []*Reservation `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
}

func (x *Reservations) Reset() {
	*x = Reservations{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Reservations) ProtoMessage() {}

func (x *Reservations) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 Reservations.ProtoReflect.Descriptor instead.
func (*Reservations) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{8}
}

func (x *Reservations) GetEntries() []*Reservation {
	if x != nil {
		return x.Entries
	}
	return nil
}

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

	// request_id associated with this reservation
	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// client id assinged to this reservation
	ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Result of this reservation
	Status ReservationStatus `protobuf:"varint,3,opt,name=Status,proto3,enum=coolbeans.api.v1.ReservationStatus" json:"Status,omitempty"`
	// job id (assigned) if Status is matched
	JobId int64 `protobuf:"varint,4,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// job body size (assigned) if Status is matched
	BodySize int32 `protobuf:"varint,5,opt,name=body_size,json=bodySize,proto3" json:"body_size,omitempty"`
	// job body  (assigned) if Status is matched
	Body []byte `protobuf:"bytes,6,opt,name=body,proto3" json:"body,omitempty"`
	// error message (assigned) if Status is error
	ErrorMsg string `protobuf:"bytes,7,opt,name=error_msg,json=errorMsg,proto3" json:"error_msg,omitempty"`
	// proxy_id is the id of the proxy server that
	// forwarded this reservation request
	ProxyId string `protobuf:"bytes,8,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
}

func (x *Reservation) Reset() {
	*x = Reservation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Reservation) ProtoMessage() {}

func (x *Reservation) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 Reservation.ProtoReflect.Descriptor instead.
func (*Reservation) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{9}
}

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

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

func (x *Reservation) GetStatus() ReservationStatus {
	if x != nil {
		return x.Status
	}
	return ReservationStatus_UnknownRS
}

func (x *Reservation) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

func (x *Reservation) GetBodySize() int32 {
	if x != nil {
		return x.BodySize
	}
	return 0
}

func (x *Reservation) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

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

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

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

	// The job identifier of the job to be released
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// The identifier of the client asking for the release
	ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// proxy_id is the id of the proxy server that
	// forwarded this  request
	ProxyId string `protobuf:"bytes,3,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
	// A delay if set to a value > 0 marks the job as delayed
	Delay int64 `protobuf:"varint,4,opt,name=delay,proto3" json:"delay,omitempty"`
	// the new priority with which this job is released
	Priority uint32 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"`
}

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

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

func (*ReleaseRequest) ProtoMessage() {}

func (x *ReleaseRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ReleaseRequest.ProtoReflect.Descriptor instead.
func (*ReleaseRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{10}
}

func (x *ReleaseRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

func (x *ReleaseRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *ReleaseRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

func (x *ReleaseRequest) GetDelay() int64 {
	if x != nil {
		return x.Delay
	}
	return 0
}

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

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

	// proxy_id is the id of the proxy server that
	// forwarded this  request
	ProxyId string `protobuf:"bytes,1,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
	// Array of all client_ids
	ClientIds []string `protobuf:"bytes,2,rep,name=client_ids,json=clientIds,proto3" json:"client_ids,omitempty"`
}

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

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

func (*CheckClientStateRequest) ProtoMessage() {}

func (x *CheckClientStateRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 CheckClientStateRequest.ProtoReflect.Descriptor instead.
func (*CheckClientStateRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{11}
}

func (x *CheckClientStateRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

func (x *CheckClientStateRequest) GetClientIds() []string {
	if x != nil {
		return x.ClientIds
	}
	return nil
}

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

	// proxy_id is the id of the proxy server that
	// forwarded this  request
	ProxyId string `protobuf:"bytes,1,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
	// Array of all client_ids waiting for reservations
	WaitingClientIds []string `protobuf:"bytes,2,rep,name=waiting_client_ids,json=waitingClientIds,proto3" json:"waiting_client_ids,omitempty"`
	// Array of all client_ids not waiting for reservations
	NotWaitingClientIds []string `protobuf:"bytes,3,rep,name=not_waiting_client_ids,json=notWaitingClientIds,proto3" json:"not_waiting_client_ids,omitempty"`
	// Array of all client_ids unknown or missing on the server
	MissingClientIds []string `protobuf:"bytes,4,rep,name=missing_client_ids,json=missingClientIds,proto3" json:"missing_client_ids,omitempty"`
}

func (x *CheckClientStateResponse) Reset() {
	*x = CheckClientStateResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CheckClientStateResponse) ProtoMessage() {}

func (x *CheckClientStateResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 CheckClientStateResponse.ProtoReflect.Descriptor instead.
func (*CheckClientStateResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{12}
}

func (x *CheckClientStateResponse) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

func (x *CheckClientStateResponse) GetWaitingClientIds() []string {
	if x != nil {
		return x.WaitingClientIds
	}
	return nil
}

func (x *CheckClientStateResponse) GetNotWaitingClientIds() []string {
	if x != nil {
		return x.NotWaitingClientIds
	}
	return nil
}

func (x *CheckClientStateResponse) GetMissingClientIds() []string {
	if x != nil {
		return x.MissingClientIds
	}
	return nil
}

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

	// The job identifier of the job to be touched
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// The identifier of the client asking for the release
	ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// proxy_id is the id of the proxy server that
	// forwarded this  request
	ProxyId string `protobuf:"bytes,3,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
}

func (x *TouchRequest) Reset() {
	*x = TouchRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TouchRequest) ProtoMessage() {}

func (x *TouchRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 TouchRequest.ProtoReflect.Descriptor instead.
func (*TouchRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{13}
}

func (x *TouchRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

func (x *TouchRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *TouchRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

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

	// The job identifier of the job to be buried
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// Refer Job.priority, the new priority for the job
	Priority uint32 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
	// Client id of the request
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// proxy_id is the id of the proxy server that forwarded this  request
	ProxyId string `protobuf:"bytes,4,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
}

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

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

func (*BuryRequest) ProtoMessage() {}

func (x *BuryRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 BuryRequest.ProtoReflect.Descriptor instead.
func (*BuryRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{14}
}

func (x *BuryRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

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

func (x *BuryRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *BuryRequest) GetProxyId() string {
	if x != nil {
		return x.ProxyId
	}
	return ""
}

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

	// The job identifier of the job to be Kicked
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
}

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

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

func (*KickRequest) ProtoMessage() {}

func (x *KickRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 KickRequest.ProtoReflect.Descriptor instead.
func (*KickRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{15}
}

func (x *KickRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

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

	// Refer Job.tube_name
	TubeName string `protobuf:"bytes,1,opt,name=tube_name,json=tubeName,proto3" json:"tube_name,omitempty"`
	// bound is the maximum number of jobs to kick
	Bound int32 `protobuf:"varint,2,opt,name=bound,proto3" json:"bound,omitempty"`
}

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

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

func (*KickNRequest) ProtoMessage() {}

func (x *KickNRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 KickNRequest.ProtoReflect.Descriptor instead.
func (*KickNRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{16}
}

func (x *KickNRequest) GetTubeName() string {
	if x != nil {
		return x.TubeName
	}
	return ""
}

func (x *KickNRequest) GetBound() int32 {
	if x != nil {
		return x.Bound
	}
	return 0
}

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

	// The actual number of jobs kicked
	JobsKicked int32 `protobuf:"varint,1,opt,name=jobs_kicked,json=jobsKicked,proto3" json:"jobs_kicked,omitempty"`
}

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

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

func (*KickNResponse) ProtoMessage() {}

func (x *KickNResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 KickNResponse.ProtoReflect.Descriptor instead.
func (*KickNResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{17}
}

func (x *KickNResponse) GetJobsKicked() int32 {
	if x != nil {
		return x.JobsKicked
	}
	return 0
}

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

	// Id of the job to get
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
}

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

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

func (*GetJobRequest) ProtoMessage() {}

func (x *GetJobRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetJobRequest.ProtoReflect.Descriptor instead.
func (*GetJobRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{18}
}

func (x *GetJobRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

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

	// An optional job if set.
	Job *JobProto `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
}

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

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

func (*GetJobResponse) ProtoMessage() {}

func (x *GetJobResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetJobResponse.ProtoReflect.Descriptor instead.
func (*GetJobResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{19}
}

func (x *GetJobResponse) GetJob() *JobProto {
	if x != nil {
		return x.Job
	}
	return nil
}

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

	// the name of the tube
	TubeName string `protobuf:"bytes,1,opt,name=tube_name,json=tubeName,proto3" json:"tube_name,omitempty"`
}

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

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

func (*PeekRequest) ProtoMessage() {}

func (x *PeekRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 PeekRequest.ProtoReflect.Descriptor instead.
func (*PeekRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{20}
}

func (x *PeekRequest) GetTubeName() string {
	if x != nil {
		return x.TubeName
	}
	return ""
}

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

	// An optional job if set.
	Job *JobProto `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
}

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

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

func (*PeekResponse) ProtoMessage() {}

func (x *PeekResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 PeekResponse.ProtoReflect.Descriptor instead.
func (*PeekResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{21}
}

func (x *PeekResponse) GetJob() *JobProto {
	if x != nil {
		return x.Job
	}
	return nil
}

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

	// Id of the job to get
	JobId int64 `protobuf:"varint,1,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
}

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

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

func (*GetStatsJobYamlRequest) ProtoMessage() {}

func (x *GetStatsJobYamlRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetStatsJobYamlRequest.ProtoReflect.Descriptor instead.
func (*GetStatsJobYamlRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{22}
}

func (x *GetStatsJobYamlRequest) GetJobId() int64 {
	if x != nil {
		return x.JobId
	}
	return 0
}

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

	// Yaml representation stats (key-value pairs)
	StatsYaml []byte `protobuf:"bytes,1,opt,name=stats_yaml,json=statsYaml,proto3" json:"stats_yaml,omitempty"`
}

func (x *GetStatsJobYamlResponse) Reset() {
	*x = GetStatsJobYamlResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetStatsJobYamlResponse) ProtoMessage() {}

func (x *GetStatsJobYamlResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetStatsJobYamlResponse.ProtoReflect.Descriptor instead.
func (*GetStatsJobYamlResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{23}
}

func (x *GetStatsJobYamlResponse) GetStatsYaml() []byte {
	if x != nil {
		return x.StatsYaml
	}
	return nil
}

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

	// name of the tube
	TubeName string `protobuf:"bytes,1,opt,name=tube_name,json=tubeName,proto3" json:"tube_name,omitempty"`
}

func (x *GetStatsTubeYamlRequest) Reset() {
	*x = GetStatsTubeYamlRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetStatsTubeYamlRequest) ProtoMessage() {}

func (x *GetStatsTubeYamlRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetStatsTubeYamlRequest.ProtoReflect.Descriptor instead.
func (*GetStatsTubeYamlRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{24}
}

func (x *GetStatsTubeYamlRequest) GetTubeName() string {
	if x != nil {
		return x.TubeName
	}
	return ""
}

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

	// Yaml representation stats (key-value pairs)
	StatsYaml []byte `protobuf:"bytes,1,opt,name=stats_yaml,json=statsYaml,proto3" json:"stats_yaml,omitempty"`
}

func (x *GetStatsTubeYamlResponse) Reset() {
	*x = GetStatsTubeYamlResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetStatsTubeYamlResponse) ProtoMessage() {}

func (x *GetStatsTubeYamlResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetStatsTubeYamlResponse.ProtoReflect.Descriptor instead.
func (*GetStatsTubeYamlResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{25}
}

func (x *GetStatsTubeYamlResponse) GetStatsYaml() []byte {
	if x != nil {
		return x.StatsYaml
	}
	return nil
}

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

	// Yaml representation stats (key-value pairs)
	StatsYaml []byte `protobuf:"bytes,1,opt,name=stats_yaml,json=statsYaml,proto3" json:"stats_yaml,omitempty"`
}

func (x *GetStatsYamlResponse) Reset() {
	*x = GetStatsYamlResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetStatsYamlResponse) ProtoMessage() {}

func (x *GetStatsYamlResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 GetStatsYamlResponse.ProtoReflect.Descriptor instead.
func (*GetStatsYamlResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{26}
}

func (x *GetStatsYamlResponse) GetStatsYaml() []byte {
	if x != nil {
		return x.StatsYaml
	}
	return nil
}

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

	Tubes []string `protobuf:"bytes,1,rep,name=tubes,proto3" json:"tubes,omitempty"`
}

func (x *ListTubesResponse) Reset() {
	*x = ListTubesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ListTubesResponse) ProtoMessage() {}

func (x *ListTubesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ListTubesResponse.ProtoReflect.Descriptor instead.
func (*ListTubesResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{27}
}

func (x *ListTubesResponse) GetTubes() []string {
	if x != nil {
		return x.Tubes
	}
	return nil
}

// Encapsulates a snap of the entire system
type SnapshotProto struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Array of all jobs currently in the system
	Jobs []*JobProto `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"`
	// Arrayy of all client reservation entries in the system
	Reservations []*ClientResvEntryProto `protobuf:"bytes,2,rep,name=reservations,proto3" json:"reservations,omitempty"`
}

func (x *SnapshotProto) Reset() {
	*x = SnapshotProto{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SnapshotProto) ProtoMessage() {}

func (x *SnapshotProto) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 SnapshotProto.ProtoReflect.Descriptor instead.
func (*SnapshotProto) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{28}
}

func (x *SnapshotProto) GetJobs() []*JobProto {
	if x != nil {
		return x.Jobs
	}
	return nil
}

func (x *SnapshotProto) GetReservations() []*ClientResvEntryProto {
	if x != nil {
		return x.Reservations
	}
	return nil
}

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

	// Indicates the type of operation
	Op OpType `protobuf:"varint,1,opt,name=op,proto3,enum=coolbeans.api.v1.OpType" json:"op,omitempty"`
	// time in seconds from epoch this request is made
	NowSecs int64 `protobuf:"varint,2,opt,name=now_secs,json=nowSecs,proto3" json:"now_secs,omitempty"`
	// The operation request body
	Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
}

func (x *ApplyOpRequest) Reset() {
	*x = ApplyOpRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ApplyOpRequest) ProtoMessage() {}

func (x *ApplyOpRequest) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ApplyOpRequest.ProtoReflect.Descriptor instead.
func (*ApplyOpRequest) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{29}
}

func (x *ApplyOpRequest) GetOp() OpType {
	if x != nil {
		return x.Op
	}
	return OpType_UNKNOWN
}

func (x *ApplyOpRequest) GetNowSecs() int64 {
	if x != nil {
		return x.NowSecs
	}
	return 0
}

func (x *ApplyOpRequest) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

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

	// error code
	ErrorCode ResultCode `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=coolbeans.api.v1.ResultCode" json:"error_code,omitempty"`
	// error message (typically set if error_code > 0
	ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	// The response body
	Body []byte `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
}

func (x *ApplyOpResponse) Reset() {
	*x = ApplyOpResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_jsm_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ApplyOpResponse) ProtoMessage() {}

func (x *ApplyOpResponse) ProtoReflect() protoreflect.Message {
	mi := &file_jsm_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 ApplyOpResponse.ProtoReflect.Descriptor instead.
func (*ApplyOpResponse) Descriptor() ([]byte, []int) {
	return file_jsm_proto_rawDescGZIP(), []int{30}
}

func (x *ApplyOpResponse) GetErrorCode() ResultCode {
	if x != nil {
		return x.ErrorCode
	}
	return ResultCode_OK
}

func (x *ApplyOpResponse) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

func (x *ApplyOpResponse) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

var File_jsm_proto protoreflect.FileDescriptor

var file_jsm_proto_rawDesc = []byte{
	0x0a, 0x09, 0x6a, 0x73, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x63, 0x6f, 0x6f,
	0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x0c, 0x63,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x09, 0x6a, 0x6f, 0x62,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x01, 0x0a, 0x0a, 0x50, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64,
	0x65, 0x6c, 0x61, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x03, 0x74, 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x75, 0x62, 0x65, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x75, 0x62, 0x65, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x64, 0x79, 0x53, 0x69, 0x7a, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
	0x62, 0x6f, 0x64, 0x79, 0x22, 0x24, 0x0a, 0x0b, 0x50, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x0d, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a,
	0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62,
	0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a,
	0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x0e, 0x52,
	0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a,
	0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d,
	0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x73, 0x12, 0x23, 0x0a, 0x0d,
	0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x75, 0x62, 0x65, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x75, 0x62, 0x65,
	0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x0f,
	0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x3f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0x31, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78,
	0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78,
	0x79, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x55, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b,
	0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xda, 0x01,
	0x0a, 0x0c, 0x54, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64,
	0x0a, 0x12, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x6f, 0x6f,
	0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69,
	0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79,
	0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x64, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73,
	0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x34, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1e, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x0c, 0x52, 0x65,
	0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x07, 0x65, 0x6e,
	0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f,
	0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52,
	0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72,
	0x69, 0x65, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
	0x3b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x23, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e,
	0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15, 0x0a, 0x06,
	0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f,
	0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x73, 0x69, 0x7a, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x6f, 0x64, 0x79, 0x53, 0x69, 0x7a, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04,
	0x62, 0x6f, 0x64, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x73,
	0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73,
	0x67, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x22, 0x91, 0x01, 0x0a,
	0x0e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x12, 0x14,
	0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64,
	0x65, 0x6c, 0x61, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79,
	0x22, 0x53, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70,
	0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70,
	0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43,
	0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x12, 0x2c, 0x0a,
	0x12, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
	0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x77, 0x61, 0x69, 0x74, 0x69,
	0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x6e,
	0x6f, 0x74, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
	0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x6f, 0x74,
	0x57, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73,
	0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x69, 0x65,
	0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x69,
	0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0x5d,
	0x0a, 0x0c, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15,
	0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x22, 0x78, 0x0a,
	0x0b, 0x42, 0x75, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06,
	0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f,
	0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12,
	0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
	0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x70, 0x72, 0x6f, 0x78, 0x79, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x0b, 0x4b, 0x69, 0x63, 0x6b, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x41, 0x0a,
	0x0c, 0x4b, 0x69, 0x63, 0x6b, 0x4e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a,
	0x09, 0x74, 0x75, 0x62, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x74, 0x75, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f,
	0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x6f, 0x75, 0x6e, 0x64,
	0x22, 0x30, 0x0a, 0x0d, 0x4b, 0x69, 0x63, 0x6b, 0x4e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x6b, 0x69, 0x63, 0x6b, 0x65, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6a, 0x6f, 0x62, 0x73, 0x4b, 0x69, 0x63, 0x6b,
	0x65, 0x64, 0x22, 0x26, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x0e, 0x47, 0x65,
	0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x03,
	0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6f, 0x6c,
	0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62,
	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x2a, 0x0a, 0x0b, 0x50, 0x65,
	0x65, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x75, 0x62,
	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x75,
	0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x0c, 0x50, 0x65, 0x65, 0x6b, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52,
	0x03, 0x6a, 0x6f, 0x62, 0x22, 0x2f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73,
	0x4a, 0x6f, 0x62, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15,
	0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
	0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x4a, 0x6f, 0x62, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x22,
	0x36, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x75, 0x62, 0x65, 0x59,
	0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x75,
	0x62, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74,
	0x75, 0x62, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74,
	0x61, 0x74, 0x73, 0x54, 0x75, 0x62, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x79, 0x61, 0x6d,
	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x59, 0x61,
	0x6d, 0x6c, 0x22, 0x35, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x59, 0x61,
	0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74,
	0x61, 0x74, 0x73, 0x5f, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
	0x73, 0x74, 0x61, 0x74, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x22, 0x29, 0x0a, 0x11, 0x4c, 0x69, 0x73,
	0x74, 0x54, 0x75, 0x62, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x74, 0x75, 0x62, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74,
	0x75, 0x62, 0x65, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f,
	0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2e, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f,
	0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
	0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x76, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x22, 0x69, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x70, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x19,
	0x0a, 0x08, 0x6e, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x07, 0x6e, 0x6f, 0x77, 0x53, 0x65, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64,
	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x87, 0x01,
	0x0a, 0x0f, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e,
	0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43,
	0x6f, 0x64, 0x65, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x23,
	0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x2a, 0x65, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, 0x72,
	0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09,
	0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x52, 0x53, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x51,
	0x75, 0x65, 0x75, 0x65, 0x64, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x65, 0x61, 0x64, 0x6c,
	0x69, 0x6e, 0x65, 0x53, 0x6f, 0x6f, 0x6e, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x61, 0x74,
	0x63, 0x68, 0x65, 0x64, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x05, 0x2a, 0x99,
	0x02, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x55, 0x54, 0x10, 0x01, 0x12,
	0x0b, 0x0a, 0x07, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04,
	0x54, 0x49, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45,
	0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0x05, 0x12,
	0x16, 0x0a, 0x12, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x55, 0x52, 0x59, 0x10,
	0x07, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x49, 0x43, 0x4b, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x4b,
	0x49, 0x43, 0x4b, 0x4e, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x10,
	0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x45, 0x54, 0x5f, 0x4a, 0x4f, 0x42, 0x10, 0x0b, 0x12, 0x0e,
	0x0a, 0x0a, 0x50, 0x45, 0x45, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x0c, 0x12, 0x0f,
	0x0a, 0x0b, 0x50, 0x45, 0x45, 0x4b, 0x5f, 0x42, 0x55, 0x52, 0x49, 0x45, 0x44, 0x10, 0x0d, 0x12,
	0x10, 0x0a, 0x0c, 0x50, 0x45, 0x45, 0x4b, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x10,
	0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x59,
	0x41, 0x4d, 0x4c, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x54,
	0x55, 0x42, 0x45, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x10, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54,
	0x41, 0x54, 0x53, 0x5f, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x11, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x49,
	0x53, 0x54, 0x5f, 0x54, 0x55, 0x42, 0x45, 0x53, 0x10, 0x12, 0x2a, 0xb2, 0x02, 0x0a, 0x0a, 0x52,
	0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10,
	0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x64, 0x10, 0x01, 0x12,
	0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f,
	0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x10,
	0x03, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x45, 0x78, 0x63,
	0x65, 0x65, 0x64, 0x65, 0x64, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x46, 0x6f,
	0x75, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79,
	0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d,
	0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x10, 0x07, 0x12, 0x15,
	0x0a, 0x11, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x68, 0x61, 0x75, 0x73,
	0x74, 0x65, 0x64, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x50,
	0x72, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x09, 0x12, 0x0b, 0x0a,
	0x07, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x75,
	0x74, 0x4f, 0x66, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x6e,
	0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x10, 0x0c, 0x12, 0x0c, 0x0a,
	0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x55,
	0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x0e, 0x12, 0x0c, 0x0a, 0x08,
	0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x73, 0x73, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x6e,
	0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x32,
	0xd2, 0x0b, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x68,
	0x69, 0x6e, 0x65, 0x12, 0x44, 0x0a, 0x03, 0x50, 0x75, 0x74, 0x12, 0x1c, 0x2e, 0x63, 0x6f, 0x6f,
	0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62,
	0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x06, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e,
	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12,
	0x50, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x6f,
	0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65,
	0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63,
	0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x00, 0x12, 0x65, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72,
	0x76, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x63, 0x6f, 0x6f, 0x6c,
	0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70,
	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x63,
	0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x63,
	0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65,
	0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b,
	0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x07, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65,
	0x12, 0x20, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61,
	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x42, 0x0a,
	0x05, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x12, 0x1e, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61,
	0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61,
	0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
	0x00, 0x12, 0x40, 0x0a, 0x04, 0x42, 0x75, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x63, 0x6f, 0x6f, 0x6c,
	0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x72,
	0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62,
	0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74,
	0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x04, 0x4b, 0x69, 0x63, 0x6b, 0x12, 0x1d, 0x2e, 0x63, 0x6f,
	0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b,
	0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x63, 0x6f, 0x6f,
	0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d,
	0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x05, 0x4b, 0x69, 0x63, 0x6b, 0x4e, 0x12, 0x1e,
	0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x4e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f,
	0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x4e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x00, 0x12, 0x4d, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x1f, 0x2e, 0x63, 0x6f,
	0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x63,
	0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
	0x12, 0x4d, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x6b, 0x42, 0x75, 0x72, 0x69, 0x65, 0x64, 0x12, 0x1d,
	0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
	0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
	0x4e, 0x0a, 0x0b, 0x50, 0x65, 0x65, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x1d,
	0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e,
	0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
	0x4c, 0x0a, 0x09, 0x50, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1d, 0x2e, 0x63,
	0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
	0x50, 0x65, 0x65, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x63, 0x6f,
	0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x65, 0x65, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x68, 0x0a,
	0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x59, 0x61, 0x6d, 0x6c,
	0x12, 0x28, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x59,
	0x61, 0x6d, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x6f, 0x6f,
	0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74,
	0x61, 0x74, 0x73, 0x54, 0x75, 0x62, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x12, 0x29, 0x2e, 0x63, 0x6f,
	0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
	0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x75, 0x62, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61,
	0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61,
	0x74, 0x73, 0x54, 0x75, 0x62, 0x65, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73,
	0x59, 0x61, 0x6d, 0x6c, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x26, 0x2e,
	0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x59, 0x61, 0x6d, 0x6c, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54,
	0x75, 0x62, 0x65, 0x73, 0x12, 0x17, 0x2e, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73,
	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x23, 0x2e,
	0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65, 0x61, 0x6e, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x75, 0x62, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x00, 0x42, 0x14, 0x5a, 0x12, 0x2e, 0x3b, 0x63, 0x6f, 0x6f, 0x6c, 0x62, 0x65,
	0x61, 0x6e, 0x73, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x33,
}

var (
	file_jsm_proto_rawDescOnce sync.Once
	file_jsm_proto_rawDescData = file_jsm_proto_rawDesc
)

func file_jsm_proto_rawDescGZIP() []byte {
	file_jsm_proto_rawDescOnce.Do(func() {
		file_jsm_proto_rawDescData = protoimpl.X.CompressGZIP(file_jsm_proto_rawDescData)
	})
	return file_jsm_proto_rawDescData
}

var file_jsm_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_jsm_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_jsm_proto_goTypes = []interface{}{
	(ReservationStatus)(0),           // 0: coolbeans.api.v1.ReservationStatus
	(OpType)(0),                      // 1: coolbeans.api.v1.OpType
	(ResultCode)(0),                  // 2: coolbeans.api.v1.ResultCode
	(*PutRequest)(nil),               // 3: coolbeans.api.v1.PutRequest
	(*PutResponse)(nil),              // 4: coolbeans.api.v1.PutResponse
	(*DeleteRequest)(nil),            // 5: coolbeans.api.v1.DeleteRequest
	(*ReserveRequest)(nil),           // 6: coolbeans.api.v1.ReserveRequest
	(*ReserveResponse)(nil),          // 7: coolbeans.api.v1.ReserveResponse
	(*ReserveUpdateRequest)(nil),     // 8: coolbeans.api.v1.ReserveUpdateRequest
	(*ReserveUpdateResponse)(nil),    // 9: coolbeans.api.v1.ReserveUpdateResponse
	(*TickResponse)(nil),             // 10: coolbeans.api.v1.TickResponse
	(*Reservations)(nil),             // 11: coolbeans.api.v1.Reservations
	(*Reservation)(nil),              // 12: coolbeans.api.v1.Reservation
	(*ReleaseRequest)(nil),           // 13: coolbeans.api.v1.ReleaseRequest
	(*CheckClientStateRequest)(nil),  // 14: coolbeans.api.v1.CheckClientStateRequest
	(*CheckClientStateResponse)(nil), // 15: coolbeans.api.v1.CheckClientStateResponse
	(*TouchRequest)(nil),             // 16: coolbeans.api.v1.TouchRequest
	(*BuryRequest)(nil),              // 17: coolbeans.api.v1.BuryRequest
	(*KickRequest)(nil),              // 18: coolbeans.api.v1.KickRequest
	(*KickNRequest)(nil),             // 19: coolbeans.api.v1.KickNRequest
	(*KickNResponse)(nil),            // 20: coolbeans.api.v1.KickNResponse
	(*GetJobRequest)(nil),            // 21: coolbeans.api.v1.GetJobRequest
	(*GetJobResponse)(nil),           // 22: coolbeans.api.v1.GetJobResponse
	(*PeekRequest)(nil),              // 23: coolbeans.api.v1.PeekRequest
	(*PeekResponse)(nil),             // 24: coolbeans.api.v1.PeekResponse
	(*GetStatsJobYamlRequest)(nil),   // 25: coolbeans.api.v1.GetStatsJobYamlRequest
	(*GetStatsJobYamlResponse)(nil),  // 26: coolbeans.api.v1.GetStatsJobYamlResponse
	(*GetStatsTubeYamlRequest)(nil),  // 27: coolbeans.api.v1.GetStatsTubeYamlRequest
	(*GetStatsTubeYamlResponse)(nil), // 28: coolbeans.api.v1.GetStatsTubeYamlResponse
	(*GetStatsYamlResponse)(nil),     // 29: coolbeans.api.v1.GetStatsYamlResponse
	(*ListTubesResponse)(nil),        // 30: coolbeans.api.v1.ListTubesResponse
	(*SnapshotProto)(nil),            // 31: coolbeans.api.v1.SnapshotProto
	(*ApplyOpRequest)(nil),           // 32: coolbeans.api.v1.ApplyOpRequest
	(*ApplyOpResponse)(nil),          // 33: coolbeans.api.v1.ApplyOpResponse
	nil,                              // 34: coolbeans.api.v1.TickResponse.ProxyReservationsEntry
	(*JobProto)(nil),                 // 35: coolbeans.api.v1.JobProto
	(*ClientResvEntryProto)(nil),     // 36: coolbeans.api.v1.ClientResvEntryProto
	(*Empty)(nil),                    // 37: coolbeans.api.v1.Empty
}
var file_jsm_proto_depIdxs = []int32{
	12, // 0: coolbeans.api.v1.ReserveResponse.reservation:type_name -> coolbeans.api.v1.Reservation
	12, // 1: coolbeans.api.v1.ReserveUpdateResponse.reservation:type_name -> coolbeans.api.v1.Reservation
	34, // 2: coolbeans.api.v1.TickResponse.proxy_reservations:type_name -> coolbeans.api.v1.TickResponse.ProxyReservationsEntry
	12, // 3: coolbeans.api.v1.Reservations.entries:type_name -> coolbeans.api.v1.Reservation
	0,  // 4: coolbeans.api.v1.Reservation.Status:type_name -> coolbeans.api.v1.ReservationStatus
	35, // 5: coolbeans.api.v1.GetJobResponse.job:type_name -> coolbeans.api.v1.JobProto
	35, // 6: coolbeans.api.v1.PeekResponse.job:type_name -> coolbeans.api.v1.JobProto
	35, // 7: coolbeans.api.v1.SnapshotProto.jobs:type_name -> coolbeans.api.v1.JobProto
	36, // 8: coolbeans.api.v1.SnapshotProto.reservations:type_name -> coolbeans.api.v1.ClientResvEntryProto
	1,  // 9: coolbeans.api.v1.ApplyOpRequest.op:type_name -> coolbeans.api.v1.OpType
	2,  // 10: coolbeans.api.v1.ApplyOpResponse.error_code:type_name -> coolbeans.api.v1.ResultCode
	11, // 11: coolbeans.api.v1.TickResponse.ProxyReservationsEntry.value:type_name -> coolbeans.api.v1.Reservations
	3,  // 12: coolbeans.api.v1.JobStateMachine.Put:input_type -> coolbeans.api.v1.PutRequest
	5,  // 13: coolbeans.api.v1.JobStateMachine.Delete:input_type -> coolbeans.api.v1.DeleteRequest
	6,  // 14: coolbeans.api.v1.JobStateMachine.Reserve:input_type -> coolbeans.api.v1.ReserveRequest
	8,  // 15: coolbeans.api.v1.JobStateMachine.StreamReserveUpdates:input_type -> coolbeans.api.v1.ReserveUpdateRequest
	14, // 16: coolbeans.api.v1.JobStateMachine.CheckClientState:input_type -> coolbeans.api.v1.CheckClientStateRequest
	13, // 17: coolbeans.api.v1.JobStateMachine.Release:input_type -> coolbeans.api.v1.ReleaseRequest
	16, // 18: coolbeans.api.v1.JobStateMachine.Touch:input_type -> coolbeans.api.v1.TouchRequest
	17, // 19: coolbeans.api.v1.JobStateMachine.Bury:input_type -> coolbeans.api.v1.BuryRequest
	18, // 20: coolbeans.api.v1.JobStateMachine.Kick:input_type -> coolbeans.api.v1.KickRequest
	19, // 21: coolbeans.api.v1.JobStateMachine.KickN:input_type -> coolbeans.api.v1.KickNRequest
	21, // 22: coolbeans.api.v1.JobStateMachine.GetJob:input_type -> coolbeans.api.v1.GetJobRequest
	23, // 23: coolbeans.api.v1.JobStateMachine.PeekBuried:input_type -> coolbeans.api.v1.PeekRequest
	23, // 24: coolbeans.api.v1.JobStateMachine.PeekDelayed:input_type -> coolbeans.api.v1.PeekRequest
	23, // 25: coolbeans.api.v1.JobStateMachine.PeekReady:input_type -> coolbeans.api.v1.PeekRequest
	25, // 26: coolbeans.api.v1.JobStateMachine.GetStatsJobYaml:input_type -> coolbeans.api.v1.GetStatsJobYamlRequest
	27, // 27: coolbeans.api.v1.JobStateMachine.GetStatsTubeYaml:input_type -> coolbeans.api.v1.GetStatsTubeYamlRequest
	37, // 28: coolbeans.api.v1.JobStateMachine.GetStatsYaml:input_type -> coolbeans.api.v1.Empty
	37, // 29: coolbeans.api.v1.JobStateMachine.ListTubes:input_type -> coolbeans.api.v1.Empty
	4,  // 30: coolbeans.api.v1.JobStateMachine.Put:output_type -> coolbeans.api.v1.PutResponse
	37, // 31: coolbeans.api.v1.JobStateMachine.Delete:output_type -> coolbeans.api.v1.Empty
	7,  // 32: coolbeans.api.v1.JobStateMachine.Reserve:output_type -> coolbeans.api.v1.ReserveResponse
	7,  // 33: coolbeans.api.v1.JobStateMachine.StreamReserveUpdates:output_type -> coolbeans.api.v1.ReserveResponse
	15, // 34: coolbeans.api.v1.JobStateMachine.CheckClientState:output_type -> coolbeans.api.v1.CheckClientStateResponse
	37, // 35: coolbeans.api.v1.JobStateMachine.Release:output_type -> coolbeans.api.v1.Empty
	37, // 36: coolbeans.api.v1.JobStateMachine.Touch:output_type -> coolbeans.api.v1.Empty
	37, // 37: coolbeans.api.v1.JobStateMachine.Bury:output_type -> coolbeans.api.v1.Empty
	37, // 38: coolbeans.api.v1.JobStateMachine.Kick:output_type -> coolbeans.api.v1.Empty
	20, // 39: coolbeans.api.v1.JobStateMachine.KickN:output_type -> coolbeans.api.v1.KickNResponse
	22, // 40: coolbeans.api.v1.JobStateMachine.GetJob:output_type -> coolbeans.api.v1.GetJobResponse
	24, // 41: coolbeans.api.v1.JobStateMachine.PeekBuried:output_type -> coolbeans.api.v1.PeekResponse
	24, // 42: coolbeans.api.v1.JobStateMachine.PeekDelayed:output_type -> coolbeans.api.v1.PeekResponse
	24, // 43: coolbeans.api.v1.JobStateMachine.PeekReady:output_type -> coolbeans.api.v1.PeekResponse
	26, // 44: coolbeans.api.v1.JobStateMachine.GetStatsJobYaml:output_type -> coolbeans.api.v1.GetStatsJobYamlResponse
	28, // 45: coolbeans.api.v1.JobStateMachine.GetStatsTubeYaml:output_type -> coolbeans.api.v1.GetStatsTubeYamlResponse
	29, // 46: coolbeans.api.v1.JobStateMachine.GetStatsYaml:output_type -> coolbeans.api.v1.GetStatsYamlResponse
	30, // 47: coolbeans.api.v1.JobStateMachine.ListTubes:output_type -> coolbeans.api.v1.ListTubesResponse
	30, // [30:48] is the sub-list for method output_type
	12, // [12:30] is the sub-list for method input_type
	12, // [12:12] is the sub-list for extension type_name
	12, // [12:12] is the sub-list for extension extendee
	0,  // [0:12] is the sub-list for field type_name
}

func init() { file_jsm_proto_init() }
func file_jsm_proto_init() {
	if File_jsm_proto != nil {
		return
	}
	file_client_proto_init()
	file_job_proto_init()
	file_empty_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_jsm_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReserveRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReserveResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReserveUpdateRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReserveUpdateResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TickResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Reservations); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Reservation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReleaseRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CheckClientStateRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CheckClientStateResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TouchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*BuryRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KickRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KickNRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KickNResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetJobRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetJobResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PeekRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PeekResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetStatsJobYamlRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetStatsJobYamlResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetStatsTubeYamlRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetStatsTubeYamlResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetStatsYamlResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ListTubesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SnapshotProto); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ApplyOpRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_jsm_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ApplyOpResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_jsm_proto_rawDesc,
			NumEnums:      3,
			NumMessages:   32,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_jsm_proto_goTypes,
		DependencyIndexes: file_jsm_proto_depIdxs,
		EnumInfos:         file_jsm_proto_enumTypes,
		MessageInfos:      file_jsm_proto_msgTypes,
	}.Build()
	File_jsm_proto = out.File
	file_jsm_proto_rawDesc = nil
	file_jsm_proto_goTypes = nil
	file_jsm_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// JobStateMachineClient is the client API for JobStateMachine service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type JobStateMachineClient interface {
	// Put creates a new job with the provided job parameters
	//
	// The response contains the identifier of the job created
	Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error)
	// Delete a job with the provided job id
	Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*Empty, error)
	// Reserve is a request to reserve a channel for a client by this proxy
	Reserve(ctx context.Context, in *ReserveRequest, opts ...grpc.CallOption) (*ReserveResponse, error)
	// StreamReserveUpdates is a streaming RPC from the server back to client
	//
	// Reservations are streamed as they are available for this proxy
	StreamReserveUpdates(ctx context.Context, in *ReserveUpdateRequest, opts ...grpc.CallOption) (JobStateMachine_StreamReserveUpdatesClient, error)
	// CheckClientState queries the job state machine whether the provided list of clientIds are waiting for reservations.
	CheckClientState(ctx context.Context, in *CheckClientStateRequest, opts ...grpc.CallOption) (*CheckClientStateResponse, error)
	// Release a reserved job back to either a Ready or a Delayed state
	Release(ctx context.Context, in *ReleaseRequest, opts ...grpc.CallOption) (*Empty, error)
	// Extend a reserved job's reservation TTL by its TTR (time-to-run)
	Touch(ctx context.Context, in *TouchRequest, opts ...grpc.CallOption) (*Empty, error)
	// Bury this job, if this job is in the reserved state
	Bury(ctx context.Context, in *BuryRequest, opts ...grpc.CallOption) (*Empty, error)
	// Kick this job, if this job is in a buried stated to ready state
	Kick(ctx context.Context, in *KickRequest, opts ...grpc.CallOption) (*Empty, error)
	// Kick at-most n jobs in this tube,
	KickN(ctx context.Context, in *KickNRequest, opts ...grpc.CallOption) (*KickNResponse, error)
	// Peek a specific job (by the JobID)
	GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error)
	// Peek a tube's buried jobs
	PeekBuried(ctx context.Context, in *PeekRequest, opts ...grpc.CallOption) (*PeekResponse, error)
	// Peek a tube's delayed jobs
	PeekDelayed(ctx context.Context, in *PeekRequest, opts ...grpc.CallOption) (*PeekResponse, error)
	// Peek a tube's ready jobs
	PeekReady(ctx context.Context, in *PeekRequest, opts ...grpc.CallOption) (*PeekResponse, error)
	// Retrieve a job statistics
	GetStatsJobYaml(ctx context.Context, in *GetStatsJobYamlRequest, opts ...grpc.CallOption) (*GetStatsJobYamlResponse, error)
	// Retrieve a tube's statistics
	GetStatsTubeYaml(ctx context.Context, in *GetStatsTubeYamlRequest, opts ...grpc.CallOption) (*GetStatsTubeYamlResponse, error)
	// Retrieve overall statistics
	GetStatsYaml(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetStatsYamlResponse, error)
	// Retreive a list of all Tubes
	ListTubes(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListTubesResponse, error)
}

type jobStateMachineClient struct {
	cc grpc.ClientConnInterface
}

func NewJobStateMachineClient(cc grpc.ClientConnInterface) JobStateMachineClient {
	return &jobStateMachineClient{cc}
}

func (c *jobStateMachineClient) Put(ctx context.Context, in *PutRequest, opts ...grpc.CallOption) (*PutResponse, error) {
	out := new(PutResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Put", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Delete", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) Reserve(ctx context.Context, in *ReserveRequest, opts ...grpc.CallOption) (*ReserveResponse, error) {
	out := new(ReserveResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Reserve", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) StreamReserveUpdates(ctx context.Context, in *ReserveUpdateRequest, opts ...grpc.CallOption) (JobStateMachine_StreamReserveUpdatesClient, error) {
	stream, err := c.cc.NewStream(ctx, &_JobStateMachine_serviceDesc.Streams[0], "/coolbeans.api.v1.JobStateMachine/StreamReserveUpdates", opts...)
	if err != nil {
		return nil, err
	}
	x := &jobStateMachineStreamReserveUpdatesClient{stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

type JobStateMachine_StreamReserveUpdatesClient interface {
	Recv() (*ReserveResponse, error)
	grpc.ClientStream
}

type jobStateMachineStreamReserveUpdatesClient struct {
	grpc.ClientStream
}

func (x *jobStateMachineStreamReserveUpdatesClient) Recv() (*ReserveResponse, error) {
	m := new(ReserveResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *jobStateMachineClient) CheckClientState(ctx context.Context, in *CheckClientStateRequest, opts ...grpc.CallOption) (*CheckClientStateResponse, error) {
	out := new(CheckClientStateResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/CheckClientState", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) Release(ctx context.Context, in *ReleaseRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Release", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) Touch(ctx context.Context, in *TouchRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Touch", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) Bury(ctx context.Context, in *BuryRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Bury", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) Kick(ctx context.Context, in *KickRequest, opts ...grpc.CallOption) (*Empty, error) {
	out := new(Empty)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/Kick", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) KickN(ctx context.Context, in *KickNRequest, opts ...grpc.CallOption) (*KickNResponse, error) {
	out := new(KickNResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/KickN", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) {
	out := new(GetJobResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/GetJob", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) PeekBuried(ctx context.Context, in *PeekRequest, opts ...grpc.CallOption) (*PeekResponse, error) {
	out := new(PeekResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/PeekBuried", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) PeekDelayed(ctx context.Context, in *PeekRequest, opts ...grpc.CallOption) (*PeekResponse, error) {
	out := new(PeekResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/PeekDelayed", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) PeekReady(ctx context.Context, in *PeekRequest, opts ...grpc.CallOption) (*PeekResponse, error) {
	out := new(PeekResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/PeekReady", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) GetStatsJobYaml(ctx context.Context, in *GetStatsJobYamlRequest, opts ...grpc.CallOption) (*GetStatsJobYamlResponse, error) {
	out := new(GetStatsJobYamlResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/GetStatsJobYaml", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) GetStatsTubeYaml(ctx context.Context, in *GetStatsTubeYamlRequest, opts ...grpc.CallOption) (*GetStatsTubeYamlResponse, error) {
	out := new(GetStatsTubeYamlResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/GetStatsTubeYaml", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) GetStatsYaml(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*GetStatsYamlResponse, error) {
	out := new(GetStatsYamlResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/GetStatsYaml", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *jobStateMachineClient) ListTubes(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*ListTubesResponse, error) {
	out := new(ListTubesResponse)
	err := c.cc.Invoke(ctx, "/coolbeans.api.v1.JobStateMachine/ListTubes", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// JobStateMachineServer is the server API for JobStateMachine service.
type JobStateMachineServer interface {
	// Put creates a new job with the provided job parameters
	//
	// The response contains the identifier of the job created
	Put(context.Context, *PutRequest) (*PutResponse, error)
	// Delete a job with the provided job id
	Delete(context.Context, *DeleteRequest) (*Empty, error)
	// Reserve is a request to reserve a channel for a client by this proxy
	Reserve(context.Context, *ReserveRequest) (*ReserveResponse, error)
	// StreamReserveUpdates is a streaming RPC from the server back to client
	//
	// Reservations are streamed as they are available for this proxy
	StreamReserveUpdates(*ReserveUpdateRequest, JobStateMachine_StreamReserveUpdatesServer) error
	// CheckClientState queries the job state machine whether the provided list of clientIds are waiting for reservations.
	CheckClientState(context.Context, *CheckClientStateRequest) (*CheckClientStateResponse, error)
	// Release a reserved job back to either a Ready or a Delayed state
	Release(context.Context, *ReleaseRequest) (*Empty, error)
	// Extend a reserved job's reservation TTL by its TTR (time-to-run)
	Touch(context.Context, *TouchRequest) (*Empty, error)
	// Bury this job, if this job is in the reserved state
	Bury(context.Context, *BuryRequest) (*Empty, error)
	// Kick this job, if this job is in a buried stated to ready state
	Kick(context.Context, *KickRequest) (*Empty, error)
	// Kick at-most n jobs in this tube,
	KickN(context.Context, *KickNRequest) (*KickNResponse, error)
	// Peek a specific job (by the JobID)
	GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error)
	// Peek a tube's buried jobs
	PeekBuried(context.Context, *PeekRequest) (*PeekResponse, error)
	// Peek a tube's delayed jobs
	PeekDelayed(context.Context, *PeekRequest) (*PeekResponse, error)
	// Peek a tube's ready jobs
	PeekReady(context.Context, *PeekRequest) (*PeekResponse, error)
	// Retrieve a job statistics
	GetStatsJobYaml(context.Context, *GetStatsJobYamlRequest) (*GetStatsJobYamlResponse, error)
	// Retrieve a tube's statistics
	GetStatsTubeYaml(context.Context, *GetStatsTubeYamlRequest) (*GetStatsTubeYamlResponse, error)
	// Retrieve overall statistics
	GetStatsYaml(context.Context, *Empty) (*GetStatsYamlResponse, error)
	// Retreive a list of all Tubes
	ListTubes(context.Context, *Empty) (*ListTubesResponse, error)
}

// UnimplementedJobStateMachineServer can be embedded to have forward compatible implementations.
type UnimplementedJobStateMachineServer struct {
}

func (*UnimplementedJobStateMachineServer) Put(context.Context, *PutRequest) (*PutResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Put not implemented")
}
func (*UnimplementedJobStateMachineServer) Delete(context.Context, *DeleteRequest) (*Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
}
func (*UnimplementedJobStateMachineServer) Reserve(context.Context, *ReserveRequest) (*ReserveResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Reserve not implemented")
}
func (*UnimplementedJobStateMachineServer) StreamReserveUpdates(*ReserveUpdateRequest, JobStateMachine_StreamReserveUpdatesServer) error {
	return status.Errorf(codes.Unimplemented, "method StreamReserveUpdates not implemented")
}
func (*UnimplementedJobStateMachineServer) CheckClientState(context.Context, *CheckClientStateRequest) (*CheckClientStateResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CheckClientState not implemented")
}
func (*UnimplementedJobStateMachineServer) Release(context.Context, *ReleaseRequest) (*Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Release not implemented")
}
func (*UnimplementedJobStateMachineServer) Touch(context.Context, *TouchRequest) (*Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Touch not implemented")
}
func (*UnimplementedJobStateMachineServer) Bury(context.Context, *BuryRequest) (*Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Bury not implemented")
}
func (*UnimplementedJobStateMachineServer) Kick(context.Context, *KickRequest) (*Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Kick not implemented")
}
func (*UnimplementedJobStateMachineServer) KickN(context.Context, *KickNRequest) (*KickNResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method KickN not implemented")
}
func (*UnimplementedJobStateMachineServer) GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetJob not implemented")
}
func (*UnimplementedJobStateMachineServer) PeekBuried(context.Context, *PeekRequest) (*PeekResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PeekBuried not implemented")
}
func (*UnimplementedJobStateMachineServer) PeekDelayed(context.Context, *PeekRequest) (*PeekResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PeekDelayed not implemented")
}
func (*UnimplementedJobStateMachineServer) PeekReady(context.Context, *PeekRequest) (*PeekResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method PeekReady not implemented")
}
func (*UnimplementedJobStateMachineServer) GetStatsJobYaml(context.Context, *GetStatsJobYamlRequest) (*GetStatsJobYamlResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetStatsJobYaml not implemented")
}
func (*UnimplementedJobStateMachineServer) GetStatsTubeYaml(context.Context, *GetStatsTubeYamlRequest) (*GetStatsTubeYamlResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetStatsTubeYaml not implemented")
}
func (*UnimplementedJobStateMachineServer) GetStatsYaml(context.Context, *Empty) (*GetStatsYamlResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetStatsYaml not implemented")
}
func (*UnimplementedJobStateMachineServer) ListTubes(context.Context, *Empty) (*ListTubesResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListTubes not implemented")
}

func RegisterJobStateMachineServer(s *grpc.Server, srv JobStateMachineServer) {
	s.RegisterService(&_JobStateMachine_serviceDesc, srv)
}

func _JobStateMachine_Put_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PutRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Put(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Put",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Put(ctx, req.(*PutRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Delete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Delete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Delete(ctx, req.(*DeleteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_Reserve_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReserveRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Reserve(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Reserve",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Reserve(ctx, req.(*ReserveRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_StreamReserveUpdates_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(ReserveUpdateRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(JobStateMachineServer).StreamReserveUpdates(m, &jobStateMachineStreamReserveUpdatesServer{stream})
}

type JobStateMachine_StreamReserveUpdatesServer interface {
	Send(*ReserveResponse) error
	grpc.ServerStream
}

type jobStateMachineStreamReserveUpdatesServer struct {
	grpc.ServerStream
}

func (x *jobStateMachineStreamReserveUpdatesServer) Send(m *ReserveResponse) error {
	return x.ServerStream.SendMsg(m)
}

func _JobStateMachine_CheckClientState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CheckClientStateRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).CheckClientState(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/CheckClientState",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).CheckClientState(ctx, req.(*CheckClientStateRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_Release_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReleaseRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Release(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Release",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Release(ctx, req.(*ReleaseRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_Touch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TouchRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Touch(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Touch",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Touch(ctx, req.(*TouchRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_Bury_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(BuryRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Bury(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Bury",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Bury(ctx, req.(*BuryRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_Kick_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(KickRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).Kick(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/Kick",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).Kick(ctx, req.(*KickRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_KickN_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(KickNRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).KickN(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/KickN",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).KickN(ctx, req.(*KickNRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetJobRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).GetJob(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/GetJob",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).GetJob(ctx, req.(*GetJobRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_PeekBuried_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PeekRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).PeekBuried(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/PeekBuried",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).PeekBuried(ctx, req.(*PeekRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_PeekDelayed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PeekRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).PeekDelayed(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/PeekDelayed",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).PeekDelayed(ctx, req.(*PeekRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_PeekReady_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(PeekRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).PeekReady(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/PeekReady",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).PeekReady(ctx, req.(*PeekRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_GetStatsJobYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetStatsJobYamlRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).GetStatsJobYaml(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/GetStatsJobYaml",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).GetStatsJobYaml(ctx, req.(*GetStatsJobYamlRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_GetStatsTubeYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetStatsTubeYamlRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).GetStatsTubeYaml(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/GetStatsTubeYaml",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).GetStatsTubeYaml(ctx, req.(*GetStatsTubeYamlRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_GetStatsYaml_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).GetStatsYaml(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/GetStatsYaml",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).GetStatsYaml(ctx, req.(*Empty))
	}
	return interceptor(ctx, in, info, handler)
}

func _JobStateMachine_ListTubes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Empty)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(JobStateMachineServer).ListTubes(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/coolbeans.api.v1.JobStateMachine/ListTubes",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(JobStateMachineServer).ListTubes(ctx, req.(*Empty))
	}
	return interceptor(ctx, in, info, handler)
}

var _JobStateMachine_serviceDesc = grpc.ServiceDesc{
	ServiceName: "coolbeans.api.v1.JobStateMachine",
	HandlerType: (*JobStateMachineServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Put",
			Handler:    _JobStateMachine_Put_Handler,
		},
		{
			MethodName: "Delete",
			Handler:    _JobStateMachine_Delete_Handler,
		},
		{
			MethodName: "Reserve",
			Handler:    _JobStateMachine_Reserve_Handler,
		},
		{
			MethodName: "CheckClientState",
			Handler:    _JobStateMachine_CheckClientState_Handler,
		},
		{
			MethodName: "Release",
			Handler:    _JobStateMachine_Release_Handler,
		},
		{
			MethodName: "Touch",
			Handler:    _JobStateMachine_Touch_Handler,
		},
		{
			MethodName: "Bury",
			Handler:    _JobStateMachine_Bury_Handler,
		},
		{
			MethodName: "Kick",
			Handler:    _JobStateMachine_Kick_Handler,
		},
		{
			MethodName: "KickN",
			Handler:    _JobStateMachine_KickN_Handler,
		},
		{
			MethodName: "GetJob",
			Handler:    _JobStateMachine_GetJob_Handler,
		},
		{
			MethodName: "PeekBuried",
			Handler:    _JobStateMachine_PeekBuried_Handler,
		},
		{
			MethodName: "PeekDelayed",
			Handler:    _JobStateMachine_PeekDelayed_Handler,
		},
		{
			MethodName: "PeekReady",
			Handler:    _JobStateMachine_PeekReady_Handler,
		},
		{
			MethodName: "GetStatsJobYaml",
			Handler:    _JobStateMachine_GetStatsJobYaml_Handler,
		},
		{
			MethodName: "GetStatsTubeYaml",
			Handler:    _JobStateMachine_GetStatsTubeYaml_Handler,
		},
		{
			MethodName: "GetStatsYaml",
			Handler:    _JobStateMachine_GetStatsYaml_Handler,
		},
		{
			MethodName: "ListTubes",
			Handler:    _JobStateMachine_ListTubes_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamReserveUpdates",
			Handler:       _JobStateMachine_StreamReserveUpdates_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "jsm.proto",
}
