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

package pb

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

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

//Platform 平台枚举
type Platform int32

const (
	Platform_IOS        Platform = 0 // ios
	Platform_ANDROID    Platform = 1 // android
	Platform_WEB        Platform = 2 // web
	Platform_WINDOWS    Platform = 3 // windows
	Platform_MAC        Platform = 4 // mac
	Platform_LINUX      Platform = 5 // linux
	Platform_Ipad       Platform = 6 // ipad
	Platform_AndroidPad Platform = 7 // android pad
)

// Enum value maps for Platform.
var (
	Platform_name = map[int32]string{
		0: "IOS",
		1: "ANDROID",
		2: "WEB",
		3: "WINDOWS",
		4: "MAC",
		5: "LINUX",
		6: "Ipad",
		7: "AndroidPad",
	}
	Platform_value = map[string]int32{
		"IOS":        0,
		"ANDROID":    1,
		"WEB":        2,
		"WINDOWS":    3,
		"MAC":        4,
		"LINUX":      5,
		"Ipad":       6,
		"AndroidPad": 7,
	}
)

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

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

func (Platform) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[0].Descriptor()
}

func (Platform) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[0]
}

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

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

//ResponseCode
type ResponseCode int32

const (
	ResponseCode_SUCCESS        ResponseCode = 0 // 成功
	ResponseCode_INVALID_DATA   ResponseCode = 1 // 无效的数据
	ResponseCode_UNAUTHORIZED   ResponseCode = 2 // 未授权
	ResponseCode_FORBIDDEN      ResponseCode = 3 // 禁止访问
	ResponseCode_INVALID_METHOD ResponseCode = 4 // 无效的方法
	ResponseCode_TIMEOUT        ResponseCode = 5 // 超时
	ResponseCode_SERVER_ERROR   ResponseCode = 6 // 服务器错误
)

// Enum value maps for ResponseCode.
var (
	ResponseCode_name = map[int32]string{
		0: "SUCCESS",
		1: "INVALID_DATA",
		2: "UNAUTHORIZED",
		3: "FORBIDDEN",
		4: "INVALID_METHOD",
		5: "TIMEOUT",
		6: "SERVER_ERROR",
	}
	ResponseCode_value = map[string]int32{
		"SUCCESS":        0,
		"INVALID_DATA":   1,
		"UNAUTHORIZED":   2,
		"FORBIDDEN":      3,
		"INVALID_METHOD": 4,
		"TIMEOUT":        5,
		"SERVER_ERROR":   6,
	}
)

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

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

func (ResponseCode) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[1].Descriptor()
}

func (ResponseCode) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[1]
}

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

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

//ResponseActionType 客户端收到响应后做的动作类型
type ResponseActionType int32

const (
	ResponseActionType_NONE_ACTION        ResponseActionType = 0 // 无动作
	ResponseActionType_TOAST_ACTION       ResponseActionType = 1 // toast提示
	ResponseActionType_ALERT_ACTION       ResponseActionType = 2 // alert提示
	ResponseActionType_SECOND_AUTH_ACTION ResponseActionType = 3 // 二次认证 一段时间内没有进行二次验证 而且此次是高危操作 此时客户端应该弹出二次验证界面 验证短信验证码
)

// Enum value maps for ResponseActionType.
var (
	ResponseActionType_name = map[int32]string{
		0: "NONE_ACTION",
		1: "TOAST_ACTION",
		2: "ALERT_ACTION",
		3: "SECOND_AUTH_ACTION",
	}
	ResponseActionType_value = map[string]int32{
		"NONE_ACTION":        0,
		"TOAST_ACTION":       1,
		"ALERT_ACTION":       2,
		"SECOND_AUTH_ACTION": 3,
	}
)

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

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

func (ResponseActionType) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[2].Descriptor()
}

func (ResponseActionType) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[2]
}

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

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

//WebsocketCustomCloseCode websocket关闭码
//You can define custom codes in the 3000-4999 range.
//The 3000-3999 range is reserved for use by libraries, frameworks and applications.
//The 4000-4999 range is reserved for private use.
type WebsocketCustomCloseCode int32

const (
	WebsocketCustomCloseCode_CloseCodeZero                 WebsocketCustomCloseCode = 0    // pb必须有一个默认值
	WebsocketCustomCloseCode_CloseCodeNormalClose          WebsocketCustomCloseCode = 1000 // 正常关闭
	WebsocketCustomCloseCode_CloseCodeGoingAway            WebsocketCustomCloseCode = 1001 // 离开
	WebsocketCustomCloseCode_CloseCodeProtocolError        WebsocketCustomCloseCode = 1002 // 协议错误
	WebsocketCustomCloseCode_CloseCodeUnsupportedData      WebsocketCustomCloseCode = 1003 // 不支持的数据
	WebsocketCustomCloseCode_CloseCodeNoStatusReceived     WebsocketCustomCloseCode = 1005 // 没有收到状态
	WebsocketCustomCloseCode_CloseCodeAbnormalClosure      WebsocketCustomCloseCode = 1006 // 异常关闭
	WebsocketCustomCloseCode_CloseCodeAuthenticationFailed WebsocketCustomCloseCode = 4001 // 认证失败
	WebsocketCustomCloseCode_CloseCodeDuplicateConnection  WebsocketCustomCloseCode = 4002 // 重复连接
	WebsocketCustomCloseCode_CloseCodeServerInternalError  WebsocketCustomCloseCode = 4003 // 服务器内部错误
	WebsocketCustomCloseCode_CloseCodeHeartbeatTimeout     WebsocketCustomCloseCode = 4004 // 心跳超时
)

// Enum value maps for WebsocketCustomCloseCode.
var (
	WebsocketCustomCloseCode_name = map[int32]string{
		0:    "CloseCodeZero",
		1000: "CloseCodeNormalClose",
		1001: "CloseCodeGoingAway",
		1002: "CloseCodeProtocolError",
		1003: "CloseCodeUnsupportedData",
		1005: "CloseCodeNoStatusReceived",
		1006: "CloseCodeAbnormalClosure",
		4001: "CloseCodeAuthenticationFailed",
		4002: "CloseCodeDuplicateConnection",
		4003: "CloseCodeServerInternalError",
		4004: "CloseCodeHeartbeatTimeout",
	}
	WebsocketCustomCloseCode_value = map[string]int32{
		"CloseCodeZero":                 0,
		"CloseCodeNormalClose":          1000,
		"CloseCodeGoingAway":            1001,
		"CloseCodeProtocolError":        1002,
		"CloseCodeUnsupportedData":      1003,
		"CloseCodeNoStatusReceived":     1005,
		"CloseCodeAbnormalClosure":      1006,
		"CloseCodeAuthenticationFailed": 4001,
		"CloseCodeDuplicateConnection":  4002,
		"CloseCodeServerInternalError":  4003,
		"CloseCodeHeartbeatTimeout":     4004,
	}
)

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

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

func (WebsocketCustomCloseCode) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[3].Descriptor()
}

func (WebsocketCustomCloseCode) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[3]
}

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

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

//ConversationType 会话类型
type ConversationType int32

const (
	// 单聊
	ConversationType_Single ConversationType = 0
	// 群聊
	ConversationType_Group ConversationType = 1
	// 订阅号
	ConversationType_Subscription ConversationType = 2
)

// Enum value maps for ConversationType.
var (
	ConversationType_name = map[int32]string{
		0: "Single",
		1: "Group",
		2: "Subscription",
	}
	ConversationType_value = map[string]int32{
		"Single":       0,
		"Group":        1,
		"Subscription": 2,
	}
)

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

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

func (ConversationType) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[4].Descriptor()
}

func (ConversationType) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[4]
}

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

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

//NoticeContentType 通知内容类型
type NoticeContentType int32

const (
	// 有新的好友请求
	NoticeContentType_NewFriendRequest NoticeContentType = 0
	// 加入到了新群
	NoticeContentType_JoinNewGroup NoticeContentType = 1
	// 在线状态
	NoticeContentType_OnlineStatus NoticeContentType = 2
)

// Enum value maps for NoticeContentType.
var (
	NoticeContentType_name = map[int32]string{
		0: "NewFriendRequest",
		1: "JoinNewGroup",
		2: "OnlineStatus",
	}
	NoticeContentType_value = map[string]int32{
		"NewFriendRequest": 0,
		"JoinNewGroup":     1,
		"OnlineStatus":     2,
	}
)

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

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

func (NoticeContentType) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[5].Descriptor()
}

func (NoticeContentType) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[5]
}

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

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

//MessageContentType 消息内容类型
type MessageContentType int32

const (
	// 图文
	MessageContentType_Text MessageContentType = 0
	// Markdown
	MessageContentType_Markdown MessageContentType = 1
	// 图片
	MessageContentType_Image MessageContentType = 2
	// 语音
	MessageContentType_Voice MessageContentType = 3
	// 视频
	MessageContentType_Video MessageContentType = 4
	// 正在输入
	MessageContentType_Typing MessageContentType = 101
	// 已读
	MessageContentType_Read MessageContentType = 102
	// 撤回
	MessageContentType_Recall MessageContentType = 103
)

// Enum value maps for MessageContentType.
var (
	MessageContentType_name = map[int32]string{
		0:   "Text",
		1:   "Markdown",
		2:   "Image",
		3:   "Voice",
		4:   "Video",
		101: "Typing",
		102: "Read",
		103: "Recall",
	}
	MessageContentType_value = map[string]int32{
		"Text":     0,
		"Markdown": 1,
		"Image":    2,
		"Voice":    3,
		"Video":    4,
		"Typing":   101,
		"Read":     102,
		"Recall":   103,
	}
)

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

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

func (MessageContentType) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[6].Descriptor()
}

func (MessageContentType) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[6]
}

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

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

//ConversationSettingKey 会话设置key
type ConversationSettingKey int32

const (
	// 是否置顶
	ConversationSettingKey_IsPinned ConversationSettingKey = 0
	// 是否免打扰
	ConversationSettingKey_IsMuted ConversationSettingKey = 1
	// 是否屏蔽
	ConversationSettingKey_IsBlocked ConversationSettingKey = 2
	// 是否折叠
	ConversationSettingKey_IsFolded ConversationSettingKey = 3
	// 自己设置的会话备注
	ConversationSettingKey_ConversationAlias ConversationSettingKey = 4
	// 在会话中的昵称
	ConversationSettingKey_NicknameInConversation ConversationSettingKey = 5
)

// Enum value maps for ConversationSettingKey.
var (
	ConversationSettingKey_name = map[int32]string{
		0: "IsPinned",
		1: "IsMuted",
		2: "IsBlocked",
		3: "IsFolded",
		4: "ConversationAlias",
		5: "NicknameInConversation",
	}
	ConversationSettingKey_value = map[string]int32{
		"IsPinned":               0,
		"IsMuted":                1,
		"IsBlocked":              2,
		"IsFolded":               3,
		"ConversationAlias":      4,
		"NicknameInConversation": 5,
	}
)

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

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

func (ConversationSettingKey) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[7].Descriptor()
}

func (ConversationSettingKey) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[7]
}

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

// Deprecated: Use ConversationSettingKey.Descriptor instead.
func (ConversationSettingKey) EnumDescriptor() ([]byte, []int) {
	return file_common_proto_rawDescGZIP(), []int{7}
}

type ToastActionData_Level int32

const (
	ToastActionData_INFO  ToastActionData_Level = 0 // 信息
	ToastActionData_WARN  ToastActionData_Level = 1 // 警告
	ToastActionData_ERROR ToastActionData_Level = 2 // 错误
)

// Enum value maps for ToastActionData_Level.
var (
	ToastActionData_Level_name = map[int32]string{
		0: "INFO",
		1: "WARN",
		2: "ERROR",
	}
	ToastActionData_Level_value = map[string]int32{
		"INFO":  0,
		"WARN":  1,
		"ERROR": 2,
	}
)

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

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

func (ToastActionData_Level) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[8].Descriptor()
}

func (ToastActionData_Level) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[8]
}

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

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

type AlertActionData_ButtonType int32

const (
	AlertActionData_NO_BUTTON AlertActionData_ButtonType = 0 // 无按钮
	AlertActionData_JUMP_URL  AlertActionData_ButtonType = 1 // 跳转url
)

// Enum value maps for AlertActionData_ButtonType.
var (
	AlertActionData_ButtonType_name = map[int32]string{
		0: "NO_BUTTON",
		1: "JUMP_URL",
	}
	AlertActionData_ButtonType_value = map[string]int32{
		"NO_BUTTON": 0,
		"JUMP_URL":  1,
	}
)

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

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

func (AlertActionData_ButtonType) Descriptor() protoreflect.EnumDescriptor {
	return file_common_proto_enumTypes[9].Descriptor()
}

func (AlertActionData_ButtonType) Type() protoreflect.EnumType {
	return &file_common_proto_enumTypes[9]
}

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

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

//RequestHeader 请求头
type RequestHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AppId       string   `protobuf:"bytes,1,opt,name=appId,proto3" json:"appId"`                         // 应用id
	UserId      string   `protobuf:"bytes,2,opt,name=userId,proto3" json:"userId"`                       // 用户id
	ClientIp    string   `protobuf:"bytes,3,opt,name=clientIp,proto3" json:"clientIp"`                   // 客户端ip
	InstallId   string   `protobuf:"bytes,4,opt,name=installId,proto3" json:"installId"`                 // 安装后向服务器注册的UUID
	Platform    Platform `protobuf:"varint,5,opt,name=platform,proto3,enum=pb.Platform" json:"platform"` // 平台
	DeviceModel string   `protobuf:"bytes,6,opt,name=deviceModel,proto3" json:"deviceModel"`             // 设备型号
	OsVersion   string   `protobuf:"bytes,7,opt,name=osVersion,proto3" json:"osVersion"`                 // 操作系统版本
	AppVersion  string   `protobuf:"bytes,8,opt,name=appVersion,proto3" json:"appVersion"`               // app版本
	Extra       string   `protobuf:"bytes,9,opt,name=extra,proto3" json:"extra"`                         // 额外信息
}

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

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

func (*RequestHeader) ProtoMessage() {}

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

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

func (x *RequestHeader) GetAppId() string {
	if x != nil {
		return x.AppId
	}
	return ""
}

func (x *RequestHeader) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *RequestHeader) GetClientIp() string {
	if x != nil {
		return x.ClientIp
	}
	return ""
}

func (x *RequestHeader) GetInstallId() string {
	if x != nil {
		return x.InstallId
	}
	return ""
}

func (x *RequestHeader) GetPlatform() Platform {
	if x != nil {
		return x.Platform
	}
	return Platform_IOS
}

func (x *RequestHeader) GetDeviceModel() string {
	if x != nil {
		return x.DeviceModel
	}
	return ""
}

func (x *RequestHeader) GetOsVersion() string {
	if x != nil {
		return x.OsVersion
	}
	return ""
}

func (x *RequestHeader) GetAppVersion() string {
	if x != nil {
		return x.AppVersion
	}
	return ""
}

func (x *RequestHeader) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

//ToastActionData toast提示 客户端根据level显示不同的颜色 可能持续不同的时间
type ToastActionData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Level   ToastActionData_Level `protobuf:"varint,1,opt,name=level,proto3,enum=pb.ToastActionData_Level" json:"level"` // 级别
	Message string                `protobuf:"bytes,2,opt,name=message,proto3" json:"message"`                            // 消息
}

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

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

func (*ToastActionData) ProtoMessage() {}

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

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

func (x *ToastActionData) GetLevel() ToastActionData_Level {
	if x != nil {
		return x.Level
	}
	return ToastActionData_INFO
}

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

//AlertActionData alert提示 永远有一个关闭按钮 以下描述的是另一个操作按钮
type AlertActionData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title       string                     `protobuf:"bytes,1,opt,name=title,proto3" json:"title"`                                               // 标题
	Message     string                     `protobuf:"bytes,2,opt,name=message,proto3" json:"message"`                                           // 消息
	ButtonType  AlertActionData_ButtonType `protobuf:"varint,3,opt,name=buttonType,proto3,enum=pb.AlertActionData_ButtonType" json:"buttonType"` // 按钮类型
	ButtonLabel string                     `protobuf:"bytes,4,opt,name=buttonLabel,proto3" json:"buttonLabel"`                                   // 按钮标签
	ButtonData  string                     `protobuf:"bytes,5,opt,name=buttonData,proto3" json:"buttonData"`                                     // 按钮数据
}

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

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

func (*AlertActionData) ProtoMessage() {}

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

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

func (x *AlertActionData) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

func (x *AlertActionData) GetButtonType() AlertActionData_ButtonType {
	if x != nil {
		return x.ButtonType
	}
	return AlertActionData_NO_BUTTON
}

func (x *AlertActionData) GetButtonLabel() string {
	if x != nil {
		return x.ButtonLabel
	}
	return ""
}

func (x *AlertActionData) GetButtonData() string {
	if x != nil {
		return x.ButtonData
	}
	return ""
}

//ResponseHeader 响应头
type ResponseHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Code       ResponseCode       `protobuf:"varint,1,opt,name=code,proto3,enum=pb.ResponseCode" json:"code"`                   // 错误码
	ActionType ResponseActionType `protobuf:"varint,2,opt,name=actionType,proto3,enum=pb.ResponseActionType" json:"actionType"` // 动作类型
	ActionData string             `protobuf:"bytes,3,opt,name=actionData,proto3" json:"actionData"`                             // 动作数据 json字符串
	Extra      string             `protobuf:"bytes,4,opt,name=extra,proto3" json:"extra"`                                       // 额外信息
}

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

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

func (*ResponseHeader) ProtoMessage() {}

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

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

func (x *ResponseHeader) GetCode() ResponseCode {
	if x != nil {
		return x.Code
	}
	return ResponseCode_SUCCESS
}

func (x *ResponseHeader) GetActionType() ResponseActionType {
	if x != nil {
		return x.ActionType
	}
	return ResponseActionType_NONE_ACTION
}

func (x *ResponseHeader) GetActionData() string {
	if x != nil {
		return x.ActionData
	}
	return ""
}

func (x *ResponseHeader) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

//Message 消息
type Message struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//MessageId 消息id 由服务端插入时生成
	MessageId string `protobuf:"bytes,1,opt,name=messageId,proto3" json:"messageId"`
	//UUID 客户端生成的id 由客户端生成 在客户端保证唯一性
	Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid"`
	//发送到哪个会话
	ConversationId string `protobuf:"bytes,3,opt,name=conversationId,proto3" json:"conversationId"` // 单聊: 那么该值为接受者的id；群聊：那么该值为群id；订阅号：那么该值为订阅号id
	//会话类型
	ConversationType ConversationType `protobuf:"varint,4,opt,name=conversationType,proto3,enum=pb.ConversationType" json:"conversationType"`
	Sender           *Message_Sender  `protobuf:"bytes,5,opt,name=sender,proto3" json:"sender"` // 有可能是系统 那么该值为空
	//消息内容
	Content []byte `protobuf:"bytes,6,opt,name=content,proto3" json:"content"`
	//消息类型
	ContentType MessageContentType `protobuf:"varint,7,opt,name=contentType,proto3,enum=pb.MessageContentType" json:"contentType"`
	//发送时间 由客户端生成
	SendTime int64 `protobuf:"varint,8,opt,name=sendTime,proto3" json:"sendTime"`
	//插入时间 由服务端生成
	InsertTime int64 `protobuf:"varint,9,opt,name=insertTime,proto3" json:"insertTime"`
	//在会话中的消息顺序
	Seq    int64           `protobuf:"varint,10,opt,name=seq,proto3" json:"seq"`
	Option *Message_Option `protobuf:"bytes,16,opt,name=option,proto3" json:"option"`
	//extraMap, example: {"platformSource": "windows"}
	ExtraMap map[string]string `protobuf:"bytes,17,rep,name=extraMap,proto3" json:"extraMap" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

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

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

func (*Message) ProtoMessage() {}

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

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

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

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

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

func (x *Message) GetConversationType() ConversationType {
	if x != nil {
		return x.ConversationType
	}
	return ConversationType_Single
}

func (x *Message) GetSender() *Message_Sender {
	if x != nil {
		return x.Sender
	}
	return nil
}

func (x *Message) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *Message) GetContentType() MessageContentType {
	if x != nil {
		return x.ContentType
	}
	return MessageContentType_Text
}

func (x *Message) GetSendTime() int64 {
	if x != nil {
		return x.SendTime
	}
	return 0
}

func (x *Message) GetInsertTime() int64 {
	if x != nil {
		return x.InsertTime
	}
	return 0
}

func (x *Message) GetSeq() int64 {
	if x != nil {
		return x.Seq
	}
	return 0
}

func (x *Message) GetOption() *Message_Option {
	if x != nil {
		return x.Option
	}
	return nil
}

func (x *Message) GetExtraMap() map[string]string {
	if x != nil {
		return x.ExtraMap
	}
	return nil
}

//Notice 通知
type Notice struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//通知id 因为通知永远都是服务端发送给客户端的，所以通知id一定唯一。
	NoticeId string `protobuf:"bytes,1,opt,name=noticeId,proto3" json:"noticeId"`
	//发送到哪个会话
	ConversationId string `protobuf:"bytes,2,opt,name=conversationId,proto3" json:"conversationId"` // 单聊: 那么该值为发送者和接受者的id；群聊：那么该值为群id；订阅号：那么该值为订阅号id
	//会话类型
	ConversationType ConversationType `protobuf:"varint,3,opt,name=conversationType,proto3,enum=pb.ConversationType" json:"conversationType"`
	//通知内容
	Content string `protobuf:"bytes,4,opt,name=content,proto3" json:"content"`
	//通知类型
	ContentType NoticeContentType `protobuf:"varint,5,opt,name=contentType,proto3,enum=pb.NoticeContentType" json:"contentType"`
	//通知的更新时间
	UpdateTime int64 `protobuf:"varint,6,opt,name=updateTime,proto3" json:"updateTime"`
	//排序
	Sort int64 `protobuf:"varint,7,opt,name=sort,proto3" json:"sort"`
}

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

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

func (*Notice) ProtoMessage() {}

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

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

func (x *Notice) GetNoticeId() string {
	if x != nil {
		return x.NoticeId
	}
	return ""
}

func (x *Notice) GetConversationId() string {
	if x != nil {
		return x.ConversationId
	}
	return ""
}

func (x *Notice) GetConversationType() ConversationType {
	if x != nil {
		return x.ConversationType
	}
	return ConversationType_Single
}

func (x *Notice) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *Notice) GetContentType() NoticeContentType {
	if x != nil {
		return x.ContentType
	}
	return NoticeContentType_NewFriendRequest
}

func (x *Notice) GetUpdateTime() int64 {
	if x != nil {
		return x.UpdateTime
	}
	return 0
}

func (x *Notice) GetSort() int64 {
	if x != nil {
		return x.Sort
	}
	return 0
}

//发送者
type Message_Sender struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//发送者id
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id"`
	//发送者名称
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name"`
	//发送者头像
	Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar"`
	//extra
	Extra string `protobuf:"bytes,11,opt,name=extra,proto3" json:"extra"`
}

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

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

func (*Message_Sender) ProtoMessage() {}

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

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

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

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

func (x *Message_Sender) GetAvatar() string {
	if x != nil {
		return x.Avatar
	}
	return ""
}

func (x *Message_Sender) GetExtra() string {
	if x != nil {
		return x.Extra
	}
	return ""
}

//选项
type Message_Option struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//服务端是否保存该消息
	StorageForServer bool `protobuf:"varint,1,opt,name=storageForServer,proto3" json:"storageForServer"`
	//客户端是否保存该消息
	StorageForClient bool `protobuf:"varint,2,opt,name=storageForClient,proto3" json:"storageForClient"`
	//是否需要解密 （端对端加密技术，服务端无法解密）
	NeedDecrypt bool `protobuf:"varint,3,opt,name=needDecrypt,proto3" json:"needDecrypt"`
	//消息是否需要计入未读数
	CountUnread bool `protobuf:"varint,4,opt,name=countUnread,proto3" json:"countUnread"`
}

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

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

func (*Message_Option) ProtoMessage() {}

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

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

func (x *Message_Option) GetStorageForServer() bool {
	if x != nil {
		return x.StorageForServer
	}
	return false
}

func (x *Message_Option) GetStorageForClient() bool {
	if x != nil {
		return x.StorageForClient
	}
	return false
}

func (x *Message_Option) GetNeedDecrypt() bool {
	if x != nil {
		return x.NeedDecrypt
	}
	return false
}

func (x *Message_Option) GetCountUnread() bool {
	if x != nil {
		return x.CountUnread
	}
	return false
}

var File_common_proto protoreflect.FileDescriptor

var file_common_proto_rawDesc = []byte{
	0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02,
	0x70, 0x62, 0x22, 0x97, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65,
	0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
	0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
	0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x1c,
	0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x08,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c,
	0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x73, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x73, 0x56,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72,
	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x84, 0x01, 0x0a,
	0x0f, 0x54, 0x6f, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61,
	0x12, 0x2f, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x19, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x44, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65,
	0x6c, 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, 0x26, 0x0a, 0x05, 0x4c,
	0x65, 0x76, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x00, 0x12, 0x08,
	0x0a, 0x04, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f,
	0x52, 0x10, 0x02, 0x22, 0xee, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x41, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 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, 0x3e, 0x0a, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x62,
	0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61,
	0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x62, 0x75, 0x74,
	0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f,
	0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75,
	0x74, 0x74, 0x6f, 0x6e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x74,
	0x74, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62,
	0x75, 0x74, 0x74, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x0a, 0x42, 0x75, 0x74,
	0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x42, 0x55,
	0x54, 0x54, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4a, 0x55, 0x4d, 0x50, 0x5f, 0x55,
	0x52, 0x4c, 0x10, 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a,
	0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44,
	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x96, 0x06, 0x0a, 0x07,
	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e,
	0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
	0x64, 0x12, 0x40, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x70, 0x62,
	0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x2e, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12,
	0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16,
	0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x73, 0x65,
	0x71, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a,
	0x08, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x61, 0x70, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x70, 0x62, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x78, 0x74,
	0x72, 0x61, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x65, 0x78, 0x74, 0x72,
	0x61, 0x4d, 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x06, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e,
	0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12,
	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
	0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78,
	0x74, 0x72, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61,
	0x1a, 0xa4, 0x01, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x73,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x6f, 0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x6f,
	0x72, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x46, 0x6f, 0x72, 0x43, 0x6c, 0x69,
	0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x65, 0x64, 0x44, 0x65, 0x63, 0x72, 0x79,
	0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6e, 0x65, 0x65, 0x64, 0x44, 0x65,
	0x63, 0x72, 0x79, 0x70, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x6e,
	0x72, 0x65, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x72, 0x61,
	0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x22, 0x95, 0x02, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12,
	0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x63,
	0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
	0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12,
	0x37, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x70,
	0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x2a, 0x64, 0x0a, 0x08,
	0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4f, 0x53, 0x10,
	0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x07,
	0x0a, 0x03, 0x57, 0x45, 0x42, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x49, 0x4e, 0x44, 0x4f,
	0x57, 0x53, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x41, 0x43, 0x10, 0x04, 0x12, 0x09, 0x0a,
	0x05, 0x4c, 0x49, 0x4e, 0x55, 0x58, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x70, 0x61, 0x64,
	0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x50, 0x61, 0x64,
	0x10, 0x07, 0x2a, 0x81, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43,
	0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x00,
	0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41,
	0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x5a,
	0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x42, 0x49, 0x44, 0x44, 0x45,
	0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4d,
	0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f,
	0x55, 0x54, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45,
	0x52, 0x52, 0x4f, 0x52, 0x10, 0x06, 0x2a, 0x61, 0x0a, 0x12, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
	0x4e, 0x4f, 0x4e, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a,
	0x0c, 0x54, 0x4f, 0x41, 0x53, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12,
	0x10, 0x0a, 0x0c, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10,
	0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x48,
	0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0xe6, 0x02, 0x0a, 0x18, 0x57, 0x65,
	0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x6f,
	0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43,
	0x6f, 0x64, 0x65, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x43, 0x6c, 0x6f,
	0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x73,
	0x65, 0x10, 0xe8, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x64,
	0x65, 0x47, 0x6f, 0x69, 0x6e, 0x67, 0x41, 0x77, 0x61, 0x79, 0x10, 0xe9, 0x07, 0x12, 0x1b, 0x0a,
	0x16, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
	0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xea, 0x07, 0x12, 0x1d, 0x0a, 0x18, 0x43, 0x6c,
	0x6f, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x55, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74,
	0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x43, 0x6c, 0x6f,
	0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x4e, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
	0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x10, 0xed, 0x07, 0x12, 0x1d, 0x0a, 0x18, 0x43, 0x6c, 0x6f,
	0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x41, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x43, 0x6c,
	0x6f, 0x73, 0x75, 0x72, 0x65, 0x10, 0xee, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x43, 0x6c, 0x6f, 0x73,
	0x65, 0x43, 0x6f, 0x64, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa1, 0x1f, 0x12, 0x21, 0x0a, 0x1c,
	0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61,
	0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xa2, 0x1f, 0x12,
	0x21, 0x0a, 0x1c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76,
	0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10,
	0xa3, 0x1f, 0x12, 0x1e, 0x0a, 0x19, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x48,
	0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x10,
	0xa4, 0x1f, 0x2a, 0x3b, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65,
	0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x10, 0x01, 0x12, 0x10, 0x0a,
	0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x02, 0x2a,
	0x4d, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x65, 0x77, 0x46, 0x72, 0x69, 0x65, 0x6e,
	0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x6f,
	0x69, 0x6e, 0x4e, 0x65, 0x77, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c,
	0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x02, 0x2a, 0x6f,
	0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x10, 0x00, 0x12, 0x0c,
	0x0a, 0x08, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
	0x49, 0x6d, 0x61, 0x67, 0x65, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65,
	0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x10, 0x04, 0x12, 0x0a, 0x0a,
	0x06, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x10, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x61,
	0x64, 0x10, 0x66, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x10, 0x67, 0x2a,
	0x83, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x73,
	0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x75,
	0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
	0x65, 0x64, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x73, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x64,
	0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x4e, 0x69, 0x63,
	0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x10, 0x05, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_common_proto_rawDescOnce sync.Once
	file_common_proto_rawDescData = file_common_proto_rawDesc
)

func file_common_proto_rawDescGZIP() []byte {
	file_common_proto_rawDescOnce.Do(func() {
		file_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_proto_rawDescData)
	})
	return file_common_proto_rawDescData
}

var file_common_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_common_proto_goTypes = []interface{}{
	(Platform)(0),                   // 0: pb.Platform
	(ResponseCode)(0),               // 1: pb.ResponseCode
	(ResponseActionType)(0),         // 2: pb.ResponseActionType
	(WebsocketCustomCloseCode)(0),   // 3: pb.WebsocketCustomCloseCode
	(ConversationType)(0),           // 4: pb.ConversationType
	(NoticeContentType)(0),          // 5: pb.NoticeContentType
	(MessageContentType)(0),         // 6: pb.MessageContentType
	(ConversationSettingKey)(0),     // 7: pb.ConversationSettingKey
	(ToastActionData_Level)(0),      // 8: pb.ToastActionData.Level
	(AlertActionData_ButtonType)(0), // 9: pb.AlertActionData.ButtonType
	(*RequestHeader)(nil),           // 10: pb.RequestHeader
	(*ToastActionData)(nil),         // 11: pb.ToastActionData
	(*AlertActionData)(nil),         // 12: pb.AlertActionData
	(*ResponseHeader)(nil),          // 13: pb.ResponseHeader
	(*Message)(nil),                 // 14: pb.Message
	(*Notice)(nil),                  // 15: pb.Notice
	(*Message_Sender)(nil),          // 16: pb.Message.Sender
	(*Message_Option)(nil),          // 17: pb.Message.Option
	nil,                             // 18: pb.Message.ExtraMapEntry
}
var file_common_proto_depIdxs = []int32{
	0,  // 0: pb.RequestHeader.platform:type_name -> pb.Platform
	8,  // 1: pb.ToastActionData.level:type_name -> pb.ToastActionData.Level
	9,  // 2: pb.AlertActionData.buttonType:type_name -> pb.AlertActionData.ButtonType
	1,  // 3: pb.ResponseHeader.code:type_name -> pb.ResponseCode
	2,  // 4: pb.ResponseHeader.actionType:type_name -> pb.ResponseActionType
	4,  // 5: pb.Message.conversationType:type_name -> pb.ConversationType
	16, // 6: pb.Message.sender:type_name -> pb.Message.Sender
	6,  // 7: pb.Message.contentType:type_name -> pb.MessageContentType
	17, // 8: pb.Message.option:type_name -> pb.Message.Option
	18, // 9: pb.Message.extraMap:type_name -> pb.Message.ExtraMapEntry
	4,  // 10: pb.Notice.conversationType:type_name -> pb.ConversationType
	5,  // 11: pb.Notice.contentType:type_name -> pb.NoticeContentType
	12, // [12:12] is the sub-list for method output_type
	12, // [12:12] is the sub-list for method input_type
	12, // [12:12] is the sub-list for extension type_name
	12, // [12:12] is the sub-list for extension extendee
	0,  // [0:12] is the sub-list for field type_name
}

func init() { file_common_proto_init() }
func file_common_proto_init() {
	if File_common_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RequestHeader); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ToastActionData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AlertActionData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ResponseHeader); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Notice); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message_Sender); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_common_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Message_Option); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_common_proto_rawDesc,
			NumEnums:      10,
			NumMessages:   9,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_common_proto_goTypes,
		DependencyIndexes: file_common_proto_depIdxs,
		EnumInfos:         file_common_proto_enumTypes,
		MessageInfos:      file_common_proto_msgTypes,
	}.Build()
	File_common_proto = out.File
	file_common_proto_rawDesc = nil
	file_common_proto_goTypes = nil
	file_common_proto_depIdxs = nil
}
