// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.5
// 	protoc        v5.28.3
// source: gb28181.proto

//import "global.proto";

package pb

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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 BaseResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BaseResponse) Reset() {
	*x = BaseResponse{}
	mi := &file_gb28181_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BaseResponse) ProtoMessage() {}

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

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

func (x *BaseResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *BaseResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

// 请求和响应消息定义
type GetDeviceRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetDeviceRequest) Reset() {
	*x = GetDeviceRequest{}
	mi := &file_gb28181_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetDeviceRequest) ProtoMessage() {}

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

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

func (x *GetDeviceRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type GetDevicesRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Page          int32                  `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"`
	Count         int32                  `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
	Query         string                 `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
	Status        bool                   `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetDevicesRequest) Reset() {
	*x = GetDevicesRequest{}
	mi := &file_gb28181_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetDevicesRequest) ProtoMessage() {}

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

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

func (x *GetDevicesRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *GetDevicesRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *GetDevicesRequest) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

type DevicesPageInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Total         int32                  `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
	Data          []*Device              `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DevicesPageInfo) Reset() {
	*x = DevicesPageInfo{}
	mi := &file_gb28181_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DevicesPageInfo) ProtoMessage() {}

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

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

func (x *DevicesPageInfo) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *DevicesPageInfo) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DevicesPageInfo) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

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

type GetChannelsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	Page          int32                  `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	Count         int32                  `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
	Query         string                 `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"`
	Online        bool                   `protobuf:"varint,5,opt,name=online,proto3" json:"online,omitempty"`
	ChannelType   bool                   `protobuf:"varint,6,opt,name=channelType,proto3" json:"channelType,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetChannelsRequest) Reset() {
	*x = GetChannelsRequest{}
	mi := &file_gb28181_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetChannelsRequest) ProtoMessage() {}

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

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

func (x *GetChannelsRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *GetChannelsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *GetChannelsRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *GetChannelsRequest) GetOnline() bool {
	if x != nil {
		return x.Online
	}
	return false
}

func (x *GetChannelsRequest) GetChannelType() bool {
	if x != nil {
		return x.ChannelType
	}
	return false
}

type ChannelsPageInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Total         int32                  `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
	List          []*Channel             `protobuf:"bytes,4,rep,name=list,proto3" json:"list,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ChannelsPageInfo) Reset() {
	*x = ChannelsPageInfo{}
	mi := &file_gb28181_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ChannelsPageInfo) ProtoMessage() {}

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

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

func (x *ChannelsPageInfo) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *ChannelsPageInfo) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *ChannelsPageInfo) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *ChannelsPageInfo) GetList() []*Channel {
	if x != nil {
		return x.List
	}
	return nil
}

type SyncDeviceRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SyncDeviceRequest) Reset() {
	*x = SyncDeviceRequest{}
	mi := &file_gb28181_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SyncDeviceRequest) ProtoMessage() {}

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

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

func (x *SyncDeviceRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type SyncStatus struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Total         int32                  `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
	Current       int32                  `protobuf:"varint,4,opt,name=current,proto3" json:"current,omitempty"`
	ErrorMsg      string                 `protobuf:"bytes,5,opt,name=errorMsg,proto3" json:"errorMsg,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SyncStatus) Reset() {
	*x = SyncStatus{}
	mi := &file_gb28181_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SyncStatus) ProtoMessage() {}

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

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

func (x *SyncStatus) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *SyncStatus) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *SyncStatus) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *SyncStatus) GetCurrent() int32 {
	if x != nil {
		return x.Current
	}
	return 0
}

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

type DeleteDeviceRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteDeviceRequest) Reset() {
	*x = DeleteDeviceRequest{}
	mi := &file_gb28181_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeleteDeviceRequest) ProtoMessage() {}

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

// Deprecated: Use DeleteDeviceRequest.ProtoReflect.Descriptor instead.
func (*DeleteDeviceRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{8}
}

func (x *DeleteDeviceRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type DeleteDeviceResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	DeviceId      string                 `protobuf:"bytes,3,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteDeviceResponse) Reset() {
	*x = DeleteDeviceResponse{}
	mi := &file_gb28181_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeleteDeviceResponse) ProtoMessage() {}

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

// Deprecated: Use DeleteDeviceResponse.ProtoReflect.Descriptor instead.
func (*DeleteDeviceResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{9}
}

func (x *DeleteDeviceResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *DeleteDeviceResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DeleteDeviceResponse) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type GetSubChannelsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Page          int32                  `protobuf:"varint,3,opt,name=page,proto3" json:"page,omitempty"`
	Count         int32                  `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	Query         string                 `protobuf:"bytes,5,opt,name=query,proto3" json:"query,omitempty"`
	Online        bool                   `protobuf:"varint,6,opt,name=online,proto3" json:"online,omitempty"`
	ChannelType   bool                   `protobuf:"varint,7,opt,name=channelType,proto3" json:"channelType,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSubChannelsRequest) Reset() {
	*x = GetSubChannelsRequest{}
	mi := &file_gb28181_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetSubChannelsRequest) ProtoMessage() {}

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

// Deprecated: Use GetSubChannelsRequest.ProtoReflect.Descriptor instead.
func (*GetSubChannelsRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{10}
}

func (x *GetSubChannelsRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *GetSubChannelsRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *GetSubChannelsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *GetSubChannelsRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *GetSubChannelsRequest) GetOnline() bool {
	if x != nil {
		return x.Online
	}
	return false
}

func (x *GetSubChannelsRequest) GetChannelType() bool {
	if x != nil {
		return x.ChannelType
	}
	return false
}

type Channel struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceID      string                 `protobuf:"bytes,1,opt,name=DeviceID,proto3" json:"DeviceID,omitempty"`
	ParentID      string                 `protobuf:"bytes,2,opt,name=ParentID,proto3" json:"ParentID,omitempty"`
	Name          string                 `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
	Manufacturer  string                 `protobuf:"bytes,4,opt,name=Manufacturer,proto3" json:"Manufacturer,omitempty"`
	Model         string                 `protobuf:"bytes,5,opt,name=Model,proto3" json:"Model,omitempty"`
	Owner         string                 `protobuf:"bytes,6,opt,name=Owner,proto3" json:"Owner,omitempty"`
	CivilCode     string                 `protobuf:"bytes,7,opt,name=CivilCode,proto3" json:"CivilCode,omitempty"`
	Address       string                 `protobuf:"bytes,8,opt,name=Address,proto3" json:"Address,omitempty"`
	Port          int32                  `protobuf:"varint,9,opt,name=Port,proto3" json:"Port,omitempty"`
	Parental      int32                  `protobuf:"varint,10,opt,name=Parental,proto3" json:"Parental,omitempty"`
	SafetyWay     int32                  `protobuf:"varint,11,opt,name=SafetyWay,proto3" json:"SafetyWay,omitempty"`
	RegisterWay   int32                  `protobuf:"varint,12,opt,name=RegisterWay,proto3" json:"RegisterWay,omitempty"`
	Secrecy       int32                  `protobuf:"varint,13,opt,name=Secrecy,proto3" json:"Secrecy,omitempty"`
	Status        string                 `protobuf:"bytes,14,opt,name=Status,proto3" json:"Status,omitempty"`
	GpsTime       *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=GpsTime,proto3" json:"GpsTime,omitempty"`
	Longitude     string                 `protobuf:"bytes,16,opt,name=Longitude,proto3" json:"Longitude,omitempty"`
	Latitude      string                 `protobuf:"bytes,17,opt,name=Latitude,proto3" json:"Latitude,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Channel) Reset() {
	*x = Channel{}
	mi := &file_gb28181_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Channel) ProtoMessage() {}

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

// Deprecated: Use Channel.ProtoReflect.Descriptor instead.
func (*Channel) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{11}
}

func (x *Channel) GetDeviceID() string {
	if x != nil {
		return x.DeviceID
	}
	return ""
}

func (x *Channel) GetParentID() string {
	if x != nil {
		return x.ParentID
	}
	return ""
}

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

func (x *Channel) GetManufacturer() string {
	if x != nil {
		return x.Manufacturer
	}
	return ""
}

func (x *Channel) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *Channel) GetOwner() string {
	if x != nil {
		return x.Owner
	}
	return ""
}

func (x *Channel) GetCivilCode() string {
	if x != nil {
		return x.CivilCode
	}
	return ""
}

func (x *Channel) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *Channel) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *Channel) GetParental() int32 {
	if x != nil {
		return x.Parental
	}
	return 0
}

func (x *Channel) GetSafetyWay() int32 {
	if x != nil {
		return x.SafetyWay
	}
	return 0
}

func (x *Channel) GetRegisterWay() int32 {
	if x != nil {
		return x.RegisterWay
	}
	return 0
}

func (x *Channel) GetSecrecy() int32 {
	if x != nil {
		return x.Secrecy
	}
	return 0
}

func (x *Channel) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Channel) GetGpsTime() *timestamppb.Timestamp {
	if x != nil {
		return x.GpsTime
	}
	return nil
}

func (x *Channel) GetLongitude() string {
	if x != nil {
		return x.Longitude
	}
	return ""
}

func (x *Channel) GetLatitude() string {
	if x != nil {
		return x.Latitude
	}
	return ""
}

type Device struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceID      string                 `protobuf:"bytes,1,opt,name=DeviceID,proto3" json:"DeviceID,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"`
	Manufacturer  string                 `protobuf:"bytes,3,opt,name=Manufacturer,proto3" json:"Manufacturer,omitempty"`
	Model         string                 `protobuf:"bytes,4,opt,name=Model,proto3" json:"Model,omitempty"`
	Longitude     string                 `protobuf:"bytes,5,opt,name=Longitude,proto3" json:"Longitude,omitempty"`
	Latitude      string                 `protobuf:"bytes,6,opt,name=Latitude,proto3" json:"Latitude,omitempty"`
	Status        string                 `protobuf:"bytes,9,opt,name=Status,proto3" json:"Status,omitempty"`
	RegisterTime  *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=RegisterTime,proto3" json:"RegisterTime,omitempty"`
	UpdateTime    *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=UpdateTime,proto3" json:"UpdateTime,omitempty"`
	KeepAliveTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=KeepAliveTime,proto3" json:"KeepAliveTime,omitempty"`
	ChannelCount  int32                  `protobuf:"varint,13,opt,name=ChannelCount,proto3" json:"ChannelCount,omitempty"`
	Online        bool                   `protobuf:"varint,14,opt,name=Online,proto3" json:"Online,omitempty"`
	Channels      []*Channel             `protobuf:"bytes,15,rep,name=Channels,proto3" json:"Channels,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Device) Reset() {
	*x = Device{}
	mi := &file_gb28181_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Device) ProtoMessage() {}

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

// Deprecated: Use Device.ProtoReflect.Descriptor instead.
func (*Device) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{12}
}

func (x *Device) GetDeviceID() string {
	if x != nil {
		return x.DeviceID
	}
	return ""
}

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

func (x *Device) GetManufacturer() string {
	if x != nil {
		return x.Manufacturer
	}
	return ""
}

func (x *Device) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *Device) GetLongitude() string {
	if x != nil {
		return x.Longitude
	}
	return ""
}

func (x *Device) GetLatitude() string {
	if x != nil {
		return x.Latitude
	}
	return ""
}

func (x *Device) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Device) GetRegisterTime() *timestamppb.Timestamp {
	if x != nil {
		return x.RegisterTime
	}
	return nil
}

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

func (x *Device) GetKeepAliveTime() *timestamppb.Timestamp {
	if x != nil {
		return x.KeepAliveTime
	}
	return nil
}

func (x *Device) GetChannelCount() int32 {
	if x != nil {
		return x.ChannelCount
	}
	return 0
}

func (x *Device) GetOnline() bool {
	if x != nil {
		return x.Online
	}
	return false
}

func (x *Device) GetChannels() []*Channel {
	if x != nil {
		return x.Channels
	}
	return nil
}

type ResponseList struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          []*Device              `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResponseList) Reset() {
	*x = ResponseList{}
	mi := &file_gb28181_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ResponseList) ProtoMessage() {}

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

// Deprecated: Use ResponseList.ProtoReflect.Descriptor instead.
func (*ResponseList) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{13}
}

func (x *ResponseList) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *ResponseList) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

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

// 新增的请求和响应消息定义
type ChangeAudioRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ChannelId     int32                  `protobuf:"varint,1,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Audio         bool                   `protobuf:"varint,2,opt,name=audio,proto3" json:"audio,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ChangeAudioRequest) Reset() {
	*x = ChangeAudioRequest{}
	mi := &file_gb28181_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ChangeAudioRequest) ProtoMessage() {}

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

// Deprecated: Use ChangeAudioRequest.ProtoReflect.Descriptor instead.
func (*ChangeAudioRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{14}
}

func (x *ChangeAudioRequest) GetChannelId() int32 {
	if x != nil {
		return x.ChannelId
	}
	return 0
}

func (x *ChangeAudioRequest) GetAudio() bool {
	if x != nil {
		return x.Audio
	}
	return false
}

type UpdateTransportRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	StreamMode    string                 `protobuf:"bytes,2,opt,name=streamMode,proto3" json:"streamMode,omitempty"` // UDP, TCP-ACTIVE, TCP-PASSIVE
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateTransportRequest) Reset() {
	*x = UpdateTransportRequest{}
	mi := &file_gb28181_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UpdateTransportRequest) ProtoMessage() {}

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

// Deprecated: Use UpdateTransportRequest.ProtoReflect.Descriptor instead.
func (*UpdateTransportRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{15}
}

func (x *UpdateTransportRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *UpdateTransportRequest) GetStreamMode() string {
	if x != nil {
		return x.StreamMode
	}
	return ""
}

type GetDeviceStatusRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetDeviceStatusRequest) Reset() {
	*x = GetDeviceStatusRequest{}
	mi := &file_gb28181_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetDeviceStatusRequest) ProtoMessage() {}

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

// Deprecated: Use GetDeviceStatusRequest.ProtoReflect.Descriptor instead.
func (*GetDeviceStatusRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{16}
}

func (x *GetDeviceStatusRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type DeviceStatusResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Status        string                 `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeviceStatusResponse) Reset() {
	*x = DeviceStatusResponse{}
	mi := &file_gb28181_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeviceStatusResponse) ProtoMessage() {}

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

// Deprecated: Use DeviceStatusResponse.ProtoReflect.Descriptor instead.
func (*DeviceStatusResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{17}
}

func (x *DeviceStatusResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *DeviceStatusResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DeviceStatusResponse) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

type GetDeviceAlarmRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	StartPriority string                 `protobuf:"bytes,2,opt,name=startPriority,proto3" json:"startPriority,omitempty"`
	EndPriority   string                 `protobuf:"bytes,3,opt,name=endPriority,proto3" json:"endPriority,omitempty"`
	AlarmMethod   string                 `protobuf:"bytes,4,opt,name=alarmMethod,proto3" json:"alarmMethod,omitempty"`
	AlarmType     string                 `protobuf:"bytes,5,opt,name=alarmType,proto3" json:"alarmType,omitempty"`
	StartTime     string                 `protobuf:"bytes,6,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,7,opt,name=endTime,proto3" json:"endTime,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetDeviceAlarmRequest) Reset() {
	*x = GetDeviceAlarmRequest{}
	mi := &file_gb28181_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetDeviceAlarmRequest) ProtoMessage() {}

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

// Deprecated: Use GetDeviceAlarmRequest.ProtoReflect.Descriptor instead.
func (*GetDeviceAlarmRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{18}
}

func (x *GetDeviceAlarmRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *GetDeviceAlarmRequest) GetStartPriority() string {
	if x != nil {
		return x.StartPriority
	}
	return ""
}

func (x *GetDeviceAlarmRequest) GetEndPriority() string {
	if x != nil {
		return x.EndPriority
	}
	return ""
}

func (x *GetDeviceAlarmRequest) GetAlarmMethod() string {
	if x != nil {
		return x.AlarmMethod
	}
	return ""
}

func (x *GetDeviceAlarmRequest) GetAlarmType() string {
	if x != nil {
		return x.AlarmType
	}
	return ""
}

func (x *GetDeviceAlarmRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *GetDeviceAlarmRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

type DeviceAlarmResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Alarms        []*AlarmInfo           `protobuf:"bytes,3,rep,name=alarms,proto3" json:"alarms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeviceAlarmResponse) Reset() {
	*x = DeviceAlarmResponse{}
	mi := &file_gb28181_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeviceAlarmResponse) ProtoMessage() {}

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

// Deprecated: Use DeviceAlarmResponse.ProtoReflect.Descriptor instead.
func (*DeviceAlarmResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{19}
}

func (x *DeviceAlarmResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *DeviceAlarmResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DeviceAlarmResponse) GetAlarms() []*AlarmInfo {
	if x != nil {
		return x.Alarms
	}
	return nil
}

type AlarmInfo struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	DeviceId         string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	AlarmPriority    string                 `protobuf:"bytes,2,opt,name=alarmPriority,proto3" json:"alarmPriority,omitempty"`
	AlarmMethod      string                 `protobuf:"bytes,3,opt,name=alarmMethod,proto3" json:"alarmMethod,omitempty"`
	AlarmTime        string                 `protobuf:"bytes,4,opt,name=alarmTime,proto3" json:"alarmTime,omitempty"`
	AlarmDescription string                 `protobuf:"bytes,5,opt,name=alarmDescription,proto3" json:"alarmDescription,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *AlarmInfo) Reset() {
	*x = AlarmInfo{}
	mi := &file_gb28181_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AlarmInfo) ProtoMessage() {}

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

// Deprecated: Use AlarmInfo.ProtoReflect.Descriptor instead.
func (*AlarmInfo) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{20}
}

func (x *AlarmInfo) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *AlarmInfo) GetAlarmPriority() string {
	if x != nil {
		return x.AlarmPriority
	}
	return ""
}

func (x *AlarmInfo) GetAlarmMethod() string {
	if x != nil {
		return x.AlarmMethod
	}
	return ""
}

func (x *AlarmInfo) GetAlarmTime() string {
	if x != nil {
		return x.AlarmTime
	}
	return ""
}

func (x *AlarmInfo) GetAlarmDescription() string {
	if x != nil {
		return x.AlarmDescription
	}
	return ""
}

type GetSyncStatusRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSyncStatusRequest) Reset() {
	*x = GetSyncStatusRequest{}
	mi := &file_gb28181_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetSyncStatusRequest) ProtoMessage() {}

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

// Deprecated: Use GetSyncStatusRequest.ProtoReflect.Descriptor instead.
func (*GetSyncStatusRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{21}
}

func (x *GetSyncStatusRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type GetSubscribeInfoRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSubscribeInfoRequest) Reset() {
	*x = GetSubscribeInfoRequest{}
	mi := &file_gb28181_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetSubscribeInfoRequest) ProtoMessage() {}

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

// Deprecated: Use GetSubscribeInfoRequest.ProtoReflect.Descriptor instead.
func (*GetSubscribeInfoRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{22}
}

func (x *GetSubscribeInfoRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

type SubscribeInfoResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	DialogState   map[string]int32       `protobuf:"bytes,3,rep,name=dialogState,proto3" json:"dialogState,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SubscribeInfoResponse) Reset() {
	*x = SubscribeInfoResponse{}
	mi := &file_gb28181_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SubscribeInfoResponse) ProtoMessage() {}

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

// Deprecated: Use SubscribeInfoResponse.ProtoReflect.Descriptor instead.
func (*SubscribeInfoResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{23}
}

func (x *SubscribeInfoResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *SubscribeInfoResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *SubscribeInfoResponse) GetDialogState() map[string]int32 {
	if x != nil {
		return x.DialogState
	}
	return nil
}

type GetSnapRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Mark          string                 `protobuf:"bytes,3,opt,name=mark,proto3" json:"mark,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetSnapRequest) Reset() {
	*x = GetSnapRequest{}
	mi := &file_gb28181_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetSnapRequest) ProtoMessage() {}

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

// Deprecated: Use GetSnapRequest.ProtoReflect.Descriptor instead.
func (*GetSnapRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{24}
}

func (x *GetSnapRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *GetSnapRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *GetSnapRequest) GetMark() string {
	if x != nil {
		return x.Mark
	}
	return ""
}

type SnapResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	ImageData     []byte                 `protobuf:"bytes,3,opt,name=imageData,proto3" json:"imageData,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SnapResponse) Reset() {
	*x = SnapResponse{}
	mi := &file_gb28181_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SnapResponse) ProtoMessage() {}

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

// Deprecated: Use SnapResponse.ProtoReflect.Descriptor instead.
func (*SnapResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{25}
}

func (x *SnapResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *SnapResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *SnapResponse) GetImageData() []byte {
	if x != nil {
		return x.ImageData
	}
	return nil
}

type GetRawChannelRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            int32                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetRawChannelRequest) Reset() {
	*x = GetRawChannelRequest{}
	mi := &file_gb28181_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetRawChannelRequest) ProtoMessage() {}

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

// Deprecated: Use GetRawChannelRequest.ProtoReflect.Descriptor instead.
func (*GetRawChannelRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{26}
}

func (x *GetRawChannelRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

type DeviceResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          *Device                `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeviceResponse) Reset() {
	*x = DeviceResponse{}
	mi := &file_gb28181_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeviceResponse) ProtoMessage() {}

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

// Deprecated: Use DeviceResponse.ProtoReflect.Descriptor instead.
func (*DeviceResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{27}
}

func (x *DeviceResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *DeviceResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *DeviceResponse) GetData() *Device {
	if x != nil {
		return x.Data
	}
	return nil
}

type ChannelResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          *Channel               `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ChannelResponse) Reset() {
	*x = ChannelResponse{}
	mi := &file_gb28181_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ChannelResponse) ProtoMessage() {}

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

// Deprecated: Use ChannelResponse.ProtoReflect.Descriptor instead.
func (*ChannelResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{28}
}

func (x *ChannelResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *ChannelResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *ChannelResponse) GetData() *Channel {
	if x != nil {
		return x.Data
	}
	return nil
}

type PlayRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlayRequest) Reset() {
	*x = PlayRequest{}
	mi := &file_gb28181_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlayRequest) ProtoMessage() {}

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

// Deprecated: Use PlayRequest.ProtoReflect.Descriptor instead.
func (*PlayRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{29}
}

func (x *PlayRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *PlayRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

type PlaybackRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Start         string                 `protobuf:"bytes,3,opt,name=start,proto3" json:"start,omitempty"` // 开始时间
	End           string                 `protobuf:"bytes,4,opt,name=end,proto3" json:"end,omitempty"`     // 结束时间
	Range         string                 `protobuf:"bytes,5,opt,name=range,proto3" json:"range,omitempty"` // 时间范围，可选
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlaybackRequest) Reset() {
	*x = PlaybackRequest{}
	mi := &file_gb28181_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlaybackRequest) ProtoMessage() {}

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

// Deprecated: Use PlaybackRequest.ProtoReflect.Descriptor instead.
func (*PlaybackRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{30}
}

func (x *PlaybackRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *PlaybackRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *PlaybackRequest) GetStart() string {
	if x != nil {
		return x.Start
	}
	return ""
}

func (x *PlaybackRequest) GetEnd() string {
	if x != nil {
		return x.End
	}
	return ""
}

func (x *PlaybackRequest) GetRange() string {
	if x != nil {
		return x.Range
	}
	return ""
}

type PlayResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	StreamInfo    *StreamInfo            `protobuf:"bytes,3,opt,name=stream_info,json=streamInfo,proto3" json:"stream_info,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlayResponse) Reset() {
	*x = PlayResponse{}
	mi := &file_gb28181_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlayResponse) ProtoMessage() {}

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

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

func (x *PlayResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *PlayResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *PlayResponse) GetStreamInfo() *StreamInfo {
	if x != nil {
		return x.StreamInfo
	}
	return nil
}

type StreamInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Stream        string                 `protobuf:"bytes,1,opt,name=stream,proto3" json:"stream,omitempty"`
	App           string                 `protobuf:"bytes,2,opt,name=app,proto3" json:"app,omitempty"`
	Ip            string                 `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"`
	Port          int32                  `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
	Ssrc          string                 `protobuf:"bytes,5,opt,name=ssrc,proto3" json:"ssrc,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *StreamInfo) Reset() {
	*x = StreamInfo{}
	mi := &file_gb28181_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*StreamInfo) ProtoMessage() {}

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

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

func (x *StreamInfo) GetStream() string {
	if x != nil {
		return x.Stream
	}
	return ""
}

func (x *StreamInfo) GetApp() string {
	if x != nil {
		return x.App
	}
	return ""
}

func (x *StreamInfo) GetIp() string {
	if x != nil {
		return x.Ip
	}
	return ""
}

func (x *StreamInfo) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *StreamInfo) GetSsrc() string {
	if x != nil {
		return x.Ssrc
	}
	return ""
}

type ConvertStopRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Key           string                 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	MediaServerId string                 `protobuf:"bytes,2,opt,name=mediaServerId,proto3" json:"mediaServerId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ConvertStopRequest) Reset() {
	*x = ConvertStopRequest{}
	mi := &file_gb28181_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ConvertStopRequest) ProtoMessage() {}

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

// Deprecated: Use ConvertStopRequest.ProtoReflect.Descriptor instead.
func (*ConvertStopRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{33}
}

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

func (x *ConvertStopRequest) GetMediaServerId() string {
	if x != nil {
		return x.MediaServerId
	}
	return ""
}

type BroadcastRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Timeout       int32                  `protobuf:"varint,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
	BroadcastMode bool                   `protobuf:"varint,4,opt,name=broadcastMode,proto3" json:"broadcastMode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BroadcastRequest) Reset() {
	*x = BroadcastRequest{}
	mi := &file_gb28181_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BroadcastRequest) ProtoMessage() {}

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

// Deprecated: Use BroadcastRequest.ProtoReflect.Descriptor instead.
func (*BroadcastRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{34}
}

func (x *BroadcastRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *BroadcastRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *BroadcastRequest) GetTimeout() int32 {
	if x != nil {
		return x.Timeout
	}
	return 0
}

func (x *BroadcastRequest) GetBroadcastMode() bool {
	if x != nil {
		return x.BroadcastMode
	}
	return false
}

type BroadcastResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	StreamId      string                 `protobuf:"bytes,3,opt,name=streamId,proto3" json:"streamId,omitempty"`
	Url           string                 `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BroadcastResponse) Reset() {
	*x = BroadcastResponse{}
	mi := &file_gb28181_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BroadcastResponse) ProtoMessage() {}

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

// Deprecated: Use BroadcastResponse.ProtoReflect.Descriptor instead.
func (*BroadcastResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{35}
}

func (x *BroadcastResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *BroadcastResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *BroadcastResponse) GetStreamId() string {
	if x != nil {
		return x.StreamId
	}
	return ""
}

func (x *BroadcastResponse) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

type SSRCInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Ssrc          string                 `protobuf:"bytes,3,opt,name=ssrc,proto3" json:"ssrc,omitempty"`
	StreamId      string                 `protobuf:"bytes,4,opt,name=streamId,proto3" json:"streamId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SSRCInfo) Reset() {
	*x = SSRCInfo{}
	mi := &file_gb28181_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SSRCInfo) ProtoMessage() {}

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

// Deprecated: Use SSRCInfo.ProtoReflect.Descriptor instead.
func (*SSRCInfo) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{36}
}

func (x *SSRCInfo) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *SSRCInfo) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *SSRCInfo) GetSsrc() string {
	if x != nil {
		return x.Ssrc
	}
	return ""
}

func (x *SSRCInfo) GetStreamId() string {
	if x != nil {
		return x.StreamId
	}
	return ""
}

type SSRCListResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          []*SSRCInfo            `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`
	Count         int32                  `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SSRCListResponse) Reset() {
	*x = SSRCListResponse{}
	mi := &file_gb28181_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SSRCListResponse) ProtoMessage() {}

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

// Deprecated: Use SSRCListResponse.ProtoReflect.Descriptor instead.
func (*SSRCListResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{37}
}

func (x *SSRCListResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *SSRCListResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

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

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

// Platform消息定义
type Platform struct {
	state                   protoimpl.MessageState `protogen:"open.v1"`
	ID                      uint32                 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`                                            // ID(数据库中)
	Enable                  bool                   `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"`                                    // 是否启用
	Name                    string                 `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`                                         // 名称
	ServerGBId              string                 `protobuf:"bytes,4,opt,name=serverGBId,proto3" json:"serverGBId,omitempty"`                             // SIP服务国标编码
	ServerGBDomain          string                 `protobuf:"bytes,5,opt,name=serverGBDomain,proto3" json:"serverGBDomain,omitempty"`                     // SIP服务国标域
	ServerIp                string                 `protobuf:"bytes,6,opt,name=serverIp,proto3" json:"serverIp,omitempty"`                                 // SIP服务IP
	ServerPort              int32                  `protobuf:"varint,7,opt,name=serverPort,proto3" json:"serverPort,omitempty"`                            // SIP服务端口
	DeviceGBId              string                 `protobuf:"bytes,8,opt,name=deviceGBId,proto3" json:"deviceGBId,omitempty"`                             // 设备国标编号
	DeviceIp                string                 `protobuf:"bytes,9,opt,name=deviceIp,proto3" json:"deviceIp,omitempty"`                                 // 设备ip
	DevicePort              int32                  `protobuf:"varint,10,opt,name=devicePort,proto3" json:"devicePort,omitempty"`                           // 设备端口
	Username                string                 `protobuf:"bytes,11,opt,name=username,proto3" json:"username,omitempty"`                                // SIP认证用户名
	Password                string                 `protobuf:"bytes,12,opt,name=password,proto3" json:"password,omitempty"`                                // SIP认证密码
	Expires                 int32                  `protobuf:"varint,13,opt,name=expires,proto3" json:"expires,omitempty"`                                 // 注册周期(秒)
	KeepTimeout             int32                  `protobuf:"varint,14,opt,name=keepTimeout,proto3" json:"keepTimeout,omitempty"`                         // 心跳周期(秒)
	Transport               string                 `protobuf:"bytes,15,opt,name=transport,proto3" json:"transport,omitempty"`                              // 传输协议
	CharacterSet            string                 `protobuf:"bytes,16,opt,name=characterSet,proto3" json:"characterSet,omitempty"`                        // 字符集
	Ptz                     bool                   `protobuf:"varint,17,opt,name=ptz,proto3" json:"ptz,omitempty"`                                         // 允许云台控制
	Rtcp                    bool                   `protobuf:"varint,18,opt,name=rtcp,proto3" json:"rtcp,omitempty"`                                       // RTCP流保活
	Status                  bool                   `protobuf:"varint,19,opt,name=status,proto3" json:"status,omitempty"`                                   // 在线状态
	ChannelCount            int32                  `protobuf:"varint,20,opt,name=channelCount,proto3" json:"channelCount,omitempty"`                       // 通道数量
	CatalogSubscribe        bool                   `protobuf:"varint,21,opt,name=catalogSubscribe,proto3" json:"catalogSubscribe,omitempty"`               // 已被订阅目录信息
	AlarmSubscribe          bool                   `protobuf:"varint,22,opt,name=alarmSubscribe,proto3" json:"alarmSubscribe,omitempty"`                   // 已被订阅报警信息
	MobilePositionSubscribe bool                   `protobuf:"varint,23,opt,name=mobilePositionSubscribe,proto3" json:"mobilePositionSubscribe,omitempty"` // 已被订阅移动位置信息
	CatalogGroup            int32                  `protobuf:"varint,24,opt,name=catalogGroup,proto3" json:"catalogGroup,omitempty"`                       // 目录分组大小
	UpdateTime              string                 `protobuf:"bytes,25,opt,name=updateTime,proto3" json:"updateTime,omitempty"`                            // 最后更新时间
	CreateTime              string                 `protobuf:"bytes,26,opt,name=createTime,proto3" json:"createTime,omitempty"`                            // 创建时间
	AsMessageChannel        bool                   `protobuf:"varint,27,opt,name=asMessageChannel,proto3" json:"asMessageChannel,omitempty"`               // 是否作为消息通道
	SendStreamIp            string                 `protobuf:"bytes,28,opt,name=sendStreamIp,proto3" json:"sendStreamIp,omitempty"`                        // 点播回复200OK使用的IP
	AutoPushChannel         bool                   `protobuf:"varint,29,opt,name=autoPushChannel,proto3" json:"autoPushChannel,omitempty"`                 // 是否自动推送通道变化
	CatalogWithPlatform     int32                  `protobuf:"varint,30,opt,name=catalogWithPlatform,proto3" json:"catalogWithPlatform,omitempty"`         // 目录信息包含平台信息
	CatalogWithGroup        int32                  `protobuf:"varint,31,opt,name=catalogWithGroup,proto3" json:"catalogWithGroup,omitempty"`               // 目录信息包含分组信息
	CatalogWithRegion       int32                  `protobuf:"varint,32,opt,name=catalogWithRegion,proto3" json:"catalogWithRegion,omitempty"`             // 目录信息包含行政区划
	CivilCode               string                 `protobuf:"bytes,33,opt,name=civilCode,proto3" json:"civilCode,omitempty"`                              // 行政区划代码
	Manufacturer            string                 `protobuf:"bytes,34,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"`                        // 平台厂商
	Model                   string                 `protobuf:"bytes,35,opt,name=model,proto3" json:"model,omitempty"`                                      // 平台型号
	Address                 string                 `protobuf:"bytes,36,opt,name=address,proto3" json:"address,omitempty"`                                  // 平台安装地址
	RegisterWay             int32                  `protobuf:"varint,37,opt,name=registerWay,proto3" json:"registerWay,omitempty"`                         // 注册方式
	Secrecy                 int32                  `protobuf:"varint,38,opt,name=secrecy,proto3" json:"secrecy,omitempty"`                                 // 保密属性
	unknownFields           protoimpl.UnknownFields
	sizeCache               protoimpl.SizeCache
}

func (x *Platform) Reset() {
	*x = Platform{}
	mi := &file_gb28181_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Platform) ProtoMessage() {}

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

// Deprecated: Use Platform.ProtoReflect.Descriptor instead.
func (*Platform) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{38}
}

func (x *Platform) GetID() uint32 {
	if x != nil {
		return x.ID
	}
	return 0
}

func (x *Platform) GetEnable() bool {
	if x != nil {
		return x.Enable
	}
	return false
}

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

func (x *Platform) GetServerGBId() string {
	if x != nil {
		return x.ServerGBId
	}
	return ""
}

func (x *Platform) GetServerGBDomain() string {
	if x != nil {
		return x.ServerGBDomain
	}
	return ""
}

func (x *Platform) GetServerIp() string {
	if x != nil {
		return x.ServerIp
	}
	return ""
}

func (x *Platform) GetServerPort() int32 {
	if x != nil {
		return x.ServerPort
	}
	return 0
}

func (x *Platform) GetDeviceGBId() string {
	if x != nil {
		return x.DeviceGBId
	}
	return ""
}

func (x *Platform) GetDeviceIp() string {
	if x != nil {
		return x.DeviceIp
	}
	return ""
}

func (x *Platform) GetDevicePort() int32 {
	if x != nil {
		return x.DevicePort
	}
	return 0
}

func (x *Platform) GetUsername() string {
	if x != nil {
		return x.Username
	}
	return ""
}

func (x *Platform) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

func (x *Platform) GetExpires() int32 {
	if x != nil {
		return x.Expires
	}
	return 0
}

func (x *Platform) GetKeepTimeout() int32 {
	if x != nil {
		return x.KeepTimeout
	}
	return 0
}

func (x *Platform) GetTransport() string {
	if x != nil {
		return x.Transport
	}
	return ""
}

func (x *Platform) GetCharacterSet() string {
	if x != nil {
		return x.CharacterSet
	}
	return ""
}

func (x *Platform) GetPtz() bool {
	if x != nil {
		return x.Ptz
	}
	return false
}

func (x *Platform) GetRtcp() bool {
	if x != nil {
		return x.Rtcp
	}
	return false
}

func (x *Platform) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

func (x *Platform) GetChannelCount() int32 {
	if x != nil {
		return x.ChannelCount
	}
	return 0
}

func (x *Platform) GetCatalogSubscribe() bool {
	if x != nil {
		return x.CatalogSubscribe
	}
	return false
}

func (x *Platform) GetAlarmSubscribe() bool {
	if x != nil {
		return x.AlarmSubscribe
	}
	return false
}

func (x *Platform) GetMobilePositionSubscribe() bool {
	if x != nil {
		return x.MobilePositionSubscribe
	}
	return false
}

func (x *Platform) GetCatalogGroup() int32 {
	if x != nil {
		return x.CatalogGroup
	}
	return 0
}

func (x *Platform) GetUpdateTime() string {
	if x != nil {
		return x.UpdateTime
	}
	return ""
}

func (x *Platform) GetCreateTime() string {
	if x != nil {
		return x.CreateTime
	}
	return ""
}

func (x *Platform) GetAsMessageChannel() bool {
	if x != nil {
		return x.AsMessageChannel
	}
	return false
}

func (x *Platform) GetSendStreamIp() string {
	if x != nil {
		return x.SendStreamIp
	}
	return ""
}

func (x *Platform) GetAutoPushChannel() bool {
	if x != nil {
		return x.AutoPushChannel
	}
	return false
}

func (x *Platform) GetCatalogWithPlatform() int32 {
	if x != nil {
		return x.CatalogWithPlatform
	}
	return 0
}

func (x *Platform) GetCatalogWithGroup() int32 {
	if x != nil {
		return x.CatalogWithGroup
	}
	return 0
}

func (x *Platform) GetCatalogWithRegion() int32 {
	if x != nil {
		return x.CatalogWithRegion
	}
	return 0
}

func (x *Platform) GetCivilCode() string {
	if x != nil {
		return x.CivilCode
	}
	return ""
}

func (x *Platform) GetManufacturer() string {
	if x != nil {
		return x.Manufacturer
	}
	return ""
}

func (x *Platform) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *Platform) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *Platform) GetRegisterWay() int32 {
	if x != nil {
		return x.RegisterWay
	}
	return 0
}

func (x *Platform) GetSecrecy() int32 {
	if x != nil {
		return x.Secrecy
	}
	return 0
}

// 获取平台请求
type GetPlatformRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            int32                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetPlatformRequest) Reset() {
	*x = GetPlatformRequest{}
	mi := &file_gb28181_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetPlatformRequest) ProtoMessage() {}

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

// Deprecated: Use GetPlatformRequest.ProtoReflect.Descriptor instead.
func (*GetPlatformRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{39}
}

func (x *GetPlatformRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// 删除平台请求
type DeletePlatformRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            int32                  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeletePlatformRequest) Reset() {
	*x = DeletePlatformRequest{}
	mi := &file_gb28181_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*DeletePlatformRequest) ProtoMessage() {}

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

// Deprecated: Use DeletePlatformRequest.ProtoReflect.Descriptor instead.
func (*DeletePlatformRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{40}
}

func (x *DeletePlatformRequest) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

// 平台列表请求
type ListPlatformsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Page          int32                  `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"`
	Count         int32                  `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
	Query         string                 `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
	Status        bool                   `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListPlatformsRequest) Reset() {
	*x = ListPlatformsRequest{}
	mi := &file_gb28181_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListPlatformsRequest) ProtoMessage() {}

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

// Deprecated: Use ListPlatformsRequest.ProtoReflect.Descriptor instead.
func (*ListPlatformsRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{41}
}

func (x *ListPlatformsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

func (x *ListPlatformsRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *ListPlatformsRequest) GetStatus() bool {
	if x != nil {
		return x.Status
	}
	return false
}

// 平台响应
type PlatformResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          *Platform              `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlatformResponse) Reset() {
	*x = PlatformResponse{}
	mi := &file_gb28181_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlatformResponse) ProtoMessage() {}

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

// Deprecated: Use PlatformResponse.ProtoReflect.Descriptor instead.
func (*PlatformResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{42}
}

func (x *PlatformResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *PlatformResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *PlatformResponse) GetData() *Platform {
	if x != nil {
		return x.Data
	}
	return nil
}

// 平台分页信息
type PlatformsPageInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Total         int32                  `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`
	List          []*Platform            `protobuf:"bytes,4,rep,name=list,proto3" json:"list,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PlatformsPageInfo) Reset() {
	*x = PlatformsPageInfo{}
	mi := &file_gb28181_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PlatformsPageInfo) ProtoMessage() {}

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

// Deprecated: Use PlatformsPageInfo.ProtoReflect.Descriptor instead.
func (*PlatformsPageInfo) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{43}
}

func (x *PlatformsPageInfo) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *PlatformsPageInfo) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *PlatformsPageInfo) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *PlatformsPageInfo) GetList() []*Platform {
	if x != nil {
		return x.List
	}
	return nil
}

type QueryRecordRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Start         string                 `protobuf:"bytes,3,opt,name=start,proto3" json:"start,omitempty"`
	End           string                 `protobuf:"bytes,4,opt,name=end,proto3" json:"end,omitempty"`
	Range         string                 `protobuf:"bytes,5,opt,name=range,proto3" json:"range,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryRecordRequest) Reset() {
	*x = QueryRecordRequest{}
	mi := &file_gb28181_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*QueryRecordRequest) ProtoMessage() {}

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

// Deprecated: Use QueryRecordRequest.ProtoReflect.Descriptor instead.
func (*QueryRecordRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{44}
}

func (x *QueryRecordRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *QueryRecordRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *QueryRecordRequest) GetStart() string {
	if x != nil {
		return x.Start
	}
	return ""
}

func (x *QueryRecordRequest) GetEnd() string {
	if x != nil {
		return x.End
	}
	return ""
}

func (x *QueryRecordRequest) GetRange() string {
	if x != nil {
		return x.Range
	}
	return ""
}

type QueryRecordResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          []*RecordItem          `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"`
	DeviceId      string                 `protobuf:"bytes,4,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	ChannelId     string                 `protobuf:"bytes,5,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
	Sn            string                 `protobuf:"bytes,6,opt,name=sn,proto3" json:"sn,omitempty"`
	Name          string                 `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"`
	SumNum        int32                  `protobuf:"varint,8,opt,name=sum_num,json=sumNum,proto3" json:"sum_num,omitempty"`
	Count         int32                  `protobuf:"varint,9,opt,name=count,proto3" json:"count,omitempty"`
	LastTime      *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_time,json=lastTime,proto3" json:"last_time,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *QueryRecordResponse) Reset() {
	*x = QueryRecordResponse{}
	mi := &file_gb28181_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*QueryRecordResponse) ProtoMessage() {}

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

// Deprecated: Use QueryRecordResponse.ProtoReflect.Descriptor instead.
func (*QueryRecordResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{45}
}

func (x *QueryRecordResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *QueryRecordResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

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

func (x *QueryRecordResponse) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *QueryRecordResponse) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *QueryRecordResponse) GetSn() string {
	if x != nil {
		return x.Sn
	}
	return ""
}

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

func (x *QueryRecordResponse) GetSumNum() int32 {
	if x != nil {
		return x.SumNum
	}
	return 0
}

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

func (x *QueryRecordResponse) GetLastTime() *timestamppb.Timestamp {
	if x != nil {
		return x.LastTime
	}
	return nil
}

type RecordItem struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	FilePath      string                 `protobuf:"bytes,3,opt,name=filePath,proto3" json:"filePath,omitempty"`
	Address       string                 `protobuf:"bytes,4,opt,name=address,proto3" json:"address,omitempty"`
	StartTime     string                 `protobuf:"bytes,5,opt,name=startTime,proto3" json:"startTime,omitempty"`
	EndTime       string                 `protobuf:"bytes,6,opt,name=endTime,proto3" json:"endTime,omitempty"`
	Secrecy       int32                  `protobuf:"varint,7,opt,name=secrecy,proto3" json:"secrecy,omitempty"`
	Type          string                 `protobuf:"bytes,8,opt,name=type,proto3" json:"type,omitempty"`
	RecorderId    string                 `protobuf:"bytes,9,opt,name=recorderId,proto3" json:"recorderId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RecordItem) Reset() {
	*x = RecordItem{}
	mi := &file_gb28181_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RecordItem) ProtoMessage() {}

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

// Deprecated: Use RecordItem.ProtoReflect.Descriptor instead.
func (*RecordItem) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{46}
}

func (x *RecordItem) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

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

func (x *RecordItem) GetFilePath() string {
	if x != nil {
		return x.FilePath
	}
	return ""
}

func (x *RecordItem) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *RecordItem) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *RecordItem) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *RecordItem) GetSecrecy() int32 {
	if x != nil {
		return x.Secrecy
	}
	return 0
}

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

func (x *RecordItem) GetRecorderId() string {
	if x != nil {
		return x.RecorderId
	}
	return ""
}

type PtzControlRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Ptzcmd        string                 `protobuf:"bytes,3,opt,name=ptzcmd,proto3" json:"ptzcmd,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PtzControlRequest) Reset() {
	*x = PtzControlRequest{}
	mi := &file_gb28181_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PtzControlRequest) ProtoMessage() {}

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

// Deprecated: Use PtzControlRequest.ProtoReflect.Descriptor instead.
func (*PtzControlRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{47}
}

func (x *PtzControlRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *PtzControlRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *PtzControlRequest) GetPtzcmd() string {
	if x != nil {
		return x.Ptzcmd
	}
	return ""
}

type IrisControlRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Command       string                 `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` // in, out, stop
	Speed         int32                  `protobuf:"varint,4,opt,name=speed,proto3" json:"speed,omitempty"`    // 0-255
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IrisControlRequest) Reset() {
	*x = IrisControlRequest{}
	mi := &file_gb28181_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*IrisControlRequest) ProtoMessage() {}

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

// Deprecated: Use IrisControlRequest.ProtoReflect.Descriptor instead.
func (*IrisControlRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{48}
}

func (x *IrisControlRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *IrisControlRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *IrisControlRequest) GetCommand() string {
	if x != nil {
		return x.Command
	}
	return ""
}

func (x *IrisControlRequest) GetSpeed() int32 {
	if x != nil {
		return x.Speed
	}
	return 0
}

type FocusControlRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Command       string                 `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` // near, far, stop
	Speed         int32                  `protobuf:"varint,4,opt,name=speed,proto3" json:"speed,omitempty"`    // 0-255
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FocusControlRequest) Reset() {
	*x = FocusControlRequest{}
	mi := &file_gb28181_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*FocusControlRequest) ProtoMessage() {}

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

// Deprecated: Use FocusControlRequest.ProtoReflect.Descriptor instead.
func (*FocusControlRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{49}
}

func (x *FocusControlRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *FocusControlRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *FocusControlRequest) GetCommand() string {
	if x != nil {
		return x.Command
	}
	return ""
}

func (x *FocusControlRequest) GetSpeed() int32 {
	if x != nil {
		return x.Speed
	}
	return 0
}

type PresetRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	PresetId      int32                  `protobuf:"varint,3,opt,name=presetId,proto3" json:"presetId,omitempty"` // 1-255
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PresetRequest) Reset() {
	*x = PresetRequest{}
	mi := &file_gb28181_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PresetRequest) ProtoMessage() {}

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

// Deprecated: Use PresetRequest.ProtoReflect.Descriptor instead.
func (*PresetRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{50}
}

func (x *PresetRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *PresetRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *PresetRequest) GetPresetId() int32 {
	if x != nil {
		return x.PresetId
	}
	return 0
}

type PresetResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Data          []int32                `protobuf:"varint,3,rep,packed,name=data,proto3" json:"data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PresetResponse) Reset() {
	*x = PresetResponse{}
	mi := &file_gb28181_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*PresetResponse) ProtoMessage() {}

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

// Deprecated: Use PresetResponse.ProtoReflect.Descriptor instead.
func (*PresetResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{51}
}

func (x *PresetResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *PresetResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

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

type CruisePointRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	CruiseId      int32                  `protobuf:"varint,3,opt,name=cruiseId,proto3" json:"cruiseId,omitempty"` // 0-255
	PresetId      int32                  `protobuf:"varint,4,opt,name=presetId,proto3" json:"presetId,omitempty"` // 1-255
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CruisePointRequest) Reset() {
	*x = CruisePointRequest{}
	mi := &file_gb28181_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CruisePointRequest) ProtoMessage() {}

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

// Deprecated: Use CruisePointRequest.ProtoReflect.Descriptor instead.
func (*CruisePointRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{52}
}

func (x *CruisePointRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *CruisePointRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *CruisePointRequest) GetCruiseId() int32 {
	if x != nil {
		return x.CruiseId
	}
	return 0
}

func (x *CruisePointRequest) GetPresetId() int32 {
	if x != nil {
		return x.PresetId
	}
	return 0
}

type CruiseSpeedRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	CruiseId      int32                  `protobuf:"varint,3,opt,name=cruiseId,proto3" json:"cruiseId,omitempty"` // 0-255
	Speed         int32                  `protobuf:"varint,4,opt,name=speed,proto3" json:"speed,omitempty"`       // 1-4095
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CruiseSpeedRequest) Reset() {
	*x = CruiseSpeedRequest{}
	mi := &file_gb28181_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CruiseSpeedRequest) ProtoMessage() {}

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

// Deprecated: Use CruiseSpeedRequest.ProtoReflect.Descriptor instead.
func (*CruiseSpeedRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{53}
}

func (x *CruiseSpeedRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *CruiseSpeedRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *CruiseSpeedRequest) GetCruiseId() int32 {
	if x != nil {
		return x.CruiseId
	}
	return 0
}

func (x *CruiseSpeedRequest) GetSpeed() int32 {
	if x != nil {
		return x.Speed
	}
	return 0
}

type CruiseTimeRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	CruiseId      int32                  `protobuf:"varint,3,opt,name=cruiseId,proto3" json:"cruiseId,omitempty"` // 0-255
	Time          int32                  `protobuf:"varint,4,opt,name=time,proto3" json:"time,omitempty"`         // 1-4095
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CruiseTimeRequest) Reset() {
	*x = CruiseTimeRequest{}
	mi := &file_gb28181_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CruiseTimeRequest) ProtoMessage() {}

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

// Deprecated: Use CruiseTimeRequest.ProtoReflect.Descriptor instead.
func (*CruiseTimeRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{54}
}

func (x *CruiseTimeRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *CruiseTimeRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *CruiseTimeRequest) GetCruiseId() int32 {
	if x != nil {
		return x.CruiseId
	}
	return 0
}

func (x *CruiseTimeRequest) GetTime() int32 {
	if x != nil {
		return x.Time
	}
	return 0
}

type CruiseRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	CruiseId      int32                  `protobuf:"varint,3,opt,name=cruiseId,proto3" json:"cruiseId,omitempty"` // 0-255
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CruiseRequest) Reset() {
	*x = CruiseRequest{}
	mi := &file_gb28181_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CruiseRequest) ProtoMessage() {}

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

// Deprecated: Use CruiseRequest.ProtoReflect.Descriptor instead.
func (*CruiseRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{55}
}

func (x *CruiseRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *CruiseRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *CruiseRequest) GetCruiseId() int32 {
	if x != nil {
		return x.CruiseId
	}
	return 0
}

type ScanRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	ScanId        int32                  `protobuf:"varint,3,opt,name=scanId,proto3" json:"scanId,omitempty"` // 0-255
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ScanRequest) Reset() {
	*x = ScanRequest{}
	mi := &file_gb28181_proto_msgTypes[56]
	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_gb28181_proto_msgTypes[56]
	if 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_gb28181_proto_rawDescGZIP(), []int{56}
}

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

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

func (x *ScanRequest) GetScanId() int32 {
	if x != nil {
		return x.ScanId
	}
	return 0
}

type ScanSpeedRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	ScanId        int32                  `protobuf:"varint,3,opt,name=scanId,proto3" json:"scanId,omitempty"` // 0-255
	Speed         int32                  `protobuf:"varint,4,opt,name=speed,proto3" json:"speed,omitempty"`   // 1-4095
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ScanSpeedRequest) Reset() {
	*x = ScanSpeedRequest{}
	mi := &file_gb28181_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ScanSpeedRequest) ProtoMessage() {}

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

// Deprecated: Use ScanSpeedRequest.ProtoReflect.Descriptor instead.
func (*ScanSpeedRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{57}
}

func (x *ScanSpeedRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *ScanSpeedRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *ScanSpeedRequest) GetScanId() int32 {
	if x != nil {
		return x.ScanId
	}
	return 0
}

func (x *ScanSpeedRequest) GetSpeed() int32 {
	if x != nil {
		return x.Speed
	}
	return 0
}

type WiperControlRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Command       string                 `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` // on, off
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WiperControlRequest) Reset() {
	*x = WiperControlRequest{}
	mi := &file_gb28181_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*WiperControlRequest) ProtoMessage() {}

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

// Deprecated: Use WiperControlRequest.ProtoReflect.Descriptor instead.
func (*WiperControlRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{58}
}

func (x *WiperControlRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *WiperControlRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *WiperControlRequest) GetCommand() string {
	if x != nil {
		return x.Command
	}
	return ""
}

type AuxiliaryControlRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"`
	ChannelId     string                 `protobuf:"bytes,2,opt,name=channelId,proto3" json:"channelId,omitempty"`
	Command       string                 `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"` // on, off
	SwitchId      int32                  `protobuf:"varint,4,opt,name=switchId,proto3" json:"switchId,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AuxiliaryControlRequest) Reset() {
	*x = AuxiliaryControlRequest{}
	mi := &file_gb28181_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AuxiliaryControlRequest) ProtoMessage() {}

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

// Deprecated: Use AuxiliaryControlRequest.ProtoReflect.Descriptor instead.
func (*AuxiliaryControlRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{59}
}

func (x *AuxiliaryControlRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *AuxiliaryControlRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *AuxiliaryControlRequest) GetCommand() string {
	if x != nil {
		return x.Command
	}
	return ""
}

func (x *AuxiliaryControlRequest) GetSwitchId() int32 {
	if x != nil {
		return x.SwitchId
	}
	return 0
}

// 测试SIP连接的消息定义
type TestSipRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	TestParam     string                 `protobuf:"bytes,1,opt,name=testParam,proto3" json:"testParam,omitempty"` // 测试参数
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestSipRequest) Reset() {
	*x = TestSipRequest{}
	mi := &file_gb28181_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TestSipRequest) ProtoMessage() {}

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

// Deprecated: Use TestSipRequest.ProtoReflect.Descriptor instead.
func (*TestSipRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{60}
}

func (x *TestSipRequest) GetTestParam() string {
	if x != nil {
		return x.TestParam
	}
	return ""
}

type TestSipResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`            // 响应代码
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`       // 响应消息
	TestResult    string                 `protobuf:"bytes,3,opt,name=testResult,proto3" json:"testResult,omitempty"` // 测试结果
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TestSipResponse) Reset() {
	*x = TestSipResponse{}
	mi := &file_gb28181_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TestSipResponse) ProtoMessage() {}

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

// Deprecated: Use TestSipResponse.ProtoReflect.Descriptor instead.
func (*TestSipResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{61}
}

func (x *TestSipResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *TestSipResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *TestSipResponse) GetTestResult() string {
	if x != nil {
		return x.TestResult
	}
	return ""
}

// 报警记录查询请求
type SearchAlarmsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	DeviceId      string                 `protobuf:"bytes,1,opt,name=deviceId,proto3" json:"deviceId,omitempty"` // 设备ID，可选
	Start         string                 `protobuf:"bytes,2,opt,name=start,proto3" json:"start,omitempty"`       // 开始时间
	End           string                 `protobuf:"bytes,3,opt,name=end,proto3" json:"end,omitempty"`           // 结束时间
	Range         string                 `protobuf:"bytes,4,opt,name=range,proto3" json:"range,omitempty"`       // 时间范围，可选
	Page          int32                  `protobuf:"varint,5,opt,name=page,proto3" json:"page,omitempty"`        // 页码，从1开始
	Count         int32                  `protobuf:"varint,6,opt,name=count,proto3" json:"count,omitempty"`      // 每页大小
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SearchAlarmsRequest) Reset() {
	*x = SearchAlarmsRequest{}
	mi := &file_gb28181_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SearchAlarmsRequest) ProtoMessage() {}

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

// Deprecated: Use SearchAlarmsRequest.ProtoReflect.Descriptor instead.
func (*SearchAlarmsRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{62}
}

func (x *SearchAlarmsRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *SearchAlarmsRequest) GetStart() string {
	if x != nil {
		return x.Start
	}
	return ""
}

func (x *SearchAlarmsRequest) GetEnd() string {
	if x != nil {
		return x.End
	}
	return ""
}

func (x *SearchAlarmsRequest) GetRange() string {
	if x != nil {
		return x.Range
	}
	return ""
}

func (x *SearchAlarmsRequest) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

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

// 报警记录查询响应
type SearchAlarmsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          int32                  `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`      // 响应代码
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` // 响应消息
	Total         int32                  `protobuf:"varint,3,opt,name=total,proto3" json:"total,omitempty"`    // 总记录数
	List          []*AlarmRecord         `protobuf:"bytes,4,rep,name=list,proto3" json:"list,omitempty"`       // 报警记录列表
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SearchAlarmsResponse) Reset() {
	*x = SearchAlarmsResponse{}
	mi := &file_gb28181_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*SearchAlarmsResponse) ProtoMessage() {}

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

// Deprecated: Use SearchAlarmsResponse.ProtoReflect.Descriptor instead.
func (*SearchAlarmsResponse) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{63}
}

func (x *SearchAlarmsResponse) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

func (x *SearchAlarmsResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *SearchAlarmsResponse) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *SearchAlarmsResponse) GetList() []*AlarmRecord {
	if x != nil {
		return x.List
	}
	return nil
}

// 报警记录详情
type AlarmRecord struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Id                string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`                                // 报警记录ID
	DeviceId          string                 `protobuf:"bytes,2,opt,name=deviceId,proto3" json:"deviceId,omitempty"`                    // 设备ID
	DeviceName        string                 `protobuf:"bytes,3,opt,name=deviceName,proto3" json:"deviceName,omitempty"`                // 设备名称
	ChannelId         string                 `protobuf:"bytes,4,opt,name=channelId,proto3" json:"channelId,omitempty"`                  // 通道ID
	AlarmPriority     string                 `protobuf:"bytes,5,opt,name=alarmPriority,proto3" json:"alarmPriority,omitempty"`          // 报警级别
	AlarmMethod       string                 `protobuf:"bytes,6,opt,name=alarmMethod,proto3" json:"alarmMethod,omitempty"`              // 报警方式
	AlarmTime         string                 `protobuf:"bytes,7,opt,name=alarmTime,proto3" json:"alarmTime,omitempty"`                  // 报警时间
	AlarmDescription  string                 `protobuf:"bytes,8,opt,name=alarmDescription,proto3" json:"alarmDescription,omitempty"`    // 报警描述
	Longitude         float64                `protobuf:"fixed64,9,opt,name=longitude,proto3" json:"longitude,omitempty"`                // 经度
	Latitude          float64                `protobuf:"fixed64,10,opt,name=latitude,proto3" json:"latitude,omitempty"`                 // 纬度
	AlarmType         string                 `protobuf:"bytes,11,opt,name=alarmType,proto3" json:"alarmType,omitempty"`                 // 报警类型
	CreateTime        string                 `protobuf:"bytes,12,opt,name=createTime,proto3" json:"createTime,omitempty"`               // 创建时间
	AlarmPriorityDesc string                 `protobuf:"bytes,13,opt,name=alarmPriorityDesc,proto3" json:"alarmPriorityDesc,omitempty"` // 报警级别描述
	AlarmMethodDesc   string                 `protobuf:"bytes,14,opt,name=alarmMethodDesc,proto3" json:"alarmMethodDesc,omitempty"`     // 报警方式描述
	AlarmTypeDesc     string                 `protobuf:"bytes,15,opt,name=alarmTypeDesc,proto3" json:"alarmTypeDesc,omitempty"`         // 报警类型描述
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *AlarmRecord) Reset() {
	*x = AlarmRecord{}
	mi := &file_gb28181_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AlarmRecord) ProtoMessage() {}

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

// Deprecated: Use AlarmRecord.ProtoReflect.Descriptor instead.
func (*AlarmRecord) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{64}
}

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

func (x *AlarmRecord) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

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

func (x *AlarmRecord) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

func (x *AlarmRecord) GetAlarmPriority() string {
	if x != nil {
		return x.AlarmPriority
	}
	return ""
}

func (x *AlarmRecord) GetAlarmMethod() string {
	if x != nil {
		return x.AlarmMethod
	}
	return ""
}

func (x *AlarmRecord) GetAlarmTime() string {
	if x != nil {
		return x.AlarmTime
	}
	return ""
}

func (x *AlarmRecord) GetAlarmDescription() string {
	if x != nil {
		return x.AlarmDescription
	}
	return ""
}

func (x *AlarmRecord) GetLongitude() float64 {
	if x != nil {
		return x.Longitude
	}
	return 0
}

func (x *AlarmRecord) GetLatitude() float64 {
	if x != nil {
		return x.Latitude
	}
	return 0
}

func (x *AlarmRecord) GetAlarmType() string {
	if x != nil {
		return x.AlarmType
	}
	return ""
}

func (x *AlarmRecord) GetCreateTime() string {
	if x != nil {
		return x.CreateTime
	}
	return ""
}

func (x *AlarmRecord) GetAlarmPriorityDesc() string {
	if x != nil {
		return x.AlarmPriorityDesc
	}
	return ""
}

func (x *AlarmRecord) GetAlarmMethodDesc() string {
	if x != nil {
		return x.AlarmMethodDesc
	}
	return ""
}

func (x *AlarmRecord) GetAlarmTypeDesc() string {
	if x != nil {
		return x.AlarmTypeDesc
	}
	return ""
}

// 添加平台通道请求
type AddPlatformChannelRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	PlatformId    int32                  `protobuf:"varint,1,opt,name=platformId,proto3" json:"platformId,omitempty"`        // 平台ID
	ChannelIds    []int32                `protobuf:"varint,2,rep,packed,name=channelIds,proto3" json:"channelIds,omitempty"` // 通道ID列表
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddPlatformChannelRequest) Reset() {
	*x = AddPlatformChannelRequest{}
	mi := &file_gb28181_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*AddPlatformChannelRequest) ProtoMessage() {}

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

// Deprecated: Use AddPlatformChannelRequest.ProtoReflect.Descriptor instead.
func (*AddPlatformChannelRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{65}
}

func (x *AddPlatformChannelRequest) GetPlatformId() int32 {
	if x != nil {
		return x.PlatformId
	}
	return 0
}

func (x *AddPlatformChannelRequest) GetChannelIds() []int32 {
	if x != nil {
		return x.ChannelIds
	}
	return nil
}

// 录制控制请求
type RecordingRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	CmdType       string                 `protobuf:"bytes,1,opt,name=cmdType,proto3" json:"cmdType,omitempty"`     // 命令类型：start/stop
	DeviceId      string                 `protobuf:"bytes,2,opt,name=deviceId,proto3" json:"deviceId,omitempty"`   // 设备ID
	ChannelId     string                 `protobuf:"bytes,3,opt,name=channelId,proto3" json:"channelId,omitempty"` // 通道ID
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RecordingRequest) Reset() {
	*x = RecordingRequest{}
	mi := &file_gb28181_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RecordingRequest) ProtoMessage() {}

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

// Deprecated: Use RecordingRequest.ProtoReflect.Descriptor instead.
func (*RecordingRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{66}
}

func (x *RecordingRequest) GetCmdType() string {
	if x != nil {
		return x.CmdType
	}
	return ""
}

func (x *RecordingRequest) GetDeviceId() string {
	if x != nil {
		return x.DeviceId
	}
	return ""
}

func (x *RecordingRequest) GetChannelId() string {
	if x != nil {
		return x.ChannelId
	}
	return ""
}

// JPEG文件上传请求
type UploadJpegRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ImageData     []byte                 `protobuf:"bytes,1,opt,name=imageData,proto3" json:"imageData,omitempty"` // JPEG文件数据
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UploadJpegRequest) Reset() {
	*x = UploadJpegRequest{}
	mi := &file_gb28181_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*UploadJpegRequest) ProtoMessage() {}

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

// Deprecated: Use UploadJpegRequest.ProtoReflect.Descriptor instead.
func (*UploadJpegRequest) Descriptor() ([]byte, []int) {
	return file_gb28181_proto_rawDescGZIP(), []int{67}
}

func (x *UploadJpegRequest) GetImageData() []byte {
	if x != nil {
		return x.ImageData
	}
	return nil
}

var File_gb28181_proto protoreflect.FileDescriptor

var file_gb28181_proto_rawDesc = string([]byte{
	0x0a, 0x0d, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x0a, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3c, 0x0a, 0x0c, 0x42, 0x61, 0x73, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x2e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x6b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61,
	0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x50, 0x61, 0x67,
	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x22, 0xaa, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71,
	0x75, 0x65, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7f,
	0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22,
	0x2f, 0x0a, 0x11, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
	0x22, 0x86, 0x01, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63,
	0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a,
	0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x22, 0x31, 0x0a, 0x13, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x14,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0xcb,
	0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05,
	0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x22, 0xef, 0x03, 0x0a,
	0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x44,
	0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74,
	0x75, 0x72, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x4d, 0x61, 0x6e, 0x75,
	0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x14,
	0x0a, 0x05, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4f,
	0x77, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x69, 0x76, 0x69, 0x6c, 0x43, 0x6f, 0x64,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x69, 0x76, 0x69, 0x6c, 0x43, 0x6f,
	0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04,
	0x50, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09,
	0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x57, 0x61, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x57, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65,
	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07,
	0x53, 0x65, 0x63, 0x72, 0x65, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53,
	0x65, 0x63, 0x72, 0x65, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34,
	0x0a, 0x07, 0x47, 0x70, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x47, 0x70, 0x73,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64,
	0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75,
	0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x11,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x22, 0xef,
	0x03, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x6e,
	0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a,
	0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f,
	0x64, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x16, 0x0a,
	0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
	0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
	0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x40, 0x0a, 0x0d, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x54, 0x69,
	0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x6e, 0x6c, 0x69, 0x6e,
	0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12,
	0x2f, 0x0a, 0x08, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x13, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73,
	0x22, 0x64, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
	0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26,
	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x48, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
	0x41, 0x75, 0x64, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x75,
	0x64, 0x69, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x75, 0x64, 0x69, 0x6f,
	0x22, 0x54, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70,
	0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
	0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65,
	0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x14,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xf3, 0x01, 0x0a, 0x15, 0x47,
	0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
	0x12, 0x24, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x72,
	0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x50, 0x72, 0x69,
	0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x64,
	0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x61, 0x72,
	0x6d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61,
	0x6c, 0x61, 0x72, 0x6d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c,
	0x61, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61,
	0x6c, 0x61, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
	0x22, 0x72, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x61, 0x6c,
	0x61, 0x72, 0x6d, 0x73, 0x22, 0xb9, 0x01, 0x0a, 0x09, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x49, 0x6e,
	0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x24,
	0x0a, 0x0d, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x50, 0x72, 0x69, 0x6f,
	0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x4d, 0x65, 0x74,
	0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6c, 0x61, 0x72, 0x6d,
	0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x61, 0x72, 0x6d,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x44, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
	0x61, 0x6c, 0x61, 0x72, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0x32, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63,
	0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0xdb, 0x01, 0x0a, 0x15,
	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
	0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x69, 0x61, 0x6c,
	0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x64, 0x69,
	0x61, 0x6c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x1a, 0x3e, 0x0a, 0x10, 0x44, 0x69, 0x61,
	0x6c, 0x6f, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 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, 0x05, 0x52, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5e, 0x0a, 0x0e, 0x47, 0x65, 0x74,
	0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x5a, 0x0a, 0x0c, 0x53, 0x6e, 0x61,
	0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x26, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x66, 0x0a,
	0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63,
	0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x68, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
	0x47, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x0f, 0x50, 0x6c, 0x61,
	0x79, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03,
	0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14,
	0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72,
	0x61, 0x6e, 0x67, 0x65, 0x22, 0x75, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x66,
	0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6e, 0x0a, 0x0a, 0x53,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61,
	0x6d, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x61, 0x70, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x73, 0x72, 0x63, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x73, 0x72, 0x63, 0x22, 0x4c, 0x0a, 0x12, 0x43,
	0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65, 0x64, 0x69,
	0x61, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x42, 0x72,
	0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65,
	0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f,
	0x75, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d,
	0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x72, 0x6f, 0x61, 0x64,
	0x63, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x6f, 0x0a, 0x11, 0x42, 0x72, 0x6f, 0x61,
	0x64, 0x63, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x74, 0x0a, 0x08, 0x53, 0x53, 0x52,
	0x43, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x73, 0x73, 0x72, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73,
	0x73, 0x72, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22,
	0x80, 0x01, 0x0a, 0x10, 0x53, 0x53, 0x52, 0x43, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x53,
	0x52, 0x43, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0xe4, 0x09, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12,
	0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x49, 0x44, 0x12,
	0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x42, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x42, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x73,
	0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x42, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x42, 0x44, 0x6f, 0x6d,
	0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x70, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x70, 0x12,
	0x1e, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x12,
	0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x42, 0x49, 0x64, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x42, 0x49, 0x64, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
	0x6f, 0x72, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77,
	0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x18, 0x0d,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x12, 0x20, 0x0a,
	0x0b, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0b, 0x6b, 0x65, 0x65, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12,
	0x1c, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0f, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x0a,
	0x0c, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x65, 0x74, 0x18, 0x10, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x65,
	0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x74, 0x7a, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03,
	0x70, 0x74, 0x7a, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x74, 0x63, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x04, 0x72, 0x74, 0x63, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x22, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x75,
	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63,
	0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12,
	0x26, 0x0a, 0x0e, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
	0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x75,
	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x6d, 0x6f, 0x62, 0x69, 0x6c,
	0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
	0x62, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x6d, 0x6f, 0x62, 0x69, 0x6c, 0x65,
	0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
	0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x10, 0x61, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49,
	0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x72,
	0x65, 0x61, 0x6d, 0x49, 0x70, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x73,
	0x68, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
	0x61, 0x75, 0x74, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12,
	0x30, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x57, 0x69, 0x74, 0x68, 0x50, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x63, 0x61,
	0x74, 0x61, 0x6c, 0x6f, 0x67, 0x57, 0x69, 0x74, 0x68, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x57, 0x69, 0x74, 0x68,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x61, 0x74,
	0x61, 0x6c, 0x6f, 0x67, 0x57, 0x69, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2c, 0x0a,
	0x11, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x67, 0x69,
	0x6f, 0x6e, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f,
	0x67, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63,
	0x69, 0x76, 0x69, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x63, 0x69, 0x76, 0x69, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x6e,
	0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a,
	0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x24,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x0a,
	0x0b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x79, 0x18, 0x25, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x57, 0x61, 0x79, 0x12,
	0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x63, 0x79, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x63, 0x79, 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74,
	0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22,
	0x27, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6e, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74,
	0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
	0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75,
	0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x6a, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
	0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x04,
	0x64, 0x61, 0x74, 0x61, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x73, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
	0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18,
	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x28,
	0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e,
	0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xb7, 0x02, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63,
	0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49,
	0x74, 0x65, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x02, 0x73, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x75, 0x6d,
	0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x75, 0x6d, 0x4e,
	0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74,
	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x69, 0x6d,
	0x65, 0x22, 0xf8, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d,
	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07,
	0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18,
	0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a,
	0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0a, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x11,
	0x50, 0x74, 0x7a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a,
	0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70,
	0x74, 0x7a, 0x63, 0x6d, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x74, 0x7a,
	0x63, 0x6d, 0x64, 0x22, 0x7e, 0x0a, 0x12, 0x49, 0x72, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70,
	0x65, 0x65, 0x64, 0x22, 0x7f, 0x0a, 0x13, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x14,
	0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73,
	0x70, 0x65, 0x65, 0x64, 0x22, 0x65, 0x0a, 0x0d, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
	0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x08, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x52, 0x0a, 0x0e, 0x50,
	0x72, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a,
	0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
	0x86, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x08, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08,
	0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
	0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x75,
	0x69, 0x73, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x75,
	0x69, 0x73, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x72, 0x75,
	0x69, 0x73, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x22, 0x7d, 0x0a, 0x11, 0x43,
	0x72, 0x75, 0x69, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72,
	0x75, 0x69, 0x73, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x72,
	0x75, 0x69, 0x73, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x65, 0x0a, 0x0d, 0x43, 0x72,
	0x75, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x49,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x49,
	0x64, 0x22, 0x5f, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09,
	0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63,
	0x61, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x63, 0x61, 0x6e,
	0x49, 0x64, 0x22, 0x7a, 0x0a, 0x10, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x65, 0x64, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x22, 0x69,
	0x0a, 0x13, 0x57, 0x69, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
	0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x89, 0x01, 0x0a, 0x17, 0x41, 0x75,
	0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
	0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x77, 0x69,
	0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x77, 0x69,
	0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x70,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x50,
	0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74,
	0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x5f, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x70,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x65, 0x73, 0x74,
	0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a,
	0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65,
	0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6c, 0x61,
	0x72, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63,
	0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12,
	0x2b, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x41, 0x6c, 0x61, 0x72, 0x6d,
	0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0xff, 0x03, 0x0a,
	0x0b, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x50,
	0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61,
	0x6c, 0x61, 0x72, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b,
	0x61, 0x6c, 0x61, 0x72, 0x6d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c,
	0x0a, 0x09, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10,
	0x61, 0x6c, 0x61, 0x72, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x44, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67,
	0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e,
	0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75,
	0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75,
	0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x2c, 0x0a, 0x11, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74,
	0x79, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x61, 0x6c, 0x61,
	0x72, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x12, 0x28,
	0x0a, 0x0f, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73,
	0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x4d, 0x65,
	0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x6c, 0x61, 0x72,
	0x6d, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0d, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x73, 0x63, 0x22, 0x5b,
	0x0a, 0x19, 0x41, 0x64, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
	0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0a, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52,
	0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x22, 0x66, 0x0a, 0x10, 0x52,
	0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x18, 0x0a, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x22, 0x31, 0x0a, 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x70, 0x65,
	0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67,
	0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x32, 0xf6, 0x32, 0x0a, 0x03, 0x61, 0x70, 0x69, 0x12, 0x5d,
	0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e,
	0x66, 0x6f, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x6e, 0x0a,
	0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x12, 0x66, 0x0a,
	0x0a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x50,
	0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12,
	0x14, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e,
	0x66, 0x6f, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73,
	0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x73, 0x12, 0x71, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e,
	0x53, 0x79, 0x6e, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x16, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53,
	0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x26, 0x12, 0x24, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x7d, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x81, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x62, 0x32, 0x38,
	0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x0e,
	0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x21,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53,
	0x75, 0x62, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22,
	0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x75, 0x62, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x73, 0x12, 0x6e, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x75, 0x64, 0x69,
	0x6f, 0x12, 0x1e, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43,
	0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42,
	0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2f, 0x61, 0x75, 0x64,
	0x69, 0x6f, 0x12, 0x90, 0x01, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
	0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x1a, 0x18, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a,
	0x01, 0x2a, 0x22, 0x31, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f,
	0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x75,
	0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x2e, 0x67, 0x62, 0x32, 0x38,
	0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x22, 0x2e, 0x2f,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74, 0x72, 0x61, 0x6e,
	0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d,
	0x2f, 0x7b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x7d, 0x12, 0x5b, 0x0a,
	0x09, 0x41, 0x64, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x16,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01,
	0x2a, 0x22, 0x17, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x61, 0x64, 0x64, 0x12, 0x61, 0x0a, 0x0c, 0x55, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x16,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01,
	0x2a, 0x22, 0x1a, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x87, 0x01,
	0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x12, 0x22, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47,
	0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12,
	0x26, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d,
	0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x7b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x12, 0x21, 0x2e, 0x67, 0x62, 0x32, 0x38,
	0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x41, 0x6c, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x41, 0x6c, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x64, 0x7d, 0x12, 0x76, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
	0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d,
	0x2f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8a, 0x01, 0x0a,
	0x10, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x23, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47,
	0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x70, 0x72, 0x6f, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x28, 0x12, 0x26, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63,
	0x72, 0x69, 0x62, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x71, 0x0a, 0x07, 0x47, 0x65, 0x74,
	0x53, 0x6e, 0x61, 0x70, 0x12, 0x1a, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6e, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x6e,
	0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x2a, 0x12, 0x28, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x73, 0x6e, 0x61, 0x70, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d,
	0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x0b,
	0x53, 0x74, 0x6f, 0x70, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x12, 0x1e, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74,
	0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x23, 0x2f,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x79,
	0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x6b, 0x65,
	0x79, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x6f, 0x61,
	0x64, 0x63, 0x61, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f,
	0x2e, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x22, 0x32, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x2f, 0x62, 0x72,
	0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x88,
	0x01, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74,
	0x12, 0x1c, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x72,
	0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39,
	0x22, 0x37, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70,
	0x6c, 0x61, 0x79, 0x2f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x2f, 0x73, 0x74,
	0x6f, 0x70, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x62, 0x0a, 0x0a, 0x47, 0x65, 0x74,
	0x41, 0x6c, 0x6c, 0x53, 0x53, 0x52, 0x43, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a,
	0x1c, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x53, 0x52,
	0x43, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x79, 0x2f, 0x73, 0x73, 0x72, 0x63, 0x12, 0x68, 0x0a,
	0x0d, 0x47, 0x65, 0x74, 0x52, 0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x20,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52,
	0x61, 0x77, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x13, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43, 0x68,
	0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x2f, 0x72, 0x61, 0x77, 0x12, 0x63, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x70, 0x72, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x18, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01,
	0x2a, 0x22, 0x19, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x64, 0x64, 0x12, 0x6f, 0x0a, 0x0b,
	0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x1c, 0x12, 0x1a, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x69, 0x0a,
	0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12,
	0x14, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x71, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x21, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a,
	0x1a, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x0d, 0x4c,
	0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x20, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74,
	0x66, 0x6f, 0x72, 0x6d, 0x73, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x22, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x6c, 0x69, 0x73,
	0x74, 0x12, 0x83, 0x01, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72,
	0x64, 0x12, 0x1e, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73,
	0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x76, 0x0a, 0x0a, 0x50, 0x74, 0x7a, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x1d, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x50, 0x74, 0x7a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x74, 0x7a, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12,
	0x7c, 0x0a, 0x0b, 0x49, 0x72, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x1e,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x49, 0x72, 0x69, 0x73,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d,
	0x12, 0x2b, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
	0x69, 0x2f, 0x69, 0x72, 0x69, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64,
	0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x7f, 0x0a,
	0x0c, 0x46, 0x6f, 0x63, 0x75, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x1f, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x46, 0x6f, 0x63, 0x75, 0x73,
	0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e,
	0x12, 0x2c, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
	0x69, 0x2f, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x7e,
	0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x19, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x73, 0x65,
	0x74, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x74,
	0x0a, 0x09, 0x41, 0x64, 0x64, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x74, 0x2f, 0x7b, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
	0x6c, 0x49, 0x64, 0x7d, 0x12, 0x7a, 0x0a, 0x0a, 0x43, 0x61, 0x6c, 0x6c, 0x50, 0x72, 0x65, 0x73,
	0x65, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e,
	0x50, 0x72, 0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12,
	0x2f, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72,
	0x65, 0x73, 0x65, 0x74, 0x2f, 0x63, 0x61, 0x6c, 0x6c, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d,
	0x12, 0x7e, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x65, 0x73, 0x65, 0x74,
	0x12, 0x19, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x50, 0x72,
	0x65, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x73,
	0x65, 0x74, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d,
	0x12, 0x88, 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x50, 0x6f,
	0x69, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f,
	0x2e, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f,
	0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x2f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
	0x2f, 0x61, 0x64, 0x64, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f,
	0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x11,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x12, 0x1e, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43,
	0x72, 0x75, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42,
	0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x2f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x64,
	0x65, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d,
	0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x84, 0x01, 0x0a,
	0x0e, 0x53, 0x65, 0x74, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12,
	0x1e, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x43, 0x72, 0x75,
	0x69, 0x73, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73,
	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02,
	0x32, 0x12, 0x30, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x2f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x49, 0x64, 0x7d, 0x12, 0x81, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x74, 0x43, 0x72, 0x75, 0x69, 0x73,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x2f, 0x74, 0x69, 0x6d, 0x65,
	0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x7c, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74,
	0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x70, 0x72, 0x6f, 0x2e, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42,
	0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x63, 0x72, 0x75, 0x69, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x7b,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e,
	0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x7a, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x70, 0x43, 0x72, 0x75,
	0x69, 0x73, 0x65, 0x12, 0x19, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f,
	0x2e, 0x43, 0x72, 0x75, 0x69, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31,
	0x12, 0x2f, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63,
	0x72, 0x75, 0x69, 0x73, 0x65, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
	0x7d, 0x12, 0x76, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x17,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x63, 0x61, 0x6e,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x67, 0x62, 0x32, 0x38,
	0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x2f, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x74, 0x0a, 0x08, 0x53, 0x74, 0x6f,
	0x70, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x17, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f,
	0x12, 0x2d, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73,
	0x63, 0x61, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12,
	0x7b, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x17,
	0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x63, 0x61, 0x6e,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x67, 0x62, 0x32, 0x38,
	0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x2f, 0x73, 0x65, 0x74,
	0x2f, 0x6c, 0x65, 0x66, 0x74, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d,
	0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x7d, 0x0a, 0x0c,
	0x53, 0x65, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x69, 0x67, 0x68, 0x74, 0x12, 0x17, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70,
	0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38,
	0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x2f, 0x73, 0x65, 0x74, 0x2f, 0x72,
	0x69, 0x67, 0x68, 0x74, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f,
	0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x0c,
	0x53, 0x65, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x1c, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x70,
	0x65, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x63, 0x61, 0x6e, 0x2f,
	0x73, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d,
	0x12, 0x7c, 0x0a, 0x0c, 0x57, 0x69, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x12, 0x1f, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x57, 0x69,
	0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42,
	0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4,
	0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x77, 0x69, 0x70, 0x65, 0x72, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x88,
	0x01, 0x0a, 0x10, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x12, 0x23, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f,
	0x2e, 0x41, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x75, 0x78, 0x69, 0x6c, 0x69, 0x61,
	0x72, 0x79, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63,
	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x7d, 0x12, 0x60, 0x0a, 0x07, 0x54, 0x65, 0x73,
	0x74, 0x53, 0x69, 0x70, 0x12, 0x1a, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x1b, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x54, 0x65,
	0x73, 0x74, 0x53, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x69, 0x70, 0x12, 0x79, 0x0a, 0x0c, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x62,
	0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41,
	0x6c, 0x61, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67,
	0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x41, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6c, 0x61, 0x72, 0x6d, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x12, 0x83, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x50, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x25, 0x2e,
	0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72,
	0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x67, 0x62, 0x32, 0x38,
	0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
	0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2f, 0x61, 0x64, 0x64, 0x12, 0x84, 0x01, 0x0a,
	0x09, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e,
	0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31,
	0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x67, 0x62, 0x32,
	0x38, 0x31, 0x38, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69,
	0x6e, 0x67, 0x2f, 0x7b, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x7d, 0x2f, 0x7b, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x7d, 0x2f, 0x7b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
	0x49, 0x64, 0x7d, 0x12, 0x6a, 0x0a, 0x0a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x70, 0x65,
	0x67, 0x12, 0x1d, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x55,
	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x70, 0x65, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x18, 0x2e, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f, 0x2e, 0x42, 0x61,
	0x73, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93,
	0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x42,
	0x22, 0x5a, 0x20, 0x6d, 0x37, 0x73, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x2f, 0x76, 0x35, 0x2f, 0x70,
	0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x67, 0x62, 0x32, 0x38, 0x31, 0x38, 0x31, 0x70, 0x72, 0x6f,
	0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
})

var (
	file_gb28181_proto_rawDescOnce sync.Once
	file_gb28181_proto_rawDescData []byte
)

func file_gb28181_proto_rawDescGZIP() []byte {
	file_gb28181_proto_rawDescOnce.Do(func() {
		file_gb28181_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_gb28181_proto_rawDesc), len(file_gb28181_proto_rawDesc)))
	})
	return file_gb28181_proto_rawDescData
}

var file_gb28181_proto_msgTypes = make([]protoimpl.MessageInfo, 69)
var file_gb28181_proto_goTypes = []any{
	(*BaseResponse)(nil),              // 0: gb28181.BaseResponse
	(*GetDeviceRequest)(nil),          // 1: gb28181.GetDeviceRequest
	(*GetDevicesRequest)(nil),         // 2: gb28181.GetDevicesRequest
	(*DevicesPageInfo)(nil),           // 3: gb28181.DevicesPageInfo
	(*GetChannelsRequest)(nil),        // 4: gb28181.GetChannelsRequest
	(*ChannelsPageInfo)(nil),          // 5: gb28181.ChannelsPageInfo
	(*SyncDeviceRequest)(nil),         // 6: gb28181.SyncDeviceRequest
	(*SyncStatus)(nil),                // 7: gb28181.SyncStatus
	(*DeleteDeviceRequest)(nil),       // 8: gb28181.DeleteDeviceRequest
	(*DeleteDeviceResponse)(nil),      // 9: gb28181.DeleteDeviceResponse
	(*GetSubChannelsRequest)(nil),     // 10: gb28181.GetSubChannelsRequest
	(*Channel)(nil),                   // 11: gb28181.Channel
	(*Device)(nil),                    // 12: gb28181.Device
	(*ResponseList)(nil),              // 13: gb28181.ResponseList
	(*ChangeAudioRequest)(nil),        // 14: gb28181.ChangeAudioRequest
	(*UpdateTransportRequest)(nil),    // 15: gb28181.UpdateTransportRequest
	(*GetDeviceStatusRequest)(nil),    // 16: gb28181.GetDeviceStatusRequest
	(*DeviceStatusResponse)(nil),      // 17: gb28181.DeviceStatusResponse
	(*GetDeviceAlarmRequest)(nil),     // 18: gb28181.GetDeviceAlarmRequest
	(*DeviceAlarmResponse)(nil),       // 19: gb28181.DeviceAlarmResponse
	(*AlarmInfo)(nil),                 // 20: gb28181.AlarmInfo
	(*GetSyncStatusRequest)(nil),      // 21: gb28181.GetSyncStatusRequest
	(*GetSubscribeInfoRequest)(nil),   // 22: gb28181.GetSubscribeInfoRequest
	(*SubscribeInfoResponse)(nil),     // 23: gb28181.SubscribeInfoResponse
	(*GetSnapRequest)(nil),            // 24: gb28181.GetSnapRequest
	(*SnapResponse)(nil),              // 25: gb28181.SnapResponse
	(*GetRawChannelRequest)(nil),      // 26: gb28181.GetRawChannelRequest
	(*DeviceResponse)(nil),            // 27: gb28181.DeviceResponse
	(*ChannelResponse)(nil),           // 28: gb28181.ChannelResponse
	(*PlayRequest)(nil),               // 29: gb28181.PlayRequest
	(*PlaybackRequest)(nil),           // 30: gb28181.PlaybackRequest
	(*PlayResponse)(nil),              // 31: gb28181.PlayResponse
	(*StreamInfo)(nil),                // 32: gb28181.StreamInfo
	(*ConvertStopRequest)(nil),        // 33: gb28181.ConvertStopRequest
	(*BroadcastRequest)(nil),          // 34: gb28181.BroadcastRequest
	(*BroadcastResponse)(nil),         // 35: gb28181.BroadcastResponse
	(*SSRCInfo)(nil),                  // 36: gb28181.SSRCInfo
	(*SSRCListResponse)(nil),          // 37: gb28181.SSRCListResponse
	(*Platform)(nil),                  // 38: gb28181.Platform
	(*GetPlatformRequest)(nil),        // 39: gb28181.GetPlatformRequest
	(*DeletePlatformRequest)(nil),     // 40: gb28181.DeletePlatformRequest
	(*ListPlatformsRequest)(nil),      // 41: gb28181.ListPlatformsRequest
	(*PlatformResponse)(nil),          // 42: gb28181.PlatformResponse
	(*PlatformsPageInfo)(nil),         // 43: gb28181.PlatformsPageInfo
	(*QueryRecordRequest)(nil),        // 44: gb28181.QueryRecordRequest
	(*QueryRecordResponse)(nil),       // 45: gb28181.QueryRecordResponse
	(*RecordItem)(nil),                // 46: gb28181.RecordItem
	(*PtzControlRequest)(nil),         // 47: gb28181.PtzControlRequest
	(*IrisControlRequest)(nil),        // 48: gb28181.IrisControlRequest
	(*FocusControlRequest)(nil),       // 49: gb28181.FocusControlRequest
	(*PresetRequest)(nil),             // 50: gb28181.PresetRequest
	(*PresetResponse)(nil),            // 51: gb28181.PresetResponse
	(*CruisePointRequest)(nil),        // 52: gb28181.CruisePointRequest
	(*CruiseSpeedRequest)(nil),        // 53: gb28181.CruiseSpeedRequest
	(*CruiseTimeRequest)(nil),         // 54: gb28181.CruiseTimeRequest
	(*CruiseRequest)(nil),             // 55: gb28181.CruiseRequest
	(*ScanRequest)(nil),               // 56: gb28181.ScanRequest
	(*ScanSpeedRequest)(nil),          // 57: gb28181.ScanSpeedRequest
	(*WiperControlRequest)(nil),       // 58: gb28181.WiperControlRequest
	(*AuxiliaryControlRequest)(nil),   // 59: gb28181.AuxiliaryControlRequest
	(*TestSipRequest)(nil),            // 60: gb28181.TestSipRequest
	(*TestSipResponse)(nil),           // 61: gb28181.TestSipResponse
	(*SearchAlarmsRequest)(nil),       // 62: gb28181.SearchAlarmsRequest
	(*SearchAlarmsResponse)(nil),      // 63: gb28181.SearchAlarmsResponse
	(*AlarmRecord)(nil),               // 64: gb28181.AlarmRecord
	(*AddPlatformChannelRequest)(nil), // 65: gb28181.AddPlatformChannelRequest
	(*RecordingRequest)(nil),          // 66: gb28181.RecordingRequest
	(*UploadJpegRequest)(nil),         // 67: gb28181.UploadJpegRequest
	nil,                               // 68: gb28181.SubscribeInfoResponse.DialogStateEntry
	(*timestamppb.Timestamp)(nil),     // 69: google.protobuf.Timestamp
	(*emptypb.Empty)(nil),             // 70: google.protobuf.Empty
}
var file_gb28181_proto_depIdxs = []int32{
	12, // 0: gb28181.DevicesPageInfo.data:type_name -> gb28181.Device
	11, // 1: gb28181.ChannelsPageInfo.list:type_name -> gb28181.Channel
	69, // 2: gb28181.Channel.GpsTime:type_name -> google.protobuf.Timestamp
	69, // 3: gb28181.Device.RegisterTime:type_name -> google.protobuf.Timestamp
	69, // 4: gb28181.Device.UpdateTime:type_name -> google.protobuf.Timestamp
	69, // 5: gb28181.Device.KeepAliveTime:type_name -> google.protobuf.Timestamp
	11, // 6: gb28181.Device.Channels:type_name -> gb28181.Channel
	12, // 7: gb28181.ResponseList.data:type_name -> gb28181.Device
	20, // 8: gb28181.DeviceAlarmResponse.alarms:type_name -> gb28181.AlarmInfo
	68, // 9: gb28181.SubscribeInfoResponse.dialogState:type_name -> gb28181.SubscribeInfoResponse.DialogStateEntry
	12, // 10: gb28181.DeviceResponse.data:type_name -> gb28181.Device
	11, // 11: gb28181.ChannelResponse.data:type_name -> gb28181.Channel
	32, // 12: gb28181.PlayResponse.stream_info:type_name -> gb28181.StreamInfo
	36, // 13: gb28181.SSRCListResponse.data:type_name -> gb28181.SSRCInfo
	38, // 14: gb28181.PlatformResponse.data:type_name -> gb28181.Platform
	38, // 15: gb28181.PlatformsPageInfo.list:type_name -> gb28181.Platform
	46, // 16: gb28181.QueryRecordResponse.data:type_name -> gb28181.RecordItem
	69, // 17: gb28181.QueryRecordResponse.last_time:type_name -> google.protobuf.Timestamp
	64, // 18: gb28181.SearchAlarmsResponse.list:type_name -> gb28181.AlarmRecord
	2,  // 19: gb28181.api.List:input_type -> gb28181.GetDevicesRequest
	1,  // 20: gb28181.api.GetDevice:input_type -> gb28181.GetDeviceRequest
	2,  // 21: gb28181.api.GetDevices:input_type -> gb28181.GetDevicesRequest
	4,  // 22: gb28181.api.GetChannels:input_type -> gb28181.GetChannelsRequest
	6,  // 23: gb28181.api.SyncDevice:input_type -> gb28181.SyncDeviceRequest
	8,  // 24: gb28181.api.DeleteDevice:input_type -> gb28181.DeleteDeviceRequest
	10, // 25: gb28181.api.GetSubChannels:input_type -> gb28181.GetSubChannelsRequest
	14, // 26: gb28181.api.ChangeAudio:input_type -> gb28181.ChangeAudioRequest
	11, // 27: gb28181.api.UpdateChannelStreamIdentification:input_type -> gb28181.Channel
	15, // 28: gb28181.api.UpdateTransport:input_type -> gb28181.UpdateTransportRequest
	12, // 29: gb28181.api.AddDevice:input_type -> gb28181.Device
	12, // 30: gb28181.api.UpdateDevice:input_type -> gb28181.Device
	16, // 31: gb28181.api.GetDeviceStatus:input_type -> gb28181.GetDeviceStatusRequest
	18, // 32: gb28181.api.GetDeviceAlarm:input_type -> gb28181.GetDeviceAlarmRequest
	21, // 33: gb28181.api.GetSyncStatus:input_type -> gb28181.GetSyncStatusRequest
	22, // 34: gb28181.api.GetSubscribeInfo:input_type -> gb28181.GetSubscribeInfoRequest
	24, // 35: gb28181.api.GetSnap:input_type -> gb28181.GetSnapRequest
	33, // 36: gb28181.api.StopConvert:input_type -> gb28181.ConvertStopRequest
	34, // 37: gb28181.api.StartBroadcast:input_type -> gb28181.BroadcastRequest
	34, // 38: gb28181.api.StopBroadcast:input_type -> gb28181.BroadcastRequest
	70, // 39: gb28181.api.GetAllSSRC:input_type -> google.protobuf.Empty
	26, // 40: gb28181.api.GetRawChannel:input_type -> gb28181.GetRawChannelRequest
	38, // 41: gb28181.api.AddPlatform:input_type -> gb28181.Platform
	39, // 42: gb28181.api.GetPlatform:input_type -> gb28181.GetPlatformRequest
	38, // 43: gb28181.api.UpdatePlatform:input_type -> gb28181.Platform
	40, // 44: gb28181.api.DeletePlatform:input_type -> gb28181.DeletePlatformRequest
	41, // 45: gb28181.api.ListPlatforms:input_type -> gb28181.ListPlatformsRequest
	44, // 46: gb28181.api.QueryRecord:input_type -> gb28181.QueryRecordRequest
	47, // 47: gb28181.api.PtzControl:input_type -> gb28181.PtzControlRequest
	48, // 48: gb28181.api.IrisControl:input_type -> gb28181.IrisControlRequest
	49, // 49: gb28181.api.FocusControl:input_type -> gb28181.FocusControlRequest
	50, // 50: gb28181.api.QueryPreset:input_type -> gb28181.PresetRequest
	50, // 51: gb28181.api.AddPreset:input_type -> gb28181.PresetRequest
	50, // 52: gb28181.api.CallPreset:input_type -> gb28181.PresetRequest
	50, // 53: gb28181.api.DeletePreset:input_type -> gb28181.PresetRequest
	52, // 54: gb28181.api.AddCruisePoint:input_type -> gb28181.CruisePointRequest
	52, // 55: gb28181.api.DeleteCruisePoint:input_type -> gb28181.CruisePointRequest
	53, // 56: gb28181.api.SetCruiseSpeed:input_type -> gb28181.CruiseSpeedRequest
	54, // 57: gb28181.api.SetCruiseTime:input_type -> gb28181.CruiseTimeRequest
	55, // 58: gb28181.api.StartCruise:input_type -> gb28181.CruiseRequest
	55, // 59: gb28181.api.StopCruise:input_type -> gb28181.CruiseRequest
	56, // 60: gb28181.api.StartScan:input_type -> gb28181.ScanRequest
	56, // 61: gb28181.api.StopScan:input_type -> gb28181.ScanRequest
	56, // 62: gb28181.api.SetScanLeft:input_type -> gb28181.ScanRequest
	56, // 63: gb28181.api.SetScanRight:input_type -> gb28181.ScanRequest
	57, // 64: gb28181.api.SetScanSpeed:input_type -> gb28181.ScanSpeedRequest
	58, // 65: gb28181.api.WiperControl:input_type -> gb28181.WiperControlRequest
	59, // 66: gb28181.api.AuxiliaryControl:input_type -> gb28181.AuxiliaryControlRequest
	60, // 67: gb28181.api.TestSip:input_type -> gb28181.TestSipRequest
	62, // 68: gb28181.api.SearchAlarms:input_type -> gb28181.SearchAlarmsRequest
	65, // 69: gb28181.api.AddPlatformChannel:input_type -> gb28181.AddPlatformChannelRequest
	66, // 70: gb28181.api.Recording:input_type -> gb28181.RecordingRequest
	67, // 71: gb28181.api.UploadJpeg:input_type -> gb28181.UploadJpegRequest
	3,  // 72: gb28181.api.List:output_type -> gb28181.DevicesPageInfo
	27, // 73: gb28181.api.GetDevice:output_type -> gb28181.DeviceResponse
	3,  // 74: gb28181.api.GetDevices:output_type -> gb28181.DevicesPageInfo
	5,  // 75: gb28181.api.GetChannels:output_type -> gb28181.ChannelsPageInfo
	7,  // 76: gb28181.api.SyncDevice:output_type -> gb28181.SyncStatus
	9,  // 77: gb28181.api.DeleteDevice:output_type -> gb28181.DeleteDeviceResponse
	5,  // 78: gb28181.api.GetSubChannels:output_type -> gb28181.ChannelsPageInfo
	0,  // 79: gb28181.api.ChangeAudio:output_type -> gb28181.BaseResponse
	0,  // 80: gb28181.api.UpdateChannelStreamIdentification:output_type -> gb28181.BaseResponse
	70, // 81: gb28181.api.UpdateTransport:output_type -> google.protobuf.Empty
	70, // 82: gb28181.api.AddDevice:output_type -> google.protobuf.Empty
	70, // 83: gb28181.api.UpdateDevice:output_type -> google.protobuf.Empty
	17, // 84: gb28181.api.GetDeviceStatus:output_type -> gb28181.DeviceStatusResponse
	19, // 85: gb28181.api.GetDeviceAlarm:output_type -> gb28181.DeviceAlarmResponse
	7,  // 86: gb28181.api.GetSyncStatus:output_type -> gb28181.SyncStatus
	23, // 87: gb28181.api.GetSubscribeInfo:output_type -> gb28181.SubscribeInfoResponse
	25, // 88: gb28181.api.GetSnap:output_type -> gb28181.SnapResponse
	0,  // 89: gb28181.api.StopConvert:output_type -> gb28181.BaseResponse
	35, // 90: gb28181.api.StartBroadcast:output_type -> gb28181.BroadcastResponse
	0,  // 91: gb28181.api.StopBroadcast:output_type -> gb28181.BaseResponse
	37, // 92: gb28181.api.GetAllSSRC:output_type -> gb28181.SSRCListResponse
	11, // 93: gb28181.api.GetRawChannel:output_type -> gb28181.Channel
	0,  // 94: gb28181.api.AddPlatform:output_type -> gb28181.BaseResponse
	42, // 95: gb28181.api.GetPlatform:output_type -> gb28181.PlatformResponse
	0,  // 96: gb28181.api.UpdatePlatform:output_type -> gb28181.BaseResponse
	0,  // 97: gb28181.api.DeletePlatform:output_type -> gb28181.BaseResponse
	43, // 98: gb28181.api.ListPlatforms:output_type -> gb28181.PlatformsPageInfo
	45, // 99: gb28181.api.QueryRecord:output_type -> gb28181.QueryRecordResponse
	0,  // 100: gb28181.api.PtzControl:output_type -> gb28181.BaseResponse
	0,  // 101: gb28181.api.IrisControl:output_type -> gb28181.BaseResponse
	0,  // 102: gb28181.api.FocusControl:output_type -> gb28181.BaseResponse
	51, // 103: gb28181.api.QueryPreset:output_type -> gb28181.PresetResponse
	0,  // 104: gb28181.api.AddPreset:output_type -> gb28181.BaseResponse
	0,  // 105: gb28181.api.CallPreset:output_type -> gb28181.BaseResponse
	0,  // 106: gb28181.api.DeletePreset:output_type -> gb28181.BaseResponse
	0,  // 107: gb28181.api.AddCruisePoint:output_type -> gb28181.BaseResponse
	0,  // 108: gb28181.api.DeleteCruisePoint:output_type -> gb28181.BaseResponse
	0,  // 109: gb28181.api.SetCruiseSpeed:output_type -> gb28181.BaseResponse
	0,  // 110: gb28181.api.SetCruiseTime:output_type -> gb28181.BaseResponse
	0,  // 111: gb28181.api.StartCruise:output_type -> gb28181.BaseResponse
	0,  // 112: gb28181.api.StopCruise:output_type -> gb28181.BaseResponse
	0,  // 113: gb28181.api.StartScan:output_type -> gb28181.BaseResponse
	0,  // 114: gb28181.api.StopScan:output_type -> gb28181.BaseResponse
	0,  // 115: gb28181.api.SetScanLeft:output_type -> gb28181.BaseResponse
	0,  // 116: gb28181.api.SetScanRight:output_type -> gb28181.BaseResponse
	0,  // 117: gb28181.api.SetScanSpeed:output_type -> gb28181.BaseResponse
	0,  // 118: gb28181.api.WiperControl:output_type -> gb28181.BaseResponse
	0,  // 119: gb28181.api.AuxiliaryControl:output_type -> gb28181.BaseResponse
	61, // 120: gb28181.api.TestSip:output_type -> gb28181.TestSipResponse
	63, // 121: gb28181.api.SearchAlarms:output_type -> gb28181.SearchAlarmsResponse
	0,  // 122: gb28181.api.AddPlatformChannel:output_type -> gb28181.BaseResponse
	0,  // 123: gb28181.api.Recording:output_type -> gb28181.BaseResponse
	0,  // 124: gb28181.api.UploadJpeg:output_type -> gb28181.BaseResponse
	72, // [72:125] is the sub-list for method output_type
	19, // [19:72] is the sub-list for method input_type
	19, // [19:19] is the sub-list for extension type_name
	19, // [19:19] is the sub-list for extension extendee
	0,  // [0:19] is the sub-list for field type_name
}

func init() { file_gb28181_proto_init() }
func file_gb28181_proto_init() {
	if File_gb28181_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_gb28181_proto_rawDesc), len(file_gb28181_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   69,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_gb28181_proto_goTypes,
		DependencyIndexes: file_gb28181_proto_depIdxs,
		MessageInfos:      file_gb28181_proto_msgTypes,
	}.Build()
	File_gb28181_proto = out.File
	file_gb28181_proto_goTypes = nil
	file_gb28181_proto_depIdxs = nil
}
