github.com/cloudwan/edgelq-sdk@v1.15.4/alerting/resources/v1/alert/alert.pb.go (about) 1 // Code generated by protoc-gen-goten-go 2 // File: edgelq/alerting/proto/v1/alert.proto 3 // DO NOT EDIT!!! 4 5 package alert 6 7 import ( 8 "fmt" 9 "reflect" 10 "sync" 11 12 "google.golang.org/protobuf/encoding/protojson" 13 "google.golang.org/protobuf/proto" 14 preflect "google.golang.org/protobuf/reflect/protoreflect" 15 "google.golang.org/protobuf/runtime/protoimpl" 16 ) 17 18 // proto imports 19 import ( 20 rcommon "github.com/cloudwan/edgelq-sdk/alerting/resources/v1/common" 21 log_condition "github.com/cloudwan/edgelq-sdk/alerting/resources/v1/log_condition" 22 notification_channel "github.com/cloudwan/edgelq-sdk/alerting/resources/v1/notification_channel" 23 ts_condition "github.com/cloudwan/edgelq-sdk/alerting/resources/v1/ts_condition" 24 meta "github.com/cloudwan/goten-sdk/types/meta" 25 durationpb "google.golang.org/protobuf/types/known/durationpb" 26 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 27 ) 28 29 // Reference imports to suppress errors if they are not otherwise used. 30 var ( 31 _ = fmt.Errorf 32 _ = reflect.Method{} 33 _ = sync.Once{} 34 35 _ = protojson.MarshalOptions{} 36 _ = proto.MarshalOptions{} 37 _ = preflect.Value{} 38 _ = protoimpl.DescBuilder{} 39 ) 40 41 // make sure we're using proto imports 42 var ( 43 _ = &log_condition.LogCondition{} 44 _ = ¬ification_channel.NotificationChannel{} 45 _ = &rcommon.LogCndSpec{} 46 _ = &ts_condition.TsCondition{} 47 _ = &durationpb.Duration{} 48 _ = ×tamppb.Timestamp{} 49 _ = &meta.Meta{} 50 ) 51 52 const ( 53 // Verify that this generated code is sufficiently up-to-date. 54 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 55 // Verify that runtime/protoimpl is sufficiently up-to-date. 56 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 57 ) 58 59 // Type of TimeSeries based alert 60 type Alert_TsInfo_Type int32 61 62 const ( 63 Alert_TsInfo_UNDEFINED Alert_TsInfo_Type = 0 64 // ANOMALY indicates that irregular data pattern was spotted in 65 // time series data (anomaly values crossed anomaly thresholds). 66 Alert_TsInfo_ANOMALY Alert_TsInfo_Type = 1 67 // THRESHOLD indicates that time series values crossed specified 68 // thresholds (lower or upper threshold). 69 Alert_TsInfo_THRESHOLD Alert_TsInfo_Type = 2 70 ) 71 72 var ( 73 Alert_TsInfo_Type_name = map[int32]string{ 74 0: "UNDEFINED", 75 1: "ANOMALY", 76 2: "THRESHOLD", 77 } 78 79 Alert_TsInfo_Type_value = map[string]int32{ 80 "UNDEFINED": 0, 81 "ANOMALY": 1, 82 "THRESHOLD": 2, 83 } 84 ) 85 86 func (x Alert_TsInfo_Type) Enum() *Alert_TsInfo_Type { 87 p := new(Alert_TsInfo_Type) 88 *p = x 89 return p 90 } 91 92 func (x Alert_TsInfo_Type) String() string { 93 return protoimpl.X.EnumStringOf(x.Descriptor(), preflect.EnumNumber(x)) 94 } 95 96 func (Alert_TsInfo_Type) Descriptor() preflect.EnumDescriptor { 97 return edgelq_alerting_proto_v1_alert_proto_enumTypes[0].Descriptor() 98 } 99 100 func (Alert_TsInfo_Type) Type() preflect.EnumType { 101 return &edgelq_alerting_proto_v1_alert_proto_enumTypes[0] 102 } 103 104 func (x Alert_TsInfo_Type) Number() preflect.EnumNumber { 105 return preflect.EnumNumber(x) 106 } 107 108 // Deprecated, Use Alert_TsInfo_Type.ProtoReflect.Descriptor instead. 109 func (Alert_TsInfo_Type) EnumDescriptor() ([]byte, []int) { 110 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 0, 0} 111 } 112 113 // AiHandlingState informs what is a handling state 114 // of an alert from AI agent point of view. It is 115 // active when escalation_level points to AI_AGENT. 116 type Alert_State_AiHandlingState int32 117 118 const ( 119 // AI Agent is not involved in handling this alert. 120 Alert_State_AI_AGENT_NOT_INVOLVED Alert_State_AiHandlingState = 0 121 // Alert is new and awaits handling by AI agent. 122 // This is always initial state for AI agent after 123 // firing. 124 // It can move to AI_ESCALATED_TO_OPERATOR, AI_IGNORE_AS_TEMPORARY, 125 // AI_ADJUST_CND_ENTRY, or AI_REMEDIATION_PROPOSED. 126 Alert_State_AI_AWAITING_HANDLING Alert_State_AiHandlingState = 1 127 // This state is active is AI agent escalated alert 128 // to an operator, due to inability to solve it. 129 // This is terminal state after which handling is passed to OPERATOR, 130 // escalation_level changes. 131 Alert_State_AI_ESCALATED_TO_OPERATOR Alert_State_AiHandlingState = 2 132 // AI Agent informed that, while TimeSeries/Logs data 133 // indeed contain abnormal values, they are caused 134 // by transient and unharmful reason, and it should 135 // stop firing soon. 136 // This is false positive alert. 137 // This is semi-terminal state. It can move to AI_ESCALATED_TO_OPERATOR 138 // if alert persist despite being flagged as transient issue. 139 Alert_State_AI_IGNORE_AS_TEMPORARY Alert_State_AiHandlingState = 3 140 // AI Agent informed that this alert is a false 141 // positive, and TimeSeries/Logs violating entries 142 // in fact should not be classified as a violation. 143 // Switching alert to this state will cause corresponding 144 // TsEntry to adjust its thresholds, or retrain AI anomaly 145 // detection models. 146 // This is usually a terminal state, after which alert is silenced 147 // and TsEntry tries to assume violating data is normal. 148 // However, if thresholds cannot be updated, alert will switch to 149 // AI_ESCALATED_TO_OPERATOR. 150 Alert_State_AI_ADJUST_CND_ENTRY Alert_State_AiHandlingState = 4 151 // AI Agent identified this is a genuine alert, but for which 152 // it is able to fix. Remediation is only proposed, and requires 153 // approval from OPERATOR. Note that this is unique situation, 154 // where field escalation_level in State object points to AI_AGENT, 155 // but OPERATOR is requires to provide an update. 156 // Alert is technically still being handled by AI Agent, but 157 // waiting for OPERATOR confirmation. 158 Alert_State_AI_REMEDIATION_PROPOSED Alert_State_AiHandlingState = 5 159 // This state is followed by AI_REMEDIATION_PROPOSED after OPERATOR 160 // agrees to execute, or if automatic approval is enabled. AI Agent 161 // will then proceed to applying remediation. 162 // It will move to AI_REMEDIATION_APPLIED after remediation is applied. 163 Alert_State_AI_REMEDIATION_APPROVED Alert_State_AiHandlingState = 6 164 // This state indicates that remediation has been applied. If after some 165 // time issue persists, then it switches to AI_ESCALATED_TO_OPERATOR. 166 Alert_State_AI_REMEDIATION_APPLIED Alert_State_AiHandlingState = 7 167 ) 168 169 var ( 170 Alert_State_AiHandlingState_name = map[int32]string{ 171 0: "AI_AGENT_NOT_INVOLVED", 172 1: "AI_AWAITING_HANDLING", 173 2: "AI_ESCALATED_TO_OPERATOR", 174 3: "AI_IGNORE_AS_TEMPORARY", 175 4: "AI_ADJUST_CND_ENTRY", 176 5: "AI_REMEDIATION_PROPOSED", 177 6: "AI_REMEDIATION_APPROVED", 178 7: "AI_REMEDIATION_APPLIED", 179 } 180 181 Alert_State_AiHandlingState_value = map[string]int32{ 182 "AI_AGENT_NOT_INVOLVED": 0, 183 "AI_AWAITING_HANDLING": 1, 184 "AI_ESCALATED_TO_OPERATOR": 2, 185 "AI_IGNORE_AS_TEMPORARY": 3, 186 "AI_ADJUST_CND_ENTRY": 4, 187 "AI_REMEDIATION_PROPOSED": 5, 188 "AI_REMEDIATION_APPROVED": 6, 189 "AI_REMEDIATION_APPLIED": 7, 190 } 191 ) 192 193 func (x Alert_State_AiHandlingState) Enum() *Alert_State_AiHandlingState { 194 p := new(Alert_State_AiHandlingState) 195 *p = x 196 return p 197 } 198 199 func (x Alert_State_AiHandlingState) String() string { 200 return protoimpl.X.EnumStringOf(x.Descriptor(), preflect.EnumNumber(x)) 201 } 202 203 func (Alert_State_AiHandlingState) Descriptor() preflect.EnumDescriptor { 204 return edgelq_alerting_proto_v1_alert_proto_enumTypes[1].Descriptor() 205 } 206 207 func (Alert_State_AiHandlingState) Type() preflect.EnumType { 208 return &edgelq_alerting_proto_v1_alert_proto_enumTypes[1] 209 } 210 211 func (x Alert_State_AiHandlingState) Number() preflect.EnumNumber { 212 return preflect.EnumNumber(x) 213 } 214 215 // Deprecated, Use Alert_State_AiHandlingState.ProtoReflect.Descriptor instead. 216 func (Alert_State_AiHandlingState) EnumDescriptor() ([]byte, []int) { 217 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 2, 0} 218 } 219 220 // AiHandlingState informs what is a handling state 221 // of an alert from OPERATOR point of view. 222 type Alert_State_OperatorHandlingState int32 223 224 const ( 225 // Operator is not involved in handling this alert. 226 Alert_State_OP_NOT_INVOLVED Alert_State_OperatorHandlingState = 0 227 // Alert waits for Operator to handle it. This is 228 // initial state when escalation level switches to 229 // OPERATOR. 230 // From here, it can switch to any of remaining 231 // states. It may be also switched back to AI Agent 232 // if operator will it. 233 Alert_State_OP_AWAITING_HANDLING Alert_State_OperatorHandlingState = 1 234 // This can be a first state of Alert after OP_AWAITING_HANDLING, 235 // if operator wants to acknowledge alert without informing about 236 // final decision. 237 Alert_State_OP_ACKNOWLEDGED Alert_State_OperatorHandlingState = 2 238 // Operator informed that, while TimeSeries/Logs data 239 // indeed contain abnormal values, they are caused 240 // by transient and unharmful reason, and it should 241 // stop firing soon. This is false positive alert. 242 // This may be terminal state if alert stops firing soon. 243 // Otherwise, it will go back to OP_AWAITING_HANDLING. 244 Alert_State_OP_IGNORE_AS_TEMPORARY Alert_State_OperatorHandlingState = 3 245 // Operator informed that this alert is a false 246 // positive, and TimeSeries/Logs violating entries 247 // in fact should not be classified as a violation. 248 // Switching alert to this state will cause corresponding 249 // TsEntry to adjust its thresholds, or retrain AI anomaly 250 // detection models, whatever is relevant. 251 // This is usually a terminal state, after which alert is silenced 252 // and TsEntry tries to assume violating data is normal. 253 // However, if thresholds cannot be updated, alert will switch to 254 // OP_AWAITING_HANDLING automatically. 255 Alert_State_OP_ADJUST_CND_ENTRY Alert_State_OperatorHandlingState = 4 256 // This state indicates that remediation has been applied. If after some 257 // time issue persists, then it switches to OP_AWAITING_HANDLING. 258 Alert_State_OP_REMEDIATION_APPLIED Alert_State_OperatorHandlingState = 5 259 ) 260 261 var ( 262 Alert_State_OperatorHandlingState_name = map[int32]string{ 263 0: "OP_NOT_INVOLVED", 264 1: "OP_AWAITING_HANDLING", 265 2: "OP_ACKNOWLEDGED", 266 3: "OP_IGNORE_AS_TEMPORARY", 267 4: "OP_ADJUST_CND_ENTRY", 268 5: "OP_REMEDIATION_APPLIED", 269 } 270 271 Alert_State_OperatorHandlingState_value = map[string]int32{ 272 "OP_NOT_INVOLVED": 0, 273 "OP_AWAITING_HANDLING": 1, 274 "OP_ACKNOWLEDGED": 2, 275 "OP_IGNORE_AS_TEMPORARY": 3, 276 "OP_ADJUST_CND_ENTRY": 4, 277 "OP_REMEDIATION_APPLIED": 5, 278 } 279 ) 280 281 func (x Alert_State_OperatorHandlingState) Enum() *Alert_State_OperatorHandlingState { 282 p := new(Alert_State_OperatorHandlingState) 283 *p = x 284 return p 285 } 286 287 func (x Alert_State_OperatorHandlingState) String() string { 288 return protoimpl.X.EnumStringOf(x.Descriptor(), preflect.EnumNumber(x)) 289 } 290 291 func (Alert_State_OperatorHandlingState) Descriptor() preflect.EnumDescriptor { 292 return edgelq_alerting_proto_v1_alert_proto_enumTypes[2].Descriptor() 293 } 294 295 func (Alert_State_OperatorHandlingState) Type() preflect.EnumType { 296 return &edgelq_alerting_proto_v1_alert_proto_enumTypes[2] 297 } 298 299 func (x Alert_State_OperatorHandlingState) Number() preflect.EnumNumber { 300 return preflect.EnumNumber(x) 301 } 302 303 // Deprecated, Use Alert_State_OperatorHandlingState.ProtoReflect.Descriptor instead. 304 func (Alert_State_OperatorHandlingState) EnumDescriptor() ([]byte, []int) { 305 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 2, 1} 306 } 307 308 // EscalationLevel informs who is handling an alert. 309 type Alert_State_EscalationLevel int32 310 311 const ( 312 // None is invalid state. 313 Alert_State_NONE Alert_State_EscalationLevel = 0 314 // Alert is handled by AI Agent now 315 Alert_State_AI_AGENT Alert_State_EscalationLevel = 1 316 // Alert is handled by OPERATOR now. 317 Alert_State_OPERATOR Alert_State_EscalationLevel = 2 318 ) 319 320 var ( 321 Alert_State_EscalationLevel_name = map[int32]string{ 322 0: "NONE", 323 1: "AI_AGENT", 324 2: "OPERATOR", 325 } 326 327 Alert_State_EscalationLevel_value = map[string]int32{ 328 "NONE": 0, 329 "AI_AGENT": 1, 330 "OPERATOR": 2, 331 } 332 ) 333 334 func (x Alert_State_EscalationLevel) Enum() *Alert_State_EscalationLevel { 335 p := new(Alert_State_EscalationLevel) 336 *p = x 337 return p 338 } 339 340 func (x Alert_State_EscalationLevel) String() string { 341 return protoimpl.X.EnumStringOf(x.Descriptor(), preflect.EnumNumber(x)) 342 } 343 344 func (Alert_State_EscalationLevel) Descriptor() preflect.EnumDescriptor { 345 return edgelq_alerting_proto_v1_alert_proto_enumTypes[3].Descriptor() 346 } 347 348 func (Alert_State_EscalationLevel) Type() preflect.EnumType { 349 return &edgelq_alerting_proto_v1_alert_proto_enumTypes[3] 350 } 351 352 func (x Alert_State_EscalationLevel) Number() preflect.EnumNumber { 353 return preflect.EnumNumber(x) 354 } 355 356 // Deprecated, Use Alert_State_EscalationLevel.ProtoReflect.Descriptor instead. 357 func (Alert_State_EscalationLevel) EnumDescriptor() ([]byte, []int) { 358 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 2, 2} 359 } 360 361 // Alert describes an abnormal situation indicated by TimeSeries or Logs. 362 // Alert is always associated with a single resource type, as indicated 363 // in Policy object. 364 // It contains relevant information: TimeSeries/Logs values that caused 365 // the issue, starting time, ending time, if alert stopped, current 366 // handling state (by both operator and AI agent). 367 // Each Alert belongs to a single TsCondition/LogCondition resource, and 368 // is always associated with some unique TsEntry - they share alerting 369 // resource reference. 370 // Relationship Alert <-> TsEntry is N <-> 1 371 // Relationship Alert <-> TsCondition/LogCondition is N <-> 1 372 type Alert struct { 373 state protoimpl.MessageState 374 sizeCache protoimpl.SizeCache 375 unknownFields protoimpl.UnknownFields 376 // Name of Alert 377 // When creating a new instance, this field is optional and if not provided, 378 // it will be generated automatically. Last ID segment must conform to the 379 // following regex: [a-zA-Z0-9_.:-]{1,128} 380 Name *Name `protobuf:"bytes,1,opt,customtype=Name,name=name,proto3" json:"name,omitempty"` 381 // Metadata is an object with information like create, update and delete time 382 // (for async deleted resources), has user labels/annotations, sharding 383 // information, multi-region syncing information and may have non-schema 384 // owners (useful for taking ownership of resources belonging to lower level 385 // services by higher ones). 386 Metadata *meta.Meta `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` 387 // Display name informing about basic params (condition display name and 388 // alerting resource) 389 DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 390 // Alerting resource points to the original resource which generated alert. 391 // This meta reference works like dynamic type (any service, any resource). 392 // TODO: We could use of "DynamicReference" message type. It can be similar to 393 // OwnerReference, except it works more like reference (uses 394 // EstablishReferences...). It can support most normal behaviors, like CASCADE 395 // DELETE/UNSET. 396 AlertingResource *meta.OwnerReference `protobuf:"bytes,4,opt,name=alerting_resource,json=alertingResource,proto3" json:"alerting_resource,omitempty"` 397 // State of alert 398 State *Alert_State `protobuf:"bytes,8,opt,name=state,proto3" json:"state,omitempty"` 399 // Internal field. 400 Internal *Alert_Internal `protobuf:"bytes,9,opt,name=internal,proto3" json:"internal,omitempty"` 401 // Types that are valid to be assigned to Info: 402 // *Alert_TsInfo_ 403 // *Alert_LogInfo_ 404 Info isAlert_Info `protobuf_oneof:"info"` 405 } 406 407 func (m *Alert) Reset() { 408 *m = Alert{} 409 if protoimpl.UnsafeEnabled { 410 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[0] 411 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 412 ms.StoreMessageInfo(mi) 413 } 414 } 415 416 func (m *Alert) String() string { 417 return protoimpl.X.MessageStringOf(m) 418 } 419 420 func (*Alert) ProtoMessage() {} 421 422 func (m *Alert) ProtoReflect() preflect.Message { 423 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[0] 424 if protoimpl.UnsafeEnabled && m != nil { 425 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 426 if ms.LoadMessageInfo() == nil { 427 ms.StoreMessageInfo(mi) 428 } 429 return ms 430 } 431 return mi.MessageOf(m) 432 } 433 434 func (*Alert) GotenMessage() {} 435 436 // Deprecated, Use Alert.ProtoReflect.Descriptor instead. 437 func (*Alert) Descriptor() ([]byte, []int) { 438 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0} 439 } 440 441 func (m *Alert) Unmarshal(b []byte) error { 442 return proto.Unmarshal(b, m) 443 } 444 445 func (m *Alert) Marshal() ([]byte, error) { 446 return proto.Marshal(m) 447 } 448 449 func (m *Alert) MarshalJSON() ([]byte, error) { 450 return protojson.MarshalOptions{}.Marshal(m) 451 } 452 453 func (m *Alert) UnmarshalJSON(data []byte) error { 454 return protojson.Unmarshal(data, m) 455 } 456 457 type isAlert_Info interface { 458 isAlert_Info() 459 } 460 461 type Alert_TsInfo_ struct { 462 // Informs about alert based on TimeSeries data. 463 TsInfo *Alert_TsInfo `protobuf:"bytes,6,opt,name=ts_info,json=tsInfo,proto3,oneof"` 464 } 465 type Alert_LogInfo_ struct { 466 // Informs about alert based on Log data. 467 LogInfo *Alert_LogInfo `protobuf:"bytes,7,opt,name=log_info,json=logInfo,proto3,oneof"` 468 } 469 470 func (*Alert_TsInfo_) isAlert_Info() {} 471 func (*Alert_LogInfo_) isAlert_Info() {} 472 func (m *Alert) GetName() *Name { 473 if m != nil { 474 return m.Name 475 } 476 return nil 477 } 478 479 func (m *Alert) GetMetadata() *meta.Meta { 480 if m != nil { 481 return m.Metadata 482 } 483 return nil 484 } 485 486 func (m *Alert) GetDisplayName() string { 487 if m != nil { 488 return m.DisplayName 489 } 490 return "" 491 } 492 493 func (m *Alert) GetAlertingResource() *meta.OwnerReference { 494 if m != nil { 495 return m.AlertingResource 496 } 497 return nil 498 } 499 500 func (m *Alert) GetState() *Alert_State { 501 if m != nil { 502 return m.State 503 } 504 return nil 505 } 506 507 func (m *Alert) GetInternal() *Alert_Internal { 508 if m != nil { 509 return m.Internal 510 } 511 return nil 512 } 513 514 func (m *Alert) GetInfo() isAlert_Info { 515 if m != nil { 516 return m.Info 517 } 518 return nil 519 } 520 func (m *Alert) GetTsInfo() *Alert_TsInfo { 521 if x, ok := m.GetInfo().(*Alert_TsInfo_); ok { 522 return x.TsInfo 523 } 524 return nil 525 } 526 func (m *Alert) GetLogInfo() *Alert_LogInfo { 527 if x, ok := m.GetInfo().(*Alert_LogInfo_); ok { 528 return x.LogInfo 529 } 530 return nil 531 } 532 func (m *Alert) SetName(fv *Name) { 533 if m == nil { 534 panic(fmt.Errorf("can't set %s on nil %s", "Name", "Alert")) 535 } 536 m.Name = fv 537 } 538 539 func (m *Alert) SetMetadata(fv *meta.Meta) { 540 if m == nil { 541 panic(fmt.Errorf("can't set %s on nil %s", "Metadata", "Alert")) 542 } 543 m.Metadata = fv 544 } 545 546 func (m *Alert) SetDisplayName(fv string) { 547 if m == nil { 548 panic(fmt.Errorf("can't set %s on nil %s", "DisplayName", "Alert")) 549 } 550 m.DisplayName = fv 551 } 552 553 func (m *Alert) SetAlertingResource(fv *meta.OwnerReference) { 554 if m == nil { 555 panic(fmt.Errorf("can't set %s on nil %s", "AlertingResource", "Alert")) 556 } 557 m.AlertingResource = fv 558 } 559 560 func (m *Alert) SetState(fv *Alert_State) { 561 if m == nil { 562 panic(fmt.Errorf("can't set %s on nil %s", "State", "Alert")) 563 } 564 m.State = fv 565 } 566 567 func (m *Alert) SetInternal(fv *Alert_Internal) { 568 if m == nil { 569 panic(fmt.Errorf("can't set %s on nil %s", "Internal", "Alert")) 570 } 571 m.Internal = fv 572 } 573 574 func (m *Alert) SetInfo(ofv isAlert_Info) { 575 if m == nil { 576 panic(fmt.Errorf("can't set %s on nil %s", "isAlert_Info", "Alert")) 577 } 578 m.Info = ofv 579 } 580 func (m *Alert) SetTsInfo(fv *Alert_TsInfo) { 581 m.SetInfo(&Alert_TsInfo_{TsInfo: fv}) 582 } 583 func (m *Alert) SetLogInfo(fv *Alert_LogInfo) { 584 m.SetInfo(&Alert_LogInfo_{LogInfo: fv}) 585 } 586 587 // TsInfo contains Alert data created based on TimeSeries data. 588 type Alert_TsInfo struct { 589 state protoimpl.MessageState 590 sizeCache protoimpl.SizeCache 591 unknownFields protoimpl.UnknownFields 592 // Type of TimeSeries alert - based on ANOMALY or THRESHOLD. 593 Type Alert_TsInfo_Type `protobuf:"varint,1,opt,name=type,proto3,enum=ntt.alerting.v1.Alert_TsInfo_Type" json:"type,omitempty"` 594 // If alert type is ANOMALY, then this field is populated 595 // and informs for what window size anomaly was detected. 596 AnomalyWindowSize *durationpb.Duration `protobuf:"bytes,2,opt,name=anomaly_window_size,json=anomalyWindowSize,proto3" json:"anomaly_window_size,omitempty"` 597 // Binary key describing common metric/resource labels 598 CommonKey []byte `protobuf:"bytes,3,opt,name=common_key,json=commonKey,proto3" json:"common_key,omitempty"` 599 // List of metric types used in TsCondition 600 MetricTypes []string `protobuf:"bytes,4,rep,name=metric_types,json=metricTypes,proto3" json:"metric_types,omitempty"` 601 // List of resource types used in TsCondition 602 ResourceTypes []string `protobuf:"bytes,5,rep,name=resource_types,json=resourceTypes,proto3" json:"resource_types,omitempty"` 603 // Metric labels by which we grouped TimeSeries data. 604 CommonMetricLabels map[string]string `protobuf:"bytes,6,rep,name=common_metric_labels,json=commonMetricLabels,proto3" json:"common_metric_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 605 // Resource labels by which we grouped TimeSeries data. 606 CommonResourceLabels map[string]string `protobuf:"bytes,7,rep,name=common_resource_labels,json=commonResourceLabels,proto3" json:"common_resource_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 607 // All TimeSeries corresponding to each TsCondition.Spec.Query object, 608 // according to unique combination of group by fields: resource/metric 609 // labels. 610 TimeSeries []*Alert_TsInfo_TimeSeries `protobuf:"bytes,8,rep,name=time_series,json=timeSeries,proto3" json:"time_series,omitempty"` 611 } 612 613 func (m *Alert_TsInfo) Reset() { 614 *m = Alert_TsInfo{} 615 if protoimpl.UnsafeEnabled { 616 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[1] 617 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 618 ms.StoreMessageInfo(mi) 619 } 620 } 621 622 func (m *Alert_TsInfo) String() string { 623 return protoimpl.X.MessageStringOf(m) 624 } 625 626 func (*Alert_TsInfo) ProtoMessage() {} 627 628 func (m *Alert_TsInfo) ProtoReflect() preflect.Message { 629 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[1] 630 if protoimpl.UnsafeEnabled && m != nil { 631 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 632 if ms.LoadMessageInfo() == nil { 633 ms.StoreMessageInfo(mi) 634 } 635 return ms 636 } 637 return mi.MessageOf(m) 638 } 639 640 func (*Alert_TsInfo) GotenMessage() {} 641 642 // Deprecated, Use Alert_TsInfo.ProtoReflect.Descriptor instead. 643 func (*Alert_TsInfo) Descriptor() ([]byte, []int) { 644 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 0} 645 } 646 647 func (m *Alert_TsInfo) Unmarshal(b []byte) error { 648 return proto.Unmarshal(b, m) 649 } 650 651 func (m *Alert_TsInfo) Marshal() ([]byte, error) { 652 return proto.Marshal(m) 653 } 654 655 func (m *Alert_TsInfo) MarshalJSON() ([]byte, error) { 656 return protojson.MarshalOptions{}.Marshal(m) 657 } 658 659 func (m *Alert_TsInfo) UnmarshalJSON(data []byte) error { 660 return protojson.Unmarshal(data, m) 661 } 662 663 func (m *Alert_TsInfo) GetType() Alert_TsInfo_Type { 664 if m != nil { 665 return m.Type 666 } 667 return Alert_TsInfo_UNDEFINED 668 } 669 670 func (m *Alert_TsInfo) GetAnomalyWindowSize() *durationpb.Duration { 671 if m != nil { 672 return m.AnomalyWindowSize 673 } 674 return nil 675 } 676 677 func (m *Alert_TsInfo) GetCommonKey() []byte { 678 if m != nil { 679 return m.CommonKey 680 } 681 return nil 682 } 683 684 func (m *Alert_TsInfo) GetMetricTypes() []string { 685 if m != nil { 686 return m.MetricTypes 687 } 688 return nil 689 } 690 691 func (m *Alert_TsInfo) GetResourceTypes() []string { 692 if m != nil { 693 return m.ResourceTypes 694 } 695 return nil 696 } 697 698 func (m *Alert_TsInfo) GetCommonMetricLabels() map[string]string { 699 if m != nil { 700 return m.CommonMetricLabels 701 } 702 return nil 703 } 704 705 func (m *Alert_TsInfo) GetCommonResourceLabels() map[string]string { 706 if m != nil { 707 return m.CommonResourceLabels 708 } 709 return nil 710 } 711 712 func (m *Alert_TsInfo) GetTimeSeries() []*Alert_TsInfo_TimeSeries { 713 if m != nil { 714 return m.TimeSeries 715 } 716 return nil 717 } 718 719 func (m *Alert_TsInfo) SetType(fv Alert_TsInfo_Type) { 720 if m == nil { 721 panic(fmt.Errorf("can't set %s on nil %s", "Type", "Alert_TsInfo")) 722 } 723 m.Type = fv 724 } 725 726 func (m *Alert_TsInfo) SetAnomalyWindowSize(fv *durationpb.Duration) { 727 if m == nil { 728 panic(fmt.Errorf("can't set %s on nil %s", "AnomalyWindowSize", "Alert_TsInfo")) 729 } 730 m.AnomalyWindowSize = fv 731 } 732 733 func (m *Alert_TsInfo) SetCommonKey(fv []byte) { 734 if m == nil { 735 panic(fmt.Errorf("can't set %s on nil %s", "CommonKey", "Alert_TsInfo")) 736 } 737 m.CommonKey = fv 738 } 739 740 func (m *Alert_TsInfo) SetMetricTypes(fv []string) { 741 if m == nil { 742 panic(fmt.Errorf("can't set %s on nil %s", "MetricTypes", "Alert_TsInfo")) 743 } 744 m.MetricTypes = fv 745 } 746 747 func (m *Alert_TsInfo) SetResourceTypes(fv []string) { 748 if m == nil { 749 panic(fmt.Errorf("can't set %s on nil %s", "ResourceTypes", "Alert_TsInfo")) 750 } 751 m.ResourceTypes = fv 752 } 753 754 func (m *Alert_TsInfo) SetCommonMetricLabels(fv map[string]string) { 755 if m == nil { 756 panic(fmt.Errorf("can't set %s on nil %s", "CommonMetricLabels", "Alert_TsInfo")) 757 } 758 m.CommonMetricLabels = fv 759 } 760 761 func (m *Alert_TsInfo) SetCommonResourceLabels(fv map[string]string) { 762 if m == nil { 763 panic(fmt.Errorf("can't set %s on nil %s", "CommonResourceLabels", "Alert_TsInfo")) 764 } 765 m.CommonResourceLabels = fv 766 } 767 768 func (m *Alert_TsInfo) SetTimeSeries(fv []*Alert_TsInfo_TimeSeries) { 769 if m == nil { 770 panic(fmt.Errorf("can't set %s on nil %s", "TimeSeries", "Alert_TsInfo")) 771 } 772 m.TimeSeries = fv 773 } 774 775 // LogInfo contains Alert data created based on Log data. 776 type Alert_LogInfo struct { 777 state protoimpl.MessageState 778 sizeCache protoimpl.SizeCache 779 unknownFields protoimpl.UnknownFields 780 // Binary key describing common labels 781 CommonKey []byte `protobuf:"bytes,1,opt,name=common_key,json=commonKey,proto3" json:"common_key,omitempty"` 782 // List of log descriptor types specified in parent LogCondition 783 LogTypes []string `protobuf:"bytes,2,rep,name=log_types,json=logTypes,proto3" json:"log_types,omitempty"` 784 // Log labels by which we grouped Logs data. 785 CommonLogLabels map[string]string `protobuf:"bytes,3,rep,name=common_log_labels,json=commonLogLabels,proto3" json:"common_log_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 786 // Content of violating log 787 ViolatingLog string `protobuf:"bytes,4,opt,name=violating_log,json=violatingLog,proto3" json:"violating_log,omitempty"` 788 } 789 790 func (m *Alert_LogInfo) Reset() { 791 *m = Alert_LogInfo{} 792 if protoimpl.UnsafeEnabled { 793 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[2] 794 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 795 ms.StoreMessageInfo(mi) 796 } 797 } 798 799 func (m *Alert_LogInfo) String() string { 800 return protoimpl.X.MessageStringOf(m) 801 } 802 803 func (*Alert_LogInfo) ProtoMessage() {} 804 805 func (m *Alert_LogInfo) ProtoReflect() preflect.Message { 806 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[2] 807 if protoimpl.UnsafeEnabled && m != nil { 808 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 809 if ms.LoadMessageInfo() == nil { 810 ms.StoreMessageInfo(mi) 811 } 812 return ms 813 } 814 return mi.MessageOf(m) 815 } 816 817 func (*Alert_LogInfo) GotenMessage() {} 818 819 // Deprecated, Use Alert_LogInfo.ProtoReflect.Descriptor instead. 820 func (*Alert_LogInfo) Descriptor() ([]byte, []int) { 821 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 1} 822 } 823 824 func (m *Alert_LogInfo) Unmarshal(b []byte) error { 825 return proto.Unmarshal(b, m) 826 } 827 828 func (m *Alert_LogInfo) Marshal() ([]byte, error) { 829 return proto.Marshal(m) 830 } 831 832 func (m *Alert_LogInfo) MarshalJSON() ([]byte, error) { 833 return protojson.MarshalOptions{}.Marshal(m) 834 } 835 836 func (m *Alert_LogInfo) UnmarshalJSON(data []byte) error { 837 return protojson.Unmarshal(data, m) 838 } 839 840 func (m *Alert_LogInfo) GetCommonKey() []byte { 841 if m != nil { 842 return m.CommonKey 843 } 844 return nil 845 } 846 847 func (m *Alert_LogInfo) GetLogTypes() []string { 848 if m != nil { 849 return m.LogTypes 850 } 851 return nil 852 } 853 854 func (m *Alert_LogInfo) GetCommonLogLabels() map[string]string { 855 if m != nil { 856 return m.CommonLogLabels 857 } 858 return nil 859 } 860 861 func (m *Alert_LogInfo) GetViolatingLog() string { 862 if m != nil { 863 return m.ViolatingLog 864 } 865 return "" 866 } 867 868 func (m *Alert_LogInfo) SetCommonKey(fv []byte) { 869 if m == nil { 870 panic(fmt.Errorf("can't set %s on nil %s", "CommonKey", "Alert_LogInfo")) 871 } 872 m.CommonKey = fv 873 } 874 875 func (m *Alert_LogInfo) SetLogTypes(fv []string) { 876 if m == nil { 877 panic(fmt.Errorf("can't set %s on nil %s", "LogTypes", "Alert_LogInfo")) 878 } 879 m.LogTypes = fv 880 } 881 882 func (m *Alert_LogInfo) SetCommonLogLabels(fv map[string]string) { 883 if m == nil { 884 panic(fmt.Errorf("can't set %s on nil %s", "CommonLogLabels", "Alert_LogInfo")) 885 } 886 m.CommonLogLabels = fv 887 } 888 889 func (m *Alert_LogInfo) SetViolatingLog(fv string) { 890 if m == nil { 891 panic(fmt.Errorf("can't set %s on nil %s", "ViolatingLog", "Alert_LogInfo")) 892 } 893 m.ViolatingLog = fv 894 } 895 896 // State is responsible for managing lifecycle of Alert. 897 // Each Alert 898 type Alert_State struct { 899 state protoimpl.MessageState 900 sizeCache protoimpl.SizeCache 901 unknownFields protoimpl.UnknownFields 902 // Informs if alert is still firing 903 IsFiring bool `protobuf:"varint,1,opt,name=is_firing,json=isFiring,proto3" json:"is_firing,omitempty"` 904 // Time when alert was raised 905 StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 906 // Time when alert was silenced, if no longer firing 907 EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 908 // Informs where notifications about alert state changes 909 // must be sent. 910 NotificationStatuses []*Alert_State_Notification `protobuf:"bytes,4,rep,name=notification_statuses,json=notificationStatuses,proto3" json:"notification_statuses,omitempty"` 911 // Informs who is handling alert as of now. 912 EscalationLevel Alert_State_EscalationLevel `protobuf:"varint,5,opt,name=escalation_level,json=escalationLevel,proto3,enum=ntt.alerting.v1.Alert_State_EscalationLevel" json:"escalation_level,omitempty"` 913 // Informs current state of alert handling by AI Agent if 914 // escalation level is AI_AGENT. If alert is on operator side, 915 // it will contain last decision made by AI agent. 916 AiAgentHandlingState Alert_State_AiHandlingState `protobuf:"varint,6,opt,name=ai_agent_handling_state,json=aiAgentHandlingState,proto3,enum=ntt.alerting.v1.Alert_State_AiHandlingState" json:"ai_agent_handling_state,omitempty"` 917 // Informs when was the last state change of ai_agent_handling_state field. 918 AiAgentLastStateChangeTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=ai_agent_last_state_change_time,json=aiAgentLastStateChangeTime,proto3" json:"ai_agent_last_state_change_time,omitempty"` 919 // Contains AI Agent troubleshooting notes. If agent SSHed to alerting 920 // resource, it will also contain history of shell for visibility purposes. 921 AiAgentDiagnosisNotes string `protobuf:"bytes,8,opt,name=ai_agent_diagnosis_notes,json=aiAgentDiagnosisNotes,proto3" json:"ai_agent_diagnosis_notes,omitempty"` 922 // Optional remediation information from AI Agent. This field may be 923 // populated when field ai_agent_handling_state switches to 924 // AI_REMEDIATION_PROPOSED, if necessary. For example, if AI Agent wants to 925 // SSH and execute some commands, it will contain these commands. 926 AiRemediationArg string `protobuf:"bytes,9,opt,name=ai_remediation_arg,json=aiRemediationArg,proto3" json:"ai_remediation_arg,omitempty"` 927 // Remediation type proposed by AI Agent to fix an alert. This field is 928 // populated when field ai_agent_handling_state switches to 929 // AI_REMEDIATION_PROPOSED. Informs what kind of remediation AI Agent wants 930 // to execute. 931 AiRemediation *rcommon.PolicySpec_AIAgentHandling_Remediation `protobuf:"bytes,10,opt,name=ai_remediation,json=aiRemediation,proto3" json:"ai_remediation,omitempty"` 932 // Informs current state of alert handling by Operator if 933 // escalation level is OPERATOR. If alert is on AI_AGENT side, 934 // it will contain last decision made by operator. 935 OperatorHandlingState Alert_State_OperatorHandlingState `protobuf:"varint,11,opt,name=operator_handling_state,json=operatorHandlingState,proto3,enum=ntt.alerting.v1.Alert_State_OperatorHandlingState" json:"operator_handling_state,omitempty"` 936 // Informs when was the last state change of operator_handling_state field. 937 OperatorLastStateChangeTime *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=operator_last_state_change_time,json=operatorLastStateChangeTime,proto3" json:"operator_last_state_change_time,omitempty"` 938 // Optional operator notes. 939 OperatorNotes string `protobuf:"bytes,13,opt,name=operator_notes,json=operatorNotes,proto3" json:"operator_notes,omitempty"` 940 // Alert has ended and any needed notifications are processed 941 LifecycleCompleted bool `protobuf:"varint,14,opt,name=lifecycle_completed,json=lifecycleCompleted,proto3" json:"lifecycle_completed,omitempty"` 942 } 943 944 func (m *Alert_State) Reset() { 945 *m = Alert_State{} 946 if protoimpl.UnsafeEnabled { 947 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[3] 948 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 949 ms.StoreMessageInfo(mi) 950 } 951 } 952 953 func (m *Alert_State) String() string { 954 return protoimpl.X.MessageStringOf(m) 955 } 956 957 func (*Alert_State) ProtoMessage() {} 958 959 func (m *Alert_State) ProtoReflect() preflect.Message { 960 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[3] 961 if protoimpl.UnsafeEnabled && m != nil { 962 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 963 if ms.LoadMessageInfo() == nil { 964 ms.StoreMessageInfo(mi) 965 } 966 return ms 967 } 968 return mi.MessageOf(m) 969 } 970 971 func (*Alert_State) GotenMessage() {} 972 973 // Deprecated, Use Alert_State.ProtoReflect.Descriptor instead. 974 func (*Alert_State) Descriptor() ([]byte, []int) { 975 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 2} 976 } 977 978 func (m *Alert_State) Unmarshal(b []byte) error { 979 return proto.Unmarshal(b, m) 980 } 981 982 func (m *Alert_State) Marshal() ([]byte, error) { 983 return proto.Marshal(m) 984 } 985 986 func (m *Alert_State) MarshalJSON() ([]byte, error) { 987 return protojson.MarshalOptions{}.Marshal(m) 988 } 989 990 func (m *Alert_State) UnmarshalJSON(data []byte) error { 991 return protojson.Unmarshal(data, m) 992 } 993 994 func (m *Alert_State) GetIsFiring() bool { 995 if m != nil { 996 return m.IsFiring 997 } 998 return false 999 } 1000 1001 func (m *Alert_State) GetStartTime() *timestamppb.Timestamp { 1002 if m != nil { 1003 return m.StartTime 1004 } 1005 return nil 1006 } 1007 1008 func (m *Alert_State) GetEndTime() *timestamppb.Timestamp { 1009 if m != nil { 1010 return m.EndTime 1011 } 1012 return nil 1013 } 1014 1015 func (m *Alert_State) GetNotificationStatuses() []*Alert_State_Notification { 1016 if m != nil { 1017 return m.NotificationStatuses 1018 } 1019 return nil 1020 } 1021 1022 func (m *Alert_State) GetEscalationLevel() Alert_State_EscalationLevel { 1023 if m != nil { 1024 return m.EscalationLevel 1025 } 1026 return Alert_State_NONE 1027 } 1028 1029 func (m *Alert_State) GetAiAgentHandlingState() Alert_State_AiHandlingState { 1030 if m != nil { 1031 return m.AiAgentHandlingState 1032 } 1033 return Alert_State_AI_AGENT_NOT_INVOLVED 1034 } 1035 1036 func (m *Alert_State) GetAiAgentLastStateChangeTime() *timestamppb.Timestamp { 1037 if m != nil { 1038 return m.AiAgentLastStateChangeTime 1039 } 1040 return nil 1041 } 1042 1043 func (m *Alert_State) GetAiAgentDiagnosisNotes() string { 1044 if m != nil { 1045 return m.AiAgentDiagnosisNotes 1046 } 1047 return "" 1048 } 1049 1050 func (m *Alert_State) GetAiRemediationArg() string { 1051 if m != nil { 1052 return m.AiRemediationArg 1053 } 1054 return "" 1055 } 1056 1057 func (m *Alert_State) GetAiRemediation() *rcommon.PolicySpec_AIAgentHandling_Remediation { 1058 if m != nil { 1059 return m.AiRemediation 1060 } 1061 return nil 1062 } 1063 1064 func (m *Alert_State) GetOperatorHandlingState() Alert_State_OperatorHandlingState { 1065 if m != nil { 1066 return m.OperatorHandlingState 1067 } 1068 return Alert_State_OP_NOT_INVOLVED 1069 } 1070 1071 func (m *Alert_State) GetOperatorLastStateChangeTime() *timestamppb.Timestamp { 1072 if m != nil { 1073 return m.OperatorLastStateChangeTime 1074 } 1075 return nil 1076 } 1077 1078 func (m *Alert_State) GetOperatorNotes() string { 1079 if m != nil { 1080 return m.OperatorNotes 1081 } 1082 return "" 1083 } 1084 1085 func (m *Alert_State) GetLifecycleCompleted() bool { 1086 if m != nil { 1087 return m.LifecycleCompleted 1088 } 1089 return false 1090 } 1091 1092 func (m *Alert_State) SetIsFiring(fv bool) { 1093 if m == nil { 1094 panic(fmt.Errorf("can't set %s on nil %s", "IsFiring", "Alert_State")) 1095 } 1096 m.IsFiring = fv 1097 } 1098 1099 func (m *Alert_State) SetStartTime(fv *timestamppb.Timestamp) { 1100 if m == nil { 1101 panic(fmt.Errorf("can't set %s on nil %s", "StartTime", "Alert_State")) 1102 } 1103 m.StartTime = fv 1104 } 1105 1106 func (m *Alert_State) SetEndTime(fv *timestamppb.Timestamp) { 1107 if m == nil { 1108 panic(fmt.Errorf("can't set %s on nil %s", "EndTime", "Alert_State")) 1109 } 1110 m.EndTime = fv 1111 } 1112 1113 func (m *Alert_State) SetNotificationStatuses(fv []*Alert_State_Notification) { 1114 if m == nil { 1115 panic(fmt.Errorf("can't set %s on nil %s", "NotificationStatuses", "Alert_State")) 1116 } 1117 m.NotificationStatuses = fv 1118 } 1119 1120 func (m *Alert_State) SetEscalationLevel(fv Alert_State_EscalationLevel) { 1121 if m == nil { 1122 panic(fmt.Errorf("can't set %s on nil %s", "EscalationLevel", "Alert_State")) 1123 } 1124 m.EscalationLevel = fv 1125 } 1126 1127 func (m *Alert_State) SetAiAgentHandlingState(fv Alert_State_AiHandlingState) { 1128 if m == nil { 1129 panic(fmt.Errorf("can't set %s on nil %s", "AiAgentHandlingState", "Alert_State")) 1130 } 1131 m.AiAgentHandlingState = fv 1132 } 1133 1134 func (m *Alert_State) SetAiAgentLastStateChangeTime(fv *timestamppb.Timestamp) { 1135 if m == nil { 1136 panic(fmt.Errorf("can't set %s on nil %s", "AiAgentLastStateChangeTime", "Alert_State")) 1137 } 1138 m.AiAgentLastStateChangeTime = fv 1139 } 1140 1141 func (m *Alert_State) SetAiAgentDiagnosisNotes(fv string) { 1142 if m == nil { 1143 panic(fmt.Errorf("can't set %s on nil %s", "AiAgentDiagnosisNotes", "Alert_State")) 1144 } 1145 m.AiAgentDiagnosisNotes = fv 1146 } 1147 1148 func (m *Alert_State) SetAiRemediationArg(fv string) { 1149 if m == nil { 1150 panic(fmt.Errorf("can't set %s on nil %s", "AiRemediationArg", "Alert_State")) 1151 } 1152 m.AiRemediationArg = fv 1153 } 1154 1155 func (m *Alert_State) SetAiRemediation(fv *rcommon.PolicySpec_AIAgentHandling_Remediation) { 1156 if m == nil { 1157 panic(fmt.Errorf("can't set %s on nil %s", "AiRemediation", "Alert_State")) 1158 } 1159 m.AiRemediation = fv 1160 } 1161 1162 func (m *Alert_State) SetOperatorHandlingState(fv Alert_State_OperatorHandlingState) { 1163 if m == nil { 1164 panic(fmt.Errorf("can't set %s on nil %s", "OperatorHandlingState", "Alert_State")) 1165 } 1166 m.OperatorHandlingState = fv 1167 } 1168 1169 func (m *Alert_State) SetOperatorLastStateChangeTime(fv *timestamppb.Timestamp) { 1170 if m == nil { 1171 panic(fmt.Errorf("can't set %s on nil %s", "OperatorLastStateChangeTime", "Alert_State")) 1172 } 1173 m.OperatorLastStateChangeTime = fv 1174 } 1175 1176 func (m *Alert_State) SetOperatorNotes(fv string) { 1177 if m == nil { 1178 panic(fmt.Errorf("can't set %s on nil %s", "OperatorNotes", "Alert_State")) 1179 } 1180 m.OperatorNotes = fv 1181 } 1182 1183 func (m *Alert_State) SetLifecycleCompleted(fv bool) { 1184 if m == nil { 1185 panic(fmt.Errorf("can't set %s on nil %s", "LifecycleCompleted", "Alert_State")) 1186 } 1187 m.LifecycleCompleted = fv 1188 } 1189 1190 // Internal data. 1191 type Alert_Internal struct { 1192 state protoimpl.MessageState 1193 sizeCache protoimpl.SizeCache 1194 unknownFields protoimpl.UnknownFields 1195 AlertingLocation rcommon.PolicySpec_ProcessingLocation `protobuf:"varint,1,opt,name=alerting_location,json=alertingLocation,proto3,enum=ntt.alerting.v1.PolicySpec_ProcessingLocation" json:"alerting_location,omitempty"` 1196 } 1197 1198 func (m *Alert_Internal) Reset() { 1199 *m = Alert_Internal{} 1200 if protoimpl.UnsafeEnabled { 1201 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[4] 1202 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 1203 ms.StoreMessageInfo(mi) 1204 } 1205 } 1206 1207 func (m *Alert_Internal) String() string { 1208 return protoimpl.X.MessageStringOf(m) 1209 } 1210 1211 func (*Alert_Internal) ProtoMessage() {} 1212 1213 func (m *Alert_Internal) ProtoReflect() preflect.Message { 1214 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[4] 1215 if protoimpl.UnsafeEnabled && m != nil { 1216 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 1217 if ms.LoadMessageInfo() == nil { 1218 ms.StoreMessageInfo(mi) 1219 } 1220 return ms 1221 } 1222 return mi.MessageOf(m) 1223 } 1224 1225 func (*Alert_Internal) GotenMessage() {} 1226 1227 // Deprecated, Use Alert_Internal.ProtoReflect.Descriptor instead. 1228 func (*Alert_Internal) Descriptor() ([]byte, []int) { 1229 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 3} 1230 } 1231 1232 func (m *Alert_Internal) Unmarshal(b []byte) error { 1233 return proto.Unmarshal(b, m) 1234 } 1235 1236 func (m *Alert_Internal) Marshal() ([]byte, error) { 1237 return proto.Marshal(m) 1238 } 1239 1240 func (m *Alert_Internal) MarshalJSON() ([]byte, error) { 1241 return protojson.MarshalOptions{}.Marshal(m) 1242 } 1243 1244 func (m *Alert_Internal) UnmarshalJSON(data []byte) error { 1245 return protojson.Unmarshal(data, m) 1246 } 1247 1248 func (m *Alert_Internal) GetAlertingLocation() rcommon.PolicySpec_ProcessingLocation { 1249 if m != nil { 1250 return m.AlertingLocation 1251 } 1252 return rcommon.PolicySpec_UNDEFINED 1253 } 1254 1255 func (m *Alert_Internal) SetAlertingLocation(fv rcommon.PolicySpec_ProcessingLocation) { 1256 if m == nil { 1257 panic(fmt.Errorf("can't set %s on nil %s", "AlertingLocation", "Alert_Internal")) 1258 } 1259 m.AlertingLocation = fv 1260 } 1261 1262 // TimeSeries object matches single TsCondition.Spec.Query object 1263 // in parent TsCondition. It contains TimeSeries data points 1264 // at a time of violation, along with relevant information, like 1265 // thresholds specified in TsEntry. 1266 type Alert_TsInfo_TimeSeries struct { 1267 state protoimpl.MessageState 1268 sizeCache protoimpl.SizeCache 1269 unknownFields protoimpl.UnknownFields 1270 // Query name of the matching TsCondition.Spec.Query object 1271 QueryName string `protobuf:"bytes,1,opt,name=query_name,json=queryName,proto3" json:"query_name,omitempty"` 1272 // TimeSeries data values during violation start. They will 1273 // be outside of lower/upper thresholds range for THRESHOLD 1274 // type alerts. 1275 Values []float64 `protobuf:"fixed64,2,rep,packed,name=values,proto3" json:"values,omitempty"` 1276 // Corresponding detected anomaly values (square errors). Populated 1277 // for ANOMALY type of alerts. They will be larger than 1278 // anomaly threshold for ANOMALY type of alerts. 1279 Anomalies []float64 `protobuf:"fixed64,3,rep,packed,name=anomalies,proto3" json:"anomalies,omitempty"` 1280 // Upper threshold that was active during violation. 1281 // Populated for THRESHOLD type of alerts. 1282 UpperThreshold *rcommon.AlertingThreshold `protobuf:"bytes,4,opt,name=upper_threshold,json=upperThreshold,proto3" json:"upper_threshold,omitempty"` 1283 // Lower threshold that was active during violation. 1284 // Populated for THRESHOLD type of alerts. 1285 LowerThreshold *rcommon.AlertingThreshold `protobuf:"bytes,5,opt,name=lower_threshold,json=lowerThreshold,proto3" json:"lower_threshold,omitempty"` 1286 // Anomaly threshold that was active during violation. 1287 // Populated for ANOMALY type of alerts. 1288 AnomalyThreshold float64 `protobuf:"fixed64,7,opt,name=anomaly_threshold,json=anomalyThreshold,proto3" json:"anomaly_threshold,omitempty"` 1289 // Informs how long violation was active at the time 1290 // of raising alert. 1291 AfterDuration *durationpb.Duration `protobuf:"bytes,6,opt,name=after_duration,json=afterDuration,proto3" json:"after_duration,omitempty"` 1292 } 1293 1294 func (m *Alert_TsInfo_TimeSeries) Reset() { 1295 *m = Alert_TsInfo_TimeSeries{} 1296 if protoimpl.UnsafeEnabled { 1297 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[7] 1298 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 1299 ms.StoreMessageInfo(mi) 1300 } 1301 } 1302 1303 func (m *Alert_TsInfo_TimeSeries) String() string { 1304 return protoimpl.X.MessageStringOf(m) 1305 } 1306 1307 func (*Alert_TsInfo_TimeSeries) ProtoMessage() {} 1308 1309 func (m *Alert_TsInfo_TimeSeries) ProtoReflect() preflect.Message { 1310 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[7] 1311 if protoimpl.UnsafeEnabled && m != nil { 1312 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 1313 if ms.LoadMessageInfo() == nil { 1314 ms.StoreMessageInfo(mi) 1315 } 1316 return ms 1317 } 1318 return mi.MessageOf(m) 1319 } 1320 1321 func (*Alert_TsInfo_TimeSeries) GotenMessage() {} 1322 1323 // Deprecated, Use Alert_TsInfo_TimeSeries.ProtoReflect.Descriptor instead. 1324 func (*Alert_TsInfo_TimeSeries) Descriptor() ([]byte, []int) { 1325 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 0, 2} 1326 } 1327 1328 func (m *Alert_TsInfo_TimeSeries) Unmarshal(b []byte) error { 1329 return proto.Unmarshal(b, m) 1330 } 1331 1332 func (m *Alert_TsInfo_TimeSeries) Marshal() ([]byte, error) { 1333 return proto.Marshal(m) 1334 } 1335 1336 func (m *Alert_TsInfo_TimeSeries) MarshalJSON() ([]byte, error) { 1337 return protojson.MarshalOptions{}.Marshal(m) 1338 } 1339 1340 func (m *Alert_TsInfo_TimeSeries) UnmarshalJSON(data []byte) error { 1341 return protojson.Unmarshal(data, m) 1342 } 1343 1344 func (m *Alert_TsInfo_TimeSeries) GetQueryName() string { 1345 if m != nil { 1346 return m.QueryName 1347 } 1348 return "" 1349 } 1350 1351 func (m *Alert_TsInfo_TimeSeries) GetValues() []float64 { 1352 if m != nil { 1353 return m.Values 1354 } 1355 return nil 1356 } 1357 1358 func (m *Alert_TsInfo_TimeSeries) GetAnomalies() []float64 { 1359 if m != nil { 1360 return m.Anomalies 1361 } 1362 return nil 1363 } 1364 1365 func (m *Alert_TsInfo_TimeSeries) GetUpperThreshold() *rcommon.AlertingThreshold { 1366 if m != nil { 1367 return m.UpperThreshold 1368 } 1369 return nil 1370 } 1371 1372 func (m *Alert_TsInfo_TimeSeries) GetLowerThreshold() *rcommon.AlertingThreshold { 1373 if m != nil { 1374 return m.LowerThreshold 1375 } 1376 return nil 1377 } 1378 1379 func (m *Alert_TsInfo_TimeSeries) GetAnomalyThreshold() float64 { 1380 if m != nil { 1381 return m.AnomalyThreshold 1382 } 1383 return float64(0) 1384 } 1385 1386 func (m *Alert_TsInfo_TimeSeries) GetAfterDuration() *durationpb.Duration { 1387 if m != nil { 1388 return m.AfterDuration 1389 } 1390 return nil 1391 } 1392 1393 func (m *Alert_TsInfo_TimeSeries) SetQueryName(fv string) { 1394 if m == nil { 1395 panic(fmt.Errorf("can't set %s on nil %s", "QueryName", "Alert_TsInfo_TimeSeries")) 1396 } 1397 m.QueryName = fv 1398 } 1399 1400 func (m *Alert_TsInfo_TimeSeries) SetValues(fv []float64) { 1401 if m == nil { 1402 panic(fmt.Errorf("can't set %s on nil %s", "Values", "Alert_TsInfo_TimeSeries")) 1403 } 1404 m.Values = fv 1405 } 1406 1407 func (m *Alert_TsInfo_TimeSeries) SetAnomalies(fv []float64) { 1408 if m == nil { 1409 panic(fmt.Errorf("can't set %s on nil %s", "Anomalies", "Alert_TsInfo_TimeSeries")) 1410 } 1411 m.Anomalies = fv 1412 } 1413 1414 func (m *Alert_TsInfo_TimeSeries) SetUpperThreshold(fv *rcommon.AlertingThreshold) { 1415 if m == nil { 1416 panic(fmt.Errorf("can't set %s on nil %s", "UpperThreshold", "Alert_TsInfo_TimeSeries")) 1417 } 1418 m.UpperThreshold = fv 1419 } 1420 1421 func (m *Alert_TsInfo_TimeSeries) SetLowerThreshold(fv *rcommon.AlertingThreshold) { 1422 if m == nil { 1423 panic(fmt.Errorf("can't set %s on nil %s", "LowerThreshold", "Alert_TsInfo_TimeSeries")) 1424 } 1425 m.LowerThreshold = fv 1426 } 1427 1428 func (m *Alert_TsInfo_TimeSeries) SetAnomalyThreshold(fv float64) { 1429 if m == nil { 1430 panic(fmt.Errorf("can't set %s on nil %s", "AnomalyThreshold", "Alert_TsInfo_TimeSeries")) 1431 } 1432 m.AnomalyThreshold = fv 1433 } 1434 1435 func (m *Alert_TsInfo_TimeSeries) SetAfterDuration(fv *durationpb.Duration) { 1436 if m == nil { 1437 panic(fmt.Errorf("can't set %s on nil %s", "AfterDuration", "Alert_TsInfo_TimeSeries")) 1438 } 1439 m.AfterDuration = fv 1440 } 1441 1442 // Notification informs about pending notifications that must 1443 // be sent due to changes in Alert state. 1444 type Alert_State_Notification struct { 1445 state protoimpl.MessageState 1446 sizeCache protoimpl.SizeCache 1447 unknownFields protoimpl.UnknownFields 1448 // Kind informs what type of State has changed, and for which 1449 // we need to send notifications. 1450 Kind rcommon.NotificationChannelSpec_EventKind `protobuf:"varint,1,opt,name=kind,proto3,enum=ntt.alerting.v1.NotificationChannelSpec_EventKind" json:"kind,omitempty"` 1451 // Informs about list of channels to where notification 1452 // should be sent according to the corresponding kind. 1453 PendingChannels []*notification_channel.Reference `protobuf:"bytes,2,rep,customtype=Reference,name=pending_channels,json=pendingChannels,proto3" json:"pending_channels,omitempty"` 1454 } 1455 1456 func (m *Alert_State_Notification) Reset() { 1457 *m = Alert_State_Notification{} 1458 if protoimpl.UnsafeEnabled { 1459 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[9] 1460 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 1461 ms.StoreMessageInfo(mi) 1462 } 1463 } 1464 1465 func (m *Alert_State_Notification) String() string { 1466 return protoimpl.X.MessageStringOf(m) 1467 } 1468 1469 func (*Alert_State_Notification) ProtoMessage() {} 1470 1471 func (m *Alert_State_Notification) ProtoReflect() preflect.Message { 1472 mi := &edgelq_alerting_proto_v1_alert_proto_msgTypes[9] 1473 if protoimpl.UnsafeEnabled && m != nil { 1474 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(m)) 1475 if ms.LoadMessageInfo() == nil { 1476 ms.StoreMessageInfo(mi) 1477 } 1478 return ms 1479 } 1480 return mi.MessageOf(m) 1481 } 1482 1483 func (*Alert_State_Notification) GotenMessage() {} 1484 1485 // Deprecated, Use Alert_State_Notification.ProtoReflect.Descriptor instead. 1486 func (*Alert_State_Notification) Descriptor() ([]byte, []int) { 1487 return edgelq_alerting_proto_v1_alert_proto_rawDescGZIP(), []int{0, 2, 0} 1488 } 1489 1490 func (m *Alert_State_Notification) Unmarshal(b []byte) error { 1491 return proto.Unmarshal(b, m) 1492 } 1493 1494 func (m *Alert_State_Notification) Marshal() ([]byte, error) { 1495 return proto.Marshal(m) 1496 } 1497 1498 func (m *Alert_State_Notification) MarshalJSON() ([]byte, error) { 1499 return protojson.MarshalOptions{}.Marshal(m) 1500 } 1501 1502 func (m *Alert_State_Notification) UnmarshalJSON(data []byte) error { 1503 return protojson.Unmarshal(data, m) 1504 } 1505 1506 func (m *Alert_State_Notification) GetKind() rcommon.NotificationChannelSpec_EventKind { 1507 if m != nil { 1508 return m.Kind 1509 } 1510 return rcommon.NotificationChannelSpec_UNDEFINED 1511 } 1512 1513 func (m *Alert_State_Notification) GetPendingChannels() []*notification_channel.Reference { 1514 if m != nil { 1515 return m.PendingChannels 1516 } 1517 return nil 1518 } 1519 1520 func (m *Alert_State_Notification) SetKind(fv rcommon.NotificationChannelSpec_EventKind) { 1521 if m == nil { 1522 panic(fmt.Errorf("can't set %s on nil %s", "Kind", "Alert_State_Notification")) 1523 } 1524 m.Kind = fv 1525 } 1526 1527 func (m *Alert_State_Notification) SetPendingChannels(fv []*notification_channel.Reference) { 1528 if m == nil { 1529 panic(fmt.Errorf("can't set %s on nil %s", "PendingChannels", "Alert_State_Notification")) 1530 } 1531 m.PendingChannels = fv 1532 } 1533 1534 var edgelq_alerting_proto_v1_alert_proto preflect.FileDescriptor 1535 1536 var edgelq_alerting_proto_v1_alert_proto_rawDesc = []byte{ 1537 0x0a, 0x24, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x71, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 1538 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 1539 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 1540 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 1541 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 1542 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 1543 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 1544 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 1545 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2e, 0x70, 0x72, 1546 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 1547 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 1548 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 1549 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x70, 1550 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 1551 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 1552 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 1553 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x72, 1554 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x65, 0x64, 0x67, 1555 0x65, 0x6c, 0x71, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 1556 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1557 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 1558 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 1559 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 1560 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 1561 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 1562 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x65, 0x64, 0x67, 0x65, 1563 0x6c, 0x71, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 1564 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 1565 0x1a, 0x33, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x71, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 1566 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 1567 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x2e, 1568 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfa, 0x2f, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 1569 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xb2, 1570 0xda, 0x21, 0x09, 0x0a, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 1571 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 1572 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2e, 0x74, 0x79, 0x70, 1573 0x65, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 1574 0x61, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 1575 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x0b, 0x64, 1576 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x6c, 1577 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 1578 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x74, 0x65, 0x6e, 0x2e, 0x74, 0x79, 1579 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 1580 0x63, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 1581 0x75, 0x72, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 1582 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 1583 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x73, 1584 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x74, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 1585 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 1586 0x32, 0x1e, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 1587 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 1588 0x48, 0x00, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x05, 0x73, 1589 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, 0x74, 0x74, 1590 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 1591 0x72, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0xca, 0xc6, 0x27, 0x04, 0x62, 0x02, 1592 0x08, 0x01, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x69, 0x6e, 0x74, 1593 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x74, 1594 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 1595 0x65, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x04, 0xf0, 0xd9, 1596 0x21, 0x01, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x1a, 0xf8, 0x08, 0x0a, 1597 0x06, 0x54, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 1598 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 1599 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x73, 1600 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xca, 0xc6, 0x27, 0x04, 0x3a, 1601 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x61, 0x6e, 0x6f, 1602 0x6d, 0x61, 0x6c, 0x79, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, 1603 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 1604 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 1605 0x6e, 0x52, 0x11, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 1606 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6b, 1607 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 1608 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79, 1609 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 1610 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x0e, 1611 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 1612 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 1613 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 1614 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 1615 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 1616 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 1617 0x54, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 1618 0x72, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 1619 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 1620 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x73, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 1621 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 1622 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 1623 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 1624 0x2e, 0x54, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 1625 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 1626 0x79, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 1627 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x49, 0x0a, 1628 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 1629 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 1630 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x54, 0x73, 0x49, 0x6e, 0x66, 1631 0x6f, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x74, 0x69, 1632 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x45, 0x0a, 0x17, 0x43, 0x6f, 0x6d, 0x6d, 1633 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 1634 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 1635 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 1636 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 1637 0x47, 0x0a, 0x19, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 1638 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 1639 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 1640 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 1641 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xf9, 0x02, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 1642 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 1643 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xca, 0xc6, 0x27, 1644 0x09, 0x2a, 0x07, 0x3a, 0x03, 0x08, 0x80, 0x02, 0x68, 0x01, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 1645 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 1646 0x02, 0x20, 0x03, 0x28, 0x01, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1c, 0x0a, 1647 0x09, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x01, 1648 0x52, 0x09, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x69, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x75, 1649 0x70, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 1650 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 1651 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 1652 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x0e, 0x75, 0x70, 0x70, 0x65, 0x72, 0x54, 1653 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x4b, 0x0a, 0x0f, 0x6c, 0x6f, 0x77, 0x65, 1654 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 1655 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 1656 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 1657 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52, 0x0e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 1658 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 1659 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 1660 0x52, 0x10, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 1661 0x6c, 0x64, 0x12, 0x40, 0x0a, 0x0e, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x72, 0x61, 1662 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 1663 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 1664 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x61, 0x66, 0x74, 0x65, 0x72, 0x44, 0x75, 0x72, 0x61, 1665 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 1666 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 1667 0x4e, 0x4f, 0x4d, 0x41, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x48, 0x52, 0x45, 1668 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x02, 0x1a, 0x9b, 0x02, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x49, 1669 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 1670 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4b, 1671 0x65, 0x79, 0x12, 0x21, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 1672 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x08, 0x6c, 0x6f, 0x67, 1673 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x65, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 1674 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 1675 0x32, 0x33, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 1676 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 1677 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 1678 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 1679 0x6d, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 1680 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 1681 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 1682 0x67, 0x1a, 0x42, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x6f, 0x67, 0x4c, 0x61, 1683 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 1684 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 1685 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 1686 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa1, 0x0d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 1687 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 1688 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x46, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, 0x0a, 1689 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 1690 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 1691 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 1692 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 1693 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 1694 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 1695 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x64, 1696 0x0a, 0x15, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 1697 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 1698 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 1699 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 1700 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x14, 1701 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 1702 0x75, 0x73, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x10, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 1703 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 1704 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 1705 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x73, 0x63, 1706 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x08, 0xca, 0xc6, 1707 0x27, 0x04, 0x3a, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 1708 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x63, 0x0a, 0x17, 0x61, 0x69, 0x5f, 0x61, 0x67, 1709 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 1710 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 1711 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x65, 0x72, 0x74, 1712 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x69, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 1713 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x14, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 1714 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x65, 0x0a, 0x1f, 1715 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 1716 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 1717 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 1718 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 1719 0x70, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x1a, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 1720 0x4c, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 1721 0x69, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 1722 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 1723 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x69, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 1724 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 1725 0x61, 0x69, 0x5f, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 1726 0x72, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x69, 0x52, 0x65, 0x6d, 0x65, 1727 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x67, 0x12, 0x5e, 0x0a, 0x0e, 0x61, 0x69, 1728 0x5f, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 1729 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 1730 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 1731 0x41, 0x49, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 1732 0x52, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x61, 0x69, 0x52, 1733 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6a, 0x0a, 0x17, 0x6f, 0x70, 1734 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 1735 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6e, 0x74, 1736 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 1737 0x65, 0x72, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 1738 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 1739 0x15, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 1740 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x66, 0x0a, 0x1f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 1741 0x6f, 0x72, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 1742 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 1743 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 1744 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x04, 0xf0, 0xd9, 0x21, 1745 0x01, 0x52, 0x1b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x53, 1746 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 1747 0x0a, 0x0e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 1748 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 1749 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 1750 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 1751 0x28, 0x08, 0x42, 0x04, 0xf0, 0xd9, 0x21, 0x01, 0x52, 0x12, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 1752 0x63, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x1a, 0xa0, 0x01, 0x0a, 1753 0x0c, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 1754 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6e, 0x74, 1755 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 1756 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 1757 0x6c, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x52, 1758 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 1759 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 1760 0x1d, 0xb2, 0xda, 0x21, 0x19, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 1761 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0x04, 0x52, 0x0f, 1762 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x22, 1763 0xef, 0x01, 0x0a, 0x0f, 0x41, 0x69, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 1764 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x49, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 1765 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x4c, 0x56, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 1766 0x0a, 0x14, 0x41, 0x49, 0x5f, 0x41, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x41, 1767 0x4e, 0x44, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x49, 0x5f, 0x45, 1768 0x53, 0x43, 0x41, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x50, 0x45, 0x52, 1769 0x41, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x49, 0x5f, 0x49, 0x47, 0x4e, 1770 0x4f, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 1771 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x49, 0x5f, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x5f, 1772 0x43, 0x4e, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x41, 1773 0x49, 0x5f, 0x52, 0x45, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 1774 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x49, 0x5f, 0x52, 1775 0x45, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 1776 0x56, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x49, 0x5f, 0x52, 0x45, 0x4d, 0x45, 1777 0x44, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 1778 0x07, 0x22, 0xac, 0x01, 0x0a, 0x15, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x61, 1779 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 1780 0x50, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x4c, 0x56, 0x45, 0x44, 0x10, 0x00, 1781 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x5f, 0x41, 0x57, 0x41, 0x49, 0x54, 0x49, 0x4e, 0x47, 0x5f, 1782 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 1783 0x5f, 0x41, 0x43, 0x4b, 0x4e, 0x4f, 0x57, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 1784 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x5f, 1785 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4f, 1786 0x50, 0x5f, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x5f, 0x43, 0x4e, 0x44, 0x5f, 0x45, 0x4e, 0x54, 1787 0x52, 0x59, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x4d, 0x45, 0x44, 1788 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x05, 1789 0x22, 0x37, 0x0a, 0x0f, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 1790 0x76, 0x65, 0x6c, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 1791 0x08, 0x41, 0x49, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 1792 0x50, 0x45, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x1a, 0x67, 0x0a, 0x08, 0x49, 0x6e, 0x74, 1793 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x5b, 0x0a, 0x11, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 1794 0x67, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 1795 0x32, 0x2e, 0x2e, 0x6e, 0x74, 0x74, 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 1796 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x50, 0x72, 1797 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 1798 0x52, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 1799 0x6f, 0x6e, 0x3a, 0x85, 0x13, 0xea, 0x41, 0xe1, 0x01, 0x0a, 0x19, 0x61, 0x6c, 0x65, 0x72, 0x74, 1800 0x69, 0x6e, 0x67, 0x2e, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x71, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 1801 0x6c, 0x65, 0x72, 0x74, 0x12, 0x60, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 1802 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 1803 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2f, 0x74, 0x73, 0x43, 0x6f, 0x6e, 1804 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 1805 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 1806 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x7b, 1807 0x61, 0x6c, 0x65, 0x72, 0x74, 0x7d, 0x12, 0x62, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 1808 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 1809 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 1810 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 1811 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 1812 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 1813 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x7d, 0x92, 0xd9, 0x21, 0xae, 0x0b, 0x0a, 1814 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x12, 0x06, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x1a, 1815 0x0b, 0x54, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x0c, 0x4c, 0x6f, 1816 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x18, 0x67, 0x6f, 0x74, 0x65, 1817 0x6e, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x52, 0x65, 1818 0x67, 0x69, 0x6f, 0x6e, 0x2a, 0x16, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 1819 0x5f, 0x2e, 0x3a, 0x2d, 0x5d, 0x7b, 0x31, 0x2c, 0x31, 0x32, 0x38, 0x7d, 0x38, 0x05, 0x42, 0xd5, 1820 0x02, 0x08, 0x02, 0x12, 0x0c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x04, 0x4e, 0x61, 0x6d, 1821 0x65, 0x12, 0x1c, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 1822 0x65, 0x12, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x12, 1823 0x2b, 0x0a, 0x16, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x6f, 1824 0x75, 0x72, 0x63, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x11, 0x41, 0x6c, 0x65, 0x72, 0x74, 1825 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x0f, 1826 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 1827 0x09, 0x49, 0x73, 0x20, 0x46, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x16, 0x73, 0x74, 1828 0x61, 0x74, 0x65, 0x2e, 0x65, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 1829 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 1830 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 1831 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 1832 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 1833 0x74, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 1834 0x12, 0x38, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 1835 0x6f, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 1836 0x65, 0x12, 0x17, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6e, 0x64, 1837 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x10, 0x73, 0x74, 1838 0x61, 0x74, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0a, 1839 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x0e, 0x73, 0x74, 1840 0x61, 0x74, 0x65, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x08, 0x45, 0x6e, 1841 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x42, 0xf4, 0x07, 0x08, 0x03, 0x12, 0x0c, 0x0a, 0x04, 0x6e, 1842 0x61, 0x6d, 0x65, 0x12, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x0c, 0x64, 0x69, 0x73, 1843 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0c, 0x44, 0x69, 0x73, 0x70, 0x6c, 1844 0x61, 0x79, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x65, 0x72, 0x74, 1845 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x41, 0x6c, 1846 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 1847 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0c, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 1848 0x74, 0x79, 0x70, 0x65, 0x12, 0x15, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 1849 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x1b, 0x74, 1850 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x5f, 0x77, 1851 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x2c, 0x41, 0x6c, 0x65, 0x72, 1852 0x74, 0x20, 0x61, 0x6e, 0x6f, 0x6d, 0x61, 0x6c, 0x79, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 1853 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, 1854 0x65, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x14, 0x74, 0x73, 0x5f, 0x69, 1855 0x6e, 0x66, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 1856 0x12, 0x12, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x20, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x20, 0x74, 1857 0x79, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x16, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 1858 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x14, 1859 0x41, 0x6c, 0x65, 0x72, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x74, 1860 0x79, 0x70, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x1c, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 1861 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6c, 0x61, 1862 0x62, 0x65, 0x6c, 0x73, 0x12, 0x13, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x20, 0x6d, 0x65, 0x74, 0x72, 1863 0x69, 0x63, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x37, 0x0a, 0x1e, 0x74, 0x73, 0x5f, 1864 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 1865 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x15, 0x41, 0x6c, 0x65, 1866 0x72, 0x74, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65, 1867 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x13, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x74, 0x69, 1868 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1b, 0x41, 0x6c, 0x65, 0x72, 0x74, 1869 0x20, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 1870 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x12, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, 1871 0x66, 0x6f, 0x2e, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x1a, 0x41, 0x6c, 1872 0x65, 0x72, 0x74, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 1873 0x6f, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x1a, 0x6c, 0x6f, 0x67, 0x5f, 1874 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 1875 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x10, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x20, 0x6c, 0x6f, 1876 0x67, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2d, 0x0a, 0x16, 0x6c, 0x6f, 0x67, 0x5f, 1877 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 1878 0x6f, 0x67, 0x12, 0x13, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x20, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 1879 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x67, 0x12, 0x1c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 1880 0x2e, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x09, 0x49, 0x73, 0x20, 0x46, 1881 0x69, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x65, 1882 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 1883 0x10, 0x45, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x65, 0x76, 0x65, 1884 0x6c, 0x12, 0x38, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x61, 0x69, 0x5f, 0x61, 0x67, 1885 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 1886 0x74, 0x65, 0x12, 0x17, 0x41, 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x68, 0x61, 0x6e, 1887 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x1e, 0x73, 1888 0x74, 0x61, 0x74, 0x65, 0x2e, 0x61, 0x69, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 1889 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x41, 1890 0x49, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x73, 1891 0x68, 0x6f, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x30, 0x0a, 1892 0x18, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x61, 0x69, 0x5f, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 1893 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x72, 0x67, 0x12, 0x14, 0x41, 0x49, 0x20, 0x41, 0x67, 1894 0x65, 0x6e, 0x74, 0x20, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 1895 0x38, 0x0a, 0x1d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 1896 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 1897 0x12, 0x17, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 1898 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x14, 0x73, 0x74, 0x61, 1899 0x74, 0x65, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 1900 0x73, 0x12, 0x0e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x65, 1901 0x73, 0x12, 0x1e, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 1902 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x54, 0x69, 0x6d, 1903 0x65, 0x12, 0x1a, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x65, 0x6e, 0x64, 0x5f, 0x74, 1904 0x69, 0x6d, 0x65, 0x12, 0x08, 0x45, 0x6e, 0x64, 0x20, 0x54, 0x69, 0x6d, 0x65, 0xb2, 0xdf, 0x21, 1905 0x83, 0x05, 0x0a, 0xe3, 0x04, 0x0a, 0xae, 0x01, 0x0a, 0x17, 0x62, 0x79, 0x53, 0x74, 0x61, 0x72, 1906 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 1907 0x74, 0x12, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 1908 0x69, 0x6d, 0x65, 0x1a, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 1909 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 1910 0x2f, 0x2d, 0x2f, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 1911 0x2d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 1912 0x74, 0x73, 0x2f, 0x2d, 0x1a, 0x40, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 1913 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 1914 0x73, 0x2f, 0x2d, 0x2f, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 1915 0x73, 0x2f, 0x2d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2d, 0x2f, 0x61, 0x6c, 1916 0x65, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x0a, 0xe7, 0x02, 0x0a, 0x16, 0x62, 0x79, 0x53, 0x74, 0x61, 1917 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 1918 0x79, 0x12, 0x10, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 1919 0x69, 0x6d, 0x65, 0x1a, 0x46, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 1920 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 1921 0x2f, 0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2f, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x64, 1922 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 1923 0x2f, 0x2d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x1a, 0x47, 0x70, 0x72, 0x6f, 1924 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 1925 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 1926 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 1927 0x2d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 1928 0x74, 0x73, 0x2f, 0x2d, 0x1a, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 1929 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 1930 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2f, 0x74, 0x73, 0x43, 0x6f, 0x6e, 1931 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 1932 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2d, 1933 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x2d, 0x1a, 0x55, 0x70, 0x72, 0x6f, 0x6a, 0x65, 1934 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 1935 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x7d, 0x2f, 1936 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 1937 0x6f, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 1938 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2d, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x2d, 1939 0x12, 0x13, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x69, 0x73, 0x5f, 0x66, 0x69, 0x72, 1940 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x31, 0x0a, 0x16, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 1941 0x67, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 1942 0x17, 0x62, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x49, 1943 0x6e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x19, 0x73, 0x74, 0x61, 0x74, 1944 0x65, 0x2e, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 1945 0x6c, 0x65, 0x74, 0x65, 0x64, 0xda, 0x94, 0x23, 0x02, 0x08, 0x01, 0xe2, 0xde, 0x21, 0x02, 0x08, 1946 0x02, 0xc2, 0x85, 0x2c, 0x55, 0x22, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x0c, 0x64, 0x69, 0x73, 1947 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x07, 0x74, 0x73, 0x5f, 0x69, 0x6e, 1948 0x66, 0x6f, 0x22, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x11, 0x61, 0x6c, 1949 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2a, 1950 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 1951 0x42, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x06, 0x0a, 0x04, 0x69, 0x6e, 1952 0x66, 0x6f, 0x42, 0xf6, 0x01, 0xe8, 0xde, 0x21, 0x01, 0xd2, 0xff, 0xd0, 0x02, 0x41, 0x0a, 0x0b, 1953 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x67, 0x69, 0x74, 1954 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x77, 0x61, 0x6e, 1955 0x2f, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x71, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 1956 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0xa2, 1957 0x80, 0xd1, 0x02, 0x43, 0x0a, 0x0c, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 1958 0x73, 0x73, 0x12, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 1959 0x6c, 0x6f, 0x75, 0x64, 0x77, 0x61, 0x6e, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x71, 0x2f, 0x61, 1960 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2f, 0x76, 1961 0x31, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x74, 0x74, 1962 0x2e, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x31, 0x42, 1963 0x0a, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 1964 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x77, 1965 0x61, 0x6e, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x6c, 0x71, 0x2f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 1966 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 1967 0x61, 0x6c, 0x65, 0x72, 0x74, 0x3b, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 1968 0x74, 0x6f, 0x33, 1969 } 1970 1971 var ( 1972 edgelq_alerting_proto_v1_alert_proto_rawDescOnce sync.Once 1973 edgelq_alerting_proto_v1_alert_proto_rawDescData = edgelq_alerting_proto_v1_alert_proto_rawDesc 1974 ) 1975 1976 func edgelq_alerting_proto_v1_alert_proto_rawDescGZIP() []byte { 1977 edgelq_alerting_proto_v1_alert_proto_rawDescOnce.Do(func() { 1978 edgelq_alerting_proto_v1_alert_proto_rawDescData = protoimpl.X.CompressGZIP(edgelq_alerting_proto_v1_alert_proto_rawDescData) 1979 }) 1980 return edgelq_alerting_proto_v1_alert_proto_rawDescData 1981 } 1982 1983 var edgelq_alerting_proto_v1_alert_proto_enumTypes = make([]protoimpl.EnumInfo, 4) 1984 var edgelq_alerting_proto_v1_alert_proto_msgTypes = make([]protoimpl.MessageInfo, 10) 1985 var edgelq_alerting_proto_v1_alert_proto_goTypes = []interface{}{ 1986 (Alert_TsInfo_Type)(0), // 0: ntt.alerting.v1.Alert_TsInfo_Type 1987 (Alert_State_AiHandlingState)(0), // 1: ntt.alerting.v1.Alert_State_AiHandlingState 1988 (Alert_State_OperatorHandlingState)(0), // 2: ntt.alerting.v1.Alert_State_OperatorHandlingState 1989 (Alert_State_EscalationLevel)(0), // 3: ntt.alerting.v1.Alert_State_EscalationLevel 1990 (*Alert)(nil), // 4: ntt.alerting.v1.Alert 1991 (*Alert_TsInfo)(nil), // 5: ntt.alerting.v1.Alert.TsInfo 1992 (*Alert_LogInfo)(nil), // 6: ntt.alerting.v1.Alert.LogInfo 1993 (*Alert_State)(nil), // 7: ntt.alerting.v1.Alert.State 1994 (*Alert_Internal)(nil), // 8: ntt.alerting.v1.Alert.Internal 1995 nil, // 9: ntt.alerting.v1.Alert.TsInfo.CommonMetricLabelsEntry 1996 nil, // 10: ntt.alerting.v1.Alert.TsInfo.CommonResourceLabelsEntry 1997 (*Alert_TsInfo_TimeSeries)(nil), // 11: ntt.alerting.v1.Alert.TsInfo.TimeSeries 1998 nil, // 12: ntt.alerting.v1.Alert.LogInfo.CommonLogLabelsEntry 1999 (*Alert_State_Notification)(nil), // 13: ntt.alerting.v1.Alert.State.Notification 2000 (*meta.Meta)(nil), // 14: goten.types.Meta 2001 (*meta.OwnerReference)(nil), // 15: goten.types.OwnerReference 2002 (*durationpb.Duration)(nil), // 16: google.protobuf.Duration 2003 (*rcommon.AlertingThreshold)(nil), // 17: ntt.alerting.v1.AlertingThreshold 2004 (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp 2005 (*rcommon.PolicySpec_AIAgentHandling_Remediation)(nil), // 19: ntt.alerting.v1.PolicySpec.AIAgentHandling.Remediation 2006 (rcommon.NotificationChannelSpec_EventKind)(0), // 20: ntt.alerting.v1.NotificationChannelSpec_EventKind 2007 (rcommon.PolicySpec_ProcessingLocation)(0), // 21: ntt.alerting.v1.PolicySpec_ProcessingLocation 2008 } 2009 var edgelq_alerting_proto_v1_alert_proto_depIdxs = []int32{ 2010 14, // 0: ntt.alerting.v1.Alert.metadata:type_name -> goten.types.Meta 2011 15, // 1: ntt.alerting.v1.Alert.alerting_resource:type_name -> goten.types.OwnerReference 2012 5, // 2: ntt.alerting.v1.Alert.ts_info:type_name -> ntt.alerting.v1.Alert.TsInfo 2013 6, // 3: ntt.alerting.v1.Alert.log_info:type_name -> ntt.alerting.v1.Alert.LogInfo 2014 7, // 4: ntt.alerting.v1.Alert.state:type_name -> ntt.alerting.v1.Alert.State 2015 8, // 5: ntt.alerting.v1.Alert.internal:type_name -> ntt.alerting.v1.Alert.Internal 2016 0, // 6: ntt.alerting.v1.Alert.TsInfo.type:type_name -> ntt.alerting.v1.Alert_TsInfo_Type 2017 16, // 7: ntt.alerting.v1.Alert.TsInfo.anomaly_window_size:type_name -> google.protobuf.Duration 2018 9, // 8: ntt.alerting.v1.Alert.TsInfo.common_metric_labels:type_name -> ntt.alerting.v1.Alert.TsInfo.CommonMetricLabelsEntry 2019 10, // 9: ntt.alerting.v1.Alert.TsInfo.common_resource_labels:type_name -> ntt.alerting.v1.Alert.TsInfo.CommonResourceLabelsEntry 2020 11, // 10: ntt.alerting.v1.Alert.TsInfo.time_series:type_name -> ntt.alerting.v1.Alert.TsInfo.TimeSeries 2021 12, // 11: ntt.alerting.v1.Alert.LogInfo.common_log_labels:type_name -> ntt.alerting.v1.Alert.LogInfo.CommonLogLabelsEntry 2022 18, // 12: ntt.alerting.v1.Alert.State.start_time:type_name -> google.protobuf.Timestamp 2023 18, // 13: ntt.alerting.v1.Alert.State.end_time:type_name -> google.protobuf.Timestamp 2024 13, // 14: ntt.alerting.v1.Alert.State.notification_statuses:type_name -> ntt.alerting.v1.Alert.State.Notification 2025 3, // 15: ntt.alerting.v1.Alert.State.escalation_level:type_name -> ntt.alerting.v1.Alert_State_EscalationLevel 2026 1, // 16: ntt.alerting.v1.Alert.State.ai_agent_handling_state:type_name -> ntt.alerting.v1.Alert_State_AiHandlingState 2027 18, // 17: ntt.alerting.v1.Alert.State.ai_agent_last_state_change_time:type_name -> google.protobuf.Timestamp 2028 19, // 18: ntt.alerting.v1.Alert.State.ai_remediation:type_name -> ntt.alerting.v1.PolicySpec.AIAgentHandling.Remediation 2029 2, // 19: ntt.alerting.v1.Alert.State.operator_handling_state:type_name -> ntt.alerting.v1.Alert_State_OperatorHandlingState 2030 18, // 20: ntt.alerting.v1.Alert.State.operator_last_state_change_time:type_name -> google.protobuf.Timestamp 2031 21, // 21: ntt.alerting.v1.Alert.Internal.alerting_location:type_name -> ntt.alerting.v1.PolicySpec_ProcessingLocation 2032 17, // 22: ntt.alerting.v1.Alert.TsInfo.TimeSeries.upper_threshold:type_name -> ntt.alerting.v1.AlertingThreshold 2033 17, // 23: ntt.alerting.v1.Alert.TsInfo.TimeSeries.lower_threshold:type_name -> ntt.alerting.v1.AlertingThreshold 2034 16, // 24: ntt.alerting.v1.Alert.TsInfo.TimeSeries.after_duration:type_name -> google.protobuf.Duration 2035 20, // 25: ntt.alerting.v1.Alert.State.Notification.kind:type_name -> ntt.alerting.v1.NotificationChannelSpec_EventKind 2036 26, // [26:26] is the sub-list for method output_type 2037 26, // [26:26] is the sub-list for method input_type 2038 26, // [26:26] is the sub-list for extension type_name 2039 26, // [26:26] is the sub-list for extension extendee 2040 0, // [0:26] is the sub-list for field type_name 2041 } 2042 2043 func init() { edgelq_alerting_proto_v1_alert_proto_init() } 2044 func edgelq_alerting_proto_v1_alert_proto_init() { 2045 if edgelq_alerting_proto_v1_alert_proto != nil { 2046 return 2047 } 2048 if !protoimpl.UnsafeEnabled { 2049 2050 edgelq_alerting_proto_v1_alert_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2051 switch v := v.(*Alert); i { 2052 case 0: 2053 return &v.state 2054 case 1: 2055 return &v.sizeCache 2056 case 2: 2057 return &v.unknownFields 2058 default: 2059 return nil 2060 } 2061 } 2062 edgelq_alerting_proto_v1_alert_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2063 switch v := v.(*Alert_TsInfo); i { 2064 case 0: 2065 return &v.state 2066 case 1: 2067 return &v.sizeCache 2068 case 2: 2069 return &v.unknownFields 2070 default: 2071 return nil 2072 } 2073 } 2074 edgelq_alerting_proto_v1_alert_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2075 switch v := v.(*Alert_LogInfo); i { 2076 case 0: 2077 return &v.state 2078 case 1: 2079 return &v.sizeCache 2080 case 2: 2081 return &v.unknownFields 2082 default: 2083 return nil 2084 } 2085 } 2086 edgelq_alerting_proto_v1_alert_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2087 switch v := v.(*Alert_State); i { 2088 case 0: 2089 return &v.state 2090 case 1: 2091 return &v.sizeCache 2092 case 2: 2093 return &v.unknownFields 2094 default: 2095 return nil 2096 } 2097 } 2098 edgelq_alerting_proto_v1_alert_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2099 switch v := v.(*Alert_Internal); i { 2100 case 0: 2101 return &v.state 2102 case 1: 2103 return &v.sizeCache 2104 case 2: 2105 return &v.unknownFields 2106 default: 2107 return nil 2108 } 2109 } 2110 edgelq_alerting_proto_v1_alert_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2111 switch v := v.(*Alert_TsInfo_TimeSeries); i { 2112 case 0: 2113 return &v.state 2114 case 1: 2115 return &v.sizeCache 2116 case 2: 2117 return &v.unknownFields 2118 default: 2119 return nil 2120 } 2121 } 2122 edgelq_alerting_proto_v1_alert_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2123 switch v := v.(*Alert_State_Notification); i { 2124 case 0: 2125 return &v.state 2126 case 1: 2127 return &v.sizeCache 2128 case 2: 2129 return &v.unknownFields 2130 default: 2131 return nil 2132 } 2133 } 2134 } 2135 2136 edgelq_alerting_proto_v1_alert_proto_msgTypes[0].OneofWrappers = []interface{}{ 2137 (*Alert_TsInfo_)(nil), 2138 (*Alert_LogInfo_)(nil), 2139 } 2140 type x struct{} 2141 out := protoimpl.TypeBuilder{ 2142 File: protoimpl.DescBuilder{ 2143 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 2144 RawDescriptor: edgelq_alerting_proto_v1_alert_proto_rawDesc, 2145 NumEnums: 4, 2146 NumMessages: 10, 2147 NumExtensions: 0, 2148 NumServices: 0, 2149 }, 2150 GoTypes: edgelq_alerting_proto_v1_alert_proto_goTypes, 2151 DependencyIndexes: edgelq_alerting_proto_v1_alert_proto_depIdxs, 2152 EnumInfos: edgelq_alerting_proto_v1_alert_proto_enumTypes, 2153 MessageInfos: edgelq_alerting_proto_v1_alert_proto_msgTypes, 2154 }.Build() 2155 edgelq_alerting_proto_v1_alert_proto = out.File 2156 edgelq_alerting_proto_v1_alert_proto_rawDesc = nil 2157 edgelq_alerting_proto_v1_alert_proto_goTypes = nil 2158 edgelq_alerting_proto_v1_alert_proto_depIdxs = nil 2159 }