//
//Сервис реализует функционал управления приборами учёта(ПУ)

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v4.23.1
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto

package keyapis_telemetry_control_v1

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

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

// Справочник типов сортировки
type DeviceGroupPaging_OrderByType int32

const (
	// Значение не указано
	DeviceGroupPaging_ORDER_BY_TYPE_UNKNOWN DeviceGroupPaging_OrderByType = 0
	// По Идентификатору группы пользователя
	DeviceGroupPaging_GROUP_ID DeviceGroupPaging_OrderByType = 1
	// По ПУ
	DeviceGroupPaging_DEVICE_ID DeviceGroupPaging_OrderByType = 2
)

// Enum value maps for DeviceGroupPaging_OrderByType.
var (
	DeviceGroupPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "GROUP_ID",
		2: "DEVICE_ID",
	}
	DeviceGroupPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"GROUP_ID":              1,
		"DEVICE_ID":             2,
	}
)

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

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

func (DeviceGroupPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[0].Descriptor()
}

func (DeviceGroupPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[0]
}

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

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

// Справочник типов направлений сортировки
type DeviceGroupPaging_DirectionType int32

const (
	// Значение не указано
	DeviceGroupPaging_DIRECTION_TYPE_UNKNOWN DeviceGroupPaging_DirectionType = 0
	// От большего к меньшему
	DeviceGroupPaging_DESC DeviceGroupPaging_DirectionType = 1
	// От меньшего к большему
	DeviceGroupPaging_ASC DeviceGroupPaging_DirectionType = 2
)

// Enum value maps for DeviceGroupPaging_DirectionType.
var (
	DeviceGroupPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	DeviceGroupPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (DeviceGroupPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[1].Descriptor()
}

func (DeviceGroupPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[1]
}

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

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

// Справочник типов сортировки
type IndicatorPaging_OrderByType int32

const (
	// Значение не указано
	IndicatorPaging_ORDER_BY_TYPE_UNKNOWN IndicatorPaging_OrderByType = 0
	// По уникальному ключу
	IndicatorPaging_ID IndicatorPaging_OrderByType = 1
	// По типу измерений
	IndicatorPaging_SIGN_TYPE IndicatorPaging_OrderByType = 2
	// По Прибору учета
	IndicatorPaging_DEVICE_ID IndicatorPaging_OrderByType = 3
	// По Дате создания
	IndicatorPaging_CREATED_AT IndicatorPaging_OrderByType = 4
)

// Enum value maps for IndicatorPaging_OrderByType.
var (
	IndicatorPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "ID",
		2: "SIGN_TYPE",
		3: "DEVICE_ID",
		4: "CREATED_AT",
	}
	IndicatorPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"ID":                    1,
		"SIGN_TYPE":             2,
		"DEVICE_ID":             3,
		"CREATED_AT":            4,
	}
)

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

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

func (IndicatorPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[2].Descriptor()
}

func (IndicatorPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[2]
}

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

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

// Справочник типов направлений сортировки
type IndicatorPaging_DirectionType int32

const (
	// Значение не указано
	IndicatorPaging_DIRECTION_TYPE_UNKNOWN IndicatorPaging_DirectionType = 0
	// От большего к меньшему
	IndicatorPaging_DESC IndicatorPaging_DirectionType = 1
	// От меньшего к большему
	IndicatorPaging_ASC IndicatorPaging_DirectionType = 2
)

// Enum value maps for IndicatorPaging_DirectionType.
var (
	IndicatorPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	IndicatorPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (IndicatorPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[3].Descriptor()
}

func (IndicatorPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[3]
}

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

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

// Посредники получения показаний
type Indicator_VendorType int32

const (
	// Значение не указано
	Indicator_VENDOR_TYPE_UNKNOWN Indicator_VendorType = 0
	// Энвайро
	Indicator_ENVIRO Indicator_VendorType = 1
	// Лартех
	Indicator_LARTECH Indicator_VendorType = 2
	// РТК
	Indicator_RTK Indicator_VendorType = 3
)

// Enum value maps for Indicator_VendorType.
var (
	Indicator_VendorType_name = map[int32]string{
		0: "VENDOR_TYPE_UNKNOWN",
		1: "ENVIRO",
		2: "LARTECH",
		3: "RTK",
	}
	Indicator_VendorType_value = map[string]int32{
		"VENDOR_TYPE_UNKNOWN": 0,
		"ENVIRO":              1,
		"LARTECH":             2,
		"RTK":                 3,
	}
)

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

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

func (Indicator_VendorType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[4].Descriptor()
}

func (Indicator_VendorType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[4]
}

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

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

// Справочник типов единиц измерений
type Indicator_UnitType int32

const (
	// Значение не указано
	Indicator_UNIT_TYPE_UNKNOWN Indicator_UnitType = 0
	// Процент
	Indicator_PERCENT Indicator_UnitType = 1
	// Градус по Цельсию
	Indicator_C Indicator_UnitType = 2
	// Ватт
	Indicator_WT Indicator_UnitType = 3
	// Гигакалория
	Indicator_GKAL Indicator_UnitType = 4
	// Количество
	Indicator_VALUE Indicator_UnitType = 5
	// Киловaтт-час
	Indicator_KWH Indicator_UnitType = 6
	// Килограмм на квадратный сантиметр
	Indicator_KG_CM2 Indicator_UnitType = 7
	// Килограмм-сила на квадратный сантиметр
	Indicator_KGF_CM2 Indicator_UnitType = 8
	// Кубический метр
	Indicator_M3 Indicator_UnitType = 9
	// Кубический метр в час
	Indicator_M3_H Indicator_UnitType = 10
	// Мегапаскаль
	Indicator_MPA Indicator_UnitType = 11
	// Миллисекунда
	Indicator_MS Indicator_UnitType = 12
	// Флаг состояния
	Indicator_BOOLEAN Indicator_UnitType = 13
	// Тонна
	Indicator_T Indicator_UnitType = 14
	// Тонна в час
	Indicator_T_H Indicator_UnitType = 15
	// Час
	Indicator_H Indicator_UnitType = 16
	// Безразмерная величина
	Indicator_NON_MEASURABLE Indicator_UnitType = 17
	// Импульс
	Indicator_IMP Indicator_UnitType = 18
	// Джоуль
	Indicator_J Indicator_UnitType = 19
	// Килоджоуль
	Indicator_KJ Indicator_UnitType = 20
	// Гигаджоуль
	Indicator_GJ Indicator_UnitType = 21
	// Ватт-час
	Indicator_WTH Indicator_UnitType = 22
	// Киловатт
	Indicator_KWT Indicator_UnitType = 23
	// Минута
	Indicator_MIN Indicator_UnitType = 24
	// Секунда
	Indicator_S Indicator_UnitType = 25
)

// Enum value maps for Indicator_UnitType.
var (
	Indicator_UnitType_name = map[int32]string{
		0:  "UNIT_TYPE_UNKNOWN",
		1:  "PERCENT",
		2:  "C",
		3:  "WT",
		4:  "GKAL",
		5:  "VALUE",
		6:  "KWH",
		7:  "KG_CM2",
		8:  "KGF_CM2",
		9:  "M3",
		10: "M3_H",
		11: "MPA",
		12: "MS",
		13: "BOOLEAN",
		14: "T",
		15: "T_H",
		16: "H",
		17: "NON_MEASURABLE",
		18: "IMP",
		19: "J",
		20: "KJ",
		21: "GJ",
		22: "WTH",
		23: "KWT",
		24: "MIN",
		25: "S",
	}
	Indicator_UnitType_value = map[string]int32{
		"UNIT_TYPE_UNKNOWN": 0,
		"PERCENT":           1,
		"C":                 2,
		"WT":                3,
		"GKAL":              4,
		"VALUE":             5,
		"KWH":               6,
		"KG_CM2":            7,
		"KGF_CM2":           8,
		"M3":                9,
		"M3_H":              10,
		"MPA":               11,
		"MS":                12,
		"BOOLEAN":           13,
		"T":                 14,
		"T_H":               15,
		"H":                 16,
		"NON_MEASURABLE":    17,
		"IMP":               18,
		"J":                 19,
		"KJ":                20,
		"GJ":                21,
		"WTH":               22,
		"KWT":               23,
		"MIN":               24,
		"S":                 25,
	}
)

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

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

func (Indicator_UnitType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[5].Descriptor()
}

func (Indicator_UnitType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[5]
}

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

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

// Справочник типов измерений
type Indicator_SignType int32

const (
	// Значение не указано
	Indicator_SIGN_TYPE_UNKNOWN Indicator_SignType = 0
	// Абсолютный показатель
	Indicator_ABSOLUTE_DS Indicator_SignType = 1
	// Абсолютный расход ресурса
	Indicator_ABSOLUTE_RC Indicator_SignType = 2
	// Интервальный показатель состояния
	Indicator_INTERVAL_DS Indicator_SignType = 3
	// Интервальный расход ресурса
	Indicator_INTERVAL_RC Indicator_SignType = 4
	// Текущее состояние
	Indicator_CURRENT_DS Indicator_SignType = 5
	// Текущее состояние ресурса
	Indicator_CURRENT_RS Indicator_SignType = 6
	// Объём
	Indicator_VOLUME Indicator_SignType = 7
	// Параметр конфигурации
	Indicator_PARAMETER Indicator_SignType = 8
	// Флаг состояния
	Indicator_FLAG Indicator_SignType = 9
)

// Enum value maps for Indicator_SignType.
var (
	Indicator_SignType_name = map[int32]string{
		0: "SIGN_TYPE_UNKNOWN",
		1: "ABSOLUTE_DS",
		2: "ABSOLUTE_RC",
		3: "INTERVAL_DS",
		4: "INTERVAL_RC",
		5: "CURRENT_DS",
		6: "CURRENT_RS",
		7: "VOLUME",
		8: "PARAMETER",
		9: "FLAG",
	}
	Indicator_SignType_value = map[string]int32{
		"SIGN_TYPE_UNKNOWN": 0,
		"ABSOLUTE_DS":       1,
		"ABSOLUTE_RC":       2,
		"INTERVAL_DS":       3,
		"INTERVAL_RC":       4,
		"CURRENT_DS":        5,
		"CURRENT_RS":        6,
		"VOLUME":            7,
		"PARAMETER":         8,
		"FLAG":              9,
	}
)

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

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

func (Indicator_SignType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[6].Descriptor()
}

func (Indicator_SignType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[6]
}

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

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

// Справочник типа архивности показаний.
// Используется для указания за какой период произошло измерение.
// По умолчанию CURRENT
type Indicator_ArchiveType int32

const (
	// Значение не указано
	Indicator_ARCHIVE_TYPE_UNKNOWN Indicator_ArchiveType = 0
	// Текущие показания
	Indicator_CURRENT Indicator_ArchiveType = 1
	// За 30 мин
	Indicator_HALFHOUR Indicator_ArchiveType = 2
	// За час
	Indicator_HOUR Indicator_ArchiveType = 3
	// За сутки
	Indicator_DAY Indicator_ArchiveType = 4
	// За месяц
	Indicator_MONTH Indicator_ArchiveType = 5
	// За год
	Indicator_YEAR Indicator_ArchiveType = 6
)

// Enum value maps for Indicator_ArchiveType.
var (
	Indicator_ArchiveType_name = map[int32]string{
		0: "ARCHIVE_TYPE_UNKNOWN",
		1: "CURRENT",
		2: "HALFHOUR",
		3: "HOUR",
		4: "DAY",
		5: "MONTH",
		6: "YEAR",
	}
	Indicator_ArchiveType_value = map[string]int32{
		"ARCHIVE_TYPE_UNKNOWN": 0,
		"CURRENT":              1,
		"HALFHOUR":             2,
		"HOUR":                 3,
		"DAY":                  4,
		"MONTH":                5,
		"YEAR":                 6,
	}
)

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

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

func (Indicator_ArchiveType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[7].Descriptor()
}

func (Indicator_ArchiveType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[7]
}

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

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

// Справочник типов номинальных нагрузок вторичных обмоток.
// У трансформаторов тока (В*А)
type Device_SecondaryCurrentType int32

const (
	// Значение не указано
	Device_SECONDARY_CURRENT_TYPE_UNKNOWN Device_SecondaryCurrentType = 0
	// 1 (А)
	Device_TT1A Device_SecondaryCurrentType = 1
	// 2 (А)
	Device_TT2A Device_SecondaryCurrentType = 2
	// 5 (А)
	Device_TT5A Device_SecondaryCurrentType = 3
)

// Enum value maps for Device_SecondaryCurrentType.
var (
	Device_SecondaryCurrentType_name = map[int32]string{
		0: "SECONDARY_CURRENT_TYPE_UNKNOWN",
		1: "TT1A",
		2: "TT2A",
		3: "TT5A",
	}
	Device_SecondaryCurrentType_value = map[string]int32{
		"SECONDARY_CURRENT_TYPE_UNKNOWN": 0,
		"TT1A":                           1,
		"TT2A":                           2,
		"TT5A":                           3,
	}
)

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

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

func (Device_SecondaryCurrentType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[8].Descriptor()
}

func (Device_SecondaryCurrentType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[8]
}

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

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

// Справочник типов приборов учёта(ПУ)
type Device_Type int32

const (
	// Значение не указано
	Device_TYPE_UNKNOWN Device_Type = 0
	// Коммуникационный модуль
	Device_HUB Device_Type = 1
	// Счетчик импульсов - регистратор
	Device_PULSE_COUNTER_RECORDER Device_Type = 2
	// Счетчик импульсов - регистратор LoRaWAN
	Device_PULSE_COUNTER_RECORDER_LR Device_Type = 3
	// Прибор учета расхода коммунальных услуг
	Device_METERING_DEVICE Device_Type = 4
	// Конвертер интерфейсов
	Device_INTERFACE_CONVERTER Device_Type = 5
	// M-BUS концентратор
	Device_M_BUS_HUB Device_Type = 6
	// Модуль связи LoRaWAN
	Device_COMMUNICATION_MODULE_LR Device_Type = 7
	// Базовая станция LoRaWAN
	Device_BASE_LR Device_Type = 8
)

// Enum value maps for Device_Type.
var (
	Device_Type_name = map[int32]string{
		0: "TYPE_UNKNOWN",
		1: "HUB",
		2: "PULSE_COUNTER_RECORDER",
		3: "PULSE_COUNTER_RECORDER_LR",
		4: "METERING_DEVICE",
		5: "INTERFACE_CONVERTER",
		6: "M_BUS_HUB",
		7: "COMMUNICATION_MODULE_LR",
		8: "BASE_LR",
	}
	Device_Type_value = map[string]int32{
		"TYPE_UNKNOWN":              0,
		"HUB":                       1,
		"PULSE_COUNTER_RECORDER":    2,
		"PULSE_COUNTER_RECORDER_LR": 3,
		"METERING_DEVICE":           4,
		"INTERFACE_CONVERTER":       5,
		"M_BUS_HUB":                 6,
		"COMMUNICATION_MODULE_LR":   7,
		"BASE_LR":                   8,
	}
)

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

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

func (Device_Type) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[9].Descriptor()
}

func (Device_Type) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[9]
}

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

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

// Справочник типов статусов
type Device_StatusType int32

const (
	// Значение не указано
	Device_STATUS_TYPE_UNKNOWN Device_StatusType = 0
	// Получен клиентом, еще не сконфигурирован
	Device_RECEIVED Device_StatusType = 1
	// Сконфигурирован клиентом, активен
	Device_ACTIVE Device_StatusType = 2
	// Обработан клиентом, возникла ошибка
	Device_WRONG Device_StatusType = 3
	// Переведен в архивный статус
	Device_ARCHIVE Device_StatusType = 4
	// Удален
	Device_DELETE Device_StatusType = 5
	// Отсоединен
	Device_UNLINK Device_StatusType = 6
)

// Enum value maps for Device_StatusType.
var (
	Device_StatusType_name = map[int32]string{
		0: "STATUS_TYPE_UNKNOWN",
		1: "RECEIVED",
		2: "ACTIVE",
		3: "WRONG",
		4: "ARCHIVE",
		5: "DELETE",
		6: "UNLINK",
	}
	Device_StatusType_value = map[string]int32{
		"STATUS_TYPE_UNKNOWN": 0,
		"RECEIVED":            1,
		"ACTIVE":              2,
		"WRONG":               3,
		"ARCHIVE":             4,
		"DELETE":              5,
		"UNLINK":              6,
	}
)

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

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

func (Device_StatusType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[10].Descriptor()
}

func (Device_StatusType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[10]
}

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

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

// Справочник типов тарифных планов
type Device_PlanType int32

const (
	// Значение не указано
	Device_PLAN_TYPE_UNKNOWN Device_PlanType = 0
	// Однотарифный
	Device_SINGLE Device_PlanType = 1
	// Двухтарифный
	Device_DOUBLE Device_PlanType = 2
	// Трёхтарифный
	Device_TRIPLE Device_PlanType = 3
)

// Enum value maps for Device_PlanType.
var (
	Device_PlanType_name = map[int32]string{
		0: "PLAN_TYPE_UNKNOWN",
		1: "SINGLE",
		2: "DOUBLE",
		3: "TRIPLE",
	}
	Device_PlanType_value = map[string]int32{
		"PLAN_TYPE_UNKNOWN": 0,
		"SINGLE":            1,
		"DOUBLE":            2,
		"TRIPLE":            3,
	}
)

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

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

func (Device_PlanType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[11].Descriptor()
}

func (Device_PlanType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[11]
}

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

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

// Справочник типов трубопроводов
type Device_PipeType int32

const (
	// Значение не указано
	Device_PIPE_TYPE_UNKNOWN Device_PipeType = 0
	// Подающий
	Device_INFEED Device_PipeType = 1
	// Циркуляционный
	Device_CIRCULATING Device_PipeType = 2
)

// Enum value maps for Device_PipeType.
var (
	Device_PipeType_name = map[int32]string{
		0: "PIPE_TYPE_UNKNOWN",
		1: "INFEED",
		2: "CIRCULATING",
	}
	Device_PipeType_value = map[string]int32{
		"PIPE_TYPE_UNKNOWN": 0,
		"INFEED":            1,
		"CIRCULATING":       2,
	}
)

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

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

func (Device_PipeType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[12].Descriptor()
}

func (Device_PipeType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[12]
}

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

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

// Справочние типов энергоресурсов
type Device_MetricPoint_MetricType int32

const (
	// Значение не указано
	Device_MetricPoint_METRIC_TYPE_UNKNOWN Device_MetricPoint_MetricType = 0
	// Горячая вода
	Device_MetricPoint_HOT_WATER Device_MetricPoint_MetricType = 1
	// Холодная вода
	Device_MetricPoint_COLD_WATER Device_MetricPoint_MetricType = 2
	// Теплоэнергия
	Device_MetricPoint_HEAT Device_MetricPoint_MetricType = 3
	// Газ
	Device_MetricPoint_GAS Device_MetricPoint_MetricType = 4
	// Электроэнергия
	Device_MetricPoint_ELECTRICITY Device_MetricPoint_MetricType = 5
)

// Enum value maps for Device_MetricPoint_MetricType.
var (
	Device_MetricPoint_MetricType_name = map[int32]string{
		0: "METRIC_TYPE_UNKNOWN",
		1: "HOT_WATER",
		2: "COLD_WATER",
		3: "HEAT",
		4: "GAS",
		5: "ELECTRICITY",
	}
	Device_MetricPoint_MetricType_value = map[string]int32{
		"METRIC_TYPE_UNKNOWN": 0,
		"HOT_WATER":           1,
		"COLD_WATER":          2,
		"HEAT":                3,
		"GAS":                 4,
		"ELECTRICITY":         5,
	}
)

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

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

func (Device_MetricPoint_MetricType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[13].Descriptor()
}

func (Device_MetricPoint_MetricType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[13]
}

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

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

// Справочник типов статусов
type Device_MetricPoint_StatusType int32

const (
	// Значение не указано
	Device_MetricPoint_STATUS_TYPE_UNKNOWN Device_MetricPoint_StatusType = 0
	// Активная
	Device_MetricPoint_ACTIVE Device_MetricPoint_StatusType = 1
	// Не активная
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	Device_MetricPoint_WRONG Device_MetricPoint_StatusType = 2
	// Архивная
	Device_MetricPoint_ARCHIVE Device_MetricPoint_StatusType = 3
)

// Enum value maps for Device_MetricPoint_StatusType.
var (
	Device_MetricPoint_StatusType_name = map[int32]string{
		0: "STATUS_TYPE_UNKNOWN",
		1: "ACTIVE",
		2: "WRONG",
		3: "ARCHIVE",
	}
	Device_MetricPoint_StatusType_value = map[string]int32{
		"STATUS_TYPE_UNKNOWN": 0,
		"ACTIVE":              1,
		"WRONG":               2,
		"ARCHIVE":             3,
	}
)

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

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

func (Device_MetricPoint_StatusType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[14].Descriptor()
}

func (Device_MetricPoint_StatusType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[14]
}

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

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

// Справочник типов учёта
type Device_MetricPoint_AccountingType int32

const (
	// Значение не указано
	Device_MetricPoint_ACCOUNTING_TYPE_UNKNOWN Device_MetricPoint_AccountingType = 0
	// Коммерческий учёт
	Device_MetricPoint_COMMERCIAL Device_MetricPoint_AccountingType = 1
	// Технический учёт
	Device_MetricPoint_TECHNICAL Device_MetricPoint_AccountingType = 2
)

// Enum value maps for Device_MetricPoint_AccountingType.
var (
	Device_MetricPoint_AccountingType_name = map[int32]string{
		0: "ACCOUNTING_TYPE_UNKNOWN",
		1: "COMMERCIAL",
		2: "TECHNICAL",
	}
	Device_MetricPoint_AccountingType_value = map[string]int32{
		"ACCOUNTING_TYPE_UNKNOWN": 0,
		"COMMERCIAL":              1,
		"TECHNICAL":               2,
	}
)

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

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

func (Device_MetricPoint_AccountingType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[15].Descriptor()
}

func (Device_MetricPoint_AccountingType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[15]
}

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

// Deprecated: Use Device_MetricPoint_AccountingType.Descriptor instead.
func (Device_MetricPoint_AccountingType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{34, 1, 2}
}

// Справочник типов номиналов первичных токов.
// У выпускаемых трансформаторов тока (А)
type Device_MetricPoint_PrimaryCurrentType int32

const (
	// Значение не указано
	Device_MetricPoint_PRIMARY_CURRENT_TYPE_UNKNOWN Device_MetricPoint_PrimaryCurrentType = 0
	// 1 (А)
	Device_MetricPoint_TT1A Device_MetricPoint_PrimaryCurrentType = 1
	// 5 (А)
	Device_MetricPoint_TT5A Device_MetricPoint_PrimaryCurrentType = 2
	// 10 (А)
	Device_MetricPoint_TT10A Device_MetricPoint_PrimaryCurrentType = 3
	// 15 (А)
	Device_MetricPoint_TT15A Device_MetricPoint_PrimaryCurrentType = 4
	// 20 (А)
	Device_MetricPoint_TT20A Device_MetricPoint_PrimaryCurrentType = 5
	// 30 (А)
	Device_MetricPoint_TT30A Device_MetricPoint_PrimaryCurrentType = 6
	// 40 (А)
	Device_MetricPoint_TT40A Device_MetricPoint_PrimaryCurrentType = 7
	// 50 (А)
	Device_MetricPoint_TT50A Device_MetricPoint_PrimaryCurrentType = 8
	// 75 (А)
	Device_MetricPoint_TT75A Device_MetricPoint_PrimaryCurrentType = 9
	// 80 (А)
	Device_MetricPoint_TT80A Device_MetricPoint_PrimaryCurrentType = 10
	// 100 (А)
	Device_MetricPoint_TT100A Device_MetricPoint_PrimaryCurrentType = 11
	// 150 (А)
	Device_MetricPoint_TT150A Device_MetricPoint_PrimaryCurrentType = 12
	// 200 (А)
	Device_MetricPoint_TT200A Device_MetricPoint_PrimaryCurrentType = 13
	// 300 (А)
	Device_MetricPoint_TT300A Device_MetricPoint_PrimaryCurrentType = 14
	// 400 (А)
	Device_MetricPoint_TT400A Device_MetricPoint_PrimaryCurrentType = 15
	// 500 (А)
	Device_MetricPoint_TT500A Device_MetricPoint_PrimaryCurrentType = 16
	// 600 (А)
	Device_MetricPoint_TT600A Device_MetricPoint_PrimaryCurrentType = 17
	// 750 (А)
	Device_MetricPoint_TT750A Device_MetricPoint_PrimaryCurrentType = 18
	// 800 (А)
	Device_MetricPoint_TT800A Device_MetricPoint_PrimaryCurrentType = 19
	// 1000 (А)
	Device_MetricPoint_TT1000A Device_MetricPoint_PrimaryCurrentType = 20
	// 1200 (А)
	Device_MetricPoint_TT1200A Device_MetricPoint_PrimaryCurrentType = 21
	// 1500 (А)
	Device_MetricPoint_TT1500A Device_MetricPoint_PrimaryCurrentType = 22
	// 2000 (А)
	Device_MetricPoint_TT2000A Device_MetricPoint_PrimaryCurrentType = 23
)

// Enum value maps for Device_MetricPoint_PrimaryCurrentType.
var (
	Device_MetricPoint_PrimaryCurrentType_name = map[int32]string{
		0:  "PRIMARY_CURRENT_TYPE_UNKNOWN",
		1:  "TT1A",
		2:  "TT5A",
		3:  "TT10A",
		4:  "TT15A",
		5:  "TT20A",
		6:  "TT30A",
		7:  "TT40A",
		8:  "TT50A",
		9:  "TT75A",
		10: "TT80A",
		11: "TT100A",
		12: "TT150A",
		13: "TT200A",
		14: "TT300A",
		15: "TT400A",
		16: "TT500A",
		17: "TT600A",
		18: "TT750A",
		19: "TT800A",
		20: "TT1000A",
		21: "TT1200A",
		22: "TT1500A",
		23: "TT2000A",
	}
	Device_MetricPoint_PrimaryCurrentType_value = map[string]int32{
		"PRIMARY_CURRENT_TYPE_UNKNOWN": 0,
		"TT1A":                         1,
		"TT5A":                         2,
		"TT10A":                        3,
		"TT15A":                        4,
		"TT20A":                        5,
		"TT30A":                        6,
		"TT40A":                        7,
		"TT50A":                        8,
		"TT75A":                        9,
		"TT80A":                        10,
		"TT100A":                       11,
		"TT150A":                       12,
		"TT200A":                       13,
		"TT300A":                       14,
		"TT400A":                       15,
		"TT500A":                       16,
		"TT600A":                       17,
		"TT750A":                       18,
		"TT800A":                       19,
		"TT1000A":                      20,
		"TT1200A":                      21,
		"TT1500A":                      22,
		"TT2000A":                      23,
	}
)

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

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

func (Device_MetricPoint_PrimaryCurrentType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[16].Descriptor()
}

func (Device_MetricPoint_PrimaryCurrentType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[16]
}

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

// Deprecated: Use Device_MetricPoint_PrimaryCurrentType.Descriptor instead.
func (Device_MetricPoint_PrimaryCurrentType) EnumDescriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{34, 1, 3}
}

// Справочник типов значений сортировки
type DevicePaging_OrderByType int32

const (
	// Значение не указано
	DevicePaging_ORDER_BY_TYPE_UNKNOWN DevicePaging_OrderByType = 0
	// По идентификатору
	DevicePaging_ID DevicePaging_OrderByType = 1
)

// Enum value maps for DevicePaging_OrderByType.
var (
	DevicePaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "ID",
	}
	DevicePaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"ID":                    1,
	}
)

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

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

func (DevicePaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[17].Descriptor()
}

func (DevicePaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[17]
}

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

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

// Справочник типов направлений сортировки
type DevicePaging_DirectionType int32

const (
	// Значение не указано
	DevicePaging_DIRECTION_TYPE_UNKNOWN DevicePaging_DirectionType = 0
	// От большего к меньшему
	DevicePaging_DESC DevicePaging_DirectionType = 1
	// От меньшего к большему
	DevicePaging_ASC DevicePaging_DirectionType = 2
)

// Enum value maps for DevicePaging_DirectionType.
var (
	DevicePaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	DevicePaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (DevicePaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[18].Descriptor()
}

func (DevicePaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[18]
}

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

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

// Справочник типов сортировки
type DeviceIndicatorMetricPointPaging_OrderByType int32

const (
	// Значение не указано
	DeviceIndicatorMetricPointPaging_ORDER_BY_TYPE_UNKNOWN DeviceIndicatorMetricPointPaging_OrderByType = 0
	// По Идентификатору индикатора
	DeviceIndicatorMetricPointPaging_INDICATOR_ID DeviceIndicatorMetricPointPaging_OrderByType = 1
	// По По Идентификатору ТУ
	DeviceIndicatorMetricPointPaging_METRIC_POINT_ID DeviceIndicatorMetricPointPaging_OrderByType = 2
)

// Enum value maps for DeviceIndicatorMetricPointPaging_OrderByType.
var (
	DeviceIndicatorMetricPointPaging_OrderByType_name = map[int32]string{
		0: "ORDER_BY_TYPE_UNKNOWN",
		1: "INDICATOR_ID",
		2: "METRIC_POINT_ID",
	}
	DeviceIndicatorMetricPointPaging_OrderByType_value = map[string]int32{
		"ORDER_BY_TYPE_UNKNOWN": 0,
		"INDICATOR_ID":          1,
		"METRIC_POINT_ID":       2,
	}
)

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

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

func (DeviceIndicatorMetricPointPaging_OrderByType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[19].Descriptor()
}

func (DeviceIndicatorMetricPointPaging_OrderByType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[19]
}

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

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

// Справочник типов направлений сортировки
type DeviceIndicatorMetricPointPaging_DirectionType int32

const (
	// Значение не указано
	DeviceIndicatorMetricPointPaging_DIRECTION_TYPE_UNKNOWN DeviceIndicatorMetricPointPaging_DirectionType = 0
	// От большего к меньшему
	DeviceIndicatorMetricPointPaging_DESC DeviceIndicatorMetricPointPaging_DirectionType = 1
	// От меньшего к большему
	DeviceIndicatorMetricPointPaging_ASC DeviceIndicatorMetricPointPaging_DirectionType = 2
)

// Enum value maps for DeviceIndicatorMetricPointPaging_DirectionType.
var (
	DeviceIndicatorMetricPointPaging_DirectionType_name = map[int32]string{
		0: "DIRECTION_TYPE_UNKNOWN",
		1: "DESC",
		2: "ASC",
	}
	DeviceIndicatorMetricPointPaging_DirectionType_value = map[string]int32{
		"DIRECTION_TYPE_UNKNOWN": 0,
		"DESC":                   1,
		"ASC":                    2,
	}
)

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

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

func (DeviceIndicatorMetricPointPaging_DirectionType) Descriptor() protoreflect.EnumDescriptor {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[20].Descriptor()
}

func (DeviceIndicatorMetricPointPaging_DirectionType) Type() protoreflect.EnumType {
	return &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes[20]
}

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

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

// Запрос удаления прибора учета
type DeleteDeviceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *DeleteDeviceRequest) Reset() {
	*x = DeleteDeviceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[0]
		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_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_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 DeleteDeviceRequest.ProtoReflect.Descriptor instead.
func (*DeleteDeviceRequest) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{0}
}

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

// Ответ на запрос удаления прибора учета
type DeleteDeviceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DeleteDeviceResponse) Reset() {
	*x = DeleteDeviceResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[1]
		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_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_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 DeleteDeviceResponse.ProtoReflect.Descriptor instead.
func (*DeleteDeviceResponse) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{1}
}

// Запрос сохранения связей ПУ и группы пользователя
type PutDeviceGroupAttachRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Связь ПУ и группы пользователя
	DeviceGroup *DeviceGroup `protobuf:"bytes,1,opt,name=device_group,json=deviceGroup,proto3" json:"device_group,omitempty"`
}

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

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

func (*PutDeviceGroupAttachRequest) ProtoMessage() {}

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

func (x *PutDeviceGroupAttachRequest) GetDeviceGroup() *DeviceGroup {
	if x != nil {
		return x.DeviceGroup
	}
	return nil
}

// Ответ на запрос сохранения связи ПУ и группы пользователя
type PutDeviceGroupAttachResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PutDeviceGroupAttachResponse) ProtoMessage() {}

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

// Запрос получения списка
type GetDeviceGroupListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр связей ПУ и группы пользователя
	Filter *DeviceGroupFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetDeviceGroupListRequest_Paging
	Pagination isGetDeviceGroupListRequest_Pagination `protobuf_oneof:"pagination"`
}

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

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

func (*GetDeviceGroupListRequest) ProtoMessage() {}

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

func (x *GetDeviceGroupListRequest) GetFilter() *DeviceGroupFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetDeviceGroupListRequest) GetPagination() isGetDeviceGroupListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetDeviceGroupListRequest) GetPaging() *DeviceGroupPaging {
	if x, ok := x.GetPagination().(*GetDeviceGroupListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetDeviceGroupListRequest_Pagination interface {
	isGetDeviceGroupListRequest_Pagination()
}

type GetDeviceGroupListRequest_Paging struct {
	// Пагинация
	Paging *DeviceGroupPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetDeviceGroupListRequest_Paging) isGetDeviceGroupListRequest_Pagination() {}

// Пагинация связей ПУ и группы пользователя
type DeviceGroupPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: GROUP_ID
	OrderByType DeviceGroupPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.DeviceGroupPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType DeviceGroupPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.DeviceGroupPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

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

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

func (*DeviceGroupPaging) ProtoMessage() {}

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

func (x *DeviceGroupPaging) GetOrderByType() DeviceGroupPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return DeviceGroupPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *DeviceGroupPaging) GetDirectionType() DeviceGroupPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return DeviceGroupPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *DeviceGroupPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *DeviceGroupPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Ответ на запрос получения списка связей ПУ и группы пользователя
type GetDeviceGroupListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceGroupListResponse_Data
	Type isGetDeviceGroupListResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetDeviceGroupListResponse) ProtoMessage() {}

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

func (m *GetDeviceGroupListResponse) GetType() isGetDeviceGroupListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceGroupListResponse) GetData() *DeviceGroup {
	if x, ok := x.GetType().(*GetDeviceGroupListResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetDeviceGroupListResponse_Type interface {
	isGetDeviceGroupListResponse_Type()
}

type GetDeviceGroupListResponse_Data struct {
	// Связь ПУ и группы пользователя
	Data *DeviceGroup `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetDeviceGroupListResponse_Data) isGetDeviceGroupListResponse_Type() {}

// Запрос получения количества связей ПУ и группы пользователя
type GetDeviceGroupCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр связей ПУ и группы пользователя
	Filter *DeviceGroupFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetDeviceGroupCountRequest) ProtoMessage() {}

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

func (x *GetDeviceGroupCountRequest) GetFilter() *DeviceGroupFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Фильтр для запроса связей ПУ и группы пользователя.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type DeviceGroupFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По Идентификатору группы пользователя
	GroupIds []string `protobuf:"bytes,1,rep,name=group_ids,json=groupIds,proto3" json:"group_ids,omitempty"`
	// По ПУ
	DeviceIds []int32 `protobuf:"varint,2,rep,packed,name=device_ids,json=deviceIds,proto3" json:"device_ids,omitempty"`
}

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

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

func (*DeviceGroupFilter) ProtoMessage() {}

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

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

func (x *DeviceGroupFilter) GetGroupIds() []string {
	if x != nil {
		return x.GroupIds
	}
	return nil
}

func (x *DeviceGroupFilter) GetDeviceIds() []int32 {
	if x != nil {
		return x.DeviceIds
	}
	return nil
}

// Ответ на запрос получения количества связей ПУ и группы пользователя
type GetDeviceGroupCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceGroupCountResponse_Data
	Type isGetDeviceGroupCountResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetDeviceGroupCountResponse) ProtoMessage() {}

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

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

func (m *GetDeviceGroupCountResponse) GetType() isGetDeviceGroupCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceGroupCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetDeviceGroupCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

type isGetDeviceGroupCountResponse_Type interface {
	isGetDeviceGroupCountResponse_Type()
}

type GetDeviceGroupCountResponse_Data struct {
	// Всего связей ПУ и группы пользователя
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

func (*GetDeviceGroupCountResponse_Data) isGetDeviceGroupCountResponse_Type() {}

// Запрос удаления связей ПУ и группы пользователя
type PutDeviceGroupDetachRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Связь ПУ и группы пользователя
	DeviceGroup *DeviceGroup `protobuf:"bytes,1,opt,name=device_group,json=deviceGroup,proto3" json:"device_group,omitempty"`
}

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

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

func (*PutDeviceGroupDetachRequest) ProtoMessage() {}

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

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

func (x *PutDeviceGroupDetachRequest) GetDeviceGroup() *DeviceGroup {
	if x != nil {
		return x.DeviceGroup
	}
	return nil
}

// Ответ на запрос удаления связи ПУ и группы пользователя
type PutDeviceGroupDetachResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*PutDeviceGroupDetachResponse) ProtoMessage() {}

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

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

// Связка ПУ и группы пользователя.
// Задает область ресурсов (resource scope), доступную пользователю.
// Используется для контроля доступа к ПУ
type DeviceGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор группы.
	// # Тип: Guid
	GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
	// Идентификатор ПУ.
	// # Диапазон: 0..2147483647
	DeviceId int32 `protobuf:"varint,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
}

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

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

func (*DeviceGroup) ProtoMessage() {}

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

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

func (x *DeviceGroup) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

func (x *DeviceGroup) GetDeviceId() int32 {
	if x != nil {
		return x.DeviceId
	}
	return 0
}

// Запрос сохранения индикатора
type PostDeviceIndicatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Индикатор
	Data *Indicator `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*PostDeviceIndicatorRequest) ProtoMessage() {}

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

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

func (x *PostDeviceIndicatorRequest) GetData() *Indicator {
	if x != nil {
		return x.Data
	}
	return nil
}

// Ответ на запрос сохранения индикатора
type PostDeviceIndicatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostDeviceIndicatorResponse_Data
	//	*PostDeviceIndicatorResponse_Error_
	Type isPostDeviceIndicatorResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*PostDeviceIndicatorResponse) ProtoMessage() {}

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

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

func (m *PostDeviceIndicatorResponse) GetType() isPostDeviceIndicatorResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostDeviceIndicatorResponse) GetData() *Indicator {
	if x, ok := x.GetType().(*PostDeviceIndicatorResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostDeviceIndicatorResponse) GetError() *PostDeviceIndicatorResponse_Error {
	if x, ok := x.GetType().(*PostDeviceIndicatorResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostDeviceIndicatorResponse_Type interface {
	isPostDeviceIndicatorResponse_Type()
}

type PostDeviceIndicatorResponse_Data struct {
	// Индикатор
	Data *Indicator `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type PostDeviceIndicatorResponse_Error_ struct {
	// Ошибка
	Error *PostDeviceIndicatorResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*PostDeviceIndicatorResponse_Data) isPostDeviceIndicatorResponse_Type() {}

func (*PostDeviceIndicatorResponse_Error_) isPostDeviceIndicatorResponse_Type() {}

// Запрос получения индикатора
type GetDeviceIndicatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор индикатора
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*GetDeviceIndicatorRequest) ProtoMessage() {}

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

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

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

// Ответ на запрос получения индикатора
type GetDeviceIndicatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceIndicatorResponse_Data
	Type isGetDeviceIndicatorResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetDeviceIndicatorResponse) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorResponse) GetType() isGetDeviceIndicatorResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceIndicatorResponse) GetData() *Indicator {
	if x, ok := x.GetType().(*GetDeviceIndicatorResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetDeviceIndicatorResponse_Type interface {
	isGetDeviceIndicatorResponse_Type()
}

type GetDeviceIndicatorResponse_Data struct {
	// Индикатор
	Data *Indicator `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetDeviceIndicatorResponse_Data) isGetDeviceIndicatorResponse_Type() {}

// Запрос получения ПУ
type GetDeviceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор ПУ
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

func (x *GetDeviceRequest) Reset() {
	*x = GetDeviceRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[17]
		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_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

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

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

// Ответ на запрос получения ПУ
type GetDeviceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceResponse_Data
	Type isGetDeviceResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetDeviceResponse) ProtoMessage() {}

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

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

func (m *GetDeviceResponse) GetType() isGetDeviceResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceResponse) GetData() *Device {
	if x, ok := x.GetType().(*GetDeviceResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetDeviceResponse_Type interface {
	isGetDeviceResponse_Type()
}

type GetDeviceResponse_Data struct {
	// Прибор учета
	Data *Device `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetDeviceResponse_Data) isGetDeviceResponse_Type() {}

// Запрос получения списка
type GetDeviceIndicatorListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр индикаторов
	Filter *IndicatorFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetDeviceIndicatorListRequest_Paging
	Pagination isGetDeviceIndicatorListRequest_Pagination `protobuf_oneof:"pagination"`
}

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

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

func (*GetDeviceIndicatorListRequest) ProtoMessage() {}

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

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

func (x *GetDeviceIndicatorListRequest) GetFilter() *IndicatorFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetDeviceIndicatorListRequest) GetPagination() isGetDeviceIndicatorListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetDeviceIndicatorListRequest) GetPaging() *IndicatorPaging {
	if x, ok := x.GetPagination().(*GetDeviceIndicatorListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetDeviceIndicatorListRequest_Pagination interface {
	isGetDeviceIndicatorListRequest_Pagination()
}

type GetDeviceIndicatorListRequest_Paging struct {
	// Пагинация по индикаторам
	Paging *IndicatorPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetDeviceIndicatorListRequest_Paging) isGetDeviceIndicatorListRequest_Pagination() {}

// Пагинация индикаторов
type IndicatorPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType IndicatorPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.IndicatorPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType IndicatorPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.IndicatorPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

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

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

func (*IndicatorPaging) ProtoMessage() {}

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

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

func (x *IndicatorPaging) GetOrderByType() IndicatorPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return IndicatorPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *IndicatorPaging) GetDirectionType() IndicatorPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return IndicatorPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *IndicatorPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *IndicatorPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Ответ на запрос получения списка индикаторов
type GetDeviceIndicatorListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceIndicatorListResponse_Data
	//	*GetDeviceIndicatorListResponse_Error_
	Type isGetDeviceIndicatorListResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetDeviceIndicatorListResponse) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorListResponse) GetType() isGetDeviceIndicatorListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceIndicatorListResponse) GetData() *Indicator {
	if x, ok := x.GetType().(*GetDeviceIndicatorListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetDeviceIndicatorListResponse) GetError() *GetDeviceIndicatorListResponse_Error {
	if x, ok := x.GetType().(*GetDeviceIndicatorListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetDeviceIndicatorListResponse_Type interface {
	isGetDeviceIndicatorListResponse_Type()
}

type GetDeviceIndicatorListResponse_Data struct {
	// Индикатор
	Data *Indicator `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type GetDeviceIndicatorListResponse_Error_ struct {
	// Ошибка
	Error *GetDeviceIndicatorListResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetDeviceIndicatorListResponse_Data) isGetDeviceIndicatorListResponse_Type() {}

func (*GetDeviceIndicatorListResponse_Error_) isGetDeviceIndicatorListResponse_Type() {}

// Фильтр для запроса индикаторов.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type IndicatorFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По списку приборов учета
	DeviceIds []int32 `protobuf:"varint,1,rep,packed,name=device_ids,json=deviceIds,proto3" json:"device_ids,omitempty"`
	// По типам измерений
	SignTypes []Indicator_SignType `protobuf:"varint,2,rep,packed,name=sign_types,json=signTypes,proto3,enum=keyapis.telemetry_control.v1.Indicator_SignType" json:"sign_types,omitempty"`
	// По списку ключей индикаторов.
	// Устарело, использовать метод GetDeviceIndicator
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	Ids []int32 `protobuf:"varint,3,rep,packed,name=ids,proto3" json:"ids,omitempty"`
	// По серийным номерам привязанных ПУ
	DeviceSerialNumbers []string `protobuf:"bytes,4,rep,name=device_serial_numbers,json=deviceSerialNumbers,proto3" json:"device_serial_numbers,omitempty"`
	// По идентификаторам объектов строительства, привязанных ТУ
	BuildingIds []int32 `protobuf:"varint,5,rep,packed,name=building_ids,json=buildingIds,proto3" json:"building_ids,omitempty"`
	// По Номерам помещений, привязанных ТУ
	RoomNumbers []string `protobuf:"bytes,6,rep,name=room_numbers,json=roomNumbers,proto3" json:"room_numbers,omitempty"`
	// По Лейблам помещений, привязанных ТУ
	RoomLabels []string `protobuf:"bytes,7,rep,name=room_labels,json=roomLabels,proto3" json:"room_labels,omitempty"`
	// По ID привязанных точек учета
	MetricPointIds []string `protobuf:"bytes,8,rep,name=metric_point_ids,json=metricPointIds,proto3" json:"metric_point_ids,omitempty"`
	// По посреднику получения показаний
	IndicatorVendorTypes []Indicator_VendorType `protobuf:"varint,9,rep,packed,name=indicator_vendor_types,json=indicatorVendorTypes,proto3,enum=keyapis.telemetry_control.v1.Indicator_VendorType" json:"indicator_vendor_types,omitempty"`
}

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

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

func (*IndicatorFilter) ProtoMessage() {}

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

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

func (x *IndicatorFilter) GetDeviceIds() []int32 {
	if x != nil {
		return x.DeviceIds
	}
	return nil
}

func (x *IndicatorFilter) GetSignTypes() []Indicator_SignType {
	if x != nil {
		return x.SignTypes
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *IndicatorFilter) GetIds() []int32 {
	if x != nil {
		return x.Ids
	}
	return nil
}

func (x *IndicatorFilter) GetDeviceSerialNumbers() []string {
	if x != nil {
		return x.DeviceSerialNumbers
	}
	return nil
}

func (x *IndicatorFilter) GetBuildingIds() []int32 {
	if x != nil {
		return x.BuildingIds
	}
	return nil
}

func (x *IndicatorFilter) GetRoomNumbers() []string {
	if x != nil {
		return x.RoomNumbers
	}
	return nil
}

func (x *IndicatorFilter) GetRoomLabels() []string {
	if x != nil {
		return x.RoomLabels
	}
	return nil
}

func (x *IndicatorFilter) GetMetricPointIds() []string {
	if x != nil {
		return x.MetricPointIds
	}
	return nil
}

func (x *IndicatorFilter) GetIndicatorVendorTypes() []Indicator_VendorType {
	if x != nil {
		return x.IndicatorVendorTypes
	}
	return nil
}

// Запрос получения количества индикаторов
type GetDeviceIndicatorCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр по индикаторам
	Filter *IndicatorFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

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

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

func (*GetDeviceIndicatorCountRequest) ProtoMessage() {}

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

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

func (x *GetDeviceIndicatorCountRequest) GetFilter() *IndicatorFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества индикаторов
type GetDeviceIndicatorCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceIndicatorCountResponse_Data
	//	*GetDeviceIndicatorCountResponse_Error_
	Type isGetDeviceIndicatorCountResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*GetDeviceIndicatorCountResponse) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorCountResponse) GetType() isGetDeviceIndicatorCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceIndicatorCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetDeviceIndicatorCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

func (x *GetDeviceIndicatorCountResponse) GetError() *GetDeviceIndicatorCountResponse_Error {
	if x, ok := x.GetType().(*GetDeviceIndicatorCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetDeviceIndicatorCountResponse_Type interface {
	isGetDeviceIndicatorCountResponse_Type()
}

type GetDeviceIndicatorCountResponse_Data struct {
	// Всего индикаторов
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

type GetDeviceIndicatorCountResponse_Error_ struct {
	// Ошибка
	Error *GetDeviceIndicatorCountResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetDeviceIndicatorCountResponse_Data) isGetDeviceIndicatorCountResponse_Type() {}

func (*GetDeviceIndicatorCountResponse_Error_) isGetDeviceIndicatorCountResponse_Type() {}

// Запрос удаления индикатора
type DeleteDeviceIndicatorRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
}

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

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

func (*DeleteDeviceIndicatorRequest) ProtoMessage() {}

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

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

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

// Ответ на запрос удаления индикатора
type DeleteDeviceIndicatorResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*DeleteDeviceIndicatorResponse) ProtoMessage() {}

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

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

// Запрос создания задачи с клиента на сервере
type PostDeviceFullDuplexRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор запроса
	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Задача с клиента
	//
	// Types that are assignable to Task:
	//
	//	*PostDeviceFullDuplexRequest_PostDeviceFullDuplexDeviceAsyncStatus
	Task isPostDeviceFullDuplexRequest_Task `protobuf_oneof:"task"`
}

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

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

func (*PostDeviceFullDuplexRequest) ProtoMessage() {}

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

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

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

func (m *PostDeviceFullDuplexRequest) GetTask() isPostDeviceFullDuplexRequest_Task {
	if m != nil {
		return m.Task
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest) GetPostDeviceFullDuplexDeviceAsyncStatus() *PostDeviceFullDuplexRequest_DeviceAsyncStatus {
	if x, ok := x.GetTask().(*PostDeviceFullDuplexRequest_PostDeviceFullDuplexDeviceAsyncStatus); ok {
		return x.PostDeviceFullDuplexDeviceAsyncStatus
	}
	return nil
}

type isPostDeviceFullDuplexRequest_Task interface {
	isPostDeviceFullDuplexRequest_Task()
}

type PostDeviceFullDuplexRequest_PostDeviceFullDuplexDeviceAsyncStatus struct {
	// Результат обработки устройства на клиенте
	PostDeviceFullDuplexDeviceAsyncStatus *PostDeviceFullDuplexRequest_DeviceAsyncStatus `protobuf:"bytes,2,opt,name=post_device_full_duplex_device_async_status,json=postDeviceFullDuplexDeviceAsyncStatus,proto3,oneof"`
}

func (*PostDeviceFullDuplexRequest_PostDeviceFullDuplexDeviceAsyncStatus) isPostDeviceFullDuplexRequest_Task() {
}

// Запрос сохранения ПУ
type PostDeviceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Прибор учета
	Device *Device `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
}

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

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

func (*PostDeviceRequest) ProtoMessage() {}

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

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

func (x *PostDeviceRequest) GetDevice() *Device {
	if x != nil {
		return x.Device
	}
	return nil
}

// Запрос замены прибора учета
type PostDeviceReplaceRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор заменяемого прибора учета
	ReplaceDeviceId int32 `protobuf:"varint,1,opt,name=replace_device_id,json=replaceDeviceId,proto3" json:"replace_device_id,omitempty"`
	// Создаваемый прибор учета
	Device *Device `protobuf:"bytes,2,opt,name=device,proto3" json:"device,omitempty"`
}

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

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

func (*PostDeviceReplaceRequest) ProtoMessage() {}

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

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

func (x *PostDeviceReplaceRequest) GetReplaceDeviceId() int32 {
	if x != nil {
		return x.ReplaceDeviceId
	}
	return 0
}

func (x *PostDeviceReplaceRequest) GetDevice() *Device {
	if x != nil {
		return x.Device
	}
	return nil
}

// Ответ на замену прибора учета
type PostDeviceReplaceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*PostDeviceReplaceResponse_Data
	//	*PostDeviceReplaceResponse_Error_
	Type isPostDeviceReplaceResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*PostDeviceReplaceResponse) ProtoMessage() {}

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

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

func (m *PostDeviceReplaceResponse) GetType() isPostDeviceReplaceResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostDeviceReplaceResponse) GetData() *Device {
	if x, ok := x.GetType().(*PostDeviceReplaceResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostDeviceReplaceResponse) GetError() *PostDeviceReplaceResponse_Error {
	if x, ok := x.GetType().(*PostDeviceReplaceResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostDeviceReplaceResponse_Type interface {
	isPostDeviceReplaceResponse_Type()
}

type PostDeviceReplaceResponse_Data struct {
	// Созданный на замену ПУ
	Data *Device `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type PostDeviceReplaceResponse_Error_ struct {
	// Ошибка
	Error *PostDeviceReplaceResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*PostDeviceReplaceResponse_Data) isPostDeviceReplaceResponse_Type() {}

func (*PostDeviceReplaceResponse_Error_) isPostDeviceReplaceResponse_Type() {}

// Событие изменения ПУ на сервера
type PostDeviceFullDuplexResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор запроса
	RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	// Событие
	//
	// Types that are assignable to Event:
	//
	//	*PostDeviceFullDuplexResponse_PostDevice
	Event isPostDeviceFullDuplexResponse_Event `protobuf_oneof:"event"`
}

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

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

func (*PostDeviceFullDuplexResponse) ProtoMessage() {}

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

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

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

func (m *PostDeviceFullDuplexResponse) GetEvent() isPostDeviceFullDuplexResponse_Event {
	if m != nil {
		return m.Event
	}
	return nil
}

func (x *PostDeviceFullDuplexResponse) GetPostDevice() *PostDeviceResponse {
	if x, ok := x.GetEvent().(*PostDeviceFullDuplexResponse_PostDevice); ok {
		return x.PostDevice
	}
	return nil
}

type isPostDeviceFullDuplexResponse_Event interface {
	isPostDeviceFullDuplexResponse_Event()
}

type PostDeviceFullDuplexResponse_PostDevice struct {
	// Измененние ПУ на сервере
	PostDevice *PostDeviceResponse `protobuf:"bytes,2,opt,name=post_device,json=postDevice,proto3,oneof"`
}

func (*PostDeviceFullDuplexResponse_PostDevice) isPostDeviceFullDuplexResponse_Event() {}

// Ответ на изменение ПУ на сервере
type PostDeviceResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип ответа
	//
	// Types that are assignable to Type:
	//
	//	*PostDeviceResponse_Data
	//	*PostDeviceResponse_Error_
	Type isPostDeviceResponse_Type `protobuf_oneof:"type"`
}

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

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

func (*PostDeviceResponse) ProtoMessage() {}

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

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

func (m *PostDeviceResponse) GetType() isPostDeviceResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostDeviceResponse) GetData() *Device {
	if x, ok := x.GetType().(*PostDeviceResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostDeviceResponse) GetError() *PostDeviceResponse_Error {
	if x, ok := x.GetType().(*PostDeviceResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostDeviceResponse_Type interface {
	isPostDeviceResponse_Type()
}

type PostDeviceResponse_Data struct {
	// ПУ
	Data *Device `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type PostDeviceResponse_Error_ struct {
	// Ошибка
	Error *PostDeviceResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*PostDeviceResponse_Data) isPostDeviceResponse_Type() {}

func (*PostDeviceResponse_Error_) isPostDeviceResponse_Type() {}

// Индикатор
type Indicator struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Идентификатор прибора учета(ПУ)
	DeviceId int32 `protobuf:"varint,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	// Название
	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	// Тип единицы измерения, в которой интерпретировано, получаемое измерение
	UnitType Indicator_UnitType `protobuf:"varint,4,opt,name=unit_type,json=unitType,proto3,enum=keyapis.telemetry_control.v1.Indicator_UnitType" json:"unit_type,omitempty"`
	// Тип измерения
	SignType Indicator_SignType `protobuf:"varint,5,opt,name=sign_type,json=signType,proto3,enum=keyapis.telemetry_control.v1.Indicator_SignType" json:"sign_type,omitempty"`
	// Дата создания
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Флаг видимости индикатора для клиента
	IsIndividual bool `protobuf:"varint,8,opt,name=is_individual,json=isIndividual,proto3" json:"is_individual,omitempty"`
	// Код для совместимости с поставщиком метрик
	CompatibilityCode *wrapperspb.StringValue `protobuf:"bytes,9,opt,name=compatibility_code,json=compatibilityCode,proto3" json:"compatibility_code,omitempty"`
	// Тип архивности показаний
	ArchiveType Indicator_ArchiveType `protobuf:"varint,10,opt,name=archive_type,json=archiveType,proto3,enum=keyapis.telemetry_control.v1.Indicator_ArchiveType" json:"archive_type,omitempty"`
	// Тип единицы измерения для отображения измерения.
	// При UNIT_TYPE_UNKNOWN отображаемые единицы совпадают с единицами источников значений, преобразования единиц не происходит.
	// Применяется после коэффициента
	PresentationUnitType Indicator_UnitType `protobuf:"varint,11,opt,name=presentation_unit_type,json=presentationUnitType,proto3,enum=keyapis.telemetry_control.v1.Indicator_UnitType" json:"presentation_unit_type,omitempty"`
	// Коэффициент, на который умножается отображаемое значение.
	// Применяется перед преобразованием единиц измерений к presentation_unit_type и после применения поправки
	Coefficient *wrapperspb.FloatValue `protobuf:"bytes,12,opt,name=coefficient,proto3" json:"coefficient,omitempty"`
	// Величина поправки к отображаемому значению.
	// Применяется перед применением коэффициента
	Shift *wrapperspb.FloatValue `protobuf:"bytes,13,opt,name=shift,proto3" json:"shift,omitempty"`
	// Количество возвращаемых десятичных знаков при округлении итогового значения.
	// При пустом параметре округления не происходит.
	// Применяется после преобразования единиц измерения
	RoundDecimalDigits *wrapperspb.Int32Value `protobuf:"bytes,14,opt,name=round_decimal_digits,json=roundDecimalDigits,proto3" json:"round_decimal_digits,omitempty"`
	// Ожидаемая частота поступления показаний в днях
	MetricExpectedFreq int32 `protobuf:"varint,15,opt,name=metric_expected_freq,json=metricExpectedFreq,proto3" json:"metric_expected_freq,omitempty"`
	// Номер канала для многоканального ПУ
	ChannelNumber *wrapperspb.StringValue `protobuf:"bytes,16,opt,name=channel_number,json=channelNumber,proto3" json:"channel_number,omitempty"`
	// Порядковый номер канала для многоканального ПУ
	ChannelOrder *wrapperspb.Int32Value `protobuf:"bytes,17,opt,name=channel_order,json=channelOrder,proto3" json:"channel_order,omitempty"`
	// Посредник получения показаний
	VendorType Indicator_VendorType `protobuf:"varint,18,opt,name=vendor_type,json=vendorType,proto3,enum=keyapis.telemetry_control.v1.Indicator_VendorType" json:"vendor_type,omitempty"`
}

func (x *Indicator) Reset() {
	*x = Indicator{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Indicator) ProtoMessage() {}

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

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

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

func (x *Indicator) GetDeviceId() int32 {
	if x != nil {
		return x.DeviceId
	}
	return 0
}

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

func (x *Indicator) GetUnitType() Indicator_UnitType {
	if x != nil {
		return x.UnitType
	}
	return Indicator_UNIT_TYPE_UNKNOWN
}

func (x *Indicator) GetSignType() Indicator_SignType {
	if x != nil {
		return x.SignType
	}
	return Indicator_SIGN_TYPE_UNKNOWN
}

func (x *Indicator) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Indicator) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *Indicator) GetIsIndividual() bool {
	if x != nil {
		return x.IsIndividual
	}
	return false
}

func (x *Indicator) GetCompatibilityCode() *wrapperspb.StringValue {
	if x != nil {
		return x.CompatibilityCode
	}
	return nil
}

func (x *Indicator) GetArchiveType() Indicator_ArchiveType {
	if x != nil {
		return x.ArchiveType
	}
	return Indicator_ARCHIVE_TYPE_UNKNOWN
}

func (x *Indicator) GetPresentationUnitType() Indicator_UnitType {
	if x != nil {
		return x.PresentationUnitType
	}
	return Indicator_UNIT_TYPE_UNKNOWN
}

func (x *Indicator) GetCoefficient() *wrapperspb.FloatValue {
	if x != nil {
		return x.Coefficient
	}
	return nil
}

func (x *Indicator) GetShift() *wrapperspb.FloatValue {
	if x != nil {
		return x.Shift
	}
	return nil
}

func (x *Indicator) GetRoundDecimalDigits() *wrapperspb.Int32Value {
	if x != nil {
		return x.RoundDecimalDigits
	}
	return nil
}

func (x *Indicator) GetMetricExpectedFreq() int32 {
	if x != nil {
		return x.MetricExpectedFreq
	}
	return 0
}

func (x *Indicator) GetChannelNumber() *wrapperspb.StringValue {
	if x != nil {
		return x.ChannelNumber
	}
	return nil
}

func (x *Indicator) GetChannelOrder() *wrapperspb.Int32Value {
	if x != nil {
		return x.ChannelOrder
	}
	return nil
}

func (x *Indicator) GetVendorType() Indicator_VendorType {
	if x != nil {
		return x.VendorType
	}
	return Indicator_VENDOR_TYPE_UNKNOWN
}

// Прибор учёта
type Device struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	// Индикаторы
	Indicators []*Indicator `protobuf:"bytes,2,rep,name=indicators,proto3" json:"indicators,omitempty"`
	// Точка учета
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	MetricPoint *Device_MetricPoint `protobuf:"bytes,3,opt,name=metric_point,json=metricPoint,proto3" json:"metric_point,omitempty"`
	// Дата создания
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Дата последнего изменения.
	// Заполняется и обновляется сервером.
	// Заполняется при создании и изменении.
	// Является версией объекта
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Тип прибора учёта(ПУ)
	Type Device_Type `protobuf:"varint,6,opt,name=type,proto3,enum=keyapis.telemetry_control.v1.Device_Type" json:"type,omitempty"`
	// Серийный номер
	SerialNumber string `protobuf:"bytes,7,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
	// Производитель и модель счетчика
	Model string `protobuf:"bytes,8,opt,name=model,proto3" json:"model,omitempty"`
	// Год выпуска счётчика
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	Year int32 `protobuf:"varint,9,opt,name=year,proto3" json:"year,omitempty"`
	// Идентификатор строения ФИАС
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	FiasId string `protobuf:"bytes,10,opt,name=fias_id,json=fiasId,proto3" json:"fias_id,omitempty"`
	// Идентификатор владельца.
	// Заполняется сервером
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	ResourceOwnerId string `protobuf:"bytes,11,opt,name=resource_owner_id,json=resourceOwnerId,proto3" json:"resource_owner_id,omitempty"`
	// Тип статуса
	StatusType Device_StatusType `protobuf:"varint,12,opt,name=status_type,json=statusType,proto3,enum=keyapis.telemetry_control.v1.Device_StatusType" json:"status_type,omitempty"`
	// Дата установки
	InstalledAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=installed_at,json=installedAt,proto3" json:"installed_at,omitempty"`
	// Дата удаления
	RemovedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=removed_at,json=removedAt,proto3" json:"removed_at,omitempty"`
	// Дата предыдущей поверки счетчика
	CheckAt *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=check_at,json=checkAt,proto3" json:"check_at,omitempty"`
	// Дата следующей поверки счетчика
	NextCheckAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=next_check_at,json=nextCheckAt,proto3" json:"next_check_at,omitempty"`
	// Внешний дентификатор прибора учёта(ПУ)
	ExternalId *wrapperspb.StringValue `protobuf:"bytes,17,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"`
	// Тип тарифного плана
	PlanType Device_PlanType `protobuf:"varint,18,opt,name=plan_type,json=planType,proto3,enum=keyapis.telemetry_control.v1.Device_PlanType" json:"plan_type,omitempty"`
	// Идентификатор хаба
	ParentId *wrapperspb.Int32Value `protobuf:"bytes,19,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
	// Тип трубопровода
	PipeType Device_PipeType `protobuf:"varint,20,opt,name=pipe_type,json=pipeType,proto3,enum=keyapis.telemetry_control.v1.Device_PipeType" json:"pipe_type,omitempty"`
	// Идентификатор модуля LoraWan
	DevEui *wrapperspb.StringValue `protobuf:"bytes,21,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"`
	// MAC-адрес
	Mac *wrapperspb.StringValue `protobuf:"bytes,22,opt,name=mac,proto3" json:"mac,omitempty"`
	// Номер порта
	Port *wrapperspb.Int32Value `protobuf:"bytes,23,opt,name=port,proto3" json:"port,omitempty"`
	// Сетевой адрес
	NetworkAddress *wrapperspb.StringValue `protobuf:"bytes,24,opt,name=network_address,json=networkAddress,proto3" json:"network_address,omitempty"`
	// Канал связи.
	// Для станции LoraWan
	CommChannel *wrapperspb.StringValue `protobuf:"bytes,25,opt,name=comm_channel,json=commChannel,proto3" json:"comm_channel,omitempty"`
	// MSISDN SIM-карты.
	// Номер телефона
	SimNumber *wrapperspb.StringValue `protobuf:"bytes,26,opt,name=sim_number,json=simNumber,proto3" json:"sim_number,omitempty"`
	// Серийный номер SIM-карты
	SimSerial *wrapperspb.StringValue `protobuf:"bytes,27,opt,name=sim_serial,json=simSerial,proto3" json:"sim_serial,omitempty"`
	// IP адрес SIM-карты
	IpAddressSim *wrapperspb.StringValue `protobuf:"bytes,28,opt,name=ip_address_sim,json=ipAddressSim,proto3" json:"ip_address_sim,omitempty"`
	// Размещение
	Placement *wrapperspb.StringValue `protobuf:"bytes,29,opt,name=placement,proto3" json:"placement,omitempty"`
	// Место установки
	InstallationPlace *wrapperspb.StringValue `protobuf:"bytes,30,opt,name=installation_place,json=installationPlace,proto3" json:"installation_place,omitempty"`
	// Kлюч приложения.
	// Используется в процессе присоединения к сети для получения сессионных ключей NwkSKey и AppSKey для LoRaWAN [128 бит]
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	Appkey *wrapperspb.StringValue `protobuf:"bytes,31,opt,name=appkey,proto3" json:"appkey,omitempty"`
	// Идентификатор приложения.
	// Для LoRaWAN [64 бита]
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	Appeui *wrapperspb.StringValue `protobuf:"bytes,32,opt,name=appeui,proto3" json:"appeui,omitempty"`
	// Тип протокола
	ProtocolTypeLabel *wrapperspb.StringValue `protobuf:"bytes,33,opt,name=protocol_type_label,json=protocolTypeLabel,proto3" json:"protocol_type_label,omitempty"`
	// Номер канала для многоканального ПУ
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	ChannelNumber *wrapperspb.Int32Value `protobuf:"bytes,34,opt,name=channel_number,json=channelNumber,proto3" json:"channel_number,omitempty"`
	// Тип проводного интерфейса
	WireInterface *wrapperspb.StringValue `protobuf:"bytes,35,opt,name=wire_interface,json=wireInterface,proto3" json:"wire_interface,omitempty"`
	// Идентификатор объекта строительства
	BuildingId int32 `protobuf:"varint,36,opt,name=building_id,json=buildingId,proto3" json:"building_id,omitempty"`
	// Год выпуска счётчика
	ManufactureYear *wrapperspb.Int32Value `protobuf:"bytes,37,opt,name=manufacture_year,json=manufactureYear,proto3" json:"manufacture_year,omitempty"`
	// Посредник получения показаний
	IndicatorVendorType Indicator_VendorType `protobuf:"varint,38,opt,name=indicator_vendor_type,json=indicatorVendorType,proto3,enum=keyapis.telemetry_control.v1.Indicator_VendorType" json:"indicator_vendor_type,omitempty"`
}

func (x *Device) Reset() {
	*x = Device{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[34]
		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_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

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

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

func (x *Device) GetIndicators() []*Indicator {
	if x != nil {
		return x.Indicators
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetMetricPoint() *Device_MetricPoint {
	if x != nil {
		return x.MetricPoint
	}
	return nil
}

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

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

func (x *Device) GetType() Device_Type {
	if x != nil {
		return x.Type
	}
	return Device_TYPE_UNKNOWN
}

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

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

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetYear() int32 {
	if x != nil {
		return x.Year
	}
	return 0
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetFiasId() string {
	if x != nil {
		return x.FiasId
	}
	return ""
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetResourceOwnerId() string {
	if x != nil {
		return x.ResourceOwnerId
	}
	return ""
}

func (x *Device) GetStatusType() Device_StatusType {
	if x != nil {
		return x.StatusType
	}
	return Device_STATUS_TYPE_UNKNOWN
}

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

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

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

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

func (x *Device) GetExternalId() *wrapperspb.StringValue {
	if x != nil {
		return x.ExternalId
	}
	return nil
}

func (x *Device) GetPlanType() Device_PlanType {
	if x != nil {
		return x.PlanType
	}
	return Device_PLAN_TYPE_UNKNOWN
}

func (x *Device) GetParentId() *wrapperspb.Int32Value {
	if x != nil {
		return x.ParentId
	}
	return nil
}

func (x *Device) GetPipeType() Device_PipeType {
	if x != nil {
		return x.PipeType
	}
	return Device_PIPE_TYPE_UNKNOWN
}

func (x *Device) GetDevEui() *wrapperspb.StringValue {
	if x != nil {
		return x.DevEui
	}
	return nil
}

func (x *Device) GetMac() *wrapperspb.StringValue {
	if x != nil {
		return x.Mac
	}
	return nil
}

func (x *Device) GetPort() *wrapperspb.Int32Value {
	if x != nil {
		return x.Port
	}
	return nil
}

func (x *Device) GetNetworkAddress() *wrapperspb.StringValue {
	if x != nil {
		return x.NetworkAddress
	}
	return nil
}

func (x *Device) GetCommChannel() *wrapperspb.StringValue {
	if x != nil {
		return x.CommChannel
	}
	return nil
}

func (x *Device) GetSimNumber() *wrapperspb.StringValue {
	if x != nil {
		return x.SimNumber
	}
	return nil
}

func (x *Device) GetSimSerial() *wrapperspb.StringValue {
	if x != nil {
		return x.SimSerial
	}
	return nil
}

func (x *Device) GetIpAddressSim() *wrapperspb.StringValue {
	if x != nil {
		return x.IpAddressSim
	}
	return nil
}

func (x *Device) GetPlacement() *wrapperspb.StringValue {
	if x != nil {
		return x.Placement
	}
	return nil
}

func (x *Device) GetInstallationPlace() *wrapperspb.StringValue {
	if x != nil {
		return x.InstallationPlace
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetAppkey() *wrapperspb.StringValue {
	if x != nil {
		return x.Appkey
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetAppeui() *wrapperspb.StringValue {
	if x != nil {
		return x.Appeui
	}
	return nil
}

func (x *Device) GetProtocolTypeLabel() *wrapperspb.StringValue {
	if x != nil {
		return x.ProtocolTypeLabel
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *Device) GetChannelNumber() *wrapperspb.Int32Value {
	if x != nil {
		return x.ChannelNumber
	}
	return nil
}

func (x *Device) GetWireInterface() *wrapperspb.StringValue {
	if x != nil {
		return x.WireInterface
	}
	return nil
}

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

func (x *Device) GetManufactureYear() *wrapperspb.Int32Value {
	if x != nil {
		return x.ManufactureYear
	}
	return nil
}

func (x *Device) GetIndicatorVendorType() Indicator_VendorType {
	if x != nil {
		return x.IndicatorVendorType
	}
	return Indicator_VENDOR_TYPE_UNKNOWN
}

// Запрос получения списка
type GetDeviceListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр
	Filter *DeviceFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetDeviceListRequest_Paging
	Pagination isGetDeviceListRequest_Pagination `protobuf_oneof:"pagination"`
}

func (x *GetDeviceListRequest) Reset() {
	*x = GetDeviceListRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceListRequest) ProtoMessage() {}

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

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

func (x *GetDeviceListRequest) GetFilter() *DeviceFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetDeviceListRequest) GetPagination() isGetDeviceListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetDeviceListRequest) GetPaging() *DevicePaging {
	if x, ok := x.GetPagination().(*GetDeviceListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetDeviceListRequest_Pagination interface {
	isGetDeviceListRequest_Pagination()
}

type GetDeviceListRequest_Paging struct {
	// Пагинация
	Paging *DevicePaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetDeviceListRequest_Paging) isGetDeviceListRequest_Pagination() {}

// Пагинация устройств
type DevicePaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType DevicePaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.DevicePaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType DevicePaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.DevicePaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

func (x *DevicePaging) Reset() {
	*x = DevicePaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DevicePaging) ProtoMessage() {}

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

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

func (x *DevicePaging) GetOrderByType() DevicePaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return DevicePaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *DevicePaging) GetDirectionType() DevicePaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return DevicePaging_DIRECTION_TYPE_UNKNOWN
}

func (x *DevicePaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *DevicePaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Ответ на запрос получения списка приборов учета
type GetDeviceListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceListResponse_Data
	//	*GetDeviceListResponse_Error_
	Type isGetDeviceListResponse_Type `protobuf_oneof:"type"`
}

func (x *GetDeviceListResponse) Reset() {
	*x = GetDeviceListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceListResponse) ProtoMessage() {}

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

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

func (m *GetDeviceListResponse) GetType() isGetDeviceListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceListResponse) GetData() *Device {
	if x, ok := x.GetType().(*GetDeviceListResponse_Data); ok {
		return x.Data
	}
	return nil
}

func (x *GetDeviceListResponse) GetError() *GetDeviceListResponse_Error {
	if x, ok := x.GetType().(*GetDeviceListResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetDeviceListResponse_Type interface {
	isGetDeviceListResponse_Type()
}

type GetDeviceListResponse_Data struct {
	// Прибор учета
	Data *Device `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

type GetDeviceListResponse_Error_ struct {
	// Ошибка
	Error *GetDeviceListResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetDeviceListResponse_Data) isGetDeviceListResponse_Type() {}

func (*GetDeviceListResponse_Error_) isGetDeviceListResponse_Type() {}

// Фильтр для запроса приборов учета.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type DeviceFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По ФИАС
	FiasIds []string `protobuf:"bytes,1,rep,name=fias_ids,json=fiasIds,proto3" json:"fias_ids,omitempty"`
	// По типам приборов учета
	Types []Device_Type `protobuf:"varint,2,rep,packed,name=types,proto3,enum=keyapis.telemetry_control.v1.Device_Type" json:"types,omitempty"`
	// По типам статусов
	StatusTypes []Device_StatusType `protobuf:"varint,3,rep,packed,name=status_types,json=statusTypes,proto3,enum=keyapis.telemetry_control.v1.Device_StatusType" json:"status_types,omitempty"`
	// По модели счетчика
	Models []string `protobuf:"bytes,4,rep,name=models,proto3" json:"models,omitempty"`
	// По типам метрик
	MetricPointMetricTypes []Device_MetricPoint_MetricType `protobuf:"varint,5,rep,packed,name=metric_point_metric_types,json=metricPointMetricTypes,proto3,enum=keyapis.telemetry_control.v1.Device_MetricPoint_MetricType" json:"metric_point_metric_types,omitempty"`
	// По номерам помещений точек учета, привязанных через индикаторы
	RoomNumbers []string `protobuf:"bytes,6,rep,name=room_numbers,json=roomNumbers,proto3" json:"room_numbers,omitempty"`
	// По лейблам помещений точек учета, привязанных через индикаторы
	RoomLabels []string `protobuf:"bytes,7,rep,name=room_labels,json=roomLabels,proto3" json:"room_labels,omitempty"`
	// По идентификаторам хабов
	ParentIds []int32 `protobuf:"varint,8,rep,packed,name=parent_ids,json=parentIds,proto3" json:"parent_ids,omitempty"`
	// По идентификаторам приборов учета.
	// Устарело, использовать метод GetDevice
	//
	// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
	Ids []int32 `protobuf:"varint,9,rep,packed,name=ids,proto3" json:"ids,omitempty"`
	// По идентификатору объекта строительства
	BuildingIds []int32 `protobuf:"varint,10,rep,packed,name=building_ids,json=buildingIds,proto3" json:"building_ids,omitempty"`
	// По серийным номерам
	SerialNumbers []string `protobuf:"bytes,11,rep,name=serial_numbers,json=serialNumbers,proto3" json:"serial_numbers,omitempty"`
	// По ID точек учета, привязанных через индикаторы
	MetricPointIds []string `protobuf:"bytes,12,rep,name=metric_point_ids,json=metricPointIds,proto3" json:"metric_point_ids,omitempty"`
	// Смешанный поиск по полям serial_number, dev_eui, MAC-адрес, model, external_id
	SerialIds []string `protobuf:"bytes,13,rep,name=serial_ids,json=serialIds,proto3" json:"serial_ids,omitempty"`
	// По ОРПОНам
	Orpons []int64 `protobuf:"varint,14,rep,packed,name=orpons,proto3" json:"orpons,omitempty"`
	// По посреднику получения показаний
	IndicatorVendorTypes []Indicator_VendorType `protobuf:"varint,15,rep,packed,name=indicator_vendor_types,json=indicatorVendorTypes,proto3,enum=keyapis.telemetry_control.v1.Indicator_VendorType" json:"indicator_vendor_types,omitempty"`
}

func (x *DeviceFilter) Reset() {
	*x = DeviceFilter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeviceFilter) ProtoMessage() {}

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

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

func (x *DeviceFilter) GetFiasIds() []string {
	if x != nil {
		return x.FiasIds
	}
	return nil
}

func (x *DeviceFilter) GetTypes() []Device_Type {
	if x != nil {
		return x.Types
	}
	return nil
}

func (x *DeviceFilter) GetStatusTypes() []Device_StatusType {
	if x != nil {
		return x.StatusTypes
	}
	return nil
}

func (x *DeviceFilter) GetModels() []string {
	if x != nil {
		return x.Models
	}
	return nil
}

func (x *DeviceFilter) GetMetricPointMetricTypes() []Device_MetricPoint_MetricType {
	if x != nil {
		return x.MetricPointMetricTypes
	}
	return nil
}

func (x *DeviceFilter) GetRoomNumbers() []string {
	if x != nil {
		return x.RoomNumbers
	}
	return nil
}

func (x *DeviceFilter) GetRoomLabels() []string {
	if x != nil {
		return x.RoomLabels
	}
	return nil
}

func (x *DeviceFilter) GetParentIds() []int32 {
	if x != nil {
		return x.ParentIds
	}
	return nil
}

// Deprecated: Marked as deprecated in keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto.
func (x *DeviceFilter) GetIds() []int32 {
	if x != nil {
		return x.Ids
	}
	return nil
}

func (x *DeviceFilter) GetBuildingIds() []int32 {
	if x != nil {
		return x.BuildingIds
	}
	return nil
}

func (x *DeviceFilter) GetSerialNumbers() []string {
	if x != nil {
		return x.SerialNumbers
	}
	return nil
}

func (x *DeviceFilter) GetMetricPointIds() []string {
	if x != nil {
		return x.MetricPointIds
	}
	return nil
}

func (x *DeviceFilter) GetSerialIds() []string {
	if x != nil {
		return x.SerialIds
	}
	return nil
}

func (x *DeviceFilter) GetOrpons() []int64 {
	if x != nil {
		return x.Orpons
	}
	return nil
}

func (x *DeviceFilter) GetIndicatorVendorTypes() []Indicator_VendorType {
	if x != nil {
		return x.IndicatorVendorTypes
	}
	return nil
}

// Запрос получения количества устройств
type GetDeviceCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр по устройствам
	Filter *DeviceFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *GetDeviceCountRequest) Reset() {
	*x = GetDeviceCountRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceCountRequest) ProtoMessage() {}

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

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

func (x *GetDeviceCountRequest) GetFilter() *DeviceFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества устройств
type GetDeviceCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceCountResponse_Data
	//	*GetDeviceCountResponse_Error_
	Type isGetDeviceCountResponse_Type `protobuf_oneof:"type"`
}

func (x *GetDeviceCountResponse) Reset() {
	*x = GetDeviceCountResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceCountResponse) ProtoMessage() {}

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

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

func (m *GetDeviceCountResponse) GetType() isGetDeviceCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetDeviceCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

func (x *GetDeviceCountResponse) GetError() *GetDeviceCountResponse_Error {
	if x, ok := x.GetType().(*GetDeviceCountResponse_Error_); ok {
		return x.Error
	}
	return nil
}

type isGetDeviceCountResponse_Type interface {
	isGetDeviceCountResponse_Type()
}

type GetDeviceCountResponse_Data struct {
	// Всего устройств
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

type GetDeviceCountResponse_Error_ struct {
	// Ошибка
	Error *GetDeviceCountResponse_Error `protobuf:"bytes,2,opt,name=error,proto3,oneof"`
}

func (*GetDeviceCountResponse_Data) isGetDeviceCountResponse_Type() {}

func (*GetDeviceCountResponse_Error_) isGetDeviceCountResponse_Type() {}

// Запрос получения списка
type GetDeviceIndicatorMetricPointListRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр связей индикаторов и ТУ
	Filter *DeviceIndicatorMetricPointFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
	// Вариант разбиения на страницы
	//
	// Types that are assignable to Pagination:
	//
	//	*GetDeviceIndicatorMetricPointListRequest_Paging
	Pagination isGetDeviceIndicatorMetricPointListRequest_Pagination `protobuf_oneof:"pagination"`
}

func (x *GetDeviceIndicatorMetricPointListRequest) Reset() {
	*x = GetDeviceIndicatorMetricPointListRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceIndicatorMetricPointListRequest) ProtoMessage() {}

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

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

func (x *GetDeviceIndicatorMetricPointListRequest) GetFilter() *DeviceIndicatorMetricPointFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

func (m *GetDeviceIndicatorMetricPointListRequest) GetPagination() isGetDeviceIndicatorMetricPointListRequest_Pagination {
	if m != nil {
		return m.Pagination
	}
	return nil
}

func (x *GetDeviceIndicatorMetricPointListRequest) GetPaging() *DeviceIndicatorMetricPointPaging {
	if x, ok := x.GetPagination().(*GetDeviceIndicatorMetricPointListRequest_Paging); ok {
		return x.Paging
	}
	return nil
}

type isGetDeviceIndicatorMetricPointListRequest_Pagination interface {
	isGetDeviceIndicatorMetricPointListRequest_Pagination()
}

type GetDeviceIndicatorMetricPointListRequest_Paging struct {
	// Пагинация
	Paging *DeviceIndicatorMetricPointPaging `protobuf:"bytes,2,opt,name=paging,proto3,oneof"`
}

func (*GetDeviceIndicatorMetricPointListRequest_Paging) isGetDeviceIndicatorMetricPointListRequest_Pagination() {
}

// Фильтр для запроса индикаторов и ТУ.
// При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
// При передаче нескольких разных параметров фильтра они работают в выборке через И
type DeviceIndicatorMetricPointFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// По Идентификатору индикатора
	IndicatorId []int32 `protobuf:"varint,1,rep,packed,name=indicator_id,json=indicatorId,proto3" json:"indicator_id,omitempty"`
	// По Идентификатору ТУ
	MetricPointId []string `protobuf:"bytes,2,rep,name=metric_point_id,json=metricPointId,proto3" json:"metric_point_id,omitempty"`
}

func (x *DeviceIndicatorMetricPointFilter) Reset() {
	*x = DeviceIndicatorMetricPointFilter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeviceIndicatorMetricPointFilter) ProtoMessage() {}

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

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

func (x *DeviceIndicatorMetricPointFilter) GetIndicatorId() []int32 {
	if x != nil {
		return x.IndicatorId
	}
	return nil
}

func (x *DeviceIndicatorMetricPointFilter) GetMetricPointId() []string {
	if x != nil {
		return x.MetricPointId
	}
	return nil
}

// Пагинация связей индикаторов и ТУ
type DeviceIndicatorMetricPointPaging struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип значения сортировки.
	// По умолчанию: ID
	OrderByType DeviceIndicatorMetricPointPaging_OrderByType `protobuf:"varint,1,opt,name=order_by_type,json=orderByType,proto3,enum=keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging_OrderByType" json:"order_by_type,omitempty"`
	// Тип направления сортировки.
	// По умолчанию: DESC
	DirectionType DeviceIndicatorMetricPointPaging_DirectionType `protobuf:"varint,2,opt,name=direction_type,json=directionType,proto3,enum=keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging_DirectionType" json:"direction_type,omitempty"`
	// Количество записей на страницу.
	// Минимальное значение: 1.
	// Максимальное значение: 100.
	// По умолчанию: 20.
	// Если значение 0 (не передано), то выставляем значение по умолчанию
	Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
	// Сдвиг.
	// По умолчанию: 0
	Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"`
}

func (x *DeviceIndicatorMetricPointPaging) Reset() {
	*x = DeviceIndicatorMetricPointPaging{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeviceIndicatorMetricPointPaging) ProtoMessage() {}

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

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

func (x *DeviceIndicatorMetricPointPaging) GetOrderByType() DeviceIndicatorMetricPointPaging_OrderByType {
	if x != nil {
		return x.OrderByType
	}
	return DeviceIndicatorMetricPointPaging_ORDER_BY_TYPE_UNKNOWN
}

func (x *DeviceIndicatorMetricPointPaging) GetDirectionType() DeviceIndicatorMetricPointPaging_DirectionType {
	if x != nil {
		return x.DirectionType
	}
	return DeviceIndicatorMetricPointPaging_DIRECTION_TYPE_UNKNOWN
}

func (x *DeviceIndicatorMetricPointPaging) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *DeviceIndicatorMetricPointPaging) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

// Ответ на запрос получения списка связей индикаторов и ТУ
type GetDeviceIndicatorMetricPointListResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceIndicatorMetricPointListResponse_Data
	Type isGetDeviceIndicatorMetricPointListResponse_Type `protobuf_oneof:"type"`
}

func (x *GetDeviceIndicatorMetricPointListResponse) Reset() {
	*x = GetDeviceIndicatorMetricPointListResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceIndicatorMetricPointListResponse) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorMetricPointListResponse) GetType() isGetDeviceIndicatorMetricPointListResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceIndicatorMetricPointListResponse) GetData() *DeviceIndicatorMetricPoint {
	if x, ok := x.GetType().(*GetDeviceIndicatorMetricPointListResponse_Data); ok {
		return x.Data
	}
	return nil
}

type isGetDeviceIndicatorMetricPointListResponse_Type interface {
	isGetDeviceIndicatorMetricPointListResponse_Type()
}

type GetDeviceIndicatorMetricPointListResponse_Data struct {
	// Связь индикатора и ТУ
	Data *DeviceIndicatorMetricPoint `protobuf:"bytes,1,opt,name=data,proto3,oneof"`
}

func (*GetDeviceIndicatorMetricPointListResponse_Data) isGetDeviceIndicatorMetricPointListResponse_Type() {
}

// Связка индикатора и ТУ
type DeviceIndicatorMetricPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор индикатора.
	// # Диапазон: 0..2147483647
	IndicatorId int32 `protobuf:"varint,1,opt,name=indicator_id,json=indicatorId,proto3" json:"indicator_id,omitempty"`
	// Идентификатору ТУ.
	// # Тип: Guid
	MetricPointId string `protobuf:"bytes,2,opt,name=metric_point_id,json=metricPointId,proto3" json:"metric_point_id,omitempty"`
}

func (x *DeviceIndicatorMetricPoint) Reset() {
	*x = DeviceIndicatorMetricPoint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeviceIndicatorMetricPoint) ProtoMessage() {}

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

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

func (x *DeviceIndicatorMetricPoint) GetIndicatorId() int32 {
	if x != nil {
		return x.IndicatorId
	}
	return 0
}

func (x *DeviceIndicatorMetricPoint) GetMetricPointId() string {
	if x != nil {
		return x.MetricPointId
	}
	return ""
}

// Запрос получения количества связей индикаторов и ТУ
type GetDeviceIndicatorMetricPointCountRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Фильтр связей индикаторов и ТУ
	Filter *DeviceIndicatorMetricPointFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *GetDeviceIndicatorMetricPointCountRequest) Reset() {
	*x = GetDeviceIndicatorMetricPointCountRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceIndicatorMetricPointCountRequest) ProtoMessage() {}

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

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

func (x *GetDeviceIndicatorMetricPointCountRequest) GetFilter() *DeviceIndicatorMetricPointFilter {
	if x != nil {
		return x.Filter
	}
	return nil
}

// Ответ на запрос получения количества связей индикаторов и ТУ
type GetDeviceIndicatorMetricPointCountResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*GetDeviceIndicatorMetricPointCountResponse_Data
	Type isGetDeviceIndicatorMetricPointCountResponse_Type `protobuf_oneof:"type"`
}

func (x *GetDeviceIndicatorMetricPointCountResponse) Reset() {
	*x = GetDeviceIndicatorMetricPointCountResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceIndicatorMetricPointCountResponse) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorMetricPointCountResponse) GetType() isGetDeviceIndicatorMetricPointCountResponse_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *GetDeviceIndicatorMetricPointCountResponse) GetData() int32 {
	if x, ok := x.GetType().(*GetDeviceIndicatorMetricPointCountResponse_Data); ok {
		return x.Data
	}
	return 0
}

type isGetDeviceIndicatorMetricPointCountResponse_Type interface {
	isGetDeviceIndicatorMetricPointCountResponse_Type()
}

type GetDeviceIndicatorMetricPointCountResponse_Data struct {
	// Всего связей индикаторов и ТУ
	Data int32 `protobuf:"varint,1,opt,name=data,proto3,oneof"`
}

func (*GetDeviceIndicatorMetricPointCountResponse_Data) isGetDeviceIndicatorMetricPointCountResponse_Type() {
}

// Запрос сохранения связей индикаторов и ТУ
type PutDeviceIndicatorMetricPointAttachRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Связь индикатора и ТУ
	DeviceIndicatorMetricPoint *DeviceIndicatorMetricPoint `protobuf:"bytes,1,opt,name=device_indicator_metric_point,json=deviceIndicatorMetricPoint,proto3" json:"device_indicator_metric_point,omitempty"`
}

func (x *PutDeviceIndicatorMetricPointAttachRequest) Reset() {
	*x = PutDeviceIndicatorMetricPointAttachRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PutDeviceIndicatorMetricPointAttachRequest) ProtoMessage() {}

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

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

func (x *PutDeviceIndicatorMetricPointAttachRequest) GetDeviceIndicatorMetricPoint() *DeviceIndicatorMetricPoint {
	if x != nil {
		return x.DeviceIndicatorMetricPoint
	}
	return nil
}

// Ответ на запрос сохранения связи индикатора и ТУ
type PutDeviceIndicatorMetricPointAttachResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PutDeviceIndicatorMetricPointAttachResponse) Reset() {
	*x = PutDeviceIndicatorMetricPointAttachResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PutDeviceIndicatorMetricPointAttachResponse) ProtoMessage() {}

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

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

// Запрос удаления связей индикаторов и ТУ
type PutDeviceIndicatorMetricPointDetachRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Связь индикатора и ТУ
	DeviceIndicatorMetricPoint *DeviceIndicatorMetricPoint `protobuf:"bytes,1,opt,name=device_indicator_metric_point,json=deviceIndicatorMetricPoint,proto3" json:"device_indicator_metric_point,omitempty"`
}

func (x *PutDeviceIndicatorMetricPointDetachRequest) Reset() {
	*x = PutDeviceIndicatorMetricPointDetachRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PutDeviceIndicatorMetricPointDetachRequest) ProtoMessage() {}

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

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

func (x *PutDeviceIndicatorMetricPointDetachRequest) GetDeviceIndicatorMetricPoint() *DeviceIndicatorMetricPoint {
	if x != nil {
		return x.DeviceIndicatorMetricPoint
	}
	return nil
}

// Ответ на запрос удаления связи индикатора и ТУ
type PutDeviceIndicatorMetricPointDetachResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PutDeviceIndicatorMetricPointDetachResponse) Reset() {
	*x = PutDeviceIndicatorMetricPointDetachResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PutDeviceIndicatorMetricPointDetachResponse) ProtoMessage() {}

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

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

// Ошибка запроса сохранения индикатора
type PostDeviceIndicatorResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostDeviceIndicatorResponse_Error_Validation
	Reason isPostDeviceIndicatorResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostDeviceIndicatorResponse_Error) Reset() {
	*x = PostDeviceIndicatorResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceIndicatorResponse_Error) ProtoMessage() {}

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

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

func (m *PostDeviceIndicatorResponse_Error) GetReason() isPostDeviceIndicatorResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostDeviceIndicatorResponse_Error) GetValidation() *Indicator_ValidationError {
	if x, ok := x.GetReason().(*PostDeviceIndicatorResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isPostDeviceIndicatorResponse_Error_Reason interface {
	isPostDeviceIndicatorResponse_Error_Reason()
}

type PostDeviceIndicatorResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *Indicator_ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*PostDeviceIndicatorResponse_Error_Validation) isPostDeviceIndicatorResponse_Error_Reason() {}

// Ошибка валидации постраничной пагинации по индикаторам.
// Эти проверки выполняются до обращения в базу данных
type IndicatorPaging_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*IndicatorPaging_ValidationError_Limit
	//	*IndicatorPaging_ValidationError_Offset
	Reason isIndicatorPaging_ValidationError_Reason `protobuf_oneof:"reason"`
}

func (x *IndicatorPaging_ValidationError) Reset() {
	*x = IndicatorPaging_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IndicatorPaging_ValidationError) ProtoMessage() {}

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

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

func (m *IndicatorPaging_ValidationError) GetReason() isIndicatorPaging_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *IndicatorPaging_ValidationError) GetLimit() *IndicatorPaging_ValidationError_LimitInvalid {
	if x, ok := x.GetReason().(*IndicatorPaging_ValidationError_Limit); ok {
		return x.Limit
	}
	return nil
}

func (x *IndicatorPaging_ValidationError) GetOffset() *IndicatorPaging_ValidationError_OffsetInvalid {
	if x, ok := x.GetReason().(*IndicatorPaging_ValidationError_Offset); ok {
		return x.Offset
	}
	return nil
}

type isIndicatorPaging_ValidationError_Reason interface {
	isIndicatorPaging_ValidationError_Reason()
}

type IndicatorPaging_ValidationError_Limit struct {
	// Количество передано некорректно
	Limit *IndicatorPaging_ValidationError_LimitInvalid `protobuf:"bytes,1,opt,name=limit,proto3,oneof"`
}

type IndicatorPaging_ValidationError_Offset struct {
	// Сдвиг передан некорректно
	Offset *IndicatorPaging_ValidationError_OffsetInvalid `protobuf:"bytes,2,opt,name=offset,proto3,oneof"`
}

func (*IndicatorPaging_ValidationError_Limit) isIndicatorPaging_ValidationError_Reason() {}

func (*IndicatorPaging_ValidationError_Offset) isIndicatorPaging_ValidationError_Reason() {}

// Причины:
// - Значение количества < 0 или > 100
type IndicatorPaging_ValidationError_LimitInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *IndicatorPaging_ValidationError_LimitInvalid) Reset() {
	*x = IndicatorPaging_ValidationError_LimitInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IndicatorPaging_ValidationError_LimitInvalid) ProtoMessage() {}

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

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

// Причины:
// - Значение сдвига < 0
type IndicatorPaging_ValidationError_OffsetInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *IndicatorPaging_ValidationError_OffsetInvalid) Reset() {
	*x = IndicatorPaging_ValidationError_OffsetInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IndicatorPaging_ValidationError_OffsetInvalid) ProtoMessage() {}

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

// Deprecated: Use IndicatorPaging_ValidationError_OffsetInvalid.ProtoReflect.Descriptor instead.
func (*IndicatorPaging_ValidationError_OffsetInvalid) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{20, 0, 1}
}

// Ошибка запроса получения списка индикаторов
type GetDeviceIndicatorListResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetDeviceIndicatorListResponse_Error_DeviceFilterValidation
	//	*GetDeviceIndicatorListResponse_Error_DevicePagingValidation
	Reason isGetDeviceIndicatorListResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetDeviceIndicatorListResponse_Error) Reset() {
	*x = GetDeviceIndicatorListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceIndicatorListResponse_Error) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorListResponse_Error) GetReason() isGetDeviceIndicatorListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetDeviceIndicatorListResponse_Error) GetDeviceFilterValidation() *IndicatorFilter_ValidationError {
	if x, ok := x.GetReason().(*GetDeviceIndicatorListResponse_Error_DeviceFilterValidation); ok {
		return x.DeviceFilterValidation
	}
	return nil
}

func (x *GetDeviceIndicatorListResponse_Error) GetDevicePagingValidation() *IndicatorPaging_ValidationError {
	if x, ok := x.GetReason().(*GetDeviceIndicatorListResponse_Error_DevicePagingValidation); ok {
		return x.DevicePagingValidation
	}
	return nil
}

type isGetDeviceIndicatorListResponse_Error_Reason interface {
	isGetDeviceIndicatorListResponse_Error_Reason()
}

type GetDeviceIndicatorListResponse_Error_DeviceFilterValidation struct {
	// Ошибка фильтрации
	DeviceFilterValidation *IndicatorFilter_ValidationError `protobuf:"bytes,1,opt,name=device_filter_validation,json=deviceFilterValidation,proto3,oneof"`
}

type GetDeviceIndicatorListResponse_Error_DevicePagingValidation struct {
	// Ошибка пагинации  по страницам
	DevicePagingValidation *IndicatorPaging_ValidationError `protobuf:"bytes,2,opt,name=device_paging_validation,json=devicePagingValidation,proto3,oneof"`
}

func (*GetDeviceIndicatorListResponse_Error_DeviceFilterValidation) isGetDeviceIndicatorListResponse_Error_Reason() {
}

func (*GetDeviceIndicatorListResponse_Error_DevicePagingValidation) isGetDeviceIndicatorListResponse_Error_Reason() {
}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type IndicatorFilter_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *IndicatorFilter_ValidationError) Reset() {
	*x = IndicatorFilter_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*IndicatorFilter_ValidationError) ProtoMessage() {}

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

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

func (x *IndicatorFilter_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Ошибка запроса получения количества индикаторов
type GetDeviceIndicatorCountResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetDeviceIndicatorCountResponse_Error_DeviceFilterValidation
	Reason isGetDeviceIndicatorCountResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetDeviceIndicatorCountResponse_Error) Reset() {
	*x = GetDeviceIndicatorCountResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceIndicatorCountResponse_Error) ProtoMessage() {}

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

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

func (m *GetDeviceIndicatorCountResponse_Error) GetReason() isGetDeviceIndicatorCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetDeviceIndicatorCountResponse_Error) GetDeviceFilterValidation() *IndicatorFilter_ValidationError {
	if x, ok := x.GetReason().(*GetDeviceIndicatorCountResponse_Error_DeviceFilterValidation); ok {
		return x.DeviceFilterValidation
	}
	return nil
}

type isGetDeviceIndicatorCountResponse_Error_Reason interface {
	isGetDeviceIndicatorCountResponse_Error_Reason()
}

type GetDeviceIndicatorCountResponse_Error_DeviceFilterValidation struct {
	// Ошибка фильтрации
	DeviceFilterValidation *IndicatorFilter_ValidationError `protobuf:"bytes,1,opt,name=device_filter_validation,json=deviceFilterValidation,proto3,oneof"`
}

func (*GetDeviceIndicatorCountResponse_Error_DeviceFilterValidation) isGetDeviceIndicatorCountResponse_Error_Reason() {
}

// Результат обработки устройства на клиенте
type PostDeviceFullDuplexRequest_DeviceAsyncStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор ПУ
	DeviceId int32 `protobuf:"varint,1,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	// Тип результата
	//
	// Types that are assignable to Type:
	//
	//	*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Data
	//	*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_
	Type isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Type `protobuf_oneof:"type"`
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus) ProtoMessage() {}

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

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

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus) GetDeviceId() int32 {
	if x != nil {
		return x.DeviceId
	}
	return 0
}

func (m *PostDeviceFullDuplexRequest_DeviceAsyncStatus) GetType() isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus) GetData() *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success {
	if x, ok := x.GetType().(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Data); ok {
		return x.Data
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus) GetError() *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error {
	if x, ok := x.GetType().(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_); ok {
		return x.Error
	}
	return nil
}

type isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Type interface {
	isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Type()
}

type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Data struct {
	// Успех
	Data *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
}

type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_ struct {
	// Ошибка
	Error *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error `protobuf:"bytes,3,opt,name=error,proto3,oneof"`
}

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Data) isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Type() {
}

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_) isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Type() {
}

// Команда принята
type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success) ProtoMessage() {}

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

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

// Ошибки обработки устройства на клиенте
type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestUnknown
	//	*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestIp
	//	*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestPort
	//	*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestNetworkAddress
	Reason isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) ProtoMessage() {}

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

// Deprecated: Use PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error.ProtoReflect.Descriptor instead.
func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{27, 0, 1}
}

func (m *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) GetReason() isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) GetPostDeviceRequestUnknown() *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError {
	if x, ok := x.GetReason().(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestUnknown); ok {
		return x.PostDeviceRequestUnknown
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) GetPostDeviceRequestIp() *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError {
	if x, ok := x.GetReason().(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestIp); ok {
		return x.PostDeviceRequestIp
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) GetPostDeviceRequestPort() *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError {
	if x, ok := x.GetReason().(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestPort); ok {
		return x.PostDeviceRequestPort
	}
	return nil
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error) GetPostDeviceRequestNetworkAddress() *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError {
	if x, ok := x.GetReason().(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestNetworkAddress); ok {
		return x.PostDeviceRequestNetworkAddress
	}
	return nil
}

type isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason interface {
	isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason()
}

type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestUnknown struct {
	// Неизвестная ошибка
	PostDeviceRequestUnknown *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError `protobuf:"bytes,1,opt,name=post_device_request_unknown,json=postDeviceRequestUnknown,proto3,oneof"`
}

type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestIp struct {
	// Неверный IP
	PostDeviceRequestIp *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError `protobuf:"bytes,2,opt,name=post_device_request_ip,json=postDeviceRequestIp,proto3,oneof"`
}

type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestPort struct {
	// Неверный порт
	PostDeviceRequestPort *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError `protobuf:"bytes,3,opt,name=post_device_request_port,json=postDeviceRequestPort,proto3,oneof"`
}

type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestNetworkAddress struct {
	// Неверный сетевой адрес
	PostDeviceRequestNetworkAddress *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError `protobuf:"bytes,4,opt,name=post_device_request_network_address,json=postDeviceRequestNetworkAddress,proto3,oneof"`
}

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestUnknown) isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason() {
}

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestIp) isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason() {
}

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestPort) isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason() {
}

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestNetworkAddress) isPostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_Reason() {
}

// Неизвестная ошибка на стороне клиента
type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Произвольный текст ошибки на стороне клиента.
	// Отправляется в случае если в спецификации нет подходящей ошибки.
	// После анализа таких ошибок в спецификацию добавляется специальный тип под эту ошибку
	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError) ProtoMessage() {}

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

// Deprecated: Use PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError.ProtoReflect.Descriptor instead.
func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{27, 0, 1, 0}
}

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

// Причины:
//   - Устройство не найденно на данном IP адресе
type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError) ProtoMessage() {}

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

// Deprecated: Use PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError.ProtoReflect.Descriptor instead.
func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{27, 0, 1, 1}
}

// Причины:
//   - Устройство отсутствует на порту
type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[64]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError) ProtoMessage() {}

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

// Deprecated: Use PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError.ProtoReflect.Descriptor instead.
func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{27, 0, 1, 2}
}

// Причины:
//   - Неверный сетевой адрес
type PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError) Reset() {
	*x = PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[65]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError) ProtoMessage() {}

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

// Deprecated: Use PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError.ProtoReflect.Descriptor instead.
func (*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{27, 0, 1, 3}
}

// Ошибка замены ПУ
type PostDeviceReplaceResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostDeviceReplaceResponse_Error_Validation
	//	*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound_
	//	*PostDeviceReplaceResponse_Error_CreateIndicatorsFail_
	//	*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint_
	//	*PostDeviceReplaceResponse_Error_WrongBuilding_
	//	*PostDeviceReplaceResponse_Error_MetricPointNotFound_
	Reason isPostDeviceReplaceResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostDeviceReplaceResponse_Error) Reset() {
	*x = PostDeviceReplaceResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[66]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceReplaceResponse_Error) ProtoMessage() {}

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

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

func (m *PostDeviceReplaceResponse_Error) GetReason() isPostDeviceReplaceResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostDeviceReplaceResponse_Error) GetValidation() *Device_ValidationError {
	if x, ok := x.GetReason().(*PostDeviceReplaceResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

func (x *PostDeviceReplaceResponse_Error) GetReplaceDeviceNotFound() *PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound {
	if x, ok := x.GetReason().(*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound_); ok {
		return x.ReplaceDeviceNotFound
	}
	return nil
}

func (x *PostDeviceReplaceResponse_Error) GetCreateIndicatorsFail() *PostDeviceReplaceResponse_Error_CreateIndicatorsFail {
	if x, ok := x.GetReason().(*PostDeviceReplaceResponse_Error_CreateIndicatorsFail_); ok {
		return x.CreateIndicatorsFail
	}
	return nil
}

func (x *PostDeviceReplaceResponse_Error) GetMultiLinkedMetricPoint() *PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint {
	if x, ok := x.GetReason().(*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint_); ok {
		return x.MultiLinkedMetricPoint
	}
	return nil
}

func (x *PostDeviceReplaceResponse_Error) GetWrongBuilding() *PostDeviceReplaceResponse_Error_WrongBuilding {
	if x, ok := x.GetReason().(*PostDeviceReplaceResponse_Error_WrongBuilding_); ok {
		return x.WrongBuilding
	}
	return nil
}

func (x *PostDeviceReplaceResponse_Error) GetMetricPointNotFound() *PostDeviceReplaceResponse_Error_MetricPointNotFound {
	if x, ok := x.GetReason().(*PostDeviceReplaceResponse_Error_MetricPointNotFound_); ok {
		return x.MetricPointNotFound
	}
	return nil
}

type isPostDeviceReplaceResponse_Error_Reason interface {
	isPostDeviceReplaceResponse_Error_Reason()
}

type PostDeviceReplaceResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *Device_ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

type PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound_ struct {
	// Не найден заменяемый ПУ
	ReplaceDeviceNotFound *PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound `protobuf:"bytes,2,opt,name=replace_device_not_found,json=replaceDeviceNotFound,proto3,oneof"`
}

type PostDeviceReplaceResponse_Error_CreateIndicatorsFail_ struct {
	// Не удалось создать индикаторы нового ПУ
	CreateIndicatorsFail *PostDeviceReplaceResponse_Error_CreateIndicatorsFail `protobuf:"bytes,3,opt,name=create_indicators_fail,json=createIndicatorsFail,proto3,oneof"`
}

type PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint_ struct {
	// Попытка замены ПУ, привязанного ко многим ТУ
	MultiLinkedMetricPoint *PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint `protobuf:"bytes,4,opt,name=multi_linked_metric_point,json=multiLinkedMetricPoint,proto3,oneof"`
}

type PostDeviceReplaceResponse_Error_WrongBuilding_ struct {
	// Заменяющий ПУ не привязан к дому заменяемого ПУ
	WrongBuilding *PostDeviceReplaceResponse_Error_WrongBuilding `protobuf:"bytes,5,opt,name=wrong_building,json=wrongBuilding,proto3,oneof"`
}

type PostDeviceReplaceResponse_Error_MetricPointNotFound_ struct {
	// Заменяемый ПУ не привязан к ТУ
	MetricPointNotFound *PostDeviceReplaceResponse_Error_MetricPointNotFound `protobuf:"bytes,6,opt,name=metric_point_not_found,json=metricPointNotFound,proto3,oneof"`
}

func (*PostDeviceReplaceResponse_Error_Validation) isPostDeviceReplaceResponse_Error_Reason() {}

func (*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound_) isPostDeviceReplaceResponse_Error_Reason() {
}

func (*PostDeviceReplaceResponse_Error_CreateIndicatorsFail_) isPostDeviceReplaceResponse_Error_Reason() {
}

func (*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint_) isPostDeviceReplaceResponse_Error_Reason() {
}

func (*PostDeviceReplaceResponse_Error_WrongBuilding_) isPostDeviceReplaceResponse_Error_Reason() {}

func (*PostDeviceReplaceResponse_Error_MetricPointNotFound_) isPostDeviceReplaceResponse_Error_Reason() {
}

// Не найден заменяемый ПУ
type PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound) Reset() {
	*x = PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[67]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound) ProtoMessage() {}

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

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

// Не удалось создать индикаторы нового ПУ
type PostDeviceReplaceResponse_Error_CreateIndicatorsFail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceReplaceResponse_Error_CreateIndicatorsFail) Reset() {
	*x = PostDeviceReplaceResponse_Error_CreateIndicatorsFail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[68]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceReplaceResponse_Error_CreateIndicatorsFail) ProtoMessage() {}

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

// Deprecated: Use PostDeviceReplaceResponse_Error_CreateIndicatorsFail.ProtoReflect.Descriptor instead.
func (*PostDeviceReplaceResponse_Error_CreateIndicatorsFail) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{30, 0, 1}
}

// Попытка замены ПУ, привязанного ко многим ТУ
type PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint) Reset() {
	*x = PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[69]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint) ProtoMessage() {}

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

// Deprecated: Use PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint.ProtoReflect.Descriptor instead.
func (*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{30, 0, 2}
}

// Заменяющий ПУ не привязан к дому заменяемого ПУ
type PostDeviceReplaceResponse_Error_WrongBuilding struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceReplaceResponse_Error_WrongBuilding) Reset() {
	*x = PostDeviceReplaceResponse_Error_WrongBuilding{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[70]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceReplaceResponse_Error_WrongBuilding) ProtoMessage() {}

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

// Deprecated: Use PostDeviceReplaceResponse_Error_WrongBuilding.ProtoReflect.Descriptor instead.
func (*PostDeviceReplaceResponse_Error_WrongBuilding) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{30, 0, 3}
}

// Заменяемый ПУ не привязан к ТУ
type PostDeviceReplaceResponse_Error_MetricPointNotFound struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *PostDeviceReplaceResponse_Error_MetricPointNotFound) Reset() {
	*x = PostDeviceReplaceResponse_Error_MetricPointNotFound{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[71]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceReplaceResponse_Error_MetricPointNotFound) ProtoMessage() {}

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

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

// Ошибка запроса сохранения ПУ
type PostDeviceResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*PostDeviceResponse_Error_Validation
	Reason isPostDeviceResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *PostDeviceResponse_Error) Reset() {
	*x = PostDeviceResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[72]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PostDeviceResponse_Error) ProtoMessage() {}

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

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

func (m *PostDeviceResponse_Error) GetReason() isPostDeviceResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *PostDeviceResponse_Error) GetValidation() *Device_ValidationError {
	if x, ok := x.GetReason().(*PostDeviceResponse_Error_Validation); ok {
		return x.Validation
	}
	return nil
}

type isPostDeviceResponse_Error_Reason interface {
	isPostDeviceResponse_Error_Reason()
}

type PostDeviceResponse_Error_Validation struct {
	// Ошибка валидации
	Validation *Device_ValidationError `protobuf:"bytes,1,opt,name=validation,proto3,oneof"`
}

func (*PostDeviceResponse_Error_Validation) isPostDeviceResponse_Error_Reason() {}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type Indicator_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *Indicator_ValidationError) Reset() {
	*x = Indicator_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[73]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Indicator_ValidationError) ProtoMessage() {}

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

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

func (x *Indicator_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type Device_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *Device_ValidationError) Reset() {
	*x = Device_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[74]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Device_ValidationError) ProtoMessage() {}

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

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

func (x *Device_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Точка учета
type Device_MetricPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Идентификатор
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Тип энергоресурса
	MetricType Device_MetricPoint_MetricType `protobuf:"varint,2,opt,name=metric_type,json=metricType,proto3,enum=keyapis.telemetry_control.v1.Device_MetricPoint_MetricType" json:"metric_type,omitempty"`
	// Номер помещения
	RoomNumber string `protobuf:"bytes,3,opt,name=room_number,json=roomNumber,proto3" json:"room_number,omitempty"`
	// Лейбл помещения
	RoomLabel string `protobuf:"bytes,4,opt,name=room_label,json=roomLabel,proto3" json:"room_label,omitempty"`
	// Зона
	ZoneLabel *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=zone_label,json=zoneLabel,proto3" json:"zone_label,omitempty"`
	// Тип статуса
	StatusType Device_MetricPoint_StatusType `protobuf:"varint,6,opt,name=status_type,json=statusType,proto3,enum=keyapis.telemetry_control.v1.Device_MetricPoint_StatusType" json:"status_type,omitempty"`
	// Тип учёта
	AccountingType Device_MetricPoint_AccountingType `protobuf:"varint,7,opt,name=accounting_type,json=accountingType,proto3,enum=keyapis.telemetry_control.v1.Device_MetricPoint_AccountingType" json:"accounting_type,omitempty"`
	// Дата создания
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Тип номинала первичного тока
	PrimaryCurrentType Device_MetricPoint_PrimaryCurrentType `protobuf:"varint,9,opt,name=primary_current_type,json=primaryCurrentType,proto3,enum=keyapis.telemetry_control.v1.Device_MetricPoint_PrimaryCurrentType" json:"primary_current_type,omitempty"`
	// Тип номинала вторичной обмотки
	SecondaryCurrentType Device_SecondaryCurrentType `protobuf:"varint,10,opt,name=secondary_current_type,json=secondaryCurrentType,proto3,enum=keyapis.telemetry_control.v1.Device_SecondaryCurrentType" json:"secondary_current_type,omitempty"`
	// Идентификатор объекта строительства
	BuildingId int32 `protobuf:"varint,11,opt,name=building_id,json=buildingId,proto3" json:"building_id,omitempty"`
	// Дата изменения
	ChangedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=changed_at,json=changedAt,proto3" json:"changed_at,omitempty"`
	// Уровень
	BuildingLevel int32 `protobuf:"varint,13,opt,name=building_level,json=buildingLevel,proto3" json:"building_level,omitempty"`
	// Секция
	BuildingSection int32 `protobuf:"varint,14,opt,name=building_section,json=buildingSection,proto3" json:"building_section,omitempty"`
}

func (x *Device_MetricPoint) Reset() {
	*x = Device_MetricPoint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[75]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Device_MetricPoint) ProtoMessage() {}

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

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

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

func (x *Device_MetricPoint) GetMetricType() Device_MetricPoint_MetricType {
	if x != nil {
		return x.MetricType
	}
	return Device_MetricPoint_METRIC_TYPE_UNKNOWN
}

func (x *Device_MetricPoint) GetRoomNumber() string {
	if x != nil {
		return x.RoomNumber
	}
	return ""
}

func (x *Device_MetricPoint) GetRoomLabel() string {
	if x != nil {
		return x.RoomLabel
	}
	return ""
}

func (x *Device_MetricPoint) GetZoneLabel() *wrapperspb.StringValue {
	if x != nil {
		return x.ZoneLabel
	}
	return nil
}

func (x *Device_MetricPoint) GetStatusType() Device_MetricPoint_StatusType {
	if x != nil {
		return x.StatusType
	}
	return Device_MetricPoint_STATUS_TYPE_UNKNOWN
}

func (x *Device_MetricPoint) GetAccountingType() Device_MetricPoint_AccountingType {
	if x != nil {
		return x.AccountingType
	}
	return Device_MetricPoint_ACCOUNTING_TYPE_UNKNOWN
}

func (x *Device_MetricPoint) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Device_MetricPoint) GetPrimaryCurrentType() Device_MetricPoint_PrimaryCurrentType {
	if x != nil {
		return x.PrimaryCurrentType
	}
	return Device_MetricPoint_PRIMARY_CURRENT_TYPE_UNKNOWN
}

func (x *Device_MetricPoint) GetSecondaryCurrentType() Device_SecondaryCurrentType {
	if x != nil {
		return x.SecondaryCurrentType
	}
	return Device_SECONDARY_CURRENT_TYPE_UNKNOWN
}

func (x *Device_MetricPoint) GetBuildingId() int32 {
	if x != nil {
		return x.BuildingId
	}
	return 0
}

func (x *Device_MetricPoint) GetChangedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ChangedAt
	}
	return nil
}

func (x *Device_MetricPoint) GetBuildingLevel() int32 {
	if x != nil {
		return x.BuildingLevel
	}
	return 0
}

func (x *Device_MetricPoint) GetBuildingSection() int32 {
	if x != nil {
		return x.BuildingSection
	}
	return 0
}

// Ошибка валидации постраничной пагинации по ПУ.
// Эти проверки выполняются до обращения в базу данных
type DevicePaging_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*DevicePaging_ValidationError_Limit
	//	*DevicePaging_ValidationError_Offset
	Reason isDevicePaging_ValidationError_Reason `protobuf_oneof:"reason"`
}

func (x *DevicePaging_ValidationError) Reset() {
	*x = DevicePaging_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[76]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DevicePaging_ValidationError) ProtoMessage() {}

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

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

func (m *DevicePaging_ValidationError) GetReason() isDevicePaging_ValidationError_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *DevicePaging_ValidationError) GetLimit() *DevicePaging_ValidationError_LimitInvalid {
	if x, ok := x.GetReason().(*DevicePaging_ValidationError_Limit); ok {
		return x.Limit
	}
	return nil
}

func (x *DevicePaging_ValidationError) GetOffset() *DevicePaging_ValidationError_OffsetInvalid {
	if x, ok := x.GetReason().(*DevicePaging_ValidationError_Offset); ok {
		return x.Offset
	}
	return nil
}

type isDevicePaging_ValidationError_Reason interface {
	isDevicePaging_ValidationError_Reason()
}

type DevicePaging_ValidationError_Limit struct {
	// Количество передано некорректно
	Limit *DevicePaging_ValidationError_LimitInvalid `protobuf:"bytes,1,opt,name=limit,proto3,oneof"`
}

type DevicePaging_ValidationError_Offset struct {
	// Сдвиг передан некорректно
	Offset *DevicePaging_ValidationError_OffsetInvalid `protobuf:"bytes,2,opt,name=offset,proto3,oneof"`
}

func (*DevicePaging_ValidationError_Limit) isDevicePaging_ValidationError_Reason() {}

func (*DevicePaging_ValidationError_Offset) isDevicePaging_ValidationError_Reason() {}

// Причины:
// - Значение количества < 0 или > 100
type DevicePaging_ValidationError_LimitInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DevicePaging_ValidationError_LimitInvalid) Reset() {
	*x = DevicePaging_ValidationError_LimitInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[77]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DevicePaging_ValidationError_LimitInvalid) ProtoMessage() {}

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

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

// Причины:
// - Значение сдвига < 0
type DevicePaging_ValidationError_OffsetInvalid struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *DevicePaging_ValidationError_OffsetInvalid) Reset() {
	*x = DevicePaging_ValidationError_OffsetInvalid{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[78]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DevicePaging_ValidationError_OffsetInvalid) ProtoMessage() {}

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

// Deprecated: Use DevicePaging_ValidationError_OffsetInvalid.ProtoReflect.Descriptor instead.
func (*DevicePaging_ValidationError_OffsetInvalid) Descriptor() ([]byte, []int) {
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP(), []int{36, 0, 1}
}

// Ошибка запроса получения списка приборов учета
type GetDeviceListResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetDeviceListResponse_Error_DeviceFilterValidation
	//	*GetDeviceListResponse_Error_DevicePagingValidation
	Reason isGetDeviceListResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetDeviceListResponse_Error) Reset() {
	*x = GetDeviceListResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[79]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceListResponse_Error) ProtoMessage() {}

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

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

func (m *GetDeviceListResponse_Error) GetReason() isGetDeviceListResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetDeviceListResponse_Error) GetDeviceFilterValidation() *DeviceFilter_ValidationError {
	if x, ok := x.GetReason().(*GetDeviceListResponse_Error_DeviceFilterValidation); ok {
		return x.DeviceFilterValidation
	}
	return nil
}

func (x *GetDeviceListResponse_Error) GetDevicePagingValidation() *DevicePaging_ValidationError {
	if x, ok := x.GetReason().(*GetDeviceListResponse_Error_DevicePagingValidation); ok {
		return x.DevicePagingValidation
	}
	return nil
}

type isGetDeviceListResponse_Error_Reason interface {
	isGetDeviceListResponse_Error_Reason()
}

type GetDeviceListResponse_Error_DeviceFilterValidation struct {
	// Ошибка фильтрации
	DeviceFilterValidation *DeviceFilter_ValidationError `protobuf:"bytes,1,opt,name=device_filter_validation,json=deviceFilterValidation,proto3,oneof"`
}

type GetDeviceListResponse_Error_DevicePagingValidation struct {
	// Ошибка пагинации  по страницам
	DevicePagingValidation *DevicePaging_ValidationError `protobuf:"bytes,2,opt,name=device_paging_validation,json=devicePagingValidation,proto3,oneof"`
}

func (*GetDeviceListResponse_Error_DeviceFilterValidation) isGetDeviceListResponse_Error_Reason() {}

func (*GetDeviceListResponse_Error_DevicePagingValidation) isGetDeviceListResponse_Error_Reason() {}

// Ошибки валидации.
// Эти проверки выполняются до обращения в базу данных
type DeviceFilter_ValidationError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Путь к полю в формате наименования protobuf
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// Валидационное сообщение
	Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
}

func (x *DeviceFilter_ValidationError) Reset() {
	*x = DeviceFilter_ValidationError{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[80]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*DeviceFilter_ValidationError) ProtoMessage() {}

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

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

func (x *DeviceFilter_ValidationError) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

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

// Ошибка запроса получения количества устройств
type GetDeviceCountResponse_Error struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Причина ошибки
	//
	// Types that are assignable to Reason:
	//
	//	*GetDeviceCountResponse_Error_DeviceFilterValidation
	Reason isGetDeviceCountResponse_Error_Reason `protobuf_oneof:"reason"`
}

func (x *GetDeviceCountResponse_Error) Reset() {
	*x = GetDeviceCountResponse_Error{}
	if protoimpl.UnsafeEnabled {
		mi := &file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[81]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GetDeviceCountResponse_Error) ProtoMessage() {}

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

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

func (m *GetDeviceCountResponse_Error) GetReason() isGetDeviceCountResponse_Error_Reason {
	if m != nil {
		return m.Reason
	}
	return nil
}

func (x *GetDeviceCountResponse_Error) GetDeviceFilterValidation() *DeviceFilter_ValidationError {
	if x, ok := x.GetReason().(*GetDeviceCountResponse_Error_DeviceFilterValidation); ok {
		return x.DeviceFilterValidation
	}
	return nil
}

type isGetDeviceCountResponse_Error_Reason interface {
	isGetDeviceCountResponse_Error_Reason()
}

type GetDeviceCountResponse_Error_DeviceFilterValidation struct {
	// Ошибка фильтрации
	DeviceFilterValidation *DeviceFilter_ValidationError `protobuf:"bytes,1,opt,name=device_filter_validation,json=deviceFilterValidation,proto3,oneof"`
}

func (*GetDeviceCountResponse_Error_DeviceFilterValidation) isGetDeviceCountResponse_Error_Reason() {}

var File_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto protoreflect.FileDescriptor

var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDesc = []byte{
	0x0a, 0x46, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
	0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 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, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 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, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0x2a, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22,
	0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x0a, 0x1b, 0x50, 0x75, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1e, 0x0a, 0x1c, 0x50, 0x75, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63,
	0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x19, 0x47, 0x65,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x12, 0x49, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70,
	0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x03, 0x0a, 0x11, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12,
	0x5f, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75,
	0x70, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x64, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x22, 0x45, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f,
	0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c,
	0x0a, 0x08, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,
	0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x22, 0x3e, 0x0a, 0x0d, 0x44,
	0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16,
	0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43,
	0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22, 0x65, 0x0a, 0x1a, 0x47,
	0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x22, 0x65, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x4f, 0x0a, 0x11, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b,
	0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52,
	0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x1b, 0x47, 0x65,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42,
	0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x70, 0x0a, 0x1b, 0x50, 0x75, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x1e, 0x0a, 0x1c, 0x50, 0x75, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63,
	0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x0b, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1a, 0x50, 0x6f,
	0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xab, 0x02, 0x0a, 0x1b, 0x50,
	0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x05, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x1a, 0x6c, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x59, 0x0a, 0x0a, 0x76,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x37, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
	0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x30, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x63, 0x0a, 0x1a, 0x47, 0x65,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48,
	0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22,
	0x27, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x57, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x22, 0xbd, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x06, 0x70, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67,
	0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0xac, 0x05, 0x0a, 0x0f, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x5d, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62,
	0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65,
	0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x62, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69,
	0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16,
	0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x87, 0x02, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x62, 0x0a, 0x05, 0x6c, 0x69,
	0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x65,
	0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61,
	0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6f,
	0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e,
	0x76, 0x61, 0x6c, 0x69, 0x64, 0x1a, 0x0f, 0x0a, 0x0d, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49,
	0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
	0x22, 0x5e, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x44,
	0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10,
	0x02, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x03,
	0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x04,
	0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a,
	0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02,
	0x22, 0xcd, 0x03, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x12, 0x5a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x42, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x87,
	0x02, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x79, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x79, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08,
	0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x22, 0xa3, 0x04, 0x0a, 0x0f, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69,
	0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x64, 0x73, 0x12, 0x4f, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x2e, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x05, 0x42, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45,
	0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x15,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75,
	0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73,
	0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x73,
	0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
	0x49, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x4e,
	0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6c,
	0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f,
	0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64,
	0x73, 0x12, 0x68, 0x0a, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76,
	0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28,
	0x0e, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65, 0x6e, 0x64, 0x6f,
	0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x49, 0x0a, 0x0f, 0x56,
	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17,
	0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
	0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d,
	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x67, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
	0xab, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5b, 0x0a, 0x05, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52,
	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x8c, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x12, 0x79, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72,
	0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a,
	0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a,
	0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02,
	0x69, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x8e, 0x0a, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x72, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0xa9, 0x01, 0x0a, 0x2b, 0x70, 0x6f, 0x73, 0x74,
	0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x70,
	0x6c, 0x65, 0x78, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x73, 0x79, 0x6e, 0x63,
	0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65,
	0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41,
	0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x25, 0x70, 0x6f,
	0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c,
	0x65, 0x78, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x1a, 0x96, 0x08, 0x0a, 0x11, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x73,
	0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x69, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x73, 0x79, 0x6e, 0x63,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00,
	0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x69, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46,
	0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x1a, 0x09, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0xf5, 0x05, 0x0a,
	0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x9f, 0x01, 0x0a, 0x1b, 0x70, 0x6f, 0x73, 0x74, 0x5f,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x75,
	0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x73,
	0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e,
	0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x18,
	0x70, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x70, 0x6f, 0x73,
	0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x73, 0x79, 0x6e, 0x63,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x49, 0x70, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x13, 0x70, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x70, 0x12, 0x96, 0x01, 0x0a, 0x18,
	0x70, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5b,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f,
	0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c,
	0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x15, 0x70,
	0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x50, 0x6f, 0x72, 0x74, 0x12, 0xb5, 0x01, 0x0a, 0x23, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x74,
	0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c,
	0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x64, 0x64,
	0x72, 0x65, 0x73, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x1f, 0x70, 0x6f, 0x73,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x65,
	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x2d, 0x0a, 0x0c,
	0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x07,
	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x09, 0x0a, 0x07, 0x49,
	0x70, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x1a, 0x15, 0x0a, 0x13, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x64,
	0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65,
	0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04,
	0x74, 0x61, 0x73, 0x6b, 0x22, 0x56, 0x0a, 0x11, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x8e, 0x01, 0x0a,
	0x18, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x72, 0x65, 0x70,
	0x6c, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x06, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0xc8, 0x08,
	0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48,
	0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x55, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x8f,
	0x07, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x12, 0x8e, 0x01, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70,
	0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e,
	0x64, 0x12, 0x8a, 0x01, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x52, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x48, 0x00, 0x52, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x12, 0x91,
	0x01, 0x0a, 0x19, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x54, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x6d, 0x75, 0x6c, 0x74,
	0x69, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x12, 0x74, 0x0a, 0x0e, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x69, 0x6c,
	0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x6b, 0x65, 0x79,
	0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x42,
	0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x72, 0x6f, 0x6e, 0x67,
	0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x88, 0x01, 0x0a, 0x16, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f,
	0x75, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x13,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f,
	0x75, 0x6e, 0x64, 0x1a, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x16, 0x0a, 0x14,
	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73,
	0x46, 0x61, 0x69, 0x6c, 0x1a, 0x18, 0x0a, 0x16, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x4c, 0x69, 0x6e,
	0x6b, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x0f,
	0x0a, 0x0d, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x1a,
	0x15, 0x0a, 0x13, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4e, 0x6f,
	0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
	0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x1c, 0x50, 0x6f, 0x73,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65,
	0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x72, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
	0x41, 0x02, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x53, 0x0a,
	0x0b, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x12,
	0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4e,
	0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x69,
	0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x56, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42,
	0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x22, 0xc2, 0x0e, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12,
	0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12,
	0x20, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x64, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x09,
	0x75, 0x6e, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x52, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e,
	0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x69, 0x67,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
	0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f,
	0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67,
	0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x76,
	0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x49,
	0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x12, 0x63, 0x6f, 0x6d,
	0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x69,
	0x74, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76,
	0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x66,
	0x0a, 0x16, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75,
	0x6e, 0x69, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65,
	0x52, 0x14, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e,
	0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69,
	0x63, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c,
	0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x69,
	0x63, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x73, 0x68, 0x69, 0x66, 0x74, 0x18, 0x0d,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x52, 0x05, 0x73, 0x68, 0x69, 0x66, 0x74, 0x12, 0x4d, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x6e,
	0x64, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73,
	0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x12, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61,
	0x6c, 0x44, 0x69, 0x67, 0x69, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x45, 0x78, 0x70,
	0x65, 0x63, 0x74, 0x65, 0x64, 0x46, 0x72, 0x65, 0x71, 0x12, 0x43, 0x0a, 0x0e, 0x63, 0x68, 0x61,
	0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x40,
	0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18,
	0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72,
	0x12, 0x53, 0x0a, 0x0b, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18,
	0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56,
	0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x76, 0x65, 0x6e, 0x64, 0x6f,
	0x72, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x49, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74,
	0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
	0x22, 0x47, 0x0a, 0x0a, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17,
	0x0a, 0x13, 0x56, 0x45, 0x4e, 0x44, 0x4f, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
	0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x56, 0x49, 0x52,
	0x4f, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x41, 0x52, 0x54, 0x45, 0x43, 0x48, 0x10, 0x02,
	0x12, 0x07, 0x0a, 0x03, 0x52, 0x54, 0x4b, 0x10, 0x03, 0x22, 0x91, 0x02, 0x0a, 0x08, 0x55, 0x6e,
	0x69, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a,
	0x07, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10,
	0x02, 0x12, 0x06, 0x0a, 0x02, 0x57, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x47, 0x4b, 0x41,
	0x4c, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x05, 0x12, 0x07,
	0x0a, 0x03, 0x4b, 0x57, 0x48, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x47, 0x5f, 0x43, 0x4d,
	0x32, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x47, 0x46, 0x5f, 0x43, 0x4d, 0x32, 0x10, 0x08,
	0x12, 0x06, 0x0a, 0x02, 0x4d, 0x33, 0x10, 0x09, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x33, 0x5f, 0x48,
	0x10, 0x0a, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x50, 0x41, 0x10, 0x0b, 0x12, 0x06, 0x0a, 0x02, 0x4d,
	0x53, 0x10, 0x0c, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x0d,
	0x12, 0x05, 0x0a, 0x01, 0x54, 0x10, 0x0e, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x5f, 0x48, 0x10, 0x0f,
	0x12, 0x05, 0x0a, 0x01, 0x48, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x4e, 0x5f, 0x4d,
	0x45, 0x41, 0x53, 0x55, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x11, 0x12, 0x07, 0x0a, 0x03, 0x49,
	0x4d, 0x50, 0x10, 0x12, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x13, 0x12, 0x06, 0x0a, 0x02, 0x4b,
	0x4a, 0x10, 0x14, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x4a, 0x10, 0x15, 0x12, 0x07, 0x0a, 0x03, 0x57,
	0x54, 0x48, 0x10, 0x16, 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x57, 0x54, 0x10, 0x17, 0x12, 0x07, 0x0a,
	0x03, 0x4d, 0x49, 0x4e, 0x10, 0x18, 0x12, 0x05, 0x0a, 0x01, 0x53, 0x10, 0x19, 0x22, 0xaa, 0x01,
	0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49,
	0x47, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x45, 0x5f, 0x44, 0x53,
	0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x42, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x45, 0x5f, 0x52,
	0x43, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f,
	0x44, 0x53, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c,
	0x5f, 0x52, 0x43, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54,
	0x5f, 0x44, 0x53, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54,
	0x5f, 0x52, 0x53, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10,
	0x07, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x08,
	0x12, 0x08, 0x0a, 0x04, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x09, 0x22, 0x6a, 0x0a, 0x0b, 0x41, 0x72,
	0x63, 0x68, 0x69, 0x76, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x43,
	0x48, 0x49, 0x56, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
	0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x10, 0x01,
	0x12, 0x0c, 0x0a, 0x08, 0x48, 0x41, 0x4c, 0x46, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x12, 0x08,
	0x0a, 0x04, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x41, 0x59, 0x10,
	0x04, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04,
	0x59, 0x45, 0x41, 0x52, 0x10, 0x06, 0x22, 0x8c, 0x24, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69,
	0x64, 0x12, 0x4c, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x03,
	0xe0, 0x41, 0x03, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12,
	0x69, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12,
	0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x0b, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x63, 0x68,
	0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52,
	0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54,
	0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x28,
	0x0a, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x65, 0x72, 0x69,
	0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x6d, 0x6f,
	0x64, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x05, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45,
	0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72,
	0x12, 0x30, 0x0a, 0x07, 0x66, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x17, 0xe0, 0x41, 0x02, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45,
	0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x06, 0x66, 0x69, 0x61, 0x73,
	0x49, 0x64, 0x12, 0x43, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6f,
	0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0xe0,
	0x41, 0x03, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43,
	0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x69, 0x6e, 0x73,
	0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 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, 0x0b, 0x69, 0x6e, 0x73,
	0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x72, 0x65, 0x6d, 0x6f,
	0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
	0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x74, 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, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x6e, 0x65,
	0x78, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x61, 0x74, 0x18, 0x10, 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, 0x0b, 0x6e,
	0x65, 0x78, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78,
	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x65,
	0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x09, 0x70, 0x6c, 0x61,
	0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x6c, 0x61,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f,
	0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12,
	0x4a, 0x0a, 0x09, 0x70, 0x69, 0x70, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x08, 0x70, 0x69, 0x70, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x64,
	0x65, 0x76, 0x5f, 0x65, 0x75, 0x69, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x45,
	0x75, 0x69, 0x12, 0x2e, 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6d,
	0x61, 0x63, 0x12, 0x2f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x70,
	0x6f, 0x72, 0x74, 0x12, 0x45, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x63, 0x6f,
	0x6d, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b,
	0x63, 0x6f, 0x6d, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x0a, 0x73,
	0x69, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x73,
	0x69, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x0a, 0x73, 0x69, 0x6d, 0x5f,
	0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x73, 0x69, 0x6d, 0x53,
	0x65, 0x72, 0x69, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0e, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x5f, 0x73, 0x69, 0x6d, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x69, 0x70, 0x41,
	0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x69, 0x6d, 0x12, 0x3a, 0x0a, 0x09, 0x70, 0x6c, 0x61,
	0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
	0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x63,
	0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61,
	0x63, 0x65, 0x12, 0x4a, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x6b, 0x65, 0x79, 0x18, 0x1f, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x42, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43,
	0x41, 0x54, 0x45, 0x44, 0x18, 0x01, 0x52, 0x06, 0x61, 0x70, 0x70, 0x6b, 0x65, 0x79, 0x12, 0x4a,
	0x0a, 0x06, 0x61, 0x70, 0x70, 0x65, 0x75, 0x69, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0xfa, 0xd2,
	0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44,
	0x18, 0x01, 0x52, 0x06, 0x61, 0x70, 0x70, 0x65, 0x75, 0x69, 0x12, 0x4c, 0x0a, 0x13, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65,
	0x6c, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54,
	0x79, 0x70, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x58, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e,
	0x6e, 0x65, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0xfa,
	0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45,
	0x44, 0x18, 0x01, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x12, 0x43, 0x0a, 0x0e, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72,
	0x66, 0x61, 0x63, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x77, 0x69, 0x72, 0x65, 0x49, 0x6e,
	0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x75,
	0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x75,
	0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x25, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
	0x0f, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x59, 0x65, 0x61, 0x72,
	0x12, 0x66, 0x0a, 0x15, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65,
	0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0e, 0x32,
	0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x13, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x65,
	0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x49, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69,
	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x70,
	0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04,
	0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
	0x61, 0x67, 0x65, 0x1a, 0x97, 0x0c, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f,
	0x69, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x02, 0x69, 0x64, 0x12, 0x61, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e,
	0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0a,
	0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c,
	0x12, 0x3b, 0x0a, 0x0a, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x52, 0x09, 0x7a, 0x6f, 0x6e, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x61, 0x0a,
	0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x6d, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
	0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x3e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42,
	0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12,
	0x75, 0x0a, 0x14, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e,
	0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79,
	0x70, 0x65, 0x52, 0x12, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
	0x61, 0x72, 0x79, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x65, 0x63,
	0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x14, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72,
	0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64,
	0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41,
	0x02, 0x52, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x3e, 0x0a,
	0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0,
	0x41, 0x03, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a,
	0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18,
	0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4c,
	0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67,
	0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f,
	0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22,
	0x68, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a,
	0x13, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b,
	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x4f, 0x54, 0x5f, 0x57, 0x41,
	0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4c, 0x44, 0x5f, 0x57, 0x41,
	0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x54, 0x10, 0x03, 0x12,
	0x07, 0x0a, 0x03, 0x47, 0x41, 0x53, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4c, 0x45, 0x43,
	0x54, 0x52, 0x49, 0x43, 0x49, 0x54, 0x59, 0x10, 0x05, 0x22, 0x5f, 0x0a, 0x0a, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x55,
	0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
	0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x05,
	0x57, 0x52, 0x4f, 0x4e, 0x47, 0x10, 0x02, 0x1a, 0x14, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12,
	0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x08, 0x01, 0x12, 0x0b, 0x0a,
	0x07, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x10, 0x03, 0x22, 0x4c, 0x0a, 0x0e, 0x41, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17,
	0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d,
	0x4d, 0x45, 0x52, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x45, 0x43,
	0x48, 0x4e, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x02, 0x22, 0xc2, 0x02, 0x0a, 0x12, 0x50, 0x72, 0x69,
	0x6d, 0x61, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x20, 0x0a, 0x1c, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45,
	0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x54, 0x31, 0x41, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54,
	0x54, 0x35, 0x41, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x54, 0x31, 0x30, 0x41, 0x10, 0x03,
	0x12, 0x09, 0x0a, 0x05, 0x54, 0x54, 0x31, 0x35, 0x41, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x54,
	0x54, 0x32, 0x30, 0x41, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x54, 0x33, 0x30, 0x41, 0x10,
	0x06, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x54, 0x34, 0x30, 0x41, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05,
	0x54, 0x54, 0x35, 0x30, 0x41, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x54, 0x37, 0x35, 0x41,
	0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x54, 0x38, 0x30, 0x41, 0x10, 0x0a, 0x12, 0x0a, 0x0a,
	0x06, 0x54, 0x54, 0x31, 0x30, 0x30, 0x41, 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x54, 0x31,
	0x35, 0x30, 0x41, 0x10, 0x0c, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x54, 0x32, 0x30, 0x30, 0x41, 0x10,
	0x0d, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x54, 0x33, 0x30, 0x30, 0x41, 0x10, 0x0e, 0x12, 0x0a, 0x0a,
	0x06, 0x54, 0x54, 0x34, 0x30, 0x30, 0x41, 0x10, 0x0f, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x54, 0x35,
	0x30, 0x30, 0x41, 0x10, 0x10, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x54, 0x36, 0x30, 0x30, 0x41, 0x10,
	0x11, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x54, 0x37, 0x35, 0x30, 0x41, 0x10, 0x12, 0x12, 0x0a, 0x0a,
	0x06, 0x54, 0x54, 0x38, 0x30, 0x30, 0x41, 0x10, 0x13, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x54, 0x31,
	0x30, 0x30, 0x30, 0x41, 0x10, 0x14, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x54, 0x31, 0x32, 0x30, 0x30,
	0x41, 0x10, 0x15, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x54, 0x31, 0x35, 0x30, 0x30, 0x41, 0x10, 0x16,
	0x12, 0x0b, 0x0a, 0x07, 0x54, 0x54, 0x32, 0x30, 0x30, 0x30, 0x41, 0x10, 0x17, 0x22, 0x58, 0x0a,
	0x14, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e,
	0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x41,
	0x52, 0x59, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
	0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x54, 0x31,
	0x41, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x54, 0x32, 0x41, 0x10, 0x02, 0x12, 0x08, 0x0a,
	0x04, 0x54, 0x54, 0x35, 0x41, 0x10, 0x03, 0x22, 0xc3, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e,
	0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x48, 0x55, 0x42, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50,
	0x55, 0x4c, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x43,
	0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x55, 0x4c, 0x53, 0x45,
	0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x45,
	0x52, 0x5f, 0x4c, 0x52, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x49,
	0x4e, 0x47, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x49,
	0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x54,
	0x45, 0x52, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x4d, 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x48, 0x55,
	0x42, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x4e, 0x49, 0x43, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x4c, 0x52, 0x10, 0x07,
	0x12, 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x52, 0x10, 0x08, 0x22, 0x6f, 0x0a,
	0x0a, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53,
	0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f,
	0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44,
	0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x09,
	0x0a, 0x05, 0x57, 0x52, 0x4f, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x52, 0x43,
	0x48, 0x49, 0x56, 0x45, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45,
	0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x4e, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x06, 0x22, 0x45,
	0x0a, 0x08, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4c,
	0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a,
	0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x52, 0x49,
	0x50, 0x4c, 0x45, 0x10, 0x03, 0x22, 0x3e, 0x0a, 0x08, 0x50, 0x69, 0x70, 0x65, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x49, 0x50, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x46, 0x45,
	0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x54,
	0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0xae, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42,
	0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x48, 0x00,
	0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69,
	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xef, 0x04, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x5a, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72,
	0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72,
	0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73,
	0x65, 0x74, 0x1a, 0x81, 0x02, 0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x2e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x48, 0x00,
	0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x62, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67,
	0x69, 0x6e, 0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x2e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69,
	0x64, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c,
	0x69, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x1a, 0x0f, 0x0a, 0x0d, 0x4f,
	0x66, 0x66, 0x73, 0x65, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06,
	0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x30, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42,
	0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42,
	0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00,
	0x12, 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x01, 0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52,
	0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e,
	0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12,
	0x07, 0x0a, 0x03, 0x41, 0x53, 0x43, 0x10, 0x02, 0x22, 0xb2, 0x03, 0x0a, 0x15, 0x47, 0x65, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x24, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x51,
	0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x1a, 0x81, 0x02, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x76, 0x0a, 0x18, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c,
	0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e,
	0x67, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72,
	0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb9, 0x06,
	0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19,
	0x0a, 0x08, 0x66, 0x69, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x07, 0x66, 0x69, 0x61, 0x73, 0x49, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x0c, 0x73, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e,
	0x32, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70,
	0x65, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x16,
	0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
	0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x76, 0x0a, 0x19, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f,
	0x69, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x21,
	0x0a, 0x0c, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x06,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
	0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73,
	0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65,
	0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73,
	0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x64,
	0x73, 0x12, 0x26, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x42, 0x14,
	0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45, 0x43, 0x41, 0x54,
	0x45, 0x44, 0x18, 0x01, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69,
	0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52,
	0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e,
	0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0b,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f,
	0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a,
	0x0a, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06,
	0x6f, 0x72, 0x70, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x72,
	0x70, 0x6f, 0x6e, 0x73, 0x12, 0x68, 0x0a, 0x16, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x5f, 0x76, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x0f,
	0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x56, 0x65,
	0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x1a, 0x49,
	0x0a, 0x0f, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
	0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5b, 0x0a, 0x15, 0x47, 0x65, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06,
	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x96, 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48,
	0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x52, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x1a, 0x89, 0x01, 0x0a, 0x05,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x76, 0x0a, 0x18, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x16, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a,
	0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22,
	0xea, 0x01, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x06,
	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x61,
	0x67, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x0c,
	0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6d, 0x0a, 0x20,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f,
	0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc6, 0x03, 0x0a, 0x20,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67,
	0x12, 0x6e, 0x0a, 0x0d, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x73, 0x0a, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f,
	0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66,
	0x73, 0x65, 0x74, 0x22, 0x4f, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x42, 0x59, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x10, 0x0a,
	0x0c, 0x49, 0x4e, 0x44, 0x49, 0x43, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12,
	0x13, 0x0a, 0x0f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f,
	0x49, 0x44, 0x10, 0x02, 0x22, 0x3e, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
	0x00, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x53, 0x43, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41,
	0x53, 0x43, 0x10, 0x02, 0x22, 0x83, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x4e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x1a, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03,
	0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64,
	0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x83, 0x01,
	0x0a, 0x29, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x06, 0x66,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x50, 0x6f, 0x69, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x22, 0x4a, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48,
	0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22,
	0xaf, 0x01, 0x0a, 0x2a, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x80,
	0x01, 0x0a, 0x1d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74,
	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x1a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x22, 0x2d, 0x0a, 0x2b, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0xaf, 0x01, 0x0a, 0x2a, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x80, 0x01, 0x0a, 0x1d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x1a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x2b, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f,
	0x69, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x32, 0xd4, 0x21, 0x0a, 0x0d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x12, 0x39, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x9b, 0x01, 0x0a, 0x09, 0x47, 0x65,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27,
	0x12, 0x25, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x6c, 0x69, 0x73,
	0x74, 0x30, 0x01, 0x12, 0xab, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73,
	0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0xb9, 0x01, 0x0a, 0x11, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x36, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x37, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50,
	0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d,
	0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x9c, 0x01,
	0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
	0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa4, 0x01, 0x0a,
	0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x31, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
	0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x1a, 0x32, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x7b,
	0x69, 0x64, 0x7d, 0x12, 0xc1, 0x01, 0x0a, 0x13, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x38, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0xc0, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x37,
	0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x16, 0x47,
	0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xd0, 0x01, 0x0a, 0x17,
	0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e,
	0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xc9,
	0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49,
	0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xfc, 0x01, 0x0a, 0x21, 0x47,
	0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x46, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73,
	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70,
	0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70,
	0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69,
	0x6e, 0x74, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xfe, 0x01, 0x0a, 0x22, 0x47, 0x65,
	0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x47, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e,
	0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x48, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x74, 0x65,
	0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70,
	0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xe2, 0x02, 0x0a, 0x23, 0x50,
	0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61,
	0x63, 0x68, 0x12, 0x48, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41,
	0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x49, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa5, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9e,
	0x01, 0x1a, 0x9b, 0x01, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x2f, 0x7b,
	0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72,
	0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x69, 0x6e,
	0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70,
	0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12,
	0xe2, 0x02, 0x0a, 0x23, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64,
	0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x12, 0x48, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x1a, 0x49, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x65,
	0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa5, 0x01, 0x82,
	0xd3, 0xe4, 0x93, 0x02, 0x9e, 0x01, 0x1a, 0x9b, 0x01, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f,
	0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61,
	0x74, 0x6f, 0x72, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69,
	0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69,
	0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x7d,
	0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x7b, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x5f,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65,
	0x74, 0x61, 0x63, 0x68, 0x12, 0xbe, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x2e, 0x6b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
	0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65,
	0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76,
	0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x6c,
	0x69, 0x73, 0x74, 0x30, 0x01, 0x12, 0xc0, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
	0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74,
	0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x74, 0x65, 0x6c,
	0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0xf5, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x74,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63,
	0x68, 0x12, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31,
	0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41,
	0x74, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x6b,
	0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60,
	0x1a, 0x5e, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70,
	0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e,
	0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68,
	0x12, 0xf5, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x12, 0x39, 0x2e, 0x6b, 0x65, 0x79, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74,
	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
	0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x22, 0x66, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x60, 0x1a, 0x5e, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2f, 0x61, 0x70, 0x69,
	0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
	0x69, 0x64, 0x7d, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64,
	0x7d, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x63, 0x68, 0x42, 0xe2, 0x01, 0x0a, 0x1f, 0x72, 0x75, 0x2e,
	0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72,
	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x76, 0x31, 0x42, 0x1e, 0x4b, 0x65,
	0x79, 0x61, 0x70, 0x69, 0x73, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x56, 0x31, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x48, 0x03, 0x50, 0x00,
	0x5a, 0x1d, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d,
	0x65, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x76, 0x31, 0xd8,
	0x01, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x19, 0x4b, 0x45, 0x59, 0x41, 0x50, 0x49, 0x53, 0x54,
	0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x56,
	0x31, 0xaa, 0x02, 0x1b, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x54, 0x65, 0x6c, 0x65,
	0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x56, 0x31, 0xca,
	0x02, 0x1b, 0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65,
	0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1d,
	0x4b, 0x65, 0x79, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74,
	0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescOnce sync.Once
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescData = file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDesc
)

func file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescGZIP() []byte {
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescOnce.Do(func() {
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescData = protoimpl.X.CompressGZIP(file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescData)
	})
	return file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDescData
}

var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes = make([]protoimpl.EnumInfo, 21)
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes = make([]protoimpl.MessageInfo, 82)
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_goTypes = []interface{}{
	(DeviceGroupPaging_OrderByType)(0),                                              // 0: keyapis.telemetry_control.v1.DeviceGroupPaging.OrderByType
	(DeviceGroupPaging_DirectionType)(0),                                            // 1: keyapis.telemetry_control.v1.DeviceGroupPaging.DirectionType
	(IndicatorPaging_OrderByType)(0),                                                // 2: keyapis.telemetry_control.v1.IndicatorPaging.OrderByType
	(IndicatorPaging_DirectionType)(0),                                              // 3: keyapis.telemetry_control.v1.IndicatorPaging.DirectionType
	(Indicator_VendorType)(0),                                                       // 4: keyapis.telemetry_control.v1.Indicator.VendorType
	(Indicator_UnitType)(0),                                                         // 5: keyapis.telemetry_control.v1.Indicator.UnitType
	(Indicator_SignType)(0),                                                         // 6: keyapis.telemetry_control.v1.Indicator.SignType
	(Indicator_ArchiveType)(0),                                                      // 7: keyapis.telemetry_control.v1.Indicator.ArchiveType
	(Device_SecondaryCurrentType)(0),                                                // 8: keyapis.telemetry_control.v1.Device.SecondaryCurrentType
	(Device_Type)(0),                                                                // 9: keyapis.telemetry_control.v1.Device.Type
	(Device_StatusType)(0),                                                          // 10: keyapis.telemetry_control.v1.Device.StatusType
	(Device_PlanType)(0),                                                            // 11: keyapis.telemetry_control.v1.Device.PlanType
	(Device_PipeType)(0),                                                            // 12: keyapis.telemetry_control.v1.Device.PipeType
	(Device_MetricPoint_MetricType)(0),                                              // 13: keyapis.telemetry_control.v1.Device.MetricPoint.MetricType
	(Device_MetricPoint_StatusType)(0),                                              // 14: keyapis.telemetry_control.v1.Device.MetricPoint.StatusType
	(Device_MetricPoint_AccountingType)(0),                                          // 15: keyapis.telemetry_control.v1.Device.MetricPoint.AccountingType
	(Device_MetricPoint_PrimaryCurrentType)(0),                                      // 16: keyapis.telemetry_control.v1.Device.MetricPoint.PrimaryCurrentType
	(DevicePaging_OrderByType)(0),                                                   // 17: keyapis.telemetry_control.v1.DevicePaging.OrderByType
	(DevicePaging_DirectionType)(0),                                                 // 18: keyapis.telemetry_control.v1.DevicePaging.DirectionType
	(DeviceIndicatorMetricPointPaging_OrderByType)(0),                               // 19: keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.OrderByType
	(DeviceIndicatorMetricPointPaging_DirectionType)(0),                             // 20: keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.DirectionType
	(*DeleteDeviceRequest)(nil),                                                     // 21: keyapis.telemetry_control.v1.DeleteDeviceRequest
	(*DeleteDeviceResponse)(nil),                                                    // 22: keyapis.telemetry_control.v1.DeleteDeviceResponse
	(*PutDeviceGroupAttachRequest)(nil),                                             // 23: keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest
	(*PutDeviceGroupAttachResponse)(nil),                                            // 24: keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse
	(*GetDeviceGroupListRequest)(nil),                                               // 25: keyapis.telemetry_control.v1.GetDeviceGroupListRequest
	(*DeviceGroupPaging)(nil),                                                       // 26: keyapis.telemetry_control.v1.DeviceGroupPaging
	(*GetDeviceGroupListResponse)(nil),                                              // 27: keyapis.telemetry_control.v1.GetDeviceGroupListResponse
	(*GetDeviceGroupCountRequest)(nil),                                              // 28: keyapis.telemetry_control.v1.GetDeviceGroupCountRequest
	(*DeviceGroupFilter)(nil),                                                       // 29: keyapis.telemetry_control.v1.DeviceGroupFilter
	(*GetDeviceGroupCountResponse)(nil),                                             // 30: keyapis.telemetry_control.v1.GetDeviceGroupCountResponse
	(*PutDeviceGroupDetachRequest)(nil),                                             // 31: keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest
	(*PutDeviceGroupDetachResponse)(nil),                                            // 32: keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse
	(*DeviceGroup)(nil),                                                             // 33: keyapis.telemetry_control.v1.DeviceGroup
	(*PostDeviceIndicatorRequest)(nil),                                              // 34: keyapis.telemetry_control.v1.PostDeviceIndicatorRequest
	(*PostDeviceIndicatorResponse)(nil),                                             // 35: keyapis.telemetry_control.v1.PostDeviceIndicatorResponse
	(*GetDeviceIndicatorRequest)(nil),                                               // 36: keyapis.telemetry_control.v1.GetDeviceIndicatorRequest
	(*GetDeviceIndicatorResponse)(nil),                                              // 37: keyapis.telemetry_control.v1.GetDeviceIndicatorResponse
	(*GetDeviceRequest)(nil),                                                        // 38: keyapis.telemetry_control.v1.GetDeviceRequest
	(*GetDeviceResponse)(nil),                                                       // 39: keyapis.telemetry_control.v1.GetDeviceResponse
	(*GetDeviceIndicatorListRequest)(nil),                                           // 40: keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest
	(*IndicatorPaging)(nil),                                                         // 41: keyapis.telemetry_control.v1.IndicatorPaging
	(*GetDeviceIndicatorListResponse)(nil),                                          // 42: keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse
	(*IndicatorFilter)(nil),                                                         // 43: keyapis.telemetry_control.v1.IndicatorFilter
	(*GetDeviceIndicatorCountRequest)(nil),                                          // 44: keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest
	(*GetDeviceIndicatorCountResponse)(nil),                                         // 45: keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse
	(*DeleteDeviceIndicatorRequest)(nil),                                            // 46: keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest
	(*DeleteDeviceIndicatorResponse)(nil),                                           // 47: keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse
	(*PostDeviceFullDuplexRequest)(nil),                                             // 48: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest
	(*PostDeviceRequest)(nil),                                                       // 49: keyapis.telemetry_control.v1.PostDeviceRequest
	(*PostDeviceReplaceRequest)(nil),                                                // 50: keyapis.telemetry_control.v1.PostDeviceReplaceRequest
	(*PostDeviceReplaceResponse)(nil),                                               // 51: keyapis.telemetry_control.v1.PostDeviceReplaceResponse
	(*PostDeviceFullDuplexResponse)(nil),                                            // 52: keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse
	(*PostDeviceResponse)(nil),                                                      // 53: keyapis.telemetry_control.v1.PostDeviceResponse
	(*Indicator)(nil),                                                               // 54: keyapis.telemetry_control.v1.Indicator
	(*Device)(nil),                                                                  // 55: keyapis.telemetry_control.v1.Device
	(*GetDeviceListRequest)(nil),                                                    // 56: keyapis.telemetry_control.v1.GetDeviceListRequest
	(*DevicePaging)(nil),                                                            // 57: keyapis.telemetry_control.v1.DevicePaging
	(*GetDeviceListResponse)(nil),                                                   // 58: keyapis.telemetry_control.v1.GetDeviceListResponse
	(*DeviceFilter)(nil),                                                            // 59: keyapis.telemetry_control.v1.DeviceFilter
	(*GetDeviceCountRequest)(nil),                                                   // 60: keyapis.telemetry_control.v1.GetDeviceCountRequest
	(*GetDeviceCountResponse)(nil),                                                  // 61: keyapis.telemetry_control.v1.GetDeviceCountResponse
	(*GetDeviceIndicatorMetricPointListRequest)(nil),                                // 62: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest
	(*DeviceIndicatorMetricPointFilter)(nil),                                        // 63: keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter
	(*DeviceIndicatorMetricPointPaging)(nil),                                        // 64: keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging
	(*GetDeviceIndicatorMetricPointListResponse)(nil),                               // 65: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse
	(*DeviceIndicatorMetricPoint)(nil),                                              // 66: keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint
	(*GetDeviceIndicatorMetricPointCountRequest)(nil),                               // 67: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest
	(*GetDeviceIndicatorMetricPointCountResponse)(nil),                              // 68: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse
	(*PutDeviceIndicatorMetricPointAttachRequest)(nil),                              // 69: keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest
	(*PutDeviceIndicatorMetricPointAttachResponse)(nil),                             // 70: keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse
	(*PutDeviceIndicatorMetricPointDetachRequest)(nil),                              // 71: keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest
	(*PutDeviceIndicatorMetricPointDetachResponse)(nil),                             // 72: keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse
	(*PostDeviceIndicatorResponse_Error)(nil),                                       // 73: keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error
	(*IndicatorPaging_ValidationError)(nil),                                         // 74: keyapis.telemetry_control.v1.IndicatorPaging.ValidationError
	(*IndicatorPaging_ValidationError_LimitInvalid)(nil),                            // 75: keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid
	(*IndicatorPaging_ValidationError_OffsetInvalid)(nil),                           // 76: keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid
	(*GetDeviceIndicatorListResponse_Error)(nil),                                    // 77: keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error
	(*IndicatorFilter_ValidationError)(nil),                                         // 78: keyapis.telemetry_control.v1.IndicatorFilter.ValidationError
	(*GetDeviceIndicatorCountResponse_Error)(nil),                                   // 79: keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus)(nil),                           // 80: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success)(nil),                   // 81: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error)(nil),                     // 82: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError)(nil),        // 83: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError)(nil),             // 84: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError)(nil),           // 85: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError
	(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError)(nil), // 86: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError
	(*PostDeviceReplaceResponse_Error)(nil),                                         // 87: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error
	(*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound)(nil),                   // 88: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound
	(*PostDeviceReplaceResponse_Error_CreateIndicatorsFail)(nil),                    // 89: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail
	(*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint)(nil),                  // 90: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint
	(*PostDeviceReplaceResponse_Error_WrongBuilding)(nil),                           // 91: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding
	(*PostDeviceReplaceResponse_Error_MetricPointNotFound)(nil),                     // 92: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound
	(*PostDeviceResponse_Error)(nil),                                                // 93: keyapis.telemetry_control.v1.PostDeviceResponse.Error
	(*Indicator_ValidationError)(nil),                                               // 94: keyapis.telemetry_control.v1.Indicator.ValidationError
	(*Device_ValidationError)(nil),                                                  // 95: keyapis.telemetry_control.v1.Device.ValidationError
	(*Device_MetricPoint)(nil),                                                      // 96: keyapis.telemetry_control.v1.Device.MetricPoint
	(*DevicePaging_ValidationError)(nil),                                            // 97: keyapis.telemetry_control.v1.DevicePaging.ValidationError
	(*DevicePaging_ValidationError_LimitInvalid)(nil),                               // 98: keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid
	(*DevicePaging_ValidationError_OffsetInvalid)(nil),                              // 99: keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid
	(*GetDeviceListResponse_Error)(nil),                                             // 100: keyapis.telemetry_control.v1.GetDeviceListResponse.Error
	(*DeviceFilter_ValidationError)(nil),                                            // 101: keyapis.telemetry_control.v1.DeviceFilter.ValidationError
	(*GetDeviceCountResponse_Error)(nil),                                            // 102: keyapis.telemetry_control.v1.GetDeviceCountResponse.Error
	(*timestamppb.Timestamp)(nil),                                                   // 103: google.protobuf.Timestamp
	(*wrapperspb.StringValue)(nil),                                                  // 104: google.protobuf.StringValue
	(*wrapperspb.FloatValue)(nil),                                                   // 105: google.protobuf.FloatValue
	(*wrapperspb.Int32Value)(nil),                                                   // 106: google.protobuf.Int32Value
}
var file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_depIdxs = []int32{
	33,  // 0: keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest.device_group:type_name -> keyapis.telemetry_control.v1.DeviceGroup
	29,  // 1: keyapis.telemetry_control.v1.GetDeviceGroupListRequest.filter:type_name -> keyapis.telemetry_control.v1.DeviceGroupFilter
	26,  // 2: keyapis.telemetry_control.v1.GetDeviceGroupListRequest.paging:type_name -> keyapis.telemetry_control.v1.DeviceGroupPaging
	0,   // 3: keyapis.telemetry_control.v1.DeviceGroupPaging.order_by_type:type_name -> keyapis.telemetry_control.v1.DeviceGroupPaging.OrderByType
	1,   // 4: keyapis.telemetry_control.v1.DeviceGroupPaging.direction_type:type_name -> keyapis.telemetry_control.v1.DeviceGroupPaging.DirectionType
	33,  // 5: keyapis.telemetry_control.v1.GetDeviceGroupListResponse.data:type_name -> keyapis.telemetry_control.v1.DeviceGroup
	29,  // 6: keyapis.telemetry_control.v1.GetDeviceGroupCountRequest.filter:type_name -> keyapis.telemetry_control.v1.DeviceGroupFilter
	33,  // 7: keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest.device_group:type_name -> keyapis.telemetry_control.v1.DeviceGroup
	54,  // 8: keyapis.telemetry_control.v1.PostDeviceIndicatorRequest.data:type_name -> keyapis.telemetry_control.v1.Indicator
	54,  // 9: keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.data:type_name -> keyapis.telemetry_control.v1.Indicator
	73,  // 10: keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.error:type_name -> keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error
	54,  // 11: keyapis.telemetry_control.v1.GetDeviceIndicatorResponse.data:type_name -> keyapis.telemetry_control.v1.Indicator
	55,  // 12: keyapis.telemetry_control.v1.GetDeviceResponse.data:type_name -> keyapis.telemetry_control.v1.Device
	43,  // 13: keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest.filter:type_name -> keyapis.telemetry_control.v1.IndicatorFilter
	41,  // 14: keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest.paging:type_name -> keyapis.telemetry_control.v1.IndicatorPaging
	2,   // 15: keyapis.telemetry_control.v1.IndicatorPaging.order_by_type:type_name -> keyapis.telemetry_control.v1.IndicatorPaging.OrderByType
	3,   // 16: keyapis.telemetry_control.v1.IndicatorPaging.direction_type:type_name -> keyapis.telemetry_control.v1.IndicatorPaging.DirectionType
	54,  // 17: keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.data:type_name -> keyapis.telemetry_control.v1.Indicator
	77,  // 18: keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.error:type_name -> keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error
	6,   // 19: keyapis.telemetry_control.v1.IndicatorFilter.sign_types:type_name -> keyapis.telemetry_control.v1.Indicator.SignType
	4,   // 20: keyapis.telemetry_control.v1.IndicatorFilter.indicator_vendor_types:type_name -> keyapis.telemetry_control.v1.Indicator.VendorType
	43,  // 21: keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest.filter:type_name -> keyapis.telemetry_control.v1.IndicatorFilter
	79,  // 22: keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.error:type_name -> keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error
	80,  // 23: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.post_device_full_duplex_device_async_status:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus
	55,  // 24: keyapis.telemetry_control.v1.PostDeviceRequest.device:type_name -> keyapis.telemetry_control.v1.Device
	55,  // 25: keyapis.telemetry_control.v1.PostDeviceReplaceRequest.device:type_name -> keyapis.telemetry_control.v1.Device
	55,  // 26: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.data:type_name -> keyapis.telemetry_control.v1.Device
	87,  // 27: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.error:type_name -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error
	53,  // 28: keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse.post_device:type_name -> keyapis.telemetry_control.v1.PostDeviceResponse
	55,  // 29: keyapis.telemetry_control.v1.PostDeviceResponse.data:type_name -> keyapis.telemetry_control.v1.Device
	93,  // 30: keyapis.telemetry_control.v1.PostDeviceResponse.error:type_name -> keyapis.telemetry_control.v1.PostDeviceResponse.Error
	5,   // 31: keyapis.telemetry_control.v1.Indicator.unit_type:type_name -> keyapis.telemetry_control.v1.Indicator.UnitType
	6,   // 32: keyapis.telemetry_control.v1.Indicator.sign_type:type_name -> keyapis.telemetry_control.v1.Indicator.SignType
	103, // 33: keyapis.telemetry_control.v1.Indicator.created_at:type_name -> google.protobuf.Timestamp
	103, // 34: keyapis.telemetry_control.v1.Indicator.changed_at:type_name -> google.protobuf.Timestamp
	104, // 35: keyapis.telemetry_control.v1.Indicator.compatibility_code:type_name -> google.protobuf.StringValue
	7,   // 36: keyapis.telemetry_control.v1.Indicator.archive_type:type_name -> keyapis.telemetry_control.v1.Indicator.ArchiveType
	5,   // 37: keyapis.telemetry_control.v1.Indicator.presentation_unit_type:type_name -> keyapis.telemetry_control.v1.Indicator.UnitType
	105, // 38: keyapis.telemetry_control.v1.Indicator.coefficient:type_name -> google.protobuf.FloatValue
	105, // 39: keyapis.telemetry_control.v1.Indicator.shift:type_name -> google.protobuf.FloatValue
	106, // 40: keyapis.telemetry_control.v1.Indicator.round_decimal_digits:type_name -> google.protobuf.Int32Value
	104, // 41: keyapis.telemetry_control.v1.Indicator.channel_number:type_name -> google.protobuf.StringValue
	106, // 42: keyapis.telemetry_control.v1.Indicator.channel_order:type_name -> google.protobuf.Int32Value
	4,   // 43: keyapis.telemetry_control.v1.Indicator.vendor_type:type_name -> keyapis.telemetry_control.v1.Indicator.VendorType
	54,  // 44: keyapis.telemetry_control.v1.Device.indicators:type_name -> keyapis.telemetry_control.v1.Indicator
	96,  // 45: keyapis.telemetry_control.v1.Device.metric_point:type_name -> keyapis.telemetry_control.v1.Device.MetricPoint
	103, // 46: keyapis.telemetry_control.v1.Device.created_at:type_name -> google.protobuf.Timestamp
	103, // 47: keyapis.telemetry_control.v1.Device.changed_at:type_name -> google.protobuf.Timestamp
	9,   // 48: keyapis.telemetry_control.v1.Device.type:type_name -> keyapis.telemetry_control.v1.Device.Type
	10,  // 49: keyapis.telemetry_control.v1.Device.status_type:type_name -> keyapis.telemetry_control.v1.Device.StatusType
	103, // 50: keyapis.telemetry_control.v1.Device.installed_at:type_name -> google.protobuf.Timestamp
	103, // 51: keyapis.telemetry_control.v1.Device.removed_at:type_name -> google.protobuf.Timestamp
	103, // 52: keyapis.telemetry_control.v1.Device.check_at:type_name -> google.protobuf.Timestamp
	103, // 53: keyapis.telemetry_control.v1.Device.next_check_at:type_name -> google.protobuf.Timestamp
	104, // 54: keyapis.telemetry_control.v1.Device.external_id:type_name -> google.protobuf.StringValue
	11,  // 55: keyapis.telemetry_control.v1.Device.plan_type:type_name -> keyapis.telemetry_control.v1.Device.PlanType
	106, // 56: keyapis.telemetry_control.v1.Device.parent_id:type_name -> google.protobuf.Int32Value
	12,  // 57: keyapis.telemetry_control.v1.Device.pipe_type:type_name -> keyapis.telemetry_control.v1.Device.PipeType
	104, // 58: keyapis.telemetry_control.v1.Device.dev_eui:type_name -> google.protobuf.StringValue
	104, // 59: keyapis.telemetry_control.v1.Device.mac:type_name -> google.protobuf.StringValue
	106, // 60: keyapis.telemetry_control.v1.Device.port:type_name -> google.protobuf.Int32Value
	104, // 61: keyapis.telemetry_control.v1.Device.network_address:type_name -> google.protobuf.StringValue
	104, // 62: keyapis.telemetry_control.v1.Device.comm_channel:type_name -> google.protobuf.StringValue
	104, // 63: keyapis.telemetry_control.v1.Device.sim_number:type_name -> google.protobuf.StringValue
	104, // 64: keyapis.telemetry_control.v1.Device.sim_serial:type_name -> google.protobuf.StringValue
	104, // 65: keyapis.telemetry_control.v1.Device.ip_address_sim:type_name -> google.protobuf.StringValue
	104, // 66: keyapis.telemetry_control.v1.Device.placement:type_name -> google.protobuf.StringValue
	104, // 67: keyapis.telemetry_control.v1.Device.installation_place:type_name -> google.protobuf.StringValue
	104, // 68: keyapis.telemetry_control.v1.Device.appkey:type_name -> google.protobuf.StringValue
	104, // 69: keyapis.telemetry_control.v1.Device.appeui:type_name -> google.protobuf.StringValue
	104, // 70: keyapis.telemetry_control.v1.Device.protocol_type_label:type_name -> google.protobuf.StringValue
	106, // 71: keyapis.telemetry_control.v1.Device.channel_number:type_name -> google.protobuf.Int32Value
	104, // 72: keyapis.telemetry_control.v1.Device.wire_interface:type_name -> google.protobuf.StringValue
	106, // 73: keyapis.telemetry_control.v1.Device.manufacture_year:type_name -> google.protobuf.Int32Value
	4,   // 74: keyapis.telemetry_control.v1.Device.indicator_vendor_type:type_name -> keyapis.telemetry_control.v1.Indicator.VendorType
	59,  // 75: keyapis.telemetry_control.v1.GetDeviceListRequest.filter:type_name -> keyapis.telemetry_control.v1.DeviceFilter
	57,  // 76: keyapis.telemetry_control.v1.GetDeviceListRequest.paging:type_name -> keyapis.telemetry_control.v1.DevicePaging
	17,  // 77: keyapis.telemetry_control.v1.DevicePaging.order_by_type:type_name -> keyapis.telemetry_control.v1.DevicePaging.OrderByType
	18,  // 78: keyapis.telemetry_control.v1.DevicePaging.direction_type:type_name -> keyapis.telemetry_control.v1.DevicePaging.DirectionType
	55,  // 79: keyapis.telemetry_control.v1.GetDeviceListResponse.data:type_name -> keyapis.telemetry_control.v1.Device
	100, // 80: keyapis.telemetry_control.v1.GetDeviceListResponse.error:type_name -> keyapis.telemetry_control.v1.GetDeviceListResponse.Error
	9,   // 81: keyapis.telemetry_control.v1.DeviceFilter.types:type_name -> keyapis.telemetry_control.v1.Device.Type
	10,  // 82: keyapis.telemetry_control.v1.DeviceFilter.status_types:type_name -> keyapis.telemetry_control.v1.Device.StatusType
	13,  // 83: keyapis.telemetry_control.v1.DeviceFilter.metric_point_metric_types:type_name -> keyapis.telemetry_control.v1.Device.MetricPoint.MetricType
	4,   // 84: keyapis.telemetry_control.v1.DeviceFilter.indicator_vendor_types:type_name -> keyapis.telemetry_control.v1.Indicator.VendorType
	59,  // 85: keyapis.telemetry_control.v1.GetDeviceCountRequest.filter:type_name -> keyapis.telemetry_control.v1.DeviceFilter
	102, // 86: keyapis.telemetry_control.v1.GetDeviceCountResponse.error:type_name -> keyapis.telemetry_control.v1.GetDeviceCountResponse.Error
	63,  // 87: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest.filter:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter
	64,  // 88: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest.paging:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging
	19,  // 89: keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.order_by_type:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.OrderByType
	20,  // 90: keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.direction_type:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPointPaging.DirectionType
	66,  // 91: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse.data:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint
	63,  // 92: keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest.filter:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPointFilter
	66,  // 93: keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest.device_indicator_metric_point:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint
	66,  // 94: keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest.device_indicator_metric_point:type_name -> keyapis.telemetry_control.v1.DeviceIndicatorMetricPoint
	94,  // 95: keyapis.telemetry_control.v1.PostDeviceIndicatorResponse.Error.validation:type_name -> keyapis.telemetry_control.v1.Indicator.ValidationError
	75,  // 96: keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.limit:type_name -> keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.LimitInvalid
	76,  // 97: keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.offset:type_name -> keyapis.telemetry_control.v1.IndicatorPaging.ValidationError.OffsetInvalid
	78,  // 98: keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error.device_filter_validation:type_name -> keyapis.telemetry_control.v1.IndicatorFilter.ValidationError
	74,  // 99: keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse.Error.device_paging_validation:type_name -> keyapis.telemetry_control.v1.IndicatorPaging.ValidationError
	78,  // 100: keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse.Error.device_filter_validation:type_name -> keyapis.telemetry_control.v1.IndicatorFilter.ValidationError
	81,  // 101: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.data:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Success
	82,  // 102: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.error:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error
	83,  // 103: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_unknown:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.UnknownError
	84,  // 104: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_ip:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.IpError
	85,  // 105: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_port:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.PortError
	86,  // 106: keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.post_device_request_network_address:type_name -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest.DeviceAsyncStatus.Error.NetworkAddressError
	95,  // 107: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.validation:type_name -> keyapis.telemetry_control.v1.Device.ValidationError
	88,  // 108: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.replace_device_not_found:type_name -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.ReplaceDeviceNotFound
	89,  // 109: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.create_indicators_fail:type_name -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.CreateIndicatorsFail
	90,  // 110: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.multi_linked_metric_point:type_name -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MultiLinkedMetricPoint
	91,  // 111: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.wrong_building:type_name -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.WrongBuilding
	92,  // 112: keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.metric_point_not_found:type_name -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse.Error.MetricPointNotFound
	95,  // 113: keyapis.telemetry_control.v1.PostDeviceResponse.Error.validation:type_name -> keyapis.telemetry_control.v1.Device.ValidationError
	13,  // 114: keyapis.telemetry_control.v1.Device.MetricPoint.metric_type:type_name -> keyapis.telemetry_control.v1.Device.MetricPoint.MetricType
	104, // 115: keyapis.telemetry_control.v1.Device.MetricPoint.zone_label:type_name -> google.protobuf.StringValue
	14,  // 116: keyapis.telemetry_control.v1.Device.MetricPoint.status_type:type_name -> keyapis.telemetry_control.v1.Device.MetricPoint.StatusType
	15,  // 117: keyapis.telemetry_control.v1.Device.MetricPoint.accounting_type:type_name -> keyapis.telemetry_control.v1.Device.MetricPoint.AccountingType
	103, // 118: keyapis.telemetry_control.v1.Device.MetricPoint.created_at:type_name -> google.protobuf.Timestamp
	16,  // 119: keyapis.telemetry_control.v1.Device.MetricPoint.primary_current_type:type_name -> keyapis.telemetry_control.v1.Device.MetricPoint.PrimaryCurrentType
	8,   // 120: keyapis.telemetry_control.v1.Device.MetricPoint.secondary_current_type:type_name -> keyapis.telemetry_control.v1.Device.SecondaryCurrentType
	103, // 121: keyapis.telemetry_control.v1.Device.MetricPoint.changed_at:type_name -> google.protobuf.Timestamp
	98,  // 122: keyapis.telemetry_control.v1.DevicePaging.ValidationError.limit:type_name -> keyapis.telemetry_control.v1.DevicePaging.ValidationError.LimitInvalid
	99,  // 123: keyapis.telemetry_control.v1.DevicePaging.ValidationError.offset:type_name -> keyapis.telemetry_control.v1.DevicePaging.ValidationError.OffsetInvalid
	101, // 124: keyapis.telemetry_control.v1.GetDeviceListResponse.Error.device_filter_validation:type_name -> keyapis.telemetry_control.v1.DeviceFilter.ValidationError
	97,  // 125: keyapis.telemetry_control.v1.GetDeviceListResponse.Error.device_paging_validation:type_name -> keyapis.telemetry_control.v1.DevicePaging.ValidationError
	101, // 126: keyapis.telemetry_control.v1.GetDeviceCountResponse.Error.device_filter_validation:type_name -> keyapis.telemetry_control.v1.DeviceFilter.ValidationError
	48,  // 127: keyapis.telemetry_control.v1.DeviceService.PostDeviceFullDuplex:input_type -> keyapis.telemetry_control.v1.PostDeviceFullDuplexRequest
	38,  // 128: keyapis.telemetry_control.v1.DeviceService.GetDevice:input_type -> keyapis.telemetry_control.v1.GetDeviceRequest
	56,  // 129: keyapis.telemetry_control.v1.DeviceService.GetDeviceList:input_type -> keyapis.telemetry_control.v1.GetDeviceListRequest
	60,  // 130: keyapis.telemetry_control.v1.DeviceService.GetDeviceCount:input_type -> keyapis.telemetry_control.v1.GetDeviceCountRequest
	50,  // 131: keyapis.telemetry_control.v1.DeviceService.PostDeviceReplace:input_type -> keyapis.telemetry_control.v1.PostDeviceReplaceRequest
	49,  // 132: keyapis.telemetry_control.v1.DeviceService.PostDevice:input_type -> keyapis.telemetry_control.v1.PostDeviceRequest
	21,  // 133: keyapis.telemetry_control.v1.DeviceService.DeleteDevice:input_type -> keyapis.telemetry_control.v1.DeleteDeviceRequest
	34,  // 134: keyapis.telemetry_control.v1.DeviceService.PostDeviceIndicator:input_type -> keyapis.telemetry_control.v1.PostDeviceIndicatorRequest
	36,  // 135: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicator:input_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorRequest
	40,  // 136: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorList:input_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorListRequest
	44,  // 137: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorCount:input_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorCountRequest
	46,  // 138: keyapis.telemetry_control.v1.DeviceService.DeleteDeviceIndicator:input_type -> keyapis.telemetry_control.v1.DeleteDeviceIndicatorRequest
	62,  // 139: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorMetricPointList:input_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListRequest
	67,  // 140: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorMetricPointCount:input_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountRequest
	69,  // 141: keyapis.telemetry_control.v1.DeviceService.PutDeviceIndicatorMetricPointAttach:input_type -> keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachRequest
	71,  // 142: keyapis.telemetry_control.v1.DeviceService.PutDeviceIndicatorMetricPointDetach:input_type -> keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachRequest
	25,  // 143: keyapis.telemetry_control.v1.DeviceService.GetDeviceGroupList:input_type -> keyapis.telemetry_control.v1.GetDeviceGroupListRequest
	28,  // 144: keyapis.telemetry_control.v1.DeviceService.GetDeviceGroupCount:input_type -> keyapis.telemetry_control.v1.GetDeviceGroupCountRequest
	23,  // 145: keyapis.telemetry_control.v1.DeviceService.PutDeviceGroupAttach:input_type -> keyapis.telemetry_control.v1.PutDeviceGroupAttachRequest
	31,  // 146: keyapis.telemetry_control.v1.DeviceService.PutDeviceGroupDetach:input_type -> keyapis.telemetry_control.v1.PutDeviceGroupDetachRequest
	52,  // 147: keyapis.telemetry_control.v1.DeviceService.PostDeviceFullDuplex:output_type -> keyapis.telemetry_control.v1.PostDeviceFullDuplexResponse
	39,  // 148: keyapis.telemetry_control.v1.DeviceService.GetDevice:output_type -> keyapis.telemetry_control.v1.GetDeviceResponse
	58,  // 149: keyapis.telemetry_control.v1.DeviceService.GetDeviceList:output_type -> keyapis.telemetry_control.v1.GetDeviceListResponse
	61,  // 150: keyapis.telemetry_control.v1.DeviceService.GetDeviceCount:output_type -> keyapis.telemetry_control.v1.GetDeviceCountResponse
	51,  // 151: keyapis.telemetry_control.v1.DeviceService.PostDeviceReplace:output_type -> keyapis.telemetry_control.v1.PostDeviceReplaceResponse
	53,  // 152: keyapis.telemetry_control.v1.DeviceService.PostDevice:output_type -> keyapis.telemetry_control.v1.PostDeviceResponse
	22,  // 153: keyapis.telemetry_control.v1.DeviceService.DeleteDevice:output_type -> keyapis.telemetry_control.v1.DeleteDeviceResponse
	35,  // 154: keyapis.telemetry_control.v1.DeviceService.PostDeviceIndicator:output_type -> keyapis.telemetry_control.v1.PostDeviceIndicatorResponse
	37,  // 155: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicator:output_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorResponse
	42,  // 156: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorList:output_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorListResponse
	45,  // 157: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorCount:output_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorCountResponse
	47,  // 158: keyapis.telemetry_control.v1.DeviceService.DeleteDeviceIndicator:output_type -> keyapis.telemetry_control.v1.DeleteDeviceIndicatorResponse
	65,  // 159: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorMetricPointList:output_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointListResponse
	68,  // 160: keyapis.telemetry_control.v1.DeviceService.GetDeviceIndicatorMetricPointCount:output_type -> keyapis.telemetry_control.v1.GetDeviceIndicatorMetricPointCountResponse
	70,  // 161: keyapis.telemetry_control.v1.DeviceService.PutDeviceIndicatorMetricPointAttach:output_type -> keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointAttachResponse
	72,  // 162: keyapis.telemetry_control.v1.DeviceService.PutDeviceIndicatorMetricPointDetach:output_type -> keyapis.telemetry_control.v1.PutDeviceIndicatorMetricPointDetachResponse
	27,  // 163: keyapis.telemetry_control.v1.DeviceService.GetDeviceGroupList:output_type -> keyapis.telemetry_control.v1.GetDeviceGroupListResponse
	30,  // 164: keyapis.telemetry_control.v1.DeviceService.GetDeviceGroupCount:output_type -> keyapis.telemetry_control.v1.GetDeviceGroupCountResponse
	24,  // 165: keyapis.telemetry_control.v1.DeviceService.PutDeviceGroupAttach:output_type -> keyapis.telemetry_control.v1.PutDeviceGroupAttachResponse
	32,  // 166: keyapis.telemetry_control.v1.DeviceService.PutDeviceGroupDetach:output_type -> keyapis.telemetry_control.v1.PutDeviceGroupDetachResponse
	147, // [147:167] is the sub-list for method output_type
	127, // [127:147] is the sub-list for method input_type
	127, // [127:127] is the sub-list for extension type_name
	127, // [127:127] is the sub-list for extension extendee
	0,   // [0:127] is the sub-list for field type_name
}

func init() { file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_init() }
func file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_init() {
	if File_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteDeviceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteDeviceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceGroupAttachRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceGroupAttachResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceGroupListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceGroupPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceGroupListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceGroupCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceGroupFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceGroupCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceGroupDetachRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceGroupDetachResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceIndicatorRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceIndicatorResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IndicatorPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IndicatorFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteDeviceIndicatorRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeleteDeviceIndicatorResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Indicator); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Device); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DevicePaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorMetricPointListRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceIndicatorMetricPointFilter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceIndicatorMetricPointPaging); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorMetricPointListResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceIndicatorMetricPoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorMetricPointCountRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorMetricPointCountResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceIndicatorMetricPointAttachRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceIndicatorMetricPointAttachResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceIndicatorMetricPointDetachRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PutDeviceIndicatorMetricPointDetachResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceIndicatorResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IndicatorPaging_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IndicatorPaging_ValidationError_LimitInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IndicatorPaging_ValidationError_OffsetInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*IndicatorFilter_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceIndicatorCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Success); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_UnknownError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_IpError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PortError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_NetworkAddressError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse_Error_CreateIndicatorsFail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse_Error_WrongBuilding); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceReplaceResponse_Error_MetricPointNotFound); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PostDeviceResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Indicator_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Device_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Device_MetricPoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DevicePaging_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DevicePaging_ValidationError_LimitInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DevicePaging_ValidationError_OffsetInvalid); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceListResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceFilter_ValidationError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDeviceCountResponse_Error); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[4].OneofWrappers = []interface{}{
		(*GetDeviceGroupListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[6].OneofWrappers = []interface{}{
		(*GetDeviceGroupListResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[9].OneofWrappers = []interface{}{
		(*GetDeviceGroupCountResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[14].OneofWrappers = []interface{}{
		(*PostDeviceIndicatorResponse_Data)(nil),
		(*PostDeviceIndicatorResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[16].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[18].OneofWrappers = []interface{}{
		(*GetDeviceResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[19].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[21].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorListResponse_Data)(nil),
		(*GetDeviceIndicatorListResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[24].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorCountResponse_Data)(nil),
		(*GetDeviceIndicatorCountResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*PostDeviceFullDuplexRequest_PostDeviceFullDuplexDeviceAsyncStatus)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*PostDeviceReplaceResponse_Data)(nil),
		(*PostDeviceReplaceResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[31].OneofWrappers = []interface{}{
		(*PostDeviceFullDuplexResponse_PostDevice)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[32].OneofWrappers = []interface{}{
		(*PostDeviceResponse_Data)(nil),
		(*PostDeviceResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*GetDeviceListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[37].OneofWrappers = []interface{}{
		(*GetDeviceListResponse_Data)(nil),
		(*GetDeviceListResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*GetDeviceCountResponse_Data)(nil),
		(*GetDeviceCountResponse_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[41].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorMetricPointListRequest_Paging)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[44].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorMetricPointListResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[47].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorMetricPointCountResponse_Data)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[52].OneofWrappers = []interface{}{
		(*PostDeviceIndicatorResponse_Error_Validation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[53].OneofWrappers = []interface{}{
		(*IndicatorPaging_ValidationError_Limit)(nil),
		(*IndicatorPaging_ValidationError_Offset)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[56].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorListResponse_Error_DeviceFilterValidation)(nil),
		(*GetDeviceIndicatorListResponse_Error_DevicePagingValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[58].OneofWrappers = []interface{}{
		(*GetDeviceIndicatorCountResponse_Error_DeviceFilterValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[59].OneofWrappers = []interface{}{
		(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Data)(nil),
		(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[61].OneofWrappers = []interface{}{
		(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestUnknown)(nil),
		(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestIp)(nil),
		(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestPort)(nil),
		(*PostDeviceFullDuplexRequest_DeviceAsyncStatus_Error_PostDeviceRequestNetworkAddress)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[66].OneofWrappers = []interface{}{
		(*PostDeviceReplaceResponse_Error_Validation)(nil),
		(*PostDeviceReplaceResponse_Error_ReplaceDeviceNotFound_)(nil),
		(*PostDeviceReplaceResponse_Error_CreateIndicatorsFail_)(nil),
		(*PostDeviceReplaceResponse_Error_MultiLinkedMetricPoint_)(nil),
		(*PostDeviceReplaceResponse_Error_WrongBuilding_)(nil),
		(*PostDeviceReplaceResponse_Error_MetricPointNotFound_)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[72].OneofWrappers = []interface{}{
		(*PostDeviceResponse_Error_Validation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[76].OneofWrappers = []interface{}{
		(*DevicePaging_ValidationError_Limit)(nil),
		(*DevicePaging_ValidationError_Offset)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[79].OneofWrappers = []interface{}{
		(*GetDeviceListResponse_Error_DeviceFilterValidation)(nil),
		(*GetDeviceListResponse_Error_DevicePagingValidation)(nil),
	}
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes[81].OneofWrappers = []interface{}{
		(*GetDeviceCountResponse_Error_DeviceFilterValidation)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDesc,
			NumEnums:      21,
			NumMessages:   82,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_goTypes,
		DependencyIndexes: file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_depIdxs,
		EnumInfos:         file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_enumTypes,
		MessageInfos:      file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_msgTypes,
	}.Build()
	File_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto = out.File
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_rawDesc = nil
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_goTypes = nil
	file_keyapis_telemetry_control_v1_keyapis_telemetry_control_device_v1_proto_depIdxs = nil
}
