// Code generated by protoc-gen-go. DO NOT EDIT. // source: oc.proto /* Package telemetry is a generated protocol buffer package. It is generated from these files: oc.proto It has these top-level messages: SubscriptionRequest SubscriptionInput Collector Path SubscriptionAdditionalConfig SubscriptionReply SubscriptionResponse OpenConfigData KeyValue Delete Eom CancelSubscriptionRequest CancelSubscriptionReply GetSubscriptionsRequest GetSubscriptionsReply GetOperationalStateRequest GetOperationalStateReply DataEncodingRequest DataEncodingReply */ package telemetry import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import ( context "golang.org/x/net/context" grpc "google.golang.org/grpc" ) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // Result of the operation type ReturnCode int32 const ( ReturnCode_SUCCESS ReturnCode = 0 ReturnCode_NO_SUBSCRIPTION_ENTRY ReturnCode = 1 ReturnCode_UNKNOWN_ERROR ReturnCode = 2 ) var ReturnCode_name = map[int32]string{ 0: "SUCCESS", 1: "NO_SUBSCRIPTION_ENTRY", 2: "UNKNOWN_ERROR", } var ReturnCode_value = map[string]int32{ "SUCCESS": 0, "NO_SUBSCRIPTION_ENTRY": 1, "UNKNOWN_ERROR": 2, } func (x ReturnCode) String() string { return proto.EnumName(ReturnCode_name, int32(x)) } func (ReturnCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } // Verbosity Level type VerbosityLevel int32 const ( VerbosityLevel_DETAIL VerbosityLevel = 0 VerbosityLevel_TERSE VerbosityLevel = 1 VerbosityLevel_BRIEF VerbosityLevel = 2 ) var VerbosityLevel_name = map[int32]string{ 0: "DETAIL", 1: "TERSE", 2: "BRIEF", } var VerbosityLevel_value = map[string]int32{ "DETAIL": 0, "TERSE": 1, "BRIEF": 2, } func (x VerbosityLevel) String() string { return proto.EnumName(VerbosityLevel_name, int32(x)) } func (VerbosityLevel) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } // Encoding Type Supported type EncodingType int32 const ( EncodingType_UNDEFINED EncodingType = 0 EncodingType_XML EncodingType = 1 EncodingType_JSON_IETF EncodingType = 2 EncodingType_PROTO3 EncodingType = 3 ) var EncodingType_name = map[int32]string{ 0: "UNDEFINED", 1: "XML", 2: "JSON_IETF", 3: "PROTO3", } var EncodingType_value = map[string]int32{ "UNDEFINED": 0, "XML": 1, "JSON_IETF": 2, "PROTO3": 3, } func (x EncodingType) String() string { return proto.EnumName(EncodingType_name, int32(x)) } func (EncodingType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } // Message sent for a telemetry subscription request type SubscriptionRequest struct { // Data associated with a telemetry subscription Input *SubscriptionInput `protobuf:"bytes,1,opt,name=input" json:"input,omitempty"` // List of data models paths and filters // which are used in a telemetry operation. PathList []*Path `protobuf:"bytes,2,rep,name=path_list,json=pathList" json:"path_list,omitempty"` // The below configuration is not defined in Openconfig RPC. // It is a proposed extension to configure additional // subscription request features. AdditionalConfig *SubscriptionAdditionalConfig `protobuf:"bytes,3,opt,name=additional_config,json=additionalConfig" json:"additional_config,omitempty"` } func (m *SubscriptionRequest) Reset() { *m = SubscriptionRequest{} } func (m *SubscriptionRequest) String() string { return proto.CompactTextString(m) } func (*SubscriptionRequest) ProtoMessage() {} func (*SubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (m *SubscriptionRequest) GetInput() *SubscriptionInput { if m != nil { return m.Input } return nil } func (m *SubscriptionRequest) GetPathList() []*Path { if m != nil { return m.PathList } return nil } func (m *SubscriptionRequest) GetAdditionalConfig() *SubscriptionAdditionalConfig { if m != nil { return m.AdditionalConfig } return nil } // Data associated with a telemetry subscription type SubscriptionInput struct { // List of optional collector endpoints to send data for // this subscription. // If no collector destinations are specified, the collector // destination is assumed to be the requester on the rpc channel. CollectorList []*Collector `protobuf:"bytes,1,rep,name=collector_list,json=collectorList" json:"collector_list,omitempty"` } func (m *SubscriptionInput) Reset() { *m = SubscriptionInput{} } func (m *SubscriptionInput) String() string { return proto.CompactTextString(m) } func (*SubscriptionInput) ProtoMessage() {} func (*SubscriptionInput) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *SubscriptionInput) GetCollectorList() []*Collector { if m != nil { return m.CollectorList } return nil } // Collector endpoints to send data specified as an ip+port combination. type Collector struct { // IP address of collector endpoint Address string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` // Transport protocol port number for the collector destination. Port uint32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"` } func (m *Collector) Reset() { *m = Collector{} } func (m *Collector) String() string { return proto.CompactTextString(m) } func (*Collector) ProtoMessage() {} func (*Collector) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (m *Collector) GetAddress() string { if m != nil { return m.Address } return "" } func (m *Collector) GetPort() uint32 { if m != nil { return m.Port } return 0 } // Data model path type Path struct { // Data model path of interest // Path specification for elements of OpenConfig data models Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` // Regular expression to be used in filtering state leaves Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"` // If this is set to true, the target device will only send // updates to the collector upon a change in data value SuppressUnchanged bool `protobuf:"varint,3,opt,name=suppress_unchanged,json=suppressUnchanged" json:"suppress_unchanged,omitempty"` // Maximum time in ms the target device may go without sending // a message to the collector. If this time expires with // suppress-unchanged set, the target device must send an update // message regardless if the data values have changed. MaxSilentInterval uint32 `protobuf:"varint,4,opt,name=max_silent_interval,json=maxSilentInterval" json:"max_silent_interval,omitempty"` // Time in ms between collection and transmission of the // specified data to the collector platform. The target device // will sample the corresponding data (e.g,. a counter) and // immediately send to the collector destination. // // If sample-frequency is set to 0, then the network device // must emit an update upon every datum change. SampleFrequency uint32 `protobuf:"varint,5,opt,name=sample_frequency,json=sampleFrequency" json:"sample_frequency,omitempty"` // EOM needed for each walk cycle of this path? // For periodic sensor, applicable for each complete reap // For event sensor, applicable when initial dump is over // (same as EOS) // This feature is not implemented currently. NeedEom bool `protobuf:"varint,6,opt,name=need_eom,json=needEom" json:"need_eom,omitempty"` } func (m *Path) Reset() { *m = Path{} } func (m *Path) String() string { return proto.CompactTextString(m) } func (*Path) ProtoMessage() {} func (*Path) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } func (m *Path) GetPath() string { if m != nil { return m.Path } return "" } func (m *Path) GetFilter() string { if m != nil { return m.Filter } return "" } func (m *Path) GetSuppressUnchanged() bool { if m != nil { return m.SuppressUnchanged } return false } func (m *Path) GetMaxSilentInterval() uint32 { if m != nil { return m.MaxSilentInterval } return 0 } func (m *Path) GetSampleFrequency() uint32 { if m != nil { return m.SampleFrequency } return 0 } func (m *Path) GetNeedEom() bool { if m != nil { return m.NeedEom } return false } // Configure subscription request additional features. type SubscriptionAdditionalConfig struct { // limit the number of records sent in the stream LimitRecords int32 `protobuf:"varint,1,opt,name=limit_records,json=limitRecords" json:"limit_records,omitempty"` // limit the time the stream remains open LimitTimeSeconds int32 `protobuf:"varint,2,opt,name=limit_time_seconds,json=limitTimeSeconds" json:"limit_time_seconds,omitempty"` // EOS needed for this subscription? NeedEos bool `protobuf:"varint,3,opt,name=need_eos,json=needEos" json:"need_eos,omitempty"` } func (m *SubscriptionAdditionalConfig) Reset() { *m = SubscriptionAdditionalConfig{} } func (m *SubscriptionAdditionalConfig) String() string { return proto.CompactTextString(m) } func (*SubscriptionAdditionalConfig) ProtoMessage() {} func (*SubscriptionAdditionalConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (m *SubscriptionAdditionalConfig) GetLimitRecords() int32 { if m != nil { return m.LimitRecords } return 0 } func (m *SubscriptionAdditionalConfig) GetLimitTimeSeconds() int32 { if m != nil { return m.LimitTimeSeconds } return 0 } func (m *SubscriptionAdditionalConfig) GetNeedEos() bool { if m != nil { return m.NeedEos } return false } // 1. Reply data message sent out using out-of-band channel. type SubscriptionReply struct { // Response message to a telemetry subscription creation or // get request. Response *SubscriptionResponse `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"` // List of data models paths and filters // which are used in a telemetry operation. PathList []*Path `protobuf:"bytes,2,rep,name=path_list,json=pathList" json:"path_list,omitempty"` } func (m *SubscriptionReply) Reset() { *m = SubscriptionReply{} } func (m *SubscriptionReply) String() string { return proto.CompactTextString(m) } func (*SubscriptionReply) ProtoMessage() {} func (*SubscriptionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (m *SubscriptionReply) GetResponse() *SubscriptionResponse { if m != nil { return m.Response } return nil } func (m *SubscriptionReply) GetPathList() []*Path { if m != nil { return m.PathList } return nil } // Response message to a telemetry subscription creation or get request. type SubscriptionResponse struct { // Unique id for the subscription on the device. This is // generated by the device and returned in a subscription // request or when listing existing subscriptions SubscriptionId uint32 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId" json:"subscription_id,omitempty"` } func (m *SubscriptionResponse) Reset() { *m = SubscriptionResponse{} } func (m *SubscriptionResponse) String() string { return proto.CompactTextString(m) } func (*SubscriptionResponse) ProtoMessage() {} func (*SubscriptionResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (m *SubscriptionResponse) GetSubscriptionId() uint32 { if m != nil { return m.SubscriptionId } return 0 } // 2. Telemetry data send back on the same connection as the // subscription request. type OpenConfigData struct { // router name:export IP address SystemId string `protobuf:"bytes,1,opt,name=system_id,json=systemId" json:"system_id,omitempty"` // line card / RE (slot number) ComponentId uint32 `protobuf:"varint,2,opt,name=component_id,json=componentId" json:"component_id,omitempty"` // PFE (if applicable) SubComponentId uint32 `protobuf:"varint,3,opt,name=sub_component_id,json=subComponentId" json:"sub_component_id,omitempty"` // Path specification for elements of OpenConfig data models Path string `protobuf:"bytes,4,opt,name=path" json:"path,omitempty"` // Sequence number, monotonically increasing for each // system_id, component_id, sub_component_id + path. SequenceNumber uint64 `protobuf:"varint,5,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` // timestamp (milliseconds since epoch) Timestamp uint64 `protobuf:"varint,6,opt,name=timestamp" json:"timestamp,omitempty"` // List of key-value pairs Kv []*KeyValue `protobuf:"bytes,7,rep,name=kv" json:"kv,omitempty"` // For delete. If filled, it indicates delete Delete []*Delete `protobuf:"bytes,8,rep,name=delete" json:"delete,omitempty"` // If filled, it indicates end of marker for the // respective path in the list. Eom []*Eom `protobuf:"bytes,9,rep,name=eom" json:"eom,omitempty"` // If filled, it indicates end of sync for complete subscription SyncResponse bool `protobuf:"varint,10,opt,name=sync_response,json=syncResponse" json:"sync_response,omitempty"` } func (m *OpenConfigData) Reset() { *m = OpenConfigData{} } func (m *OpenConfigData) String() string { return proto.CompactTextString(m) } func (*OpenConfigData) ProtoMessage() {} func (*OpenConfigData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (m *OpenConfigData) GetSystemId() string { if m != nil { return m.SystemId } return "" } func (m *OpenConfigData) GetComponentId() uint32 { if m != nil { return m.ComponentId } return 0 } func (m *OpenConfigData) GetSubComponentId() uint32 { if m != nil { return m.SubComponentId } return 0 } func (m *OpenConfigData) GetPath() string { if m != nil { return m.Path } return "" } func (m *OpenConfigData) GetSequenceNumber() uint64 { if m != nil { return m.SequenceNumber } return 0 } func (m *OpenConfigData) GetTimestamp() uint64 { if m != nil { return m.Timestamp } return 0 } func (m *OpenConfigData) GetKv() []*KeyValue { if m != nil { return m.Kv } return nil } func (m *OpenConfigData) GetDelete() []*Delete { if m != nil { return m.Delete } return nil } func (m *OpenConfigData) GetEom() []*Eom { if m != nil { return m.Eom } return nil } func (m *OpenConfigData) GetSyncResponse() bool { if m != nil { return m.SyncResponse } return false } // Simple Key-value, where value could be one of scalar types type KeyValue struct { // Key Key string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` // One of possible values // // Types that are valid to be assigned to Value: // *KeyValue_DoubleValue // *KeyValue_IntValue // *KeyValue_UintValue // *KeyValue_SintValue // *KeyValue_BoolValue // *KeyValue_StrValue // *KeyValue_BytesValue Value isKeyValue_Value `protobuf_oneof:"value"` } func (m *KeyValue) Reset() { *m = KeyValue{} } func (m *KeyValue) String() string { return proto.CompactTextString(m) } func (*KeyValue) ProtoMessage() {} func (*KeyValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } type isKeyValue_Value interface { isKeyValue_Value() } type KeyValue_DoubleValue struct { DoubleValue float64 `protobuf:"fixed64,5,opt,name=double_value,json=doubleValue,oneof"` } type KeyValue_IntValue struct { IntValue int64 `protobuf:"varint,6,opt,name=int_value,json=intValue,oneof"` } type KeyValue_UintValue struct { UintValue uint64 `protobuf:"varint,7,opt,name=uint_value,json=uintValue,oneof"` } type KeyValue_SintValue struct { SintValue int64 `protobuf:"zigzag64,8,opt,name=sint_value,json=sintValue,oneof"` } type KeyValue_BoolValue struct { BoolValue bool `protobuf:"varint,9,opt,name=bool_value,json=boolValue,oneof"` } type KeyValue_StrValue struct { StrValue string `protobuf:"bytes,10,opt,name=str_value,json=strValue,oneof"` } type KeyValue_BytesValue struct { BytesValue []byte `protobuf:"bytes,11,opt,name=bytes_value,json=bytesValue,proto3,oneof"` } func (*KeyValue_DoubleValue) isKeyValue_Value() {} func (*KeyValue_IntValue) isKeyValue_Value() {} func (*KeyValue_UintValue) isKeyValue_Value() {} func (*KeyValue_SintValue) isKeyValue_Value() {} func (*KeyValue_BoolValue) isKeyValue_Value() {} func (*KeyValue_StrValue) isKeyValue_Value() {} func (*KeyValue_BytesValue) isKeyValue_Value() {} func (m *KeyValue) GetValue() isKeyValue_Value { if m != nil { return m.Value } return nil } func (m *KeyValue) GetKey() string { if m != nil { return m.Key } return "" } func (m *KeyValue) GetDoubleValue() float64 { if x, ok := m.GetValue().(*KeyValue_DoubleValue); ok { return x.DoubleValue } return 0 } func (m *KeyValue) GetIntValue() int64 { if x, ok := m.GetValue().(*KeyValue_IntValue); ok { return x.IntValue } return 0 } func (m *KeyValue) GetUintValue() uint64 { if x, ok := m.GetValue().(*KeyValue_UintValue); ok { return x.UintValue } return 0 } func (m *KeyValue) GetSintValue() int64 { if x, ok := m.GetValue().(*KeyValue_SintValue); ok { return x.SintValue } return 0 } func (m *KeyValue) GetBoolValue() bool { if x, ok := m.GetValue().(*KeyValue_BoolValue); ok { return x.BoolValue } return false } func (m *KeyValue) GetStrValue() string { if x, ok := m.GetValue().(*KeyValue_StrValue); ok { return x.StrValue } return "" } func (m *KeyValue) GetBytesValue() []byte { if x, ok := m.GetValue().(*KeyValue_BytesValue); ok { return x.BytesValue } return nil } // XXX_OneofFuncs is for the internal use of the proto package. func (*KeyValue) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _KeyValue_OneofMarshaler, _KeyValue_OneofUnmarshaler, _KeyValue_OneofSizer, []interface{}{ (*KeyValue_DoubleValue)(nil), (*KeyValue_IntValue)(nil), (*KeyValue_UintValue)(nil), (*KeyValue_SintValue)(nil), (*KeyValue_BoolValue)(nil), (*KeyValue_StrValue)(nil), (*KeyValue_BytesValue)(nil), } } func _KeyValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { m := msg.(*KeyValue) // value switch x := m.Value.(type) { case *KeyValue_DoubleValue: b.EncodeVarint(5<<3 | proto.WireFixed64) b.EncodeFixed64(math.Float64bits(x.DoubleValue)) case *KeyValue_IntValue: b.EncodeVarint(6<<3 | proto.WireVarint) b.EncodeVarint(uint64(x.IntValue)) case *KeyValue_UintValue: b.EncodeVarint(7<<3 | proto.WireVarint) b.EncodeVarint(uint64(x.UintValue)) case *KeyValue_SintValue: b.EncodeVarint(8<<3 | proto.WireVarint) b.EncodeZigzag64(uint64(x.SintValue)) case *KeyValue_BoolValue: t := uint64(0) if x.BoolValue { t = 1 } b.EncodeVarint(9<<3 | proto.WireVarint) b.EncodeVarint(t) case *KeyValue_StrValue: b.EncodeVarint(10<<3 | proto.WireBytes) b.EncodeStringBytes(x.StrValue) case *KeyValue_BytesValue: b.EncodeVarint(11<<3 | proto.WireBytes) b.EncodeRawBytes(x.BytesValue) case nil: default: return fmt.Errorf("KeyValue.Value has unexpected type %T", x) } return nil } func _KeyValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { m := msg.(*KeyValue) switch tag { case 5: // value.double_value if wire != proto.WireFixed64 { return true, proto.ErrInternalBadWireType } x, err := b.DecodeFixed64() m.Value = &KeyValue_DoubleValue{math.Float64frombits(x)} return true, err case 6: // value.int_value if wire != proto.WireVarint { return true, proto.ErrInternalBadWireType } x, err := b.DecodeVarint() m.Value = &KeyValue_IntValue{int64(x)} return true, err case 7: // value.uint_value if wire != proto.WireVarint { return true, proto.ErrInternalBadWireType } x, err := b.DecodeVarint() m.Value = &KeyValue_UintValue{x} return true, err case 8: // value.sint_value if wire != proto.WireVarint { return true, proto.ErrInternalBadWireType } x, err := b.DecodeZigzag64() m.Value = &KeyValue_SintValue{int64(x)} return true, err case 9: // value.bool_value if wire != proto.WireVarint { return true, proto.ErrInternalBadWireType } x, err := b.DecodeVarint() m.Value = &KeyValue_BoolValue{x != 0} return true, err case 10: // value.str_value if wire != proto.WireBytes { return true, proto.ErrInternalBadWireType } x, err := b.DecodeStringBytes() m.Value = &KeyValue_StrValue{x} return true, err case 11: // value.bytes_value if wire != proto.WireBytes { return true, proto.ErrInternalBadWireType } x, err := b.DecodeRawBytes(true) m.Value = &KeyValue_BytesValue{x} return true, err default: return false, nil } } func _KeyValue_OneofSizer(msg proto.Message) (n int) { m := msg.(*KeyValue) // value switch x := m.Value.(type) { case *KeyValue_DoubleValue: n += proto.SizeVarint(5<<3 | proto.WireFixed64) n += 8 case *KeyValue_IntValue: n += proto.SizeVarint(6<<3 | proto.WireVarint) n += proto.SizeVarint(uint64(x.IntValue)) case *KeyValue_UintValue: n += proto.SizeVarint(7<<3 | proto.WireVarint) n += proto.SizeVarint(uint64(x.UintValue)) case *KeyValue_SintValue: n += proto.SizeVarint(8<<3 | proto.WireVarint) n += proto.SizeVarint(uint64(uint64(x.SintValue<<1) ^ uint64((int64(x.SintValue) >> 63)))) case *KeyValue_BoolValue: n += proto.SizeVarint(9<<3 | proto.WireVarint) n += 1 case *KeyValue_StrValue: n += proto.SizeVarint(10<<3 | proto.WireBytes) n += proto.SizeVarint(uint64(len(x.StrValue))) n += len(x.StrValue) case *KeyValue_BytesValue: n += proto.SizeVarint(11<<3 | proto.WireBytes) n += proto.SizeVarint(uint64(len(x.BytesValue))) n += len(x.BytesValue) case nil: default: panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) } return n } // Message indicating delete for a particular path type Delete struct { Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` } func (m *Delete) Reset() { *m = Delete{} } func (m *Delete) String() string { return proto.CompactTextString(m) } func (*Delete) ProtoMessage() {} func (*Delete) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } func (m *Delete) GetPath() string { if m != nil { return m.Path } return "" } // Message indicating EOM for a particular path type Eom struct { Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"` } func (m *Eom) Reset() { *m = Eom{} } func (m *Eom) String() string { return proto.CompactTextString(m) } func (*Eom) ProtoMessage() {} func (*Eom) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (m *Eom) GetPath() string { if m != nil { return m.Path } return "" } // Message sent for a telemetry subscription cancellation request type CancelSubscriptionRequest struct { // Subscription identifier as returned by the device when // subscription was requested SubscriptionId uint32 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId" json:"subscription_id,omitempty"` } func (m *CancelSubscriptionRequest) Reset() { *m = CancelSubscriptionRequest{} } func (m *CancelSubscriptionRequest) String() string { return proto.CompactTextString(m) } func (*CancelSubscriptionRequest) ProtoMessage() {} func (*CancelSubscriptionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *CancelSubscriptionRequest) GetSubscriptionId() uint32 { if m != nil { return m.SubscriptionId } return 0 } // Reply to telemetry subscription cancellation request type CancelSubscriptionReply struct { // Return code Code ReturnCode `protobuf:"varint,1,opt,name=code,enum=telemetry.ReturnCode" json:"code,omitempty"` // Return code string CodeStr string `protobuf:"bytes,2,opt,name=code_str,json=codeStr" json:"code_str,omitempty"` } func (m *CancelSubscriptionReply) Reset() { *m = CancelSubscriptionReply{} } func (m *CancelSubscriptionReply) String() string { return proto.CompactTextString(m) } func (*CancelSubscriptionReply) ProtoMessage() {} func (*CancelSubscriptionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} } func (m *CancelSubscriptionReply) GetCode() ReturnCode { if m != nil { return m.Code } return ReturnCode_SUCCESS } func (m *CancelSubscriptionReply) GetCodeStr() string { if m != nil { return m.CodeStr } return "" } // Message sent for a telemetry get request type GetSubscriptionsRequest struct { // Subscription identifier as returned by the device when // subscription was requested // --- or --- // 0xFFFFFFFF for all subscription identifiers SubscriptionId uint32 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId" json:"subscription_id,omitempty"` } func (m *GetSubscriptionsRequest) Reset() { *m = GetSubscriptionsRequest{} } func (m *GetSubscriptionsRequest) String() string { return proto.CompactTextString(m) } func (*GetSubscriptionsRequest) ProtoMessage() {} func (*GetSubscriptionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} } func (m *GetSubscriptionsRequest) GetSubscriptionId() uint32 { if m != nil { return m.SubscriptionId } return 0 } // Reply to telemetry subscription get request type GetSubscriptionsReply struct { // List of current telemetry subscriptions SubscriptionList []*SubscriptionReply `protobuf:"bytes,1,rep,name=subscription_list,json=subscriptionList" json:"subscription_list,omitempty"` } func (m *GetSubscriptionsReply) Reset() { *m = GetSubscriptionsReply{} } func (m *GetSubscriptionsReply) String() string { return proto.CompactTextString(m) } func (*GetSubscriptionsReply) ProtoMessage() {} func (*GetSubscriptionsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} } func (m *GetSubscriptionsReply) GetSubscriptionList() []*SubscriptionReply { if m != nil { return m.SubscriptionList } return nil } // Message sent for telemetry agent operational states request type GetOperationalStateRequest struct { // Per-subscription_id level operational state can be requested. // // Subscription identifier as returned by the device when // subscription was requested // --- or --- // 0xFFFFFFFF for all subscription identifiers including agent-level // operational stats // --- or --- // If subscription_id is not present then sent only agent-level // operational stats SubscriptionId uint32 `protobuf:"varint,1,opt,name=subscription_id,json=subscriptionId" json:"subscription_id,omitempty"` // Control verbosity of the output Verbosity VerbosityLevel `protobuf:"varint,2,opt,name=verbosity,enum=telemetry.VerbosityLevel" json:"verbosity,omitempty"` } func (m *GetOperationalStateRequest) Reset() { *m = GetOperationalStateRequest{} } func (m *GetOperationalStateRequest) String() string { return proto.CompactTextString(m) } func (*GetOperationalStateRequest) ProtoMessage() {} func (*GetOperationalStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} } func (m *GetOperationalStateRequest) GetSubscriptionId() uint32 { if m != nil { return m.SubscriptionId } return 0 } func (m *GetOperationalStateRequest) GetVerbosity() VerbosityLevel { if m != nil { return m.Verbosity } return VerbosityLevel_DETAIL } // Reply to telemetry agent operational states request type GetOperationalStateReply struct { // List of key-value pairs where // key = operational state definition // value = operational state value Kv []*KeyValue `protobuf:"bytes,1,rep,name=kv" json:"kv,omitempty"` } func (m *GetOperationalStateReply) Reset() { *m = GetOperationalStateReply{} } func (m *GetOperationalStateReply) String() string { return proto.CompactTextString(m) } func (*GetOperationalStateReply) ProtoMessage() {} func (*GetOperationalStateReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } func (m *GetOperationalStateReply) GetKv() []*KeyValue { if m != nil { return m.Kv } return nil } // Message sent for a data encoding request type DataEncodingRequest struct { } func (m *DataEncodingRequest) Reset() { *m = DataEncodingRequest{} } func (m *DataEncodingRequest) String() string { return proto.CompactTextString(m) } func (*DataEncodingRequest) ProtoMessage() {} func (*DataEncodingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } // Reply to data encodings supported request type DataEncodingReply struct { EncodingList []EncodingType `protobuf:"varint,1,rep,packed,name=encoding_list,json=encodingList,enum=telemetry.EncodingType" json:"encoding_list,omitempty"` } func (m *DataEncodingReply) Reset() { *m = DataEncodingReply{} } func (m *DataEncodingReply) String() string { return proto.CompactTextString(m) } func (*DataEncodingReply) ProtoMessage() {} func (*DataEncodingReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } func (m *DataEncodingReply) GetEncodingList() []EncodingType { if m != nil { return m.EncodingList } return nil } func init() { proto.RegisterType((*SubscriptionRequest)(nil), "telemetry.SubscriptionRequest") proto.RegisterType((*SubscriptionInput)(nil), "telemetry.SubscriptionInput") proto.RegisterType((*Collector)(nil), "telemetry.Collector") proto.RegisterType((*Path)(nil), "telemetry.Path") proto.RegisterType((*SubscriptionAdditionalConfig)(nil), "telemetry.SubscriptionAdditionalConfig") proto.RegisterType((*SubscriptionReply)(nil), "telemetry.SubscriptionReply") proto.RegisterType((*SubscriptionResponse)(nil), "telemetry.SubscriptionResponse") proto.RegisterType((*OpenConfigData)(nil), "telemetry.OpenConfigData") proto.RegisterType((*KeyValue)(nil), "telemetry.KeyValue") proto.RegisterType((*Delete)(nil), "telemetry.Delete") proto.RegisterType((*Eom)(nil), "telemetry.Eom") proto.RegisterType((*CancelSubscriptionRequest)(nil), "telemetry.CancelSubscriptionRequest") proto.RegisterType((*CancelSubscriptionReply)(nil), "telemetry.CancelSubscriptionReply") proto.RegisterType((*GetSubscriptionsRequest)(nil), "telemetry.GetSubscriptionsRequest") proto.RegisterType((*GetSubscriptionsReply)(nil), "telemetry.GetSubscriptionsReply") proto.RegisterType((*GetOperationalStateRequest)(nil), "telemetry.GetOperationalStateRequest") proto.RegisterType((*GetOperationalStateReply)(nil), "telemetry.GetOperationalStateReply") proto.RegisterType((*DataEncodingRequest)(nil), "telemetry.DataEncodingRequest") proto.RegisterType((*DataEncodingReply)(nil), "telemetry.DataEncodingReply") proto.RegisterEnum("telemetry.ReturnCode", ReturnCode_name, ReturnCode_value) proto.RegisterEnum("telemetry.VerbosityLevel", VerbosityLevel_name, VerbosityLevel_value) proto.RegisterEnum("telemetry.EncodingType", EncodingType_name, EncodingType_value) } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 // Client API for OpenConfigTelemetry service type OpenConfigTelemetryClient interface { // Request an inline subscription for data at the specified path. // The device should send telemetry data back on the same // connection as the subscription request. TelemetrySubscribe(ctx context.Context, in *SubscriptionRequest, opts ...grpc.CallOption) (OpenConfigTelemetry_TelemetrySubscribeClient, error) // Terminates and removes an exisiting telemetry subscription CancelTelemetrySubscription(ctx context.Context, in *CancelSubscriptionRequest, opts ...grpc.CallOption) (*CancelSubscriptionReply, error) // Get the list of current telemetry subscriptions from the // target. This command returns a list of existing subscriptions // not including those that are established via configuration. GetTelemetrySubscriptions(ctx context.Context, in *GetSubscriptionsRequest, opts ...grpc.CallOption) (*GetSubscriptionsReply, error) // Get Telemetry Agent Operational States GetTelemetryOperationalState(ctx context.Context, in *GetOperationalStateRequest, opts ...grpc.CallOption) (*GetOperationalStateReply, error) // Return the set of data encodings supported by the device for // telemetry data GetDataEncodings(ctx context.Context, in *DataEncodingRequest, opts ...grpc.CallOption) (*DataEncodingReply, error) } type openConfigTelemetryClient struct { cc *grpc.ClientConn } func NewOpenConfigTelemetryClient(cc *grpc.ClientConn) OpenConfigTelemetryClient { return &openConfigTelemetryClient{cc} } func (c *openConfigTelemetryClient) TelemetrySubscribe(ctx context.Context, in *SubscriptionRequest, opts ...grpc.CallOption) (OpenConfigTelemetry_TelemetrySubscribeClient, error) { stream, err := grpc.NewClientStream(ctx, &_OpenConfigTelemetry_serviceDesc.Streams[0], c.cc, "/telemetry.OpenConfigTelemetry/telemetrySubscribe", opts...) if err != nil { return nil, err } x := &openConfigTelemetryTelemetrySubscribeClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } if err := x.ClientStream.CloseSend(); err != nil { return nil, err } return x, nil } type OpenConfigTelemetry_TelemetrySubscribeClient interface { Recv() (*OpenConfigData, error) grpc.ClientStream } type openConfigTelemetryTelemetrySubscribeClient struct { grpc.ClientStream } func (x *openConfigTelemetryTelemetrySubscribeClient) Recv() (*OpenConfigData, error) { m := new(OpenConfigData) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } func (c *openConfigTelemetryClient) CancelTelemetrySubscription(ctx context.Context, in *CancelSubscriptionRequest, opts ...grpc.CallOption) (*CancelSubscriptionReply, error) { out := new(CancelSubscriptionReply) err := grpc.Invoke(ctx, "/telemetry.OpenConfigTelemetry/cancelTelemetrySubscription", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } func (c *openConfigTelemetryClient) GetTelemetrySubscriptions(ctx context.Context, in *GetSubscriptionsRequest, opts ...grpc.CallOption) (*GetSubscriptionsReply, error) { out := new(GetSubscriptionsReply) err := grpc.Invoke(ctx, "/telemetry.OpenConfigTelemetry/getTelemetrySubscriptions", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } func (c *openConfigTelemetryClient) GetTelemetryOperationalState(ctx context.Context, in *GetOperationalStateRequest, opts ...grpc.CallOption) (*GetOperationalStateReply, error) { out := new(GetOperationalStateReply) err := grpc.Invoke(ctx, "/telemetry.OpenConfigTelemetry/getTelemetryOperationalState", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } func (c *openConfigTelemetryClient) GetDataEncodings(ctx context.Context, in *DataEncodingRequest, opts ...grpc.CallOption) (*DataEncodingReply, error) { out := new(DataEncodingReply) err := grpc.Invoke(ctx, "/telemetry.OpenConfigTelemetry/getDataEncodings", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } // Server API for OpenConfigTelemetry service type OpenConfigTelemetryServer interface { // Request an inline subscription for data at the specified path. // The device should send telemetry data back on the same // connection as the subscription request. TelemetrySubscribe(*SubscriptionRequest, OpenConfigTelemetry_TelemetrySubscribeServer) error // Terminates and removes an exisiting telemetry subscription CancelTelemetrySubscription(context.Context, *CancelSubscriptionRequest) (*CancelSubscriptionReply, error) // Get the list of current telemetry subscriptions from the // target. This command returns a list of existing subscriptions // not including those that are established via configuration. GetTelemetrySubscriptions(context.Context, *GetSubscriptionsRequest) (*GetSubscriptionsReply, error) // Get Telemetry Agent Operational States GetTelemetryOperationalState(context.Context, *GetOperationalStateRequest) (*GetOperationalStateReply, error) // Return the set of data encodings supported by the device for // telemetry data GetDataEncodings(context.Context, *DataEncodingRequest) (*DataEncodingReply, error) } func RegisterOpenConfigTelemetryServer(s *grpc.Server, srv OpenConfigTelemetryServer) { s.RegisterService(&_OpenConfigTelemetry_serviceDesc, srv) } func _OpenConfigTelemetry_TelemetrySubscribe_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(SubscriptionRequest) if err := stream.RecvMsg(m); err != nil { return err } return srv.(OpenConfigTelemetryServer).TelemetrySubscribe(m, &openConfigTelemetryTelemetrySubscribeServer{stream}) } type OpenConfigTelemetry_TelemetrySubscribeServer interface { Send(*OpenConfigData) error grpc.ServerStream } type openConfigTelemetryTelemetrySubscribeServer struct { grpc.ServerStream } func (x *openConfigTelemetryTelemetrySubscribeServer) Send(m *OpenConfigData) error { return x.ServerStream.SendMsg(m) } func _OpenConfigTelemetry_CancelTelemetrySubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CancelSubscriptionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(OpenConfigTelemetryServer).CancelTelemetrySubscription(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/telemetry.OpenConfigTelemetry/CancelTelemetrySubscription", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OpenConfigTelemetryServer).CancelTelemetrySubscription(ctx, req.(*CancelSubscriptionRequest)) } return interceptor(ctx, in, info, handler) } func _OpenConfigTelemetry_GetTelemetrySubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSubscriptionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(OpenConfigTelemetryServer).GetTelemetrySubscriptions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/telemetry.OpenConfigTelemetry/GetTelemetrySubscriptions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OpenConfigTelemetryServer).GetTelemetrySubscriptions(ctx, req.(*GetSubscriptionsRequest)) } return interceptor(ctx, in, info, handler) } func _OpenConfigTelemetry_GetTelemetryOperationalState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetOperationalStateRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(OpenConfigTelemetryServer).GetTelemetryOperationalState(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/telemetry.OpenConfigTelemetry/GetTelemetryOperationalState", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OpenConfigTelemetryServer).GetTelemetryOperationalState(ctx, req.(*GetOperationalStateRequest)) } return interceptor(ctx, in, info, handler) } func _OpenConfigTelemetry_GetDataEncodings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DataEncodingRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(OpenConfigTelemetryServer).GetDataEncodings(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/telemetry.OpenConfigTelemetry/GetDataEncodings", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OpenConfigTelemetryServer).GetDataEncodings(ctx, req.(*DataEncodingRequest)) } return interceptor(ctx, in, info, handler) } var _OpenConfigTelemetry_serviceDesc = grpc.ServiceDesc{ ServiceName: "telemetry.OpenConfigTelemetry", HandlerType: (*OpenConfigTelemetryServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "cancelTelemetrySubscription", Handler: _OpenConfigTelemetry_CancelTelemetrySubscription_Handler, }, { MethodName: "getTelemetrySubscriptions", Handler: _OpenConfigTelemetry_GetTelemetrySubscriptions_Handler, }, { MethodName: "getTelemetryOperationalState", Handler: _OpenConfigTelemetry_GetTelemetryOperationalState_Handler, }, { MethodName: "getDataEncodings", Handler: _OpenConfigTelemetry_GetDataEncodings_Handler, }, }, Streams: []grpc.StreamDesc{ { StreamName: "telemetrySubscribe", Handler: _OpenConfigTelemetry_TelemetrySubscribe_Handler, ServerStreams: true, }, }, Metadata: "oc.proto", } func init() { proto.RegisterFile("oc.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ // 1254 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xcd, 0x6e, 0xdb, 0x46, 0x17, 0x15, 0x25, 0xd9, 0x12, 0xaf, 0x7e, 0x42, 0x8d, 0xe3, 0x2f, 0xb2, 0xa3, 0xaf, 0x71, 0xe8, 0x16, 0x71, 0x82, 0xd4, 0x28, 0x94, 0x45, 0x51, 0xa4, 0x40, 0x10, 0xcb, 0x74, 0xac, 0xc6, 0x95, 0xdc, 0xa1, 0x9c, 0xb6, 0x2b, 0x82, 0x22, 0x27, 0x36, 0x11, 0xfe, 0x95, 0x33, 0x12, 0xc2, 0x4d, 0x9e, 0xa0, 0xe8, 0x9b, 0x75, 0xdd, 0x97, 0xe8, 0x23, 0x74, 0x51, 0xcc, 0x90, 0x94, 0x46, 0x89, 0x94, 0x34, 0x2b, 0x91, 0xe7, 0x9e, 0xb9, 0xf7, 0xcc, 0xbd, 0x67, 0x86, 0x82, 0x7a, 0xe4, 0x1c, 0xc7, 0x49, 0xc4, 0x22, 0xa4, 0x32, 0xe2, 0x93, 0x80, 0xb0, 0x24, 0xd5, 0xff, 0x54, 0x60, 0xc7, 0x9c, 0x4d, 0xa9, 0x93, 0x78, 0x31, 0xf3, 0xa2, 0x10, 0x93, 0xdf, 0x66, 0x84, 0x32, 0xd4, 0x87, 0x2d, 0x2f, 0x8c, 0x67, 0xac, 0xab, 0x1c, 0x28, 0x47, 0x8d, 0x7e, 0xef, 0x78, 0xb1, 0xe4, 0x58, 0xa6, 0x0f, 0x39, 0x07, 0x67, 0x54, 0xf4, 0x18, 0xd4, 0xd8, 0x66, 0x37, 0x96, 0xef, 0x51, 0xd6, 0x2d, 0x1f, 0x54, 0x8e, 0x1a, 0xfd, 0x5b, 0xd2, 0xba, 0x4b, 0x9b, 0xdd, 0xe0, 0x3a, 0x67, 0x5c, 0x78, 0x94, 0xa1, 0x09, 0x74, 0x6c, 0xd7, 0xf5, 0x78, 0x16, 0xdb, 0xb7, 0x9c, 0x28, 0x7c, 0xed, 0x5d, 0x77, 0x2b, 0xa2, 0xda, 0x83, 0x0d, 0xd5, 0x9e, 0x2f, 0xf8, 0x03, 0x41, 0xc7, 0x9a, 0xfd, 0x1e, 0xa2, 0x5f, 0x42, 0xe7, 0x03, 0x7d, 0xe8, 0x29, 0xb4, 0x9d, 0xc8, 0xf7, 0x89, 0xc3, 0xa2, 0x24, 0x53, 0xa7, 0x08, 0x75, 0xb7, 0xa5, 0x3a, 0x83, 0x82, 0x80, 0x5b, 0x0b, 0x2e, 0xd7, 0xa9, 0x7f, 0x07, 0xea, 0x22, 0x86, 0xba, 0x50, 0xb3, 0x5d, 0x37, 0x21, 0x94, 0x8a, 0xc6, 0xa8, 0xb8, 0x78, 0x45, 0x08, 0xaa, 0x71, 0x94, 0xf0, 0x7d, 0x2b, 0x47, 0x2d, 0x2c, 0x9e, 0xf5, 0xbf, 0x14, 0xa8, 0xf2, 0x5d, 0x8b, 0xa0, 0xcd, 0x6e, 0xf2, 0x35, 0xe2, 0x19, 0xfd, 0x0f, 0xb6, 0x5f, 0x7b, 0x3e, 0x23, 0x89, 0x58, 0xa2, 0xe2, 0xfc, 0x0d, 0x7d, 0x0d, 0x88, 0xce, 0xe2, 0x98, 0x27, 0xb5, 0x66, 0xa1, 0x73, 0x63, 0x87, 0xd7, 0xc4, 0x15, 0x8d, 0xa9, 0xe3, 0x4e, 0x11, 0xb9, 0x2a, 0x02, 0xe8, 0x18, 0x76, 0x02, 0xfb, 0xad, 0x45, 0x3d, 0x9f, 0x84, 0xcc, 0xf2, 0x42, 0x46, 0x92, 0xb9, 0xed, 0x77, 0xab, 0x42, 0x46, 0x27, 0xb0, 0xdf, 0x9a, 0x22, 0x32, 0xcc, 0x03, 0xe8, 0x21, 0x68, 0xd4, 0x0e, 0x62, 0x9f, 0x58, 0xaf, 0x13, 0x3e, 0xeb, 0xd0, 0x49, 0xbb, 0x5b, 0x82, 0x7c, 0x2b, 0xc3, 0xcf, 0x0a, 0x18, 0xed, 0x41, 0x3d, 0x24, 0xc4, 0xb5, 0x48, 0x14, 0x74, 0xb7, 0x45, 0xfd, 0x1a, 0x7f, 0x37, 0xa2, 0x40, 0xff, 0x5d, 0x81, 0xde, 0xc7, 0x26, 0x83, 0x0e, 0xa1, 0xe5, 0x7b, 0x81, 0xc7, 0xac, 0x84, 0x38, 0x51, 0xe2, 0x66, 0xed, 0xda, 0xc2, 0x4d, 0x01, 0xe2, 0x0c, 0x43, 0x8f, 0x01, 0x65, 0x24, 0xe6, 0x05, 0xc4, 0xa2, 0xc4, 0x89, 0x42, 0x97, 0x8a, 0x76, 0x6c, 0x61, 0x4d, 0x44, 0x26, 0x5e, 0x40, 0xcc, 0x0c, 0x97, 0xe4, 0xd0, 0xbc, 0x1d, 0xb9, 0x1c, 0xaa, 0xbf, 0x5b, 0x9d, 0x3a, 0x26, 0xb1, 0x9f, 0xa2, 0xa7, 0x50, 0x4f, 0x08, 0x8d, 0xa3, 0x90, 0x92, 0xdc, 0xc5, 0xf7, 0x36, 0xf8, 0x0a, 0xe7, 0x34, 0xbc, 0x58, 0xf0, 0x79, 0x5e, 0xd6, 0x9f, 0xc1, 0xed, 0x75, 0xf9, 0xd0, 0x03, 0xb8, 0x45, 0x25, 0xdc, 0xf2, 0x5c, 0xa1, 0xa4, 0x85, 0xdb, 0x32, 0x3c, 0x74, 0xf5, 0xbf, 0xcb, 0xd0, 0x1e, 0xc7, 0x24, 0xcc, 0xba, 0x77, 0x6a, 0x33, 0x1b, 0xdd, 0x05, 0x95, 0xa6, 0x94, 0x91, 0xa0, 0x58, 0xa5, 0xe2, 0x7a, 0x06, 0x0c, 0x5d, 0x74, 0x1f, 0x9a, 0x4e, 0x14, 0xc4, 0x51, 0x28, 0x86, 0xee, 0xe6, 0xae, 0x6b, 0x2c, 0xb0, 0xa1, 0x8b, 0x8e, 0x40, 0xa3, 0xb3, 0xa9, 0xb5, 0x42, 0xab, 0x2c, 0x8a, 0x0f, 0x24, 0x66, 0xe1, 0xce, 0xaa, 0xe4, 0x4e, 0xae, 0x3c, 0xf3, 0x01, 0xb1, 0xc2, 0x59, 0x30, 0x25, 0x89, 0x70, 0x49, 0x15, 0xb7, 0x0b, 0x78, 0x24, 0x50, 0xd4, 0x03, 0x95, 0x4f, 0x8f, 0x32, 0x3b, 0x88, 0x85, 0x4b, 0xaa, 0x78, 0x09, 0xa0, 0x43, 0x28, 0xbf, 0x99, 0x77, 0x6b, 0xa2, 0x7f, 0x3b, 0x52, 0xff, 0x5e, 0x92, 0xf4, 0x95, 0xed, 0xcf, 0x08, 0x2e, 0xbf, 0x99, 0xa3, 0x87, 0xb0, 0xed, 0x12, 0x9f, 0x30, 0xd2, 0xad, 0x0b, 0x62, 0x47, 0x22, 0x9e, 0x8a, 0x00, 0xce, 0x09, 0xe8, 0x00, 0x2a, 0xdc, 0x8d, 0xaa, 0xe0, 0xb5, 0x25, 0x9e, 0x11, 0x05, 0x98, 0x87, 0xb8, 0xf1, 0x68, 0x1a, 0x3a, 0xd6, 0x62, 0xf4, 0x20, 0xac, 0xd2, 0xe4, 0x60, 0x31, 0x17, 0xfd, 0x8f, 0x32, 0xd4, 0x0b, 0x09, 0x48, 0x83, 0xca, 0x1b, 0x92, 0xe6, 0x2d, 0xe6, 0x8f, 0xe8, 0x10, 0x9a, 0x6e, 0x34, 0x9b, 0xfa, 0xc4, 0x9a, 0x73, 0x86, 0xd8, 0xb9, 0x72, 0x5e, 0xc2, 0x8d, 0x0c, 0xcd, 0x96, 0xfd, 0x1f, 0x54, 0x2f, 0x64, 0x39, 0x83, 0x6f, 0xbc, 0x72, 0x5e, 0xc2, 0x75, 0x2f, 0x64, 0x59, 0xf8, 0x1e, 0xc0, 0x6c, 0x19, 0xaf, 0xf1, 0xc6, 0x9c, 0x97, 0xb0, 0x3a, 0x93, 0x09, 0x74, 0x49, 0xa8, 0x1f, 0x28, 0x47, 0x88, 0x13, 0xa8, 0x4c, 0x98, 0x46, 0x91, 0x9f, 0x13, 0x54, 0xbe, 0x0d, 0x4e, 0xe0, 0xd8, 0x42, 0x01, 0x65, 0x49, 0x1e, 0xe7, 0xdb, 0x54, 0xb9, 0x02, 0xca, 0x92, 0x2c, 0x7c, 0x1f, 0x1a, 0xd3, 0x94, 0x11, 0x9a, 0x13, 0x1a, 0x07, 0xca, 0x51, 0xf3, 0xbc, 0x84, 0x41, 0x80, 0x82, 0x72, 0x52, 0x83, 0x2d, 0x11, 0xd4, 0x7b, 0xb0, 0x9d, 0x75, 0x7a, 0xdd, 0x55, 0xa5, 0xef, 0x41, 0xc5, 0x88, 0x82, 0xb5, 0xa1, 0x53, 0xd8, 0x1b, 0xd8, 0xa1, 0x43, 0xfc, 0x75, 0x1f, 0x91, 0xff, 0x6c, 0x7f, 0x0b, 0xee, 0xac, 0xcb, 0xc2, 0x4f, 0xf1, 0x43, 0xa8, 0x3a, 0x91, 0x9b, 0x9d, 0xe0, 0x76, 0x7f, 0x57, 0x1a, 0x39, 0x26, 0x6c, 0x96, 0x84, 0x83, 0xc8, 0x25, 0x58, 0x50, 0xf8, 0x05, 0xc1, 0x7f, 0x2d, 0xca, 0x8a, 0x3b, 0xb5, 0xc6, 0xdf, 0x4d, 0x96, 0xe8, 0x27, 0x70, 0xe7, 0x05, 0x61, 0x72, 0x76, 0xfa, 0xd9, 0x22, 0xa7, 0xb0, 0xfb, 0x61, 0x0e, 0x2e, 0x71, 0x08, 0x9d, 0x95, 0x0c, 0xd2, 0x17, 0xa6, 0xb7, 0xf1, 0xc6, 0x89, 0xfd, 0x14, 0x6b, 0xf2, 0x32, 0x71, 0x91, 0xbc, 0x83, 0xfd, 0x17, 0x84, 0x8d, 0x63, 0x92, 0xd8, 0xd9, 0x75, 0x6a, 0x32, 0x9b, 0x91, 0xcf, 0x95, 0x8a, 0xbe, 0x05, 0x75, 0x4e, 0x92, 0x69, 0x44, 0x3d, 0x96, 0x8a, 0x56, 0xb4, 0xfb, 0x7b, 0x92, 0x92, 0x57, 0x45, 0xec, 0x82, 0xcc, 0x89, 0x8f, 0x97, 0x5c, 0xfd, 0x19, 0x74, 0xd7, 0xd6, 0xe7, 0xdb, 0xcc, 0xce, 0xb2, 0xf2, 0xd1, 0xb3, 0xac, 0xef, 0xc2, 0x0e, 0xbf, 0xbd, 0x8c, 0xd0, 0x89, 0x5c, 0x2f, 0xbc, 0xce, 0x95, 0xeb, 0x3f, 0x41, 0x67, 0x15, 0xe6, 0x09, 0xbf, 0x87, 0x16, 0xc9, 0x81, 0x65, 0xcf, 0xda, 0xfd, 0x3b, 0xf2, 0xb1, 0xce, 0xe3, 0x93, 0x34, 0x26, 0xb8, 0x59, 0xb0, 0x79, 0xab, 0x1e, 0xbd, 0x00, 0x58, 0x3a, 0x00, 0x35, 0xa0, 0x66, 0x5e, 0x0d, 0x06, 0x86, 0x69, 0x6a, 0x25, 0xb4, 0x07, 0xbb, 0xa3, 0xb1, 0x65, 0x5e, 0x9d, 0x98, 0x03, 0x3c, 0xbc, 0x9c, 0x0c, 0xc7, 0x23, 0xcb, 0x18, 0x4d, 0xf0, 0xaf, 0x9a, 0x82, 0x3a, 0xd0, 0xba, 0x1a, 0xbd, 0x1c, 0x8d, 0x7f, 0x1e, 0x59, 0x06, 0xc6, 0x63, 0xac, 0x95, 0x1f, 0xf5, 0xa1, 0xbd, 0xda, 0x10, 0x04, 0xb0, 0x7d, 0x6a, 0x4c, 0x9e, 0x0f, 0x2f, 0xb4, 0x12, 0x52, 0x61, 0x6b, 0x62, 0x60, 0xd3, 0xd0, 0x14, 0xfe, 0x78, 0x82, 0x87, 0xc6, 0x99, 0x56, 0x7e, 0xf4, 0x1c, 0x9a, 0xb2, 0x34, 0xd4, 0x02, 0xf5, 0x6a, 0x74, 0x6a, 0x9c, 0x0d, 0x47, 0xc6, 0xa9, 0x56, 0x42, 0x35, 0xa8, 0xfc, 0xf2, 0xe3, 0x85, 0xa6, 0x70, 0xfc, 0x07, 0x73, 0x3c, 0xb2, 0x86, 0xc6, 0xe4, 0x4c, 0x2b, 0xf3, 0xc4, 0x97, 0x78, 0x3c, 0x19, 0x3f, 0xd1, 0x2a, 0xfd, 0x7f, 0x2a, 0xb0, 0xb3, 0xbc, 0xf2, 0x27, 0xc5, 0x96, 0x91, 0x09, 0x68, 0xb1, 0xff, 0xdc, 0x32, 0x53, 0x82, 0xbe, 0xd8, 0x68, 0x24, 0xd1, 0xe0, 0x7d, 0x79, 0xbc, 0xab, 0x1f, 0x12, 0xbd, 0xf4, 0x8d, 0x82, 0x3c, 0xb8, 0xeb, 0x88, 0x03, 0x36, 0x79, 0x2f, 0xb5, 0x48, 0x82, 0xbe, 0x94, 0xff, 0x08, 0x6d, 0x3a, 0xce, 0xfb, 0xfa, 0x27, 0x58, 0xb1, 0x9f, 0xea, 0x25, 0xe4, 0xc0, 0xde, 0x35, 0x61, 0x6b, 0xeb, 0x50, 0x24, 0xa7, 0xd8, 0x70, 0x20, 0xf7, 0x0f, 0x3e, 0xca, 0xc9, 0x8a, 0xf8, 0xd0, 0x93, 0x8b, 0xbc, 0x6f, 0x58, 0xf4, 0xd5, 0x6a, 0x8e, 0x0d, 0x07, 0x6a, 0xff, 0xf0, 0x53, 0xb4, 0xac, 0x1a, 0x06, 0xed, 0x9a, 0x30, 0xd9, 0xc0, 0x74, 0x65, 0x20, 0x6b, 0x1c, 0xbf, 0xdf, 0xdb, 0x18, 0x17, 0x39, 0xa7, 0xdb, 0xe2, 0xaf, 0xf8, 0x93, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xe3, 0x4f, 0x0d, 0x96, 0x0b, 0x00, 0x00, }