// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.12.4
// source: middleware.proto

package middleware

import (
	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 UserRole int32

const (
	UserRole_ReadKeygroup       UserRole = 0
	UserRole_WriteKeygroup      UserRole = 1
	UserRole_ConfigureReplica   UserRole = 2
	UserRole_ConfigureTrigger   UserRole = 3
	UserRole_ConfigureKeygroups UserRole = 4
)

// Enum value maps for UserRole.
var (
	UserRole_name = map[int32]string{
		0: "ReadKeygroup",
		1: "WriteKeygroup",
		2: "ConfigureReplica",
		3: "ConfigureTrigger",
		4: "ConfigureKeygroups",
	}
	UserRole_value = map[string]int32{
		"ReadKeygroup":       0,
		"WriteKeygroup":      1,
		"ConfigureReplica":   2,
		"ConfigureTrigger":   3,
		"ConfigureKeygroups": 4,
	}
)

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

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

func (UserRole) Descriptor() protoreflect.EnumDescriptor {
	return file_middleware_proto_enumTypes[0].Descriptor()
}

func (UserRole) Type() protoreflect.EnumType {
	return &file_middleware_proto_enumTypes[0]
}

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

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

type Empty struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*Empty) ProtoMessage() {}

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

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

	Keygroup    string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Mutable     bool   `protobuf:"varint,2,opt,name=mutable,proto3" json:"mutable,omitempty"`
	Expiry      int64  `protobuf:"varint,3,opt,name=expiry,proto3" json:"expiry,omitempty"`
	FirstNodeId string `protobuf:"bytes,4,opt,name=firstNodeId,proto3" json:"firstNodeId,omitempty"`
}

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

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

func (*CreateKeygroupRequest) ProtoMessage() {}

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

func (x *CreateKeygroupRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *CreateKeygroupRequest) GetMutable() bool {
	if x != nil {
		return x.Mutable
	}
	return false
}

func (x *CreateKeygroupRequest) GetExpiry() int64 {
	if x != nil {
		return x.Expiry
	}
	return 0
}

func (x *CreateKeygroupRequest) GetFirstNodeId() string {
	if x != nil {
		return x.FirstNodeId
	}
	return ""
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
}

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

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

func (*DeleteKeygroupRequest) ProtoMessage() {}

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

func (x *DeleteKeygroupRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

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

	Id      string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Val     string            `protobuf:"bytes,2,opt,name=val,proto3" json:"val,omitempty"`
	Version map[string]uint64 `protobuf:"bytes,3,rep,name=version,proto3" json:"version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*Item) ProtoMessage() {}

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

func (x *Item) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Item) GetVal() string {
	if x != nil {
		return x.Val
	}
	return ""
}

func (x *Item) GetVersion() map[string]uint64 {
	if x != nil {
		return x.Version
	}
	return nil
}

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

	Keygroup  string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Id        string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	MinExpiry int64  `protobuf:"varint,3,opt,name=minExpiry,proto3" json:"minExpiry,omitempty"`
}

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

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

func (*ReadRequest) ProtoMessage() {}

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

func (x *ReadRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *ReadRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ReadRequest) GetMinExpiry() int64 {
	if x != nil {
		return x.MinExpiry
	}
	return 0
}

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

	Items []*Item `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
}

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

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

func (*ReadResponse) ProtoMessage() {}

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

func (x *ReadResponse) GetItems() []*Item {
	if x != nil {
		return x.Items
	}
	return nil
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Id       string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Count    uint64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
}

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

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

func (*ScanRequest) ProtoMessage() {}

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

func (x *ScanRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *ScanRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

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

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

	Data []*Data `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*ScanResponse) ProtoMessage() {}

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

func (x *ScanResponse) GetData() []*Data {
	if x != nil {
		return x.Data
	}
	return nil
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Id       string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Count    uint64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
}

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

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

func (*KeysRequest) ProtoMessage() {}

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

func (x *KeysRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *KeysRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

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

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

	Keys []*Key `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
}

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

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

func (*KeysResponse) ProtoMessage() {}

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

func (x *KeysResponse) GetKeys() []*Key {
	if x != nil {
		return x.Keys
	}
	return nil
}

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

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*Key) ProtoMessage() {}

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

func (x *Key) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

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

	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*Data) ProtoMessage() {}

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

func (x *Data) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Data) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Id       string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Data     string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*UpdateRequest) ProtoMessage() {}

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

func (x *UpdateRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *UpdateRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateRequest) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Data     string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*AppendRequest) ProtoMessage() {}

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

func (x *AppendRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *AppendRequest) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

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

	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*AppendResponse) ProtoMessage() {}

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

func (x *AppendResponse) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

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

	Keygroup string            `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Id       string            `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Version  map[string]uint64 `protobuf:"bytes,3,rep,name=version,proto3" json:"version,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

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

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

func (*NotifyRequest) ProtoMessage() {}

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

func (x *NotifyRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *NotifyRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *NotifyRequest) GetVersion() map[string]uint64 {
	if x != nil {
		return x.Version
	}
	return nil
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	NodeId   string `protobuf:"bytes,2,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
}

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

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

func (*ChooseReplicaRequest) ProtoMessage() {}

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

func (x *ChooseReplicaRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *ChooseReplicaRequest) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Id       string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *DeleteRequest) Reset() {
	*x = DeleteRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_middleware_proto_msgTypes[17]
		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_middleware_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 DeleteRequest.ProtoReflect.Descriptor instead.
func (*DeleteRequest) Descriptor() ([]byte, []int) {
	return file_middleware_proto_rawDescGZIP(), []int{17}
}

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

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

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	NodeId   string `protobuf:"bytes,2,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
	Expiry   int64  `protobuf:"varint,3,opt,name=expiry,proto3" json:"expiry,omitempty"`
}

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

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

func (*AddReplicaRequest) ProtoMessage() {}

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

func (x *AddReplicaRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *AddReplicaRequest) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *AddReplicaRequest) GetExpiry() int64 {
	if x != nil {
		return x.Expiry
	}
	return 0
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
}

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

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

func (*GetKeygroupInfoRequest) ProtoMessage() {}

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

func (x *GetKeygroupInfoRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

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

	Mutable bool               `protobuf:"varint,1,opt,name=mutable,proto3" json:"mutable,omitempty"`
	Replica []*KeygroupReplica `protobuf:"bytes,2,rep,name=replica,proto3" json:"replica,omitempty"`
}

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

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

func (*GetKeygroupInfoResponse) ProtoMessage() {}

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

func (x *GetKeygroupInfoResponse) GetMutable() bool {
	if x != nil {
		return x.Mutable
	}
	return false
}

func (x *GetKeygroupInfoResponse) GetReplica() []*KeygroupReplica {
	if x != nil {
		return x.Replica
	}
	return nil
}

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

	NodeId string `protobuf:"bytes,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
	Expiry int64  `protobuf:"varint,2,opt,name=expiry,proto3" json:"expiry,omitempty"`
	Host   string `protobuf:"bytes,3,opt,name=host,proto3" json:"host,omitempty"`
}

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

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

func (*KeygroupReplica) ProtoMessage() {}

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

func (x *KeygroupReplica) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *KeygroupReplica) GetExpiry() int64 {
	if x != nil {
		return x.Expiry
	}
	return 0
}

func (x *KeygroupReplica) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	NodeId   string `protobuf:"bytes,2,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
}

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

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

func (*RemoveReplicaRequest) ProtoMessage() {}

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

func (x *RemoveReplicaRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *RemoveReplicaRequest) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

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

	NodeId string `protobuf:"bytes,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
}

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

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

func (*GetReplicaRequest) ProtoMessage() {}

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

func (x *GetReplicaRequest) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

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

	NodeId string `protobuf:"bytes,1,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
	Host   string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
}

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

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

func (*GetReplicaResponse) ProtoMessage() {}

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

func (x *GetReplicaResponse) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *GetReplicaResponse) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

type GetAllReplicaRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*GetAllReplicaRequest) ProtoMessage() {}

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

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

	Replicas []*GetReplicaResponse `protobuf:"bytes,1,rep,name=replicas,proto3" json:"replicas,omitempty"`
}

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

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

func (*GetAllReplicaResponse) ProtoMessage() {}

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

func (x *GetAllReplicaResponse) GetReplicas() []*GetReplicaResponse {
	if x != nil {
		return x.Replicas
	}
	return nil
}

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

	Keygroup string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
}

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

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

func (*GetKeygroupTriggerRequest) ProtoMessage() {}

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

func (x *GetKeygroupTriggerRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

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

	Triggers []*Trigger `protobuf:"bytes,1,rep,name=triggers,proto3" json:"triggers,omitempty"`
}

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

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

func (*GetKeygroupTriggerResponse) ProtoMessage() {}

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

func (x *GetKeygroupTriggerResponse) GetTriggers() []*Trigger {
	if x != nil {
		return x.Triggers
	}
	return nil
}

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

	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
}

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

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

func (*Trigger) ProtoMessage() {}

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

func (x *Trigger) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Trigger) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

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

	Keygroup    string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	TriggerId   string `protobuf:"bytes,2,opt,name=triggerId,proto3" json:"triggerId,omitempty"`
	TriggerHost string `protobuf:"bytes,3,opt,name=triggerHost,proto3" json:"triggerHost,omitempty"`
}

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

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

func (*AddTriggerRequest) ProtoMessage() {}

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

func (x *AddTriggerRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *AddTriggerRequest) GetTriggerId() string {
	if x != nil {
		return x.TriggerId
	}
	return ""
}

func (x *AddTriggerRequest) GetTriggerHost() string {
	if x != nil {
		return x.TriggerHost
	}
	return ""
}

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

	Keygroup  string `protobuf:"bytes,1,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	TriggerId string `protobuf:"bytes,2,opt,name=triggerId,proto3" json:"triggerId,omitempty"`
}

func (x *RemoveTriggerRequest) Reset() {
	*x = RemoveTriggerRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_middleware_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RemoveTriggerRequest) ProtoMessage() {}

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

// Deprecated: Use RemoveTriggerRequest.ProtoReflect.Descriptor instead.
func (*RemoveTriggerRequest) Descriptor() ([]byte, []int) {
	return file_middleware_proto_rawDescGZIP(), []int{31}
}

func (x *RemoveTriggerRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *RemoveTriggerRequest) GetTriggerId() string {
	if x != nil {
		return x.TriggerId
	}
	return ""
}

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

	User     string   `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	Keygroup string   `protobuf:"bytes,2,opt,name=keygroup,proto3" json:"keygroup,omitempty"`
	Role     UserRole `protobuf:"varint,3,opt,name=role,proto3,enum=mcc.fred.middleware.UserRole" json:"role,omitempty"`
}

func (x *UserRequest) Reset() {
	*x = UserRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_middleware_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UserRequest) ProtoMessage() {}

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

// Deprecated: Use UserRequest.ProtoReflect.Descriptor instead.
func (*UserRequest) Descriptor() ([]byte, []int) {
	return file_middleware_proto_rawDescGZIP(), []int{32}
}

func (x *UserRequest) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *UserRequest) GetKeygroup() string {
	if x != nil {
		return x.Keygroup
	}
	return ""
}

func (x *UserRequest) GetRole() UserRole {
	if x != nil {
		return x.Role
	}
	return UserRole_ReadKeygroup
}

var File_middleware_proto protoreflect.FileDescriptor

var file_middleware_proto_rawDesc = []byte{
	0x0a, 0x10, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x13, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79,
	0x22, 0x87, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73,
	0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66,
	0x69, 0x72, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x15, 0x44, 0x65,
	0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22,
	0xa6, 0x01, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x07, 0x76, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x63,
	0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72,
	0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c,
	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x57, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x69, 0x72,
	0x79, 0x22, 0x3f, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x19, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64,
	0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65,
	0x6d, 0x73, 0x22, 0x4f, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x22, 0x3d, 0x0a, 0x0c, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x22, 0x4f, 0x0a, 0x0b, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x0c, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x04, 0x6b, 0x65, 0x79,
	0x73, 0x22, 0x15, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61,
	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
	0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x22, 0x4f, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3f, 0x0a, 0x0d, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x20, 0x0a, 0x0e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x0d, 0x4e, 0x6f, 0x74,
	0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x49, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72,
	0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x4e, 0x6f,
	0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x65, 0x72, 0x73,
	0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
	0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a,
	0x14, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x0d, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x5f, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x52, 0x65, 0x70,
	0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b,
	0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b,
	0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12,
	0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x22, 0x34, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4b, 0x65,
	0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x73, 0x0a,
	0x17, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x75, 0x74, 0x61,
	0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x75, 0x74, 0x61, 0x62,
	0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d,
	0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x69,
	0x63, 0x61, 0x22, 0x55, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a,
	0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x65,
	0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x14, 0x52, 0x65, 0x6d,
	0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x16, 0x0a,
	0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e,
	0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c,
	0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f,
	0x64, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65,
	0x49, 0x64, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65,
	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64,
	0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x68, 0x6f, 0x73, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5c, 0x0a, 0x15,
	0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72,
	0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65,
	0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x22, 0x37, 0x0a, 0x19, 0x47, 0x65,
	0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x22, 0x56, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x38, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d,
	0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
	0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x22, 0x2d, 0x0a, 0x07, 0x54,
	0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x22, 0x6f, 0x0a, 0x11, 0x41, 0x64,
	0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74,
	0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x69,
	0x67, 0x67, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
	0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x14, 0x52,
	0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12,
	0x1c, 0x0a, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x49, 0x64, 0x22, 0x70, 0x0a,
	0x0b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72,
	0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x0a, 0x04,
	0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x63, 0x63,
	0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65,
	0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x2a,
	0x73, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x52,
	0x65, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x10, 0x00, 0x12, 0x11, 0x0a,
	0x0d, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x10, 0x01,
	0x12, 0x14, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x70,
	0x6c, 0x69, 0x63, 0x61, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x75, 0x72, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x73, 0x10, 0x04, 0x32, 0xc6, 0x0d, 0x0a, 0x0a, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77,
	0x61, 0x72, 0x65, 0x12, 0x58, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64,
	0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x58, 0x0a,
	0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12,
	0x2a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c,
	0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63,
	0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72,
	0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4b, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12,
	0x20, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c,
	0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x20, 0x2e, 0x6d,
	0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61,
	0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21,
	0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65,
	0x77, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x4b, 0x0a, 0x04, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x20, 0x2e, 0x6d, 0x63, 0x63, 0x2e,
	0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e,
	0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x63,
	0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72,
	0x65, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48,
	0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66,
	0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x55,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d,
	0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61,
	0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x48, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x12, 0x22, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69,
	0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65,
	0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70,
	0x74, 0x79, 0x12, 0x51, 0x0a, 0x06, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x22, 0x2e, 0x6d,
	0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61,
	0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x23, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64,
	0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12,
	0x22, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c,
	0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d,
	0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
	0x56, 0x0a, 0x0d, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
	0x12, 0x29, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64,
	0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x70,
	0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63,
	0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72,
	0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x52, 0x65,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x26, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64,
	0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x52,
	0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
	0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77,
	0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x6c, 0x0a, 0x0f, 0x47, 0x65, 0x74,
	0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x2e, 0x6d,
	0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61,
	0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6d, 0x63, 0x63, 0x2e,
	0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e,
	0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76,
	0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x29, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66,
	0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x52,
	0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d,
	0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
	0x5d, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12, 0x26, 0x2e,
	0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77,
	0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64,
	0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x52,
	0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66,
	0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x12,
	0x29, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c,
	0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x6c,
	0x69, 0x63, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x63, 0x63,
	0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65,
	0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x76, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x2e,
	0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77,
	0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54,
	0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e,
	0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77,
	0x61, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54,
	0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50,
	0x0a, 0x0a, 0x41, 0x64, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x6d,
	0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61,
	0x72, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e,
	0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
	0x12, 0x56, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
	0x72, 0x12, 0x29, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x72,
	0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d,
	0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61,
	0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55,
	0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d,
	0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64,
	0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74,
	0x79, 0x12, 0x4a, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12,
	0x20, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64, 0x64, 0x6c,
	0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x63, 0x63, 0x2e, 0x66, 0x72, 0x65, 0x64, 0x2e, 0x6d, 0x69, 0x64,
	0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x0e, 0x5a,
	0x0c, 0x2e, 0x3b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_middleware_proto_rawDescOnce sync.Once
	file_middleware_proto_rawDescData = file_middleware_proto_rawDesc
)

func file_middleware_proto_rawDescGZIP() []byte {
	file_middleware_proto_rawDescOnce.Do(func() {
		file_middleware_proto_rawDescData = protoimpl.X.CompressGZIP(file_middleware_proto_rawDescData)
	})
	return file_middleware_proto_rawDescData
}

var file_middleware_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_middleware_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_middleware_proto_goTypes = []interface{}{
	(UserRole)(0),                      // 0: mcc.fred.middleware.UserRole
	(*Empty)(nil),                      // 1: mcc.fred.middleware.Empty
	(*CreateKeygroupRequest)(nil),      // 2: mcc.fred.middleware.CreateKeygroupRequest
	(*DeleteKeygroupRequest)(nil),      // 3: mcc.fred.middleware.DeleteKeygroupRequest
	(*Item)(nil),                       // 4: mcc.fred.middleware.Item
	(*ReadRequest)(nil),                // 5: mcc.fred.middleware.ReadRequest
	(*ReadResponse)(nil),               // 6: mcc.fred.middleware.ReadResponse
	(*ScanRequest)(nil),                // 7: mcc.fred.middleware.ScanRequest
	(*ScanResponse)(nil),               // 8: mcc.fred.middleware.ScanResponse
	(*KeysRequest)(nil),                // 9: mcc.fred.middleware.KeysRequest
	(*KeysResponse)(nil),               // 10: mcc.fred.middleware.KeysResponse
	(*Key)(nil),                        // 11: mcc.fred.middleware.Key
	(*Data)(nil),                       // 12: mcc.fred.middleware.Data
	(*UpdateRequest)(nil),              // 13: mcc.fred.middleware.UpdateRequest
	(*AppendRequest)(nil),              // 14: mcc.fred.middleware.AppendRequest
	(*AppendResponse)(nil),             // 15: mcc.fred.middleware.AppendResponse
	(*NotifyRequest)(nil),              // 16: mcc.fred.middleware.NotifyRequest
	(*ChooseReplicaRequest)(nil),       // 17: mcc.fred.middleware.ChooseReplicaRequest
	(*DeleteRequest)(nil),              // 18: mcc.fred.middleware.DeleteRequest
	(*AddReplicaRequest)(nil),          // 19: mcc.fred.middleware.AddReplicaRequest
	(*GetKeygroupInfoRequest)(nil),     // 20: mcc.fred.middleware.GetKeygroupInfoRequest
	(*GetKeygroupInfoResponse)(nil),    // 21: mcc.fred.middleware.GetKeygroupInfoResponse
	(*KeygroupReplica)(nil),            // 22: mcc.fred.middleware.KeygroupReplica
	(*RemoveReplicaRequest)(nil),       // 23: mcc.fred.middleware.RemoveReplicaRequest
	(*GetReplicaRequest)(nil),          // 24: mcc.fred.middleware.GetReplicaRequest
	(*GetReplicaResponse)(nil),         // 25: mcc.fred.middleware.GetReplicaResponse
	(*GetAllReplicaRequest)(nil),       // 26: mcc.fred.middleware.GetAllReplicaRequest
	(*GetAllReplicaResponse)(nil),      // 27: mcc.fred.middleware.GetAllReplicaResponse
	(*GetKeygroupTriggerRequest)(nil),  // 28: mcc.fred.middleware.GetKeygroupTriggerRequest
	(*GetKeygroupTriggerResponse)(nil), // 29: mcc.fred.middleware.GetKeygroupTriggerResponse
	(*Trigger)(nil),                    // 30: mcc.fred.middleware.Trigger
	(*AddTriggerRequest)(nil),          // 31: mcc.fred.middleware.AddTriggerRequest
	(*RemoveTriggerRequest)(nil),       // 32: mcc.fred.middleware.RemoveTriggerRequest
	(*UserRequest)(nil),                // 33: mcc.fred.middleware.UserRequest
	nil,                                // 34: mcc.fred.middleware.Item.VersionEntry
	nil,                                // 35: mcc.fred.middleware.NotifyRequest.VersionEntry
}
var file_middleware_proto_depIdxs = []int32{
	34, // 0: mcc.fred.middleware.Item.version:type_name -> mcc.fred.middleware.Item.VersionEntry
	4,  // 1: mcc.fred.middleware.ReadResponse.items:type_name -> mcc.fred.middleware.Item
	12, // 2: mcc.fred.middleware.ScanResponse.data:type_name -> mcc.fred.middleware.Data
	11, // 3: mcc.fred.middleware.KeysResponse.keys:type_name -> mcc.fred.middleware.Key
	35, // 4: mcc.fred.middleware.NotifyRequest.version:type_name -> mcc.fred.middleware.NotifyRequest.VersionEntry
	22, // 5: mcc.fred.middleware.GetKeygroupInfoResponse.replica:type_name -> mcc.fred.middleware.KeygroupReplica
	25, // 6: mcc.fred.middleware.GetAllReplicaResponse.replicas:type_name -> mcc.fred.middleware.GetReplicaResponse
	30, // 7: mcc.fred.middleware.GetKeygroupTriggerResponse.triggers:type_name -> mcc.fred.middleware.Trigger
	0,  // 8: mcc.fred.middleware.UserRequest.role:type_name -> mcc.fred.middleware.UserRole
	2,  // 9: mcc.fred.middleware.Middleware.CreateKeygroup:input_type -> mcc.fred.middleware.CreateKeygroupRequest
	3,  // 10: mcc.fred.middleware.Middleware.DeleteKeygroup:input_type -> mcc.fred.middleware.DeleteKeygroupRequest
	5,  // 11: mcc.fred.middleware.Middleware.Read:input_type -> mcc.fred.middleware.ReadRequest
	7,  // 12: mcc.fred.middleware.Middleware.Scan:input_type -> mcc.fred.middleware.ScanRequest
	9,  // 13: mcc.fred.middleware.Middleware.Keys:input_type -> mcc.fred.middleware.KeysRequest
	13, // 14: mcc.fred.middleware.Middleware.Update:input_type -> mcc.fred.middleware.UpdateRequest
	18, // 15: mcc.fred.middleware.Middleware.Delete:input_type -> mcc.fred.middleware.DeleteRequest
	14, // 16: mcc.fred.middleware.Middleware.Append:input_type -> mcc.fred.middleware.AppendRequest
	16, // 17: mcc.fred.middleware.Middleware.Notify:input_type -> mcc.fred.middleware.NotifyRequest
	17, // 18: mcc.fred.middleware.Middleware.ChooseReplica:input_type -> mcc.fred.middleware.ChooseReplicaRequest
	19, // 19: mcc.fred.middleware.Middleware.AddReplica:input_type -> mcc.fred.middleware.AddReplicaRequest
	20, // 20: mcc.fred.middleware.Middleware.GetKeygroupInfo:input_type -> mcc.fred.middleware.GetKeygroupInfoRequest
	23, // 21: mcc.fred.middleware.Middleware.RemoveReplica:input_type -> mcc.fred.middleware.RemoveReplicaRequest
	24, // 22: mcc.fred.middleware.Middleware.GetReplica:input_type -> mcc.fred.middleware.GetReplicaRequest
	26, // 23: mcc.fred.middleware.Middleware.GetAllReplica:input_type -> mcc.fred.middleware.GetAllReplicaRequest
	28, // 24: mcc.fred.middleware.Middleware.GetKeygroupTriggers:input_type -> mcc.fred.middleware.GetKeygroupTriggerRequest
	31, // 25: mcc.fred.middleware.Middleware.AddTrigger:input_type -> mcc.fred.middleware.AddTriggerRequest
	32, // 26: mcc.fred.middleware.Middleware.RemoveTrigger:input_type -> mcc.fred.middleware.RemoveTriggerRequest
	33, // 27: mcc.fred.middleware.Middleware.AddUser:input_type -> mcc.fred.middleware.UserRequest
	33, // 28: mcc.fred.middleware.Middleware.RemoveUser:input_type -> mcc.fred.middleware.UserRequest
	1,  // 29: mcc.fred.middleware.Middleware.CreateKeygroup:output_type -> mcc.fred.middleware.Empty
	1,  // 30: mcc.fred.middleware.Middleware.DeleteKeygroup:output_type -> mcc.fred.middleware.Empty
	6,  // 31: mcc.fred.middleware.Middleware.Read:output_type -> mcc.fred.middleware.ReadResponse
	8,  // 32: mcc.fred.middleware.Middleware.Scan:output_type -> mcc.fred.middleware.ScanResponse
	10, // 33: mcc.fred.middleware.Middleware.Keys:output_type -> mcc.fred.middleware.KeysResponse
	1,  // 34: mcc.fred.middleware.Middleware.Update:output_type -> mcc.fred.middleware.Empty
	1,  // 35: mcc.fred.middleware.Middleware.Delete:output_type -> mcc.fred.middleware.Empty
	15, // 36: mcc.fred.middleware.Middleware.Append:output_type -> mcc.fred.middleware.AppendResponse
	1,  // 37: mcc.fred.middleware.Middleware.Notify:output_type -> mcc.fred.middleware.Empty
	1,  // 38: mcc.fred.middleware.Middleware.ChooseReplica:output_type -> mcc.fred.middleware.Empty
	1,  // 39: mcc.fred.middleware.Middleware.AddReplica:output_type -> mcc.fred.middleware.Empty
	21, // 40: mcc.fred.middleware.Middleware.GetKeygroupInfo:output_type -> mcc.fred.middleware.GetKeygroupInfoResponse
	1,  // 41: mcc.fred.middleware.Middleware.RemoveReplica:output_type -> mcc.fred.middleware.Empty
	25, // 42: mcc.fred.middleware.Middleware.GetReplica:output_type -> mcc.fred.middleware.GetReplicaResponse
	27, // 43: mcc.fred.middleware.Middleware.GetAllReplica:output_type -> mcc.fred.middleware.GetAllReplicaResponse
	29, // 44: mcc.fred.middleware.Middleware.GetKeygroupTriggers:output_type -> mcc.fred.middleware.GetKeygroupTriggerResponse
	1,  // 45: mcc.fred.middleware.Middleware.AddTrigger:output_type -> mcc.fred.middleware.Empty
	1,  // 46: mcc.fred.middleware.Middleware.RemoveTrigger:output_type -> mcc.fred.middleware.Empty
	1,  // 47: mcc.fred.middleware.Middleware.AddUser:output_type -> mcc.fred.middleware.Empty
	1,  // 48: mcc.fred.middleware.Middleware.RemoveUser:output_type -> mcc.fred.middleware.Empty
	29, // [29:49] is the sub-list for method output_type
	9,  // [9:29] is the sub-list for method input_type
	9,  // [9:9] is the sub-list for extension type_name
	9,  // [9:9] is the sub-list for extension extendee
	0,  // [0:9] is the sub-list for field type_name
}

func init() { file_middleware_proto_init() }
func file_middleware_proto_init() {
	if File_middleware_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_middleware_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Empty); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateKeygroupRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteKeygroupRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Item); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReadRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReadResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ScanRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ScanResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeysRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeysResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Key); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Data); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UpdateRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppendRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppendResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NotifyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ChooseReplicaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[17].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_middleware_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddReplicaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetKeygroupInfoRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetKeygroupInfoResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*KeygroupReplica); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveReplicaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetReplicaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetReplicaResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAllReplicaRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetAllReplicaResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetKeygroupTriggerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetKeygroupTriggerResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Trigger); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AddTriggerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RemoveTriggerRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_middleware_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRequest); 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_middleware_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   35,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_middleware_proto_goTypes,
		DependencyIndexes: file_middleware_proto_depIdxs,
		EnumInfos:         file_middleware_proto_enumTypes,
		MessageInfos:      file_middleware_proto_msgTypes,
	}.Build()
	File_middleware_proto = out.File
	file_middleware_proto_rawDesc = nil
	file_middleware_proto_goTypes = nil
	file_middleware_proto_depIdxs = nil
}