diff --git a/api/v1/kube/kube_api.pb.go b/api/v1/kube/kube_api.pb.go index 767ed0b1..0a6d7c3c 100644 --- a/api/v1/kube/kube_api.pb.go +++ b/api/v1/kube/kube_api.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 -// protoc v4.24.3 +// protoc-gen-go v1.35.2 +// protoc v5.29.0 // source: api/v1/kube/kube_api.proto package v1 @@ -28,11 +28,9 @@ type GetClusterInfoRequest struct { func (x *GetClusterInfoRequest) Reset() { *x = GetClusterInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetClusterInfoRequest) String() string { @@ -43,7 +41,7 @@ func (*GetClusterInfoRequest) ProtoMessage() {} func (x *GetClusterInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -69,11 +67,9 @@ type GetClusterInfoResponse struct { func (x *GetClusterInfoResponse) Reset() { *x = GetClusterInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetClusterInfoResponse) String() string { @@ -84,7 +80,7 @@ func (*GetClusterInfoResponse) ProtoMessage() {} func (x *GetClusterInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -123,11 +119,9 @@ type GetIPInfoRequest struct { func (x *GetIPInfoRequest) Reset() { *x = GetIPInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetIPInfoRequest) String() string { @@ -138,7 +132,7 @@ func (*GetIPInfoRequest) ProtoMessage() {} func (x *GetIPInfoRequest) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -170,11 +164,9 @@ type GetIPInfoResponse struct { func (x *GetIPInfoResponse) Reset() { *x = GetIPInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetIPInfoResponse) String() string { @@ -185,7 +177,7 @@ func (*GetIPInfoResponse) ProtoMessage() {} func (x *GetIPInfoResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -224,11 +216,9 @@ type IPInfo struct { func (x *IPInfo) Reset() { *x = IPInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IPInfo) String() string { @@ -239,7 +229,7 @@ func (*IPInfo) ProtoMessage() {} func (x *IPInfo) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -320,11 +310,9 @@ type GetPodRequest struct { func (x *GetPodRequest) Reset() { *x = GetPodRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPodRequest) String() string { @@ -335,7 +323,7 @@ func (*GetPodRequest) ProtoMessage() {} func (x *GetPodRequest) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,11 +355,9 @@ type GetPodResponse struct { func (x *GetPodResponse) Reset() { *x = GetPodResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPodResponse) String() string { @@ -382,7 +368,7 @@ func (*GetPodResponse) ProtoMessage() {} func (x *GetPodResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -418,11 +404,9 @@ type Pod struct { func (x *Pod) Reset() { *x = Pod{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_kube_kube_api_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_kube_kube_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Pod) String() string { @@ -433,7 +417,7 @@ func (*Pod) ProtoMessage() {} func (x *Pod) ProtoReflect() protoreflect.Message { mi := &file_api_v1_kube_kube_api_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -565,7 +549,7 @@ func file_api_v1_kube_kube_api_proto_rawDescGZIP() []byte { } var file_api_v1_kube_kube_api_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_api_v1_kube_kube_api_proto_goTypes = []interface{}{ +var file_api_v1_kube_kube_api_proto_goTypes = []any{ (*GetClusterInfoRequest)(nil), // 0: kube.v1.GetClusterInfoRequest (*GetClusterInfoResponse)(nil), // 1: kube.v1.GetClusterInfoResponse (*GetIPInfoRequest)(nil), // 2: kube.v1.GetIPInfoRequest @@ -596,104 +580,6 @@ func file_api_v1_kube_kube_api_proto_init() { if File_api_v1_kube_kube_api_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_api_v1_kube_kube_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetClusterInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIPInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIPInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IPInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPodRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPodResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_kube_kube_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pod); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/v1/kube/kube_api_grpc.pb.go b/api/v1/kube/kube_api_grpc.pb.go index 29262b79..837a2400 100644 --- a/api/v1/kube/kube_api_grpc.pb.go +++ b/api/v1/kube/kube_api_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.3 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.0 // source: api/v1/kube/kube_api.proto package v1 @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( KubeAPI_GetClusterInfo_FullMethodName = "/kube.v1.KubeAPI/GetClusterInfo" @@ -42,8 +42,9 @@ func NewKubeAPIClient(cc grpc.ClientConnInterface) KubeAPIClient { } func (c *kubeAPIClient) GetClusterInfo(ctx context.Context, in *GetClusterInfoRequest, opts ...grpc.CallOption) (*GetClusterInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetClusterInfoResponse) - err := c.cc.Invoke(ctx, KubeAPI_GetClusterInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, KubeAPI_GetClusterInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -51,8 +52,9 @@ func (c *kubeAPIClient) GetClusterInfo(ctx context.Context, in *GetClusterInfoRe } func (c *kubeAPIClient) GetIPInfo(ctx context.Context, in *GetIPInfoRequest, opts ...grpc.CallOption) (*GetIPInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetIPInfoResponse) - err := c.cc.Invoke(ctx, KubeAPI_GetIPInfo_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, KubeAPI_GetIPInfo_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -60,8 +62,9 @@ func (c *kubeAPIClient) GetIPInfo(ctx context.Context, in *GetIPInfoRequest, opt } func (c *kubeAPIClient) GetPod(ctx context.Context, in *GetPodRequest, opts ...grpc.CallOption) (*GetPodResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetPodResponse) - err := c.cc.Invoke(ctx, KubeAPI_GetPod_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, KubeAPI_GetPod_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -70,16 +73,19 @@ func (c *kubeAPIClient) GetPod(ctx context.Context, in *GetPodRequest, opts ...g // KubeAPIServer is the server API for KubeAPI service. // All implementations should embed UnimplementedKubeAPIServer -// for forward compatibility +// for forward compatibility. type KubeAPIServer interface { GetClusterInfo(context.Context, *GetClusterInfoRequest) (*GetClusterInfoResponse, error) GetIPInfo(context.Context, *GetIPInfoRequest) (*GetIPInfoResponse, error) GetPod(context.Context, *GetPodRequest) (*GetPodResponse, error) } -// UnimplementedKubeAPIServer should be embedded to have forward compatible implementations. -type UnimplementedKubeAPIServer struct { -} +// UnimplementedKubeAPIServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedKubeAPIServer struct{} func (UnimplementedKubeAPIServer) GetClusterInfo(context.Context, *GetClusterInfoRequest) (*GetClusterInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetClusterInfo not implemented") @@ -90,6 +96,7 @@ func (UnimplementedKubeAPIServer) GetIPInfo(context.Context, *GetIPInfoRequest) func (UnimplementedKubeAPIServer) GetPod(context.Context, *GetPodRequest) (*GetPodResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPod not implemented") } +func (UnimplementedKubeAPIServer) testEmbeddedByValue() {} // UnsafeKubeAPIServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to KubeAPIServer will @@ -99,6 +106,13 @@ type UnsafeKubeAPIServer interface { } func RegisterKubeAPIServer(s grpc.ServiceRegistrar, srv KubeAPIServer) { + // If the following call pancis, it indicates UnimplementedKubeAPIServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&KubeAPI_ServiceDesc, srv) } diff --git a/api/v1/runtime/common.pb.go b/api/v1/runtime/common.pb.go index 1ffb856f..12711b43 100644 --- a/api/v1/runtime/common.pb.go +++ b/api/v1/runtime/common.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 -// protoc v4.24.3 +// protoc-gen-go v1.35.2 +// protoc v5.29.0 // source: api/v1/runtime/common.proto package v1 @@ -341,11 +341,9 @@ type Any struct { func (x *Any) Reset() { *x = Any{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Any) String() string { @@ -356,7 +354,7 @@ func (*Any) ProtoMessage() {} func (x *Any) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -405,11 +403,9 @@ type Exec struct { func (x *Exec) Reset() { *x = Exec{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Exec) String() string { @@ -420,7 +416,7 @@ func (*Exec) ProtoMessage() {} func (x *Exec) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -473,11 +469,9 @@ type File struct { func (x *File) Reset() { *x = File{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *File) String() string { @@ -488,7 +482,7 @@ func (*File) ProtoMessage() {} func (x *File) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -524,11 +518,9 @@ type Tuple struct { func (x *Tuple) Reset() { *x = Tuple{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Tuple) String() string { @@ -539,7 +531,7 @@ func (*Tuple) ProtoMessage() {} func (x *Tuple) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -602,11 +594,9 @@ type DNS struct { func (x *DNS) Reset() { *x = DNS{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DNS) String() string { @@ -617,7 +607,7 @@ func (*DNS) ProtoMessage() {} func (x *DNS) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -675,11 +665,9 @@ type DNSAnswers struct { func (x *DNSAnswers) Reset() { *x = DNSAnswers{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DNSAnswers) String() string { @@ -690,7 +678,7 @@ func (*DNSAnswers) ProtoMessage() {} func (x *DNSAnswers) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -759,11 +747,9 @@ type Stats struct { func (x *Stats) Reset() { *x = Stats{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Stats) String() string { @@ -774,7 +760,7 @@ func (*Stats) ProtoMessage() {} func (x *Stats) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -821,11 +807,9 @@ type LogEvent struct { func (x *LogEvent) Reset() { *x = LogEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LogEvent) String() string { @@ -836,7 +820,7 @@ func (*LogEvent) ProtoMessage() {} func (x *LogEvent) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -876,11 +860,9 @@ type SignatureEvent struct { func (x *SignatureEvent) Reset() { *x = SignatureEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SignatureEvent) String() string { @@ -891,7 +873,7 @@ func (*SignatureEvent) ProtoMessage() {} func (x *SignatureEvent) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -931,11 +913,9 @@ type SignatureMetadata struct { func (x *SignatureMetadata) Reset() { *x = SignatureMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SignatureMetadata) String() string { @@ -946,7 +926,7 @@ func (*SignatureMetadata) ProtoMessage() {} func (x *SignatureMetadata) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -990,11 +970,9 @@ type SignatureFinding struct { func (x *SignatureFinding) Reset() { *x = SignatureFinding{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SignatureFinding) String() string { @@ -1005,7 +983,7 @@ func (*SignatureFinding) ProtoMessage() {} func (x *SignatureFinding) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1082,11 +1060,9 @@ type StdioViaSocketFinding struct { func (x *StdioViaSocketFinding) Reset() { *x = StdioViaSocketFinding{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StdioViaSocketFinding) String() string { @@ -1097,7 +1073,7 @@ func (*StdioViaSocketFinding) ProtoMessage() {} func (x *StdioViaSocketFinding) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1143,11 +1119,9 @@ type TtyDetectedFinding struct { func (x *TtyDetectedFinding) Reset() { *x = TtyDetectedFinding{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TtyDetectedFinding) String() string { @@ -1158,7 +1132,7 @@ func (*TtyDetectedFinding) ProtoMessage() {} func (x *TtyDetectedFinding) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1195,11 +1169,9 @@ type SOCKS5DetectedFinding struct { func (x *SOCKS5DetectedFinding) Reset() { *x = SOCKS5DetectedFinding{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SOCKS5DetectedFinding) String() string { @@ -1210,7 +1182,7 @@ func (*SOCKS5DetectedFinding) ProtoMessage() {} func (x *SOCKS5DetectedFinding) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1280,11 +1252,9 @@ type SSHData struct { func (x *SSHData) Reset() { *x = SSHData{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SSHData) String() string { @@ -1295,7 +1265,7 @@ func (*SSHData) ProtoMessage() {} func (x *SSHData) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1360,11 +1330,9 @@ type Netflow struct { func (x *Netflow) Reset() { *x = Netflow{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Netflow) String() string { @@ -1375,7 +1343,7 @@ func (*Netflow) ProtoMessage() {} func (x *Netflow) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1503,11 +1471,9 @@ type NetflowDestination struct { func (x *NetflowDestination) Reset() { *x = NetflowDestination{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_common_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_common_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *NetflowDestination) String() string { @@ -1518,7 +1484,7 @@ func (*NetflowDestination) ProtoMessage() {} func (x *NetflowDestination) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_common_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1867,7 +1833,7 @@ func file_api_v1_runtime_common_proto_rawDescGZIP() []byte { var file_api_v1_runtime_common_proto_enumTypes = make([]protoimpl.EnumInfo, 6) var file_api_v1_runtime_common_proto_msgTypes = make([]protoimpl.MessageInfo, 17) -var file_api_v1_runtime_common_proto_goTypes = []interface{}{ +var file_api_v1_runtime_common_proto_goTypes = []any{ (FlowDirection)(0), // 0: runtime.v1.FlowDirection (StatsGroup)(0), // 1: runtime.v1.StatsGroup (SignatureEventID)(0), // 2: runtime.v1.SignatureEventID @@ -1922,213 +1888,7 @@ func file_api_v1_runtime_common_proto_init() { if File_api_v1_runtime_common_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_api_v1_runtime_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Any); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Exec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*File); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tuple); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DNS); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DNSAnswers); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Stats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignatureEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignatureMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SignatureFinding); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StdioViaSocketFinding); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TtyDetectedFinding); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SOCKS5DetectedFinding); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SSHData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Netflow); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_common_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetflowDestination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_api_v1_runtime_common_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_api_v1_runtime_common_proto_msgTypes[10].OneofWrappers = []any{ (*SignatureFinding_StdioViaSocket)(nil), (*SignatureFinding_TtyDetected)(nil), (*SignatureFinding_Socks5Detected)(nil), diff --git a/api/v1/runtime/runtime_agent_api.pb.go b/api/v1/runtime/runtime_agent_api.pb.go index 5d50a0ba..870f31a4 100644 --- a/api/v1/runtime/runtime_agent_api.pb.go +++ b/api/v1/runtime/runtime_agent_api.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.1 -// protoc v4.24.3 +// protoc-gen-go v1.35.2 +// protoc v5.29.0 // source: api/v1/runtime/runtime_agent_api.proto package v1 @@ -270,11 +270,9 @@ type GetConfigurationRequest struct { func (x *GetConfigurationRequest) Reset() { *x = GetConfigurationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigurationRequest) String() string { @@ -285,7 +283,7 @@ func (*GetConfigurationRequest) ProtoMessage() {} func (x *GetConfigurationRequest) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -347,11 +345,9 @@ type GetConfigurationResponse struct { func (x *GetConfigurationResponse) Reset() { *x = GetConfigurationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetConfigurationResponse) String() string { @@ -362,7 +358,7 @@ func (*GetConfigurationResponse) ProtoMessage() {} func (x *GetConfigurationResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -392,11 +388,9 @@ type Configuration struct { func (x *Configuration) Reset() { *x = Configuration{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Configuration) String() string { @@ -407,7 +401,7 @@ func (*Configuration) ProtoMessage() {} func (x *Configuration) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -427,21 +421,23 @@ type Event struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EventType EventType `protobuf:"varint,1,opt,name=event_type,json=eventType,proto3,enum=runtime.v1.EventType" json:"event_type,omitempty"` - Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Stored as unix timestamp in nanoseconds. - ProcessName string `protobuf:"bytes,3,opt,name=process_name,json=processName,proto3" json:"process_name,omitempty"` - Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` - PodName string `protobuf:"bytes,5,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` - ContainerName string `protobuf:"bytes,6,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` - WorkloadName string `protobuf:"bytes,7,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"` - WorkloadKind string `protobuf:"bytes,13,opt,name=workload_kind,json=workloadKind,proto3" json:"workload_kind,omitempty"` - PodUid string `protobuf:"bytes,8,opt,name=pod_uid,json=podUid,proto3" json:"pod_uid,omitempty"` - ContainerId string `protobuf:"bytes,9,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - CgroupId uint64 `protobuf:"varint,10,opt,name=cgroup_id,json=cgroupId,proto3" json:"cgroup_id,omitempty"` - HostPid uint32 `protobuf:"varint,11,opt,name=host_pid,json=hostPid,proto3" json:"host_pid,omitempty"` - WorkloadUid string `protobuf:"bytes,12,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"` - NodeName string `protobuf:"bytes,14,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` - ProcessIdentity *ProcessIdentity `protobuf:"bytes,15,opt,name=process_identity,json=processIdentity,proto3" json:"process_identity,omitempty"` + EventType EventType `protobuf:"varint,1,opt,name=event_type,json=eventType,proto3,enum=runtime.v1.EventType" json:"event_type,omitempty"` + Timestamp uint64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Stored as unix timestamp in nanoseconds. + ProcessName string `protobuf:"bytes,3,opt,name=process_name,json=processName,proto3" json:"process_name,omitempty"` + Namespace string `protobuf:"bytes,4,opt,name=namespace,proto3" json:"namespace,omitempty"` + PodName string `protobuf:"bytes,5,opt,name=pod_name,json=podName,proto3" json:"pod_name,omitempty"` + ContainerName string `protobuf:"bytes,6,opt,name=container_name,json=containerName,proto3" json:"container_name,omitempty"` + WorkloadName string `protobuf:"bytes,7,opt,name=workload_name,json=workloadName,proto3" json:"workload_name,omitempty"` + WorkloadKind string `protobuf:"bytes,13,opt,name=workload_kind,json=workloadKind,proto3" json:"workload_kind,omitempty"` + ObjectLabels map[string]string `protobuf:"bytes,29,rep,name=object_labels,json=objectLabels,proto3" json:"object_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ObjectAnnotations map[string]string `protobuf:"bytes,30,rep,name=object_annotations,json=objectAnnotations,proto3" json:"object_annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PodUid string `protobuf:"bytes,8,opt,name=pod_uid,json=podUid,proto3" json:"pod_uid,omitempty"` + ContainerId string `protobuf:"bytes,9,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + CgroupId uint64 `protobuf:"varint,10,opt,name=cgroup_id,json=cgroupId,proto3" json:"cgroup_id,omitempty"` + HostPid uint32 `protobuf:"varint,11,opt,name=host_pid,json=hostPid,proto3" json:"host_pid,omitempty"` + WorkloadUid string `protobuf:"bytes,12,opt,name=workload_uid,json=workloadUid,proto3" json:"workload_uid,omitempty"` + NodeName string `protobuf:"bytes,14,opt,name=node_name,json=nodeName,proto3" json:"node_name,omitempty"` + ProcessIdentity *ProcessIdentity `protobuf:"bytes,15,opt,name=process_identity,json=processIdentity,proto3" json:"process_identity,omitempty"` // Types that are assignable to Data: // // *Event_Exec @@ -457,11 +453,9 @@ type Event struct { func (x *Event) Reset() { *x = Event{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Event) String() string { @@ -472,7 +466,7 @@ func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -543,6 +537,20 @@ func (x *Event) GetWorkloadKind() string { return "" } +func (x *Event) GetObjectLabels() map[string]string { + if x != nil { + return x.ObjectLabels + } + return nil +} + +func (x *Event) GetObjectAnnotations() map[string]string { + if x != nil { + return x.ObjectAnnotations + } + return nil +} + func (x *Event) GetPodUid() string { if x != nil { return x.PodUid @@ -718,11 +726,9 @@ type ProcessIdentity struct { func (x *ProcessIdentity) Reset() { *x = ProcessIdentity{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProcessIdentity) String() string { @@ -733,7 +739,7 @@ func (*ProcessIdentity) ProtoMessage() {} func (x *ProcessIdentity) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -770,11 +776,9 @@ type WriteStreamResponse struct { func (x *WriteStreamResponse) Reset() { *x = WriteStreamResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *WriteStreamResponse) String() string { @@ -785,7 +789,7 @@ func (*WriteStreamResponse) ProtoMessage() {} func (x *WriteStreamResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -808,11 +812,9 @@ type SendLogsResponse struct { func (x *SendLogsResponse) Reset() { *x = SendLogsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SendLogsResponse) String() string { @@ -823,7 +825,7 @@ func (*SendLogsResponse) ProtoMessage() {} func (x *SendLogsResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -848,11 +850,9 @@ type ContainerStatsBatch struct { func (x *ContainerStatsBatch) Reset() { *x = ContainerStatsBatch{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ContainerStatsBatch) String() string { @@ -863,7 +863,7 @@ func (*ContainerStatsBatch) ProtoMessage() {} func (x *ContainerStatsBatch) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -902,11 +902,9 @@ type ContainerStats struct { func (x *ContainerStats) Reset() { *x = ContainerStats{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ContainerStats) String() string { @@ -917,7 +915,7 @@ func (*ContainerStats) ProtoMessage() {} func (x *ContainerStats) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1010,11 +1008,9 @@ type KubernetesDeltaItem struct { func (x *KubernetesDeltaItem) Reset() { *x = KubernetesDeltaItem{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubernetesDeltaItem) String() string { @@ -1025,7 +1021,7 @@ func (*KubernetesDeltaItem) ProtoMessage() {} func (x *KubernetesDeltaItem) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1141,11 +1137,9 @@ type KubernetesDeltaBatch struct { func (x *KubernetesDeltaBatch) Reset() { *x = KubernetesDeltaBatch{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubernetesDeltaBatch) String() string { @@ -1156,7 +1150,7 @@ func (*KubernetesDeltaBatch) ProtoMessage() {} func (x *KubernetesDeltaBatch) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1189,11 +1183,9 @@ type Container struct { func (x *Container) Reset() { *x = Container{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Container) String() string { @@ -1204,7 +1196,7 @@ func (*Container) ProtoMessage() {} func (x *Container) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1241,11 +1233,9 @@ type KubernetesDeltaIngestResponse struct { func (x *KubernetesDeltaIngestResponse) Reset() { *x = KubernetesDeltaIngestResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubernetesDeltaIngestResponse) String() string { @@ -1256,7 +1246,7 @@ func (*KubernetesDeltaIngestResponse) ProtoMessage() {} func (x *KubernetesDeltaIngestResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1291,11 +1281,9 @@ type ImageMetadata struct { func (x *ImageMetadata) Reset() { *x = ImageMetadata{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImageMetadata) String() string { @@ -1306,7 +1294,7 @@ func (*ImageMetadata) ProtoMessage() {} func (x *ImageMetadata) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1406,11 +1394,9 @@ type ImageMetadataIngestResponse struct { func (x *ImageMetadataIngestResponse) Reset() { *x = ImageMetadataIngestResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImageMetadataIngestResponse) String() string { @@ -1421,7 +1407,7 @@ func (*ImageMetadataIngestResponse) ProtoMessage() {} func (x *ImageMetadataIngestResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1446,11 +1432,9 @@ type GetSyncStateRequest struct { func (x *GetSyncStateRequest) Reset() { *x = GetSyncStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSyncStateRequest) String() string { @@ -1461,7 +1445,7 @@ func (*GetSyncStateRequest) ProtoMessage() {} func (x *GetSyncStateRequest) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1493,11 +1477,9 @@ type GetSyncStateResponse struct { func (x *GetSyncStateResponse) Reset() { *x = GetSyncStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSyncStateResponse) String() string { @@ -1508,7 +1490,7 @@ func (*GetSyncStateResponse) ProtoMessage() {} func (x *GetSyncStateResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1541,11 +1523,9 @@ type ImagesSyncState struct { func (x *ImagesSyncState) Reset() { *x = ImagesSyncState{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImagesSyncState) String() string { @@ -1556,7 +1536,7 @@ func (*ImagesSyncState) ProtoMessage() {} func (x *ImagesSyncState) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1600,11 +1580,9 @@ type Image struct { func (x *Image) Reset() { *x = Image{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Image) String() string { @@ -1615,7 +1593,7 @@ func (*Image) ProtoMessage() {} func (x *Image) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1683,11 +1661,9 @@ type UpdateSyncStateRequest struct { func (x *UpdateSyncStateRequest) Reset() { *x = UpdateSyncStateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateSyncStateRequest) String() string { @@ -1698,7 +1674,7 @@ func (*UpdateSyncStateRequest) ProtoMessage() {} func (x *UpdateSyncStateRequest) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1735,11 +1711,9 @@ type UpdateSyncStateResponse struct { func (x *UpdateSyncStateResponse) Reset() { *x = UpdateSyncStateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateSyncStateResponse) String() string { @@ -1750,7 +1724,7 @@ func (*UpdateSyncStateResponse) ProtoMessage() {} func (x *UpdateSyncStateResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1776,11 +1750,9 @@ type KubeBenchReport struct { func (x *KubeBenchReport) Reset() { *x = KubeBenchReport{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeBenchReport) String() string { @@ -1791,7 +1763,7 @@ func (*KubeBenchReport) ProtoMessage() {} func (x *KubeBenchReport) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1828,11 +1800,9 @@ type KubeBenchReportIngestResponse struct { func (x *KubeBenchReportIngestResponse) Reset() { *x = KubeBenchReportIngestResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeBenchReportIngestResponse) String() string { @@ -1843,7 +1813,7 @@ func (*KubeBenchReportIngestResponse) ProtoMessage() {} func (x *KubeBenchReportIngestResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1869,11 +1839,9 @@ type KubeBenchNode struct { func (x *KubeBenchNode) Reset() { *x = KubeBenchNode{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeBenchNode) String() string { @@ -1884,7 +1852,7 @@ func (*KubeBenchNode) ProtoMessage() {} func (x *KubeBenchNode) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1924,11 +1892,9 @@ type KubeBenchControls struct { func (x *KubeBenchControls) Reset() { *x = KubeBenchControls{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeBenchControls) String() string { @@ -1939,7 +1905,7 @@ func (*KubeBenchControls) ProtoMessage() {} func (x *KubeBenchControls) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1978,11 +1944,9 @@ type KubeBenchGroup struct { func (x *KubeBenchGroup) Reset() { *x = KubeBenchGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeBenchGroup) String() string { @@ -1993,7 +1957,7 @@ func (*KubeBenchGroup) ProtoMessage() {} func (x *KubeBenchGroup) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2028,11 +1992,9 @@ type KubeBenchCheck struct { func (x *KubeBenchCheck) Reset() { *x = KubeBenchCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeBenchCheck) String() string { @@ -2043,7 +2005,7 @@ func (*KubeBenchCheck) ProtoMessage() {} func (x *KubeBenchCheck) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2096,11 +2058,9 @@ type KubeLinterReport struct { func (x *KubeLinterReport) Reset() { *x = KubeLinterReport{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeLinterReport) String() string { @@ -2111,7 +2071,7 @@ func (*KubeLinterReport) ProtoMessage() {} func (x *KubeLinterReport) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2141,11 +2101,9 @@ type KubeLinterReportIngestResponse struct { func (x *KubeLinterReportIngestResponse) Reset() { *x = KubeLinterReportIngestResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeLinterReportIngestResponse) String() string { @@ -2156,7 +2114,7 @@ func (*KubeLinterReportIngestResponse) ProtoMessage() {} func (x *KubeLinterReportIngestResponse) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2183,11 +2141,9 @@ type KubeLinterCheck struct { func (x *KubeLinterCheck) Reset() { *x = KubeLinterCheck{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *KubeLinterCheck) String() string { @@ -2198,7 +2154,7 @@ func (*KubeLinterCheck) ProtoMessage() {} func (x *KubeLinterCheck) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2250,11 +2206,9 @@ type Process struct { func (x *Process) Reset() { *x = Process{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Process) String() string { @@ -2265,7 +2219,7 @@ func (*Process) ProtoMessage() {} func (x *Process) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2342,11 +2296,9 @@ type ProcessEvent struct { func (x *ProcessEvent) Reset() { *x = ProcessEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProcessEvent) String() string { @@ -2357,7 +2309,7 @@ func (*ProcessEvent) ProtoMessage() {} func (x *ProcessEvent) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2411,11 +2363,9 @@ type ProcessTreeEvent struct { func (x *ProcessTreeEvent) Reset() { *x = ProcessTreeEvent{} - if protoimpl.UnsafeEnabled { - mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ProcessTreeEvent) String() string { @@ -2426,7 +2376,7 @@ func (*ProcessTreeEvent) ProtoMessage() {} func (x *ProcessTreeEvent) ProtoReflect() protoreflect.Message { mi := &file_api_v1_runtime_runtime_agent_api_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2478,7 +2428,7 @@ var file_api_v1_runtime_runtime_agent_api_proto_rawDesc = []byte{ 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa5, 0x07, 0x0a, 0x05, 0x45, 0x76, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcf, 0x09, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, @@ -2497,399 +2447,417 @@ var file_api_v1_runtime_runtime_agent_api_proto_rawDesc = []byte{ 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, - 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x07, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, - 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x12, 0x26, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, - 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x4e, 0x53, 0x48, 0x00, 0x52, 0x03, 0x64, 0x6e, 0x73, 0x12, 0x26, 0x0a, - 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, - 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65, - 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x23, 0x0a, 0x03, - 0x61, 0x6e, 0x79, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, - 0x79, 0x12, 0x4d, 0x0a, 0x10, 0x73, 0x74, 0x64, 0x69, 0x6f, 0x5f, 0x76, 0x69, 0x61, 0x5f, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x64, 0x69, 0x6f, 0x56, 0x69, - 0x61, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, - 0x52, 0x0e, 0x73, 0x74, 0x64, 0x69, 0x6f, 0x56, 0x69, 0x61, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x27, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x53, 0x48, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x03, 0x73, 0x73, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x42, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, - 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x47, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9f, 0x02, 0x0a, 0x0e, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, - 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, - 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, - 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, - 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x5f, 0x75, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0xcd, 0x06, 0x0a, 0x13, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x3a, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, - 0x74, 0x65, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x1d, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x69, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x29, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, - 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x42, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, - 0x56, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x65, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, - 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, - 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x53, 0x70, 0x65, 0x63, 0x1a, 0x3f, 0x0a, 0x11, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x57, + 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x5f, 0x75, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x12, 0x19, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x50, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x69, 0x64, 0x12, 0x1b, + 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x10, 0x70, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x26, 0x0a, 0x04, 0x65, 0x78, 0x65, 0x63, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x48, 0x00, 0x52, 0x04, 0x65, 0x78, 0x65, 0x63, 0x12, 0x23, 0x0a, 0x03, 0x64, + 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x4e, 0x53, 0x48, 0x00, 0x52, 0x03, 0x64, 0x6e, 0x73, + 0x12, 0x26, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, + 0x48, 0x00, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x23, 0x0a, 0x03, 0x61, 0x6e, 0x79, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, + 0x03, 0x61, 0x6e, 0x79, 0x12, 0x4d, 0x0a, 0x10, 0x73, 0x74, 0x64, 0x69, 0x6f, 0x5f, 0x76, 0x69, + 0x61, 0x5f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x64, 0x69, + 0x6f, 0x56, 0x69, 0x61, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, 0x64, 0x69, 0x6f, 0x56, 0x69, 0x61, 0x53, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x03, 0x73, 0x73, 0x68, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x53, + 0x48, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x03, 0x73, 0x73, 0x68, 0x1a, 0x3f, 0x0a, 0x11, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, + 0x16, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x42, 0x0a, 0x0f, 0x50, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, + 0x15, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x13, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x69, 0x74, + 0x65, 0x6d, 0x73, 0x22, 0x9f, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, + 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x69, 0x6e, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6f, 0x64, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x70, 0x6f, 0x64, 0x55, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0xcd, 0x06, 0x0a, 0x13, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, + 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x3a, 0x0a, + 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, + 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, + 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x42, 0x0a, 0x11, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x10, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x12, + 0x28, 0x0a, 0x10, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, + 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x56, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, + 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, + 0x6d, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x12, 0x65, 0x0a, 0x12, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, + 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x3f, + 0x0a, 0x11, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x44, 0x0a, 0x16, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x14, 0x4b, - 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x35, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3e, 0x0a, 0x09, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x67, - 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x0d, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, - 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, - 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6f, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x69, 0x6c, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, - 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x73, 0x22, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x79, - 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x33, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x73, 0x22, 0x6e, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x53, 0x79, - 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x75, 0x6c, 0x6c, 0x5f, - 0x72, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x79, 0x6e, - 0x63, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x69, 0x6d, 0x61, - 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, - 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x63, 0x61, - 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x73, 0x63, 0x61, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x61, - 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x68, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, - 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x4b, - 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x39, - 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, - 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4b, 0x75, 0x62, 0x65, - 0x42, 0x65, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4b, 0x75, 0x62, - 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, - 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x69, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x4b, 0x75, - 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4d, 0x0a, 0x14, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, + 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x35, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, + 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3e, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, + 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x0d, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6f, 0x73, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x0c, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, + 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x1d, + 0x0a, 0x1b, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, + 0x73, 0x22, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x53, 0x79, 0x6e, + 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x22, 0x6e, + 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x66, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x22, 0xcf, + 0x01, 0x0a, 0x05, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x64, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x63, 0x61, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x68, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, + 0x6c, 0x6c, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, + 0x29, 0x0a, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, + 0x67, 0x65, 0x52, 0x06, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, + 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, + 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, + 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, + 0x64, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, + 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x55, 0x69, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, + 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x44, 0x0a, 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x42, + 0x65, 0x6e, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x32, 0x0a, 0x06, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x44, 0x0a, - 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, - 0x32, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, - 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x22, 0x67, 0x0a, 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x73, - 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, - 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x10, - 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x12, 0x33, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, - 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x0a, 0x0f, 0x4b, 0x75, 0x62, 0x65, 0x4c, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, - 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0xc7, 0x01, - 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x70, 0x69, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, - 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, - 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, - 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, - 0x78, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, - 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x07, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x10, 0x50, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x72, 0x65, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0xab, 0x02, 0x0a, 0x09, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x45, 0x58, 0x45, 0x43, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x10, 0x05, 0x12, - 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x4f, 0x4f, 0x4d, 0x10, 0x07, 0x12, 0x15, 0x0a, - 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x41, 0x47, 0x49, 0x43, 0x5f, 0x57, 0x52, 0x49, - 0x54, 0x45, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x49, - 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x54, 0x59, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x1a, - 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x44, 0x49, 0x4f, 0x5f, 0x56, 0x49, - 0x41, 0x5f, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0xe7, 0x07, 0x2a, 0x4d, 0x0a, 0x18, 0x4b, 0x75, 0x62, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, 0x41, - 0x44, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x0f, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, - 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x49, - 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4d, - 0x41, 0x47, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4d, 0x41, - 0x47, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, - 0x43, 0x41, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x76, 0x0a, 0x0d, 0x50, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, - 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x43, - 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x10, - 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4b, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, - 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x49, - 0x54, 0x10, 0x03, 0x32, 0xdc, 0x09, 0x0a, 0x17, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x12, - 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4b, 0x0a, 0x11, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x4c, 0x0a, - 0x0f, 0x4c, 0x6f, 0x67, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x12, 0x14, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, - 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x61, 0x0a, 0x19, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x4e, - 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x66, 0x6c, 0x6f, 0x77, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x12, 0x13, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x66, 0x6c, 0x6f, 0x77, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x5d, - 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, - 0x72, 0x65, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x53, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, - 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, - 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x6f, 0x0a, 0x1a, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, - 0x6c, 0x74, 0x61, 0x42, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x20, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x1a, 0x29, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, - 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x67, - 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, - 0x01, 0x12, 0x69, 0x0a, 0x15, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, - 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x72, 0x75, 0x6e, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0x67, 0x0a, + 0x0e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x10, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, + 0x20, 0x0a, 0x1e, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x64, 0x0a, 0x0f, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x22, 0xc7, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x70, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x54, 0x72, 0x65, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0xab, 0x02, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, + 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, + 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x4e, + 0x4e, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x43, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x43, 0x50, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x06, + 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, + 0x53, 0x5f, 0x4f, 0x4f, 0x4d, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x4d, 0x41, 0x47, 0x49, 0x43, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x08, 0x12, 0x13, + 0x0a, 0x0f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, + 0x45, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x54, 0x59, + 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x44, 0x49, 0x4f, 0x5f, 0x56, 0x49, 0x41, 0x5f, 0x53, 0x4f, 0x43, 0x4b, + 0x45, 0x54, 0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x53, + 0x48, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x09, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x59, + 0x10, 0xe7, 0x07, 0x2a, 0x4d, 0x0a, 0x18, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x10, + 0x0a, 0x0c, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, + 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x4c, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, + 0x10, 0x02, 0x2a, 0x90, 0x01, 0x0a, 0x0f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x63, 0x61, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, + 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x53, + 0x43, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x4e, + 0x45, 0x44, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x43, + 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x43, 0x41, + 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x76, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, + 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, + 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, + 0x52, 0x4b, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x10, 0x03, 0x32, 0xdc, 0x09, + 0x0a, 0x17, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x41, 0x50, 0x49, 0x12, 0x5f, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x11, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, + 0x11, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x4c, 0x0a, 0x0f, 0x4c, 0x6f, 0x67, 0x73, 0x57, + 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x14, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x61, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x12, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x4e, 0x0a, 0x12, 0x4e, 0x65, 0x74, 0x66, + 0x6c, 0x6f, 0x77, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x13, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x66, + 0x6c, 0x6f, 0x77, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x5d, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x54, 0x72, 0x65, 0x65, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, 0x53, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x79, + 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x0f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x22, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x1a, 0x4b, 0x75, + 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, + 0x44, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x29, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x29, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x13, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, - 0x65, 0x73, 0x74, 0x12, 0x19, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x27, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x15, 0x4b, 0x75, 0x62, - 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, - 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x1a, - 0x29, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, - 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x16, - 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x63, 0x61, 0x73, 0x74, 0x61, 0x69, 0x2f, 0x6b, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x64, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x69, 0x0a, 0x15, 0x4b, + 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x49, 0x6e, + 0x67, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x49, 0x74, 0x65, 0x6d, 0x1a, 0x29, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x44, 0x65, 0x6c, + 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x5b, 0x0a, 0x13, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x19, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x27, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x15, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, + 0x6e, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x65, 0x6e, 0x63, 0x68, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x16, 0x4b, 0x75, 0x62, 0x65, 0x4c, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, + 0x12, 0x1c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, + 0x62, 0x65, 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x2a, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, + 0x4c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x67, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2a, 0x5a, 0x28, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x61, 0x73, 0x74, 0x61, + 0x69, 0x2f, 0x6b, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2905,8 +2873,8 @@ func file_api_v1_runtime_runtime_agent_api_proto_rawDescGZIP() []byte { } var file_api_v1_runtime_runtime_agent_api_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_api_v1_runtime_runtime_agent_api_proto_msgTypes = make([]protoimpl.MessageInfo, 35) -var file_api_v1_runtime_runtime_agent_api_proto_goTypes = []interface{}{ +var file_api_v1_runtime_runtime_agent_api_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_api_v1_runtime_runtime_agent_api_proto_goTypes = []any{ (EventType)(0), // 0: runtime.v1.EventType (KubernetesDeltaItemEvent)(0), // 1: runtime.v1.KubernetesDeltaItemEvent (ImageScanStatus)(0), // 2: runtime.v1.ImageScanStatus @@ -2944,85 +2912,89 @@ var file_api_v1_runtime_runtime_agent_api_proto_goTypes = []interface{}{ (*Process)(nil), // 34: runtime.v1.Process (*ProcessEvent)(nil), // 35: runtime.v1.ProcessEvent (*ProcessTreeEvent)(nil), // 36: runtime.v1.ProcessTreeEvent - nil, // 37: runtime.v1.KubernetesDeltaItem.ObjectLabelsEntry - nil, // 38: runtime.v1.KubernetesDeltaItem.ObjectAnnotationsEntry - (*Exec)(nil), // 39: runtime.v1.Exec - (*DNS)(nil), // 40: runtime.v1.DNS - (*File)(nil), // 41: runtime.v1.File - (*Tuple)(nil), // 42: runtime.v1.Tuple - (*SignatureEvent)(nil), // 43: runtime.v1.SignatureEvent - (*Any)(nil), // 44: runtime.v1.Any - (*StdioViaSocketFinding)(nil), // 45: runtime.v1.StdioViaSocketFinding - (*SSHData)(nil), // 46: runtime.v1.SSHData - (*Stats)(nil), // 47: runtime.v1.Stats - (*timestamppb.Timestamp)(nil), // 48: google.protobuf.Timestamp - (*LogEvent)(nil), // 49: runtime.v1.LogEvent - (*Netflow)(nil), // 50: runtime.v1.Netflow + nil, // 37: runtime.v1.Event.ObjectLabelsEntry + nil, // 38: runtime.v1.Event.ObjectAnnotationsEntry + nil, // 39: runtime.v1.KubernetesDeltaItem.ObjectLabelsEntry + nil, // 40: runtime.v1.KubernetesDeltaItem.ObjectAnnotationsEntry + (*Exec)(nil), // 41: runtime.v1.Exec + (*DNS)(nil), // 42: runtime.v1.DNS + (*File)(nil), // 43: runtime.v1.File + (*Tuple)(nil), // 44: runtime.v1.Tuple + (*SignatureEvent)(nil), // 45: runtime.v1.SignatureEvent + (*Any)(nil), // 46: runtime.v1.Any + (*StdioViaSocketFinding)(nil), // 47: runtime.v1.StdioViaSocketFinding + (*SSHData)(nil), // 48: runtime.v1.SSHData + (*Stats)(nil), // 49: runtime.v1.Stats + (*timestamppb.Timestamp)(nil), // 50: google.protobuf.Timestamp + (*LogEvent)(nil), // 51: runtime.v1.LogEvent + (*Netflow)(nil), // 52: runtime.v1.Netflow } var file_api_v1_runtime_runtime_agent_api_proto_depIdxs = []int32{ 6, // 0: runtime.v1.GetConfigurationResponse.config:type_name -> runtime.v1.Configuration 0, // 1: runtime.v1.Event.event_type:type_name -> runtime.v1.EventType - 8, // 2: runtime.v1.Event.process_identity:type_name -> runtime.v1.ProcessIdentity - 39, // 3: runtime.v1.Event.exec:type_name -> runtime.v1.Exec - 40, // 4: runtime.v1.Event.dns:type_name -> runtime.v1.DNS - 41, // 5: runtime.v1.Event.file:type_name -> runtime.v1.File - 42, // 6: runtime.v1.Event.tuple:type_name -> runtime.v1.Tuple - 43, // 7: runtime.v1.Event.signature:type_name -> runtime.v1.SignatureEvent - 44, // 8: runtime.v1.Event.any:type_name -> runtime.v1.Any - 45, // 9: runtime.v1.Event.stdio_via_socket:type_name -> runtime.v1.StdioViaSocketFinding - 46, // 10: runtime.v1.Event.ssh:type_name -> runtime.v1.SSHData - 12, // 11: runtime.v1.ContainerStatsBatch.items:type_name -> runtime.v1.ContainerStats - 47, // 12: runtime.v1.ContainerStats.stats:type_name -> runtime.v1.Stats - 1, // 13: runtime.v1.KubernetesDeltaItem.event:type_name -> runtime.v1.KubernetesDeltaItemEvent - 48, // 14: runtime.v1.KubernetesDeltaItem.object_created_at:type_name -> google.protobuf.Timestamp - 15, // 15: runtime.v1.KubernetesDeltaItem.object_containers:type_name -> runtime.v1.Container - 37, // 16: runtime.v1.KubernetesDeltaItem.object_labels:type_name -> runtime.v1.KubernetesDeltaItem.ObjectLabelsEntry - 38, // 17: runtime.v1.KubernetesDeltaItem.object_annotations:type_name -> runtime.v1.KubernetesDeltaItem.ObjectAnnotationsEntry - 13, // 18: runtime.v1.KubernetesDeltaBatch.items:type_name -> runtime.v1.KubernetesDeltaItem - 48, // 19: runtime.v1.ImageMetadata.created_at:type_name -> google.protobuf.Timestamp - 21, // 20: runtime.v1.GetSyncStateResponse.images:type_name -> runtime.v1.ImagesSyncState - 22, // 21: runtime.v1.ImagesSyncState.images:type_name -> runtime.v1.Image - 2, // 22: runtime.v1.Image.scan_status:type_name -> runtime.v1.ImageScanStatus - 22, // 23: runtime.v1.UpdateSyncStateRequest.images:type_name -> runtime.v1.Image - 28, // 24: runtime.v1.KubeBenchReport.controls:type_name -> runtime.v1.KubeBenchControls - 27, // 25: runtime.v1.KubeBenchReport.node:type_name -> runtime.v1.KubeBenchNode - 29, // 26: runtime.v1.KubeBenchControls.groups:type_name -> runtime.v1.KubeBenchGroup - 30, // 27: runtime.v1.KubeBenchGroup.checks:type_name -> runtime.v1.KubeBenchCheck - 33, // 28: runtime.v1.KubeLinterReport.checks:type_name -> runtime.v1.KubeLinterCheck - 34, // 29: runtime.v1.ProcessEvent.process:type_name -> runtime.v1.Process - 3, // 30: runtime.v1.ProcessEvent.action:type_name -> runtime.v1.ProcessAction - 35, // 31: runtime.v1.ProcessTreeEvent.events:type_name -> runtime.v1.ProcessEvent - 4, // 32: runtime.v1.RuntimeSecurityAgentAPI.GetConfiguration:input_type -> runtime.v1.GetConfigurationRequest - 7, // 33: runtime.v1.RuntimeSecurityAgentAPI.EventsWriteStream:input_type -> runtime.v1.Event - 49, // 34: runtime.v1.RuntimeSecurityAgentAPI.LogsWriteStream:input_type -> runtime.v1.LogEvent - 11, // 35: runtime.v1.RuntimeSecurityAgentAPI.ContainerStatsWriteStream:input_type -> runtime.v1.ContainerStatsBatch - 50, // 36: runtime.v1.RuntimeSecurityAgentAPI.NetflowWriteStream:input_type -> runtime.v1.Netflow - 36, // 37: runtime.v1.RuntimeSecurityAgentAPI.ProcessEventsWriteStream:input_type -> runtime.v1.ProcessTreeEvent - 19, // 38: runtime.v1.RuntimeSecurityAgentAPI.GetSyncState:input_type -> runtime.v1.GetSyncStateRequest - 23, // 39: runtime.v1.RuntimeSecurityAgentAPI.UpdateSyncState:input_type -> runtime.v1.UpdateSyncStateRequest - 14, // 40: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaBatchIngest:input_type -> runtime.v1.KubernetesDeltaBatch - 13, // 41: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaIngest:input_type -> runtime.v1.KubernetesDeltaItem - 17, // 42: runtime.v1.RuntimeSecurityAgentAPI.ImageMetadataIngest:input_type -> runtime.v1.ImageMetadata - 25, // 43: runtime.v1.RuntimeSecurityAgentAPI.KubeBenchReportIngest:input_type -> runtime.v1.KubeBenchReport - 31, // 44: runtime.v1.RuntimeSecurityAgentAPI.KubeLinterReportIngest:input_type -> runtime.v1.KubeLinterReport - 5, // 45: runtime.v1.RuntimeSecurityAgentAPI.GetConfiguration:output_type -> runtime.v1.GetConfigurationResponse - 9, // 46: runtime.v1.RuntimeSecurityAgentAPI.EventsWriteStream:output_type -> runtime.v1.WriteStreamResponse - 9, // 47: runtime.v1.RuntimeSecurityAgentAPI.LogsWriteStream:output_type -> runtime.v1.WriteStreamResponse - 9, // 48: runtime.v1.RuntimeSecurityAgentAPI.ContainerStatsWriteStream:output_type -> runtime.v1.WriteStreamResponse - 9, // 49: runtime.v1.RuntimeSecurityAgentAPI.NetflowWriteStream:output_type -> runtime.v1.WriteStreamResponse - 9, // 50: runtime.v1.RuntimeSecurityAgentAPI.ProcessEventsWriteStream:output_type -> runtime.v1.WriteStreamResponse - 20, // 51: runtime.v1.RuntimeSecurityAgentAPI.GetSyncState:output_type -> runtime.v1.GetSyncStateResponse - 24, // 52: runtime.v1.RuntimeSecurityAgentAPI.UpdateSyncState:output_type -> runtime.v1.UpdateSyncStateResponse - 16, // 53: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaBatchIngest:output_type -> runtime.v1.KubernetesDeltaIngestResponse - 16, // 54: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaIngest:output_type -> runtime.v1.KubernetesDeltaIngestResponse - 18, // 55: runtime.v1.RuntimeSecurityAgentAPI.ImageMetadataIngest:output_type -> runtime.v1.ImageMetadataIngestResponse - 26, // 56: runtime.v1.RuntimeSecurityAgentAPI.KubeBenchReportIngest:output_type -> runtime.v1.KubeBenchReportIngestResponse - 32, // 57: runtime.v1.RuntimeSecurityAgentAPI.KubeLinterReportIngest:output_type -> runtime.v1.KubeLinterReportIngestResponse - 45, // [45:58] is the sub-list for method output_type - 32, // [32:45] is the sub-list for method input_type - 32, // [32:32] is the sub-list for extension type_name - 32, // [32:32] is the sub-list for extension extendee - 0, // [0:32] is the sub-list for field type_name + 37, // 2: runtime.v1.Event.object_labels:type_name -> runtime.v1.Event.ObjectLabelsEntry + 38, // 3: runtime.v1.Event.object_annotations:type_name -> runtime.v1.Event.ObjectAnnotationsEntry + 8, // 4: runtime.v1.Event.process_identity:type_name -> runtime.v1.ProcessIdentity + 41, // 5: runtime.v1.Event.exec:type_name -> runtime.v1.Exec + 42, // 6: runtime.v1.Event.dns:type_name -> runtime.v1.DNS + 43, // 7: runtime.v1.Event.file:type_name -> runtime.v1.File + 44, // 8: runtime.v1.Event.tuple:type_name -> runtime.v1.Tuple + 45, // 9: runtime.v1.Event.signature:type_name -> runtime.v1.SignatureEvent + 46, // 10: runtime.v1.Event.any:type_name -> runtime.v1.Any + 47, // 11: runtime.v1.Event.stdio_via_socket:type_name -> runtime.v1.StdioViaSocketFinding + 48, // 12: runtime.v1.Event.ssh:type_name -> runtime.v1.SSHData + 12, // 13: runtime.v1.ContainerStatsBatch.items:type_name -> runtime.v1.ContainerStats + 49, // 14: runtime.v1.ContainerStats.stats:type_name -> runtime.v1.Stats + 1, // 15: runtime.v1.KubernetesDeltaItem.event:type_name -> runtime.v1.KubernetesDeltaItemEvent + 50, // 16: runtime.v1.KubernetesDeltaItem.object_created_at:type_name -> google.protobuf.Timestamp + 15, // 17: runtime.v1.KubernetesDeltaItem.object_containers:type_name -> runtime.v1.Container + 39, // 18: runtime.v1.KubernetesDeltaItem.object_labels:type_name -> runtime.v1.KubernetesDeltaItem.ObjectLabelsEntry + 40, // 19: runtime.v1.KubernetesDeltaItem.object_annotations:type_name -> runtime.v1.KubernetesDeltaItem.ObjectAnnotationsEntry + 13, // 20: runtime.v1.KubernetesDeltaBatch.items:type_name -> runtime.v1.KubernetesDeltaItem + 50, // 21: runtime.v1.ImageMetadata.created_at:type_name -> google.protobuf.Timestamp + 21, // 22: runtime.v1.GetSyncStateResponse.images:type_name -> runtime.v1.ImagesSyncState + 22, // 23: runtime.v1.ImagesSyncState.images:type_name -> runtime.v1.Image + 2, // 24: runtime.v1.Image.scan_status:type_name -> runtime.v1.ImageScanStatus + 22, // 25: runtime.v1.UpdateSyncStateRequest.images:type_name -> runtime.v1.Image + 28, // 26: runtime.v1.KubeBenchReport.controls:type_name -> runtime.v1.KubeBenchControls + 27, // 27: runtime.v1.KubeBenchReport.node:type_name -> runtime.v1.KubeBenchNode + 29, // 28: runtime.v1.KubeBenchControls.groups:type_name -> runtime.v1.KubeBenchGroup + 30, // 29: runtime.v1.KubeBenchGroup.checks:type_name -> runtime.v1.KubeBenchCheck + 33, // 30: runtime.v1.KubeLinterReport.checks:type_name -> runtime.v1.KubeLinterCheck + 34, // 31: runtime.v1.ProcessEvent.process:type_name -> runtime.v1.Process + 3, // 32: runtime.v1.ProcessEvent.action:type_name -> runtime.v1.ProcessAction + 35, // 33: runtime.v1.ProcessTreeEvent.events:type_name -> runtime.v1.ProcessEvent + 4, // 34: runtime.v1.RuntimeSecurityAgentAPI.GetConfiguration:input_type -> runtime.v1.GetConfigurationRequest + 7, // 35: runtime.v1.RuntimeSecurityAgentAPI.EventsWriteStream:input_type -> runtime.v1.Event + 51, // 36: runtime.v1.RuntimeSecurityAgentAPI.LogsWriteStream:input_type -> runtime.v1.LogEvent + 11, // 37: runtime.v1.RuntimeSecurityAgentAPI.ContainerStatsWriteStream:input_type -> runtime.v1.ContainerStatsBatch + 52, // 38: runtime.v1.RuntimeSecurityAgentAPI.NetflowWriteStream:input_type -> runtime.v1.Netflow + 36, // 39: runtime.v1.RuntimeSecurityAgentAPI.ProcessEventsWriteStream:input_type -> runtime.v1.ProcessTreeEvent + 19, // 40: runtime.v1.RuntimeSecurityAgentAPI.GetSyncState:input_type -> runtime.v1.GetSyncStateRequest + 23, // 41: runtime.v1.RuntimeSecurityAgentAPI.UpdateSyncState:input_type -> runtime.v1.UpdateSyncStateRequest + 14, // 42: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaBatchIngest:input_type -> runtime.v1.KubernetesDeltaBatch + 13, // 43: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaIngest:input_type -> runtime.v1.KubernetesDeltaItem + 17, // 44: runtime.v1.RuntimeSecurityAgentAPI.ImageMetadataIngest:input_type -> runtime.v1.ImageMetadata + 25, // 45: runtime.v1.RuntimeSecurityAgentAPI.KubeBenchReportIngest:input_type -> runtime.v1.KubeBenchReport + 31, // 46: runtime.v1.RuntimeSecurityAgentAPI.KubeLinterReportIngest:input_type -> runtime.v1.KubeLinterReport + 5, // 47: runtime.v1.RuntimeSecurityAgentAPI.GetConfiguration:output_type -> runtime.v1.GetConfigurationResponse + 9, // 48: runtime.v1.RuntimeSecurityAgentAPI.EventsWriteStream:output_type -> runtime.v1.WriteStreamResponse + 9, // 49: runtime.v1.RuntimeSecurityAgentAPI.LogsWriteStream:output_type -> runtime.v1.WriteStreamResponse + 9, // 50: runtime.v1.RuntimeSecurityAgentAPI.ContainerStatsWriteStream:output_type -> runtime.v1.WriteStreamResponse + 9, // 51: runtime.v1.RuntimeSecurityAgentAPI.NetflowWriteStream:output_type -> runtime.v1.WriteStreamResponse + 9, // 52: runtime.v1.RuntimeSecurityAgentAPI.ProcessEventsWriteStream:output_type -> runtime.v1.WriteStreamResponse + 20, // 53: runtime.v1.RuntimeSecurityAgentAPI.GetSyncState:output_type -> runtime.v1.GetSyncStateResponse + 24, // 54: runtime.v1.RuntimeSecurityAgentAPI.UpdateSyncState:output_type -> runtime.v1.UpdateSyncStateResponse + 16, // 55: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaBatchIngest:output_type -> runtime.v1.KubernetesDeltaIngestResponse + 16, // 56: runtime.v1.RuntimeSecurityAgentAPI.KubernetesDeltaIngest:output_type -> runtime.v1.KubernetesDeltaIngestResponse + 18, // 57: runtime.v1.RuntimeSecurityAgentAPI.ImageMetadataIngest:output_type -> runtime.v1.ImageMetadataIngestResponse + 26, // 58: runtime.v1.RuntimeSecurityAgentAPI.KubeBenchReportIngest:output_type -> runtime.v1.KubeBenchReportIngestResponse + 32, // 59: runtime.v1.RuntimeSecurityAgentAPI.KubeLinterReportIngest:output_type -> runtime.v1.KubeLinterReportIngestResponse + 47, // [47:60] is the sub-list for method output_type + 34, // [34:47] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name } func init() { file_api_v1_runtime_runtime_agent_api_proto_init() } @@ -3031,409 +3003,11 @@ func file_api_v1_runtime_runtime_agent_api_proto_init() { return } file_api_v1_runtime_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigurationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConfigurationResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Configuration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Event); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessIdentity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteStreamResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendLogsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContainerStatsBatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContainerStats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubernetesDeltaItem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubernetesDeltaBatch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Container); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubernetesDeltaIngestResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImageMetadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImageMetadataIngestResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSyncStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSyncStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ImagesSyncState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Image); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSyncStateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSyncStateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeBenchReport); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeBenchReportIngestResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeBenchNode); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeBenchControls); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeBenchGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeBenchCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeLinterReport); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeLinterReportIngestResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KubeLinterCheck); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Process); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProcessTreeEvent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_api_v1_runtime_runtime_agent_api_proto_msgTypes[0].OneofWrappers = []any{ (*GetConfigurationRequest_Controller)(nil), (*GetConfigurationRequest_Agent)(nil), } - file_api_v1_runtime_runtime_agent_api_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_api_v1_runtime_runtime_agent_api_proto_msgTypes[3].OneofWrappers = []any{ (*Event_Exec)(nil), (*Event_Dns)(nil), (*Event_File)(nil), @@ -3449,7 +3023,7 @@ func file_api_v1_runtime_runtime_agent_api_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_v1_runtime_runtime_agent_api_proto_rawDesc, NumEnums: 4, - NumMessages: 35, + NumMessages: 37, NumExtensions: 0, NumServices: 1, }, diff --git a/api/v1/runtime/runtime_agent_api.proto b/api/v1/runtime/runtime_agent_api.proto index cfebe0da..fbecfed6 100644 --- a/api/v1/runtime/runtime_agent_api.proto +++ b/api/v1/runtime/runtime_agent_api.proto @@ -68,6 +68,8 @@ message Event { string container_name = 6; string workload_name = 7; string workload_kind = 13; + map object_labels = 29; + map object_annotations = 30; string pod_uid = 8; string container_id = 9; uint64 cgroup_id = 10; diff --git a/api/v1/runtime/runtime_agent_api_grpc.pb.go b/api/v1/runtime/runtime_agent_api_grpc.pb.go index 29cb8bf7..ba731367 100644 --- a/api/v1/runtime/runtime_agent_api_grpc.pb.go +++ b/api/v1/runtime/runtime_agent_api_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.3 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.0 // source: api/v1/runtime/runtime_agent_api.proto package v1 @@ -15,8 +15,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( RuntimeSecurityAgentAPI_GetConfiguration_FullMethodName = "/runtime.v1.RuntimeSecurityAgentAPI/GetConfiguration" @@ -37,18 +37,20 @@ const ( // RuntimeSecurityAgentAPIClient is the client API for RuntimeSecurityAgentAPI service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// RuntimeSecurityAgentAPI is used in kvisord. Should be mirrored. type RuntimeSecurityAgentAPIClient interface { GetConfiguration(ctx context.Context, in *GetConfigurationRequest, opts ...grpc.CallOption) (*GetConfigurationResponse, error) - EventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_EventsWriteStreamClient, error) - LogsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_LogsWriteStreamClient, error) - ContainerStatsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_ContainerStatsWriteStreamClient, error) - NetflowWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_NetflowWriteStreamClient, error) - ProcessEventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_ProcessEventsWriteStreamClient, error) + EventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[Event, WriteStreamResponse], error) + LogsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[LogEvent, WriteStreamResponse], error) + ContainerStatsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ContainerStatsBatch, WriteStreamResponse], error) + NetflowWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[Netflow, WriteStreamResponse], error) + ProcessEventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ProcessTreeEvent, WriteStreamResponse], error) GetSyncState(ctx context.Context, in *GetSyncStateRequest, opts ...grpc.CallOption) (*GetSyncStateResponse, error) UpdateSyncState(ctx context.Context, in *UpdateSyncStateRequest, opts ...grpc.CallOption) (*UpdateSyncStateResponse, error) - KubernetesDeltaBatchIngest(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestClient, error) + KubernetesDeltaBatchIngest(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KubernetesDeltaBatch, KubernetesDeltaIngestResponse], error) // Deprecated. Should use KubernetesDeltaBatchIngest. - KubernetesDeltaIngest(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_KubernetesDeltaIngestClient, error) + KubernetesDeltaIngest(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KubernetesDeltaItem, KubernetesDeltaIngestResponse], error) ImageMetadataIngest(ctx context.Context, in *ImageMetadata, opts ...grpc.CallOption) (*ImageMetadataIngestResponse, error) KubeBenchReportIngest(ctx context.Context, in *KubeBenchReport, opts ...grpc.CallOption) (*KubeBenchReportIngestResponse, error) KubeLinterReportIngest(ctx context.Context, in *KubeLinterReport, opts ...grpc.CallOption) (*KubeLinterReportIngestResponse, error) @@ -63,187 +65,84 @@ func NewRuntimeSecurityAgentAPIClient(cc grpc.ClientConnInterface) RuntimeSecuri } func (c *runtimeSecurityAgentAPIClient) GetConfiguration(ctx context.Context, in *GetConfigurationRequest, opts ...grpc.CallOption) (*GetConfigurationResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetConfigurationResponse) - err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_GetConfiguration_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_GetConfiguration_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *runtimeSecurityAgentAPIClient) EventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_EventsWriteStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[0], RuntimeSecurityAgentAPI_EventsWriteStream_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) EventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[Event, WriteStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[0], RuntimeSecurityAgentAPI_EventsWriteStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPIEventsWriteStreamClient{stream} + x := &grpc.GenericClientStream[Event, WriteStreamResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_EventsWriteStreamClient interface { - Send(*Event) error - CloseAndRecv() (*WriteStreamResponse, error) - grpc.ClientStream -} - -type runtimeSecurityAgentAPIEventsWriteStreamClient struct { - grpc.ClientStream -} - -func (x *runtimeSecurityAgentAPIEventsWriteStreamClient) Send(m *Event) error { - return x.ClientStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIEventsWriteStreamClient) CloseAndRecv() (*WriteStreamResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(WriteStreamResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_EventsWriteStreamClient = grpc.ClientStreamingClient[Event, WriteStreamResponse] -func (c *runtimeSecurityAgentAPIClient) LogsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_LogsWriteStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[1], RuntimeSecurityAgentAPI_LogsWriteStream_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) LogsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[LogEvent, WriteStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[1], RuntimeSecurityAgentAPI_LogsWriteStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPILogsWriteStreamClient{stream} + x := &grpc.GenericClientStream[LogEvent, WriteStreamResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_LogsWriteStreamClient interface { - Send(*LogEvent) error - CloseAndRecv() (*WriteStreamResponse, error) - grpc.ClientStream -} - -type runtimeSecurityAgentAPILogsWriteStreamClient struct { - grpc.ClientStream -} - -func (x *runtimeSecurityAgentAPILogsWriteStreamClient) Send(m *LogEvent) error { - return x.ClientStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPILogsWriteStreamClient) CloseAndRecv() (*WriteStreamResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(WriteStreamResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_LogsWriteStreamClient = grpc.ClientStreamingClient[LogEvent, WriteStreamResponse] -func (c *runtimeSecurityAgentAPIClient) ContainerStatsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_ContainerStatsWriteStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[2], RuntimeSecurityAgentAPI_ContainerStatsWriteStream_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) ContainerStatsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ContainerStatsBatch, WriteStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[2], RuntimeSecurityAgentAPI_ContainerStatsWriteStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPIContainerStatsWriteStreamClient{stream} + x := &grpc.GenericClientStream[ContainerStatsBatch, WriteStreamResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_ContainerStatsWriteStreamClient interface { - Send(*ContainerStatsBatch) error - CloseAndRecv() (*WriteStreamResponse, error) - grpc.ClientStream -} - -type runtimeSecurityAgentAPIContainerStatsWriteStreamClient struct { - grpc.ClientStream -} - -func (x *runtimeSecurityAgentAPIContainerStatsWriteStreamClient) Send(m *ContainerStatsBatch) error { - return x.ClientStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_ContainerStatsWriteStreamClient = grpc.ClientStreamingClient[ContainerStatsBatch, WriteStreamResponse] -func (x *runtimeSecurityAgentAPIContainerStatsWriteStreamClient) CloseAndRecv() (*WriteStreamResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(WriteStreamResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *runtimeSecurityAgentAPIClient) NetflowWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_NetflowWriteStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[3], RuntimeSecurityAgentAPI_NetflowWriteStream_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) NetflowWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[Netflow, WriteStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[3], RuntimeSecurityAgentAPI_NetflowWriteStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPINetflowWriteStreamClient{stream} + x := &grpc.GenericClientStream[Netflow, WriteStreamResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_NetflowWriteStreamClient interface { - Send(*Netflow) error - CloseAndRecv() (*WriteStreamResponse, error) - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_NetflowWriteStreamClient = grpc.ClientStreamingClient[Netflow, WriteStreamResponse] -type runtimeSecurityAgentAPINetflowWriteStreamClient struct { - grpc.ClientStream -} - -func (x *runtimeSecurityAgentAPINetflowWriteStreamClient) Send(m *Netflow) error { - return x.ClientStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPINetflowWriteStreamClient) CloseAndRecv() (*WriteStreamResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(WriteStreamResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *runtimeSecurityAgentAPIClient) ProcessEventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_ProcessEventsWriteStreamClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[4], RuntimeSecurityAgentAPI_ProcessEventsWriteStream_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) ProcessEventsWriteStream(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ProcessTreeEvent, WriteStreamResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[4], RuntimeSecurityAgentAPI_ProcessEventsWriteStream_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPIProcessEventsWriteStreamClient{stream} + x := &grpc.GenericClientStream[ProcessTreeEvent, WriteStreamResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_ProcessEventsWriteStreamClient interface { - Send(*ProcessTreeEvent) error - CloseAndRecv() (*WriteStreamResponse, error) - grpc.ClientStream -} - -type runtimeSecurityAgentAPIProcessEventsWriteStreamClient struct { - grpc.ClientStream -} - -func (x *runtimeSecurityAgentAPIProcessEventsWriteStreamClient) Send(m *ProcessTreeEvent) error { - return x.ClientStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIProcessEventsWriteStreamClient) CloseAndRecv() (*WriteStreamResponse, error) { - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - m := new(WriteStreamResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_ProcessEventsWriteStreamClient = grpc.ClientStreamingClient[ProcessTreeEvent, WriteStreamResponse] func (c *runtimeSecurityAgentAPIClient) GetSyncState(ctx context.Context, in *GetSyncStateRequest, opts ...grpc.CallOption) (*GetSyncStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetSyncStateResponse) - err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_GetSyncState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_GetSyncState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -251,79 +150,45 @@ func (c *runtimeSecurityAgentAPIClient) GetSyncState(ctx context.Context, in *Ge } func (c *runtimeSecurityAgentAPIClient) UpdateSyncState(ctx context.Context, in *UpdateSyncStateRequest, opts ...grpc.CallOption) (*UpdateSyncStateResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpdateSyncStateResponse) - err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_UpdateSyncState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_UpdateSyncState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *runtimeSecurityAgentAPIClient) KubernetesDeltaBatchIngest(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[5], RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngest_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) KubernetesDeltaBatchIngest(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KubernetesDeltaBatch, KubernetesDeltaIngestResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[5], RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngest_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPIKubernetesDeltaBatchIngestClient{stream} + x := &grpc.GenericClientStream[KubernetesDeltaBatch, KubernetesDeltaIngestResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestClient interface { - Send(*KubernetesDeltaBatch) error - Recv() (*KubernetesDeltaIngestResponse, error) - grpc.ClientStream -} - -type runtimeSecurityAgentAPIKubernetesDeltaBatchIngestClient struct { - grpc.ClientStream -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestClient = grpc.BidiStreamingClient[KubernetesDeltaBatch, KubernetesDeltaIngestResponse] -func (x *runtimeSecurityAgentAPIKubernetesDeltaBatchIngestClient) Send(m *KubernetesDeltaBatch) error { - return x.ClientStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaBatchIngestClient) Recv() (*KubernetesDeltaIngestResponse, error) { - m := new(KubernetesDeltaIngestResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *runtimeSecurityAgentAPIClient) KubernetesDeltaIngest(ctx context.Context, opts ...grpc.CallOption) (RuntimeSecurityAgentAPI_KubernetesDeltaIngestClient, error) { - stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[6], RuntimeSecurityAgentAPI_KubernetesDeltaIngest_FullMethodName, opts...) +func (c *runtimeSecurityAgentAPIClient) KubernetesDeltaIngest(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[KubernetesDeltaItem, KubernetesDeltaIngestResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &RuntimeSecurityAgentAPI_ServiceDesc.Streams[6], RuntimeSecurityAgentAPI_KubernetesDeltaIngest_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &runtimeSecurityAgentAPIKubernetesDeltaIngestClient{stream} + x := &grpc.GenericClientStream[KubernetesDeltaItem, KubernetesDeltaIngestResponse]{ClientStream: stream} return x, nil } -type RuntimeSecurityAgentAPI_KubernetesDeltaIngestClient interface { - Send(*KubernetesDeltaItem) error - Recv() (*KubernetesDeltaIngestResponse, error) - grpc.ClientStream -} - -type runtimeSecurityAgentAPIKubernetesDeltaIngestClient struct { - grpc.ClientStream -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaIngestClient) Send(m *KubernetesDeltaItem) error { - return x.ClientStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaIngestClient) Recv() (*KubernetesDeltaIngestResponse, error) { - m := new(KubernetesDeltaIngestResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_KubernetesDeltaIngestClient = grpc.BidiStreamingClient[KubernetesDeltaItem, KubernetesDeltaIngestResponse] func (c *runtimeSecurityAgentAPIClient) ImageMetadataIngest(ctx context.Context, in *ImageMetadata, opts ...grpc.CallOption) (*ImageMetadataIngestResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ImageMetadataIngestResponse) - err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_ImageMetadataIngest_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_ImageMetadataIngest_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -331,8 +196,9 @@ func (c *runtimeSecurityAgentAPIClient) ImageMetadataIngest(ctx context.Context, } func (c *runtimeSecurityAgentAPIClient) KubeBenchReportIngest(ctx context.Context, in *KubeBenchReport, opts ...grpc.CallOption) (*KubeBenchReportIngestResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(KubeBenchReportIngestResponse) - err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_KubeBenchReportIngest_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_KubeBenchReportIngest_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -340,8 +206,9 @@ func (c *runtimeSecurityAgentAPIClient) KubeBenchReportIngest(ctx context.Contex } func (c *runtimeSecurityAgentAPIClient) KubeLinterReportIngest(ctx context.Context, in *KubeLinterReport, opts ...grpc.CallOption) (*KubeLinterReportIngestResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(KubeLinterReportIngestResponse) - err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_KubeLinterReportIngest_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, RuntimeSecurityAgentAPI_KubeLinterReportIngest_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -350,44 +217,49 @@ func (c *runtimeSecurityAgentAPIClient) KubeLinterReportIngest(ctx context.Conte // RuntimeSecurityAgentAPIServer is the server API for RuntimeSecurityAgentAPI service. // All implementations should embed UnimplementedRuntimeSecurityAgentAPIServer -// for forward compatibility +// for forward compatibility. +// +// RuntimeSecurityAgentAPI is used in kvisord. Should be mirrored. type RuntimeSecurityAgentAPIServer interface { GetConfiguration(context.Context, *GetConfigurationRequest) (*GetConfigurationResponse, error) - EventsWriteStream(RuntimeSecurityAgentAPI_EventsWriteStreamServer) error - LogsWriteStream(RuntimeSecurityAgentAPI_LogsWriteStreamServer) error - ContainerStatsWriteStream(RuntimeSecurityAgentAPI_ContainerStatsWriteStreamServer) error - NetflowWriteStream(RuntimeSecurityAgentAPI_NetflowWriteStreamServer) error - ProcessEventsWriteStream(RuntimeSecurityAgentAPI_ProcessEventsWriteStreamServer) error + EventsWriteStream(grpc.ClientStreamingServer[Event, WriteStreamResponse]) error + LogsWriteStream(grpc.ClientStreamingServer[LogEvent, WriteStreamResponse]) error + ContainerStatsWriteStream(grpc.ClientStreamingServer[ContainerStatsBatch, WriteStreamResponse]) error + NetflowWriteStream(grpc.ClientStreamingServer[Netflow, WriteStreamResponse]) error + ProcessEventsWriteStream(grpc.ClientStreamingServer[ProcessTreeEvent, WriteStreamResponse]) error GetSyncState(context.Context, *GetSyncStateRequest) (*GetSyncStateResponse, error) UpdateSyncState(context.Context, *UpdateSyncStateRequest) (*UpdateSyncStateResponse, error) - KubernetesDeltaBatchIngest(RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestServer) error + KubernetesDeltaBatchIngest(grpc.BidiStreamingServer[KubernetesDeltaBatch, KubernetesDeltaIngestResponse]) error // Deprecated. Should use KubernetesDeltaBatchIngest. - KubernetesDeltaIngest(RuntimeSecurityAgentAPI_KubernetesDeltaIngestServer) error + KubernetesDeltaIngest(grpc.BidiStreamingServer[KubernetesDeltaItem, KubernetesDeltaIngestResponse]) error ImageMetadataIngest(context.Context, *ImageMetadata) (*ImageMetadataIngestResponse, error) KubeBenchReportIngest(context.Context, *KubeBenchReport) (*KubeBenchReportIngestResponse, error) KubeLinterReportIngest(context.Context, *KubeLinterReport) (*KubeLinterReportIngestResponse, error) } -// UnimplementedRuntimeSecurityAgentAPIServer should be embedded to have forward compatible implementations. -type UnimplementedRuntimeSecurityAgentAPIServer struct { -} +// UnimplementedRuntimeSecurityAgentAPIServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedRuntimeSecurityAgentAPIServer struct{} func (UnimplementedRuntimeSecurityAgentAPIServer) GetConfiguration(context.Context, *GetConfigurationRequest) (*GetConfigurationResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetConfiguration not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) EventsWriteStream(RuntimeSecurityAgentAPI_EventsWriteStreamServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) EventsWriteStream(grpc.ClientStreamingServer[Event, WriteStreamResponse]) error { return status.Errorf(codes.Unimplemented, "method EventsWriteStream not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) LogsWriteStream(RuntimeSecurityAgentAPI_LogsWriteStreamServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) LogsWriteStream(grpc.ClientStreamingServer[LogEvent, WriteStreamResponse]) error { return status.Errorf(codes.Unimplemented, "method LogsWriteStream not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) ContainerStatsWriteStream(RuntimeSecurityAgentAPI_ContainerStatsWriteStreamServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) ContainerStatsWriteStream(grpc.ClientStreamingServer[ContainerStatsBatch, WriteStreamResponse]) error { return status.Errorf(codes.Unimplemented, "method ContainerStatsWriteStream not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) NetflowWriteStream(RuntimeSecurityAgentAPI_NetflowWriteStreamServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) NetflowWriteStream(grpc.ClientStreamingServer[Netflow, WriteStreamResponse]) error { return status.Errorf(codes.Unimplemented, "method NetflowWriteStream not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) ProcessEventsWriteStream(RuntimeSecurityAgentAPI_ProcessEventsWriteStreamServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) ProcessEventsWriteStream(grpc.ClientStreamingServer[ProcessTreeEvent, WriteStreamResponse]) error { return status.Errorf(codes.Unimplemented, "method ProcessEventsWriteStream not implemented") } func (UnimplementedRuntimeSecurityAgentAPIServer) GetSyncState(context.Context, *GetSyncStateRequest) (*GetSyncStateResponse, error) { @@ -396,10 +268,10 @@ func (UnimplementedRuntimeSecurityAgentAPIServer) GetSyncState(context.Context, func (UnimplementedRuntimeSecurityAgentAPIServer) UpdateSyncState(context.Context, *UpdateSyncStateRequest) (*UpdateSyncStateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateSyncState not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) KubernetesDeltaBatchIngest(RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) KubernetesDeltaBatchIngest(grpc.BidiStreamingServer[KubernetesDeltaBatch, KubernetesDeltaIngestResponse]) error { return status.Errorf(codes.Unimplemented, "method KubernetesDeltaBatchIngest not implemented") } -func (UnimplementedRuntimeSecurityAgentAPIServer) KubernetesDeltaIngest(RuntimeSecurityAgentAPI_KubernetesDeltaIngestServer) error { +func (UnimplementedRuntimeSecurityAgentAPIServer) KubernetesDeltaIngest(grpc.BidiStreamingServer[KubernetesDeltaItem, KubernetesDeltaIngestResponse]) error { return status.Errorf(codes.Unimplemented, "method KubernetesDeltaIngest not implemented") } func (UnimplementedRuntimeSecurityAgentAPIServer) ImageMetadataIngest(context.Context, *ImageMetadata) (*ImageMetadataIngestResponse, error) { @@ -411,6 +283,7 @@ func (UnimplementedRuntimeSecurityAgentAPIServer) KubeBenchReportIngest(context. func (UnimplementedRuntimeSecurityAgentAPIServer) KubeLinterReportIngest(context.Context, *KubeLinterReport) (*KubeLinterReportIngestResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method KubeLinterReportIngest not implemented") } +func (UnimplementedRuntimeSecurityAgentAPIServer) testEmbeddedByValue() {} // UnsafeRuntimeSecurityAgentAPIServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to RuntimeSecurityAgentAPIServer will @@ -420,6 +293,13 @@ type UnsafeRuntimeSecurityAgentAPIServer interface { } func RegisterRuntimeSecurityAgentAPIServer(s grpc.ServiceRegistrar, srv RuntimeSecurityAgentAPIServer) { + // If the following call pancis, it indicates UnimplementedRuntimeSecurityAgentAPIServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&RuntimeSecurityAgentAPI_ServiceDesc, srv) } @@ -442,134 +322,39 @@ func _RuntimeSecurityAgentAPI_GetConfiguration_Handler(srv interface{}, ctx cont } func _RuntimeSecurityAgentAPI_EventsWriteStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).EventsWriteStream(&runtimeSecurityAgentAPIEventsWriteStreamServer{stream}) -} - -type RuntimeSecurityAgentAPI_EventsWriteStreamServer interface { - SendAndClose(*WriteStreamResponse) error - Recv() (*Event, error) - grpc.ServerStream + return srv.(RuntimeSecurityAgentAPIServer).EventsWriteStream(&grpc.GenericServerStream[Event, WriteStreamResponse]{ServerStream: stream}) } -type runtimeSecurityAgentAPIEventsWriteStreamServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPIEventsWriteStreamServer) SendAndClose(m *WriteStreamResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIEventsWriteStreamServer) Recv() (*Event, error) { - m := new(Event) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_EventsWriteStreamServer = grpc.ClientStreamingServer[Event, WriteStreamResponse] func _RuntimeSecurityAgentAPI_LogsWriteStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).LogsWriteStream(&runtimeSecurityAgentAPILogsWriteStreamServer{stream}) + return srv.(RuntimeSecurityAgentAPIServer).LogsWriteStream(&grpc.GenericServerStream[LogEvent, WriteStreamResponse]{ServerStream: stream}) } -type RuntimeSecurityAgentAPI_LogsWriteStreamServer interface { - SendAndClose(*WriteStreamResponse) error - Recv() (*LogEvent, error) - grpc.ServerStream -} - -type runtimeSecurityAgentAPILogsWriteStreamServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPILogsWriteStreamServer) SendAndClose(m *WriteStreamResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPILogsWriteStreamServer) Recv() (*LogEvent, error) { - m := new(LogEvent) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_LogsWriteStreamServer = grpc.ClientStreamingServer[LogEvent, WriteStreamResponse] func _RuntimeSecurityAgentAPI_ContainerStatsWriteStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).ContainerStatsWriteStream(&runtimeSecurityAgentAPIContainerStatsWriteStreamServer{stream}) + return srv.(RuntimeSecurityAgentAPIServer).ContainerStatsWriteStream(&grpc.GenericServerStream[ContainerStatsBatch, WriteStreamResponse]{ServerStream: stream}) } -type RuntimeSecurityAgentAPI_ContainerStatsWriteStreamServer interface { - SendAndClose(*WriteStreamResponse) error - Recv() (*ContainerStatsBatch, error) - grpc.ServerStream -} - -type runtimeSecurityAgentAPIContainerStatsWriteStreamServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPIContainerStatsWriteStreamServer) SendAndClose(m *WriteStreamResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIContainerStatsWriteStreamServer) Recv() (*ContainerStatsBatch, error) { - m := new(ContainerStatsBatch) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_ContainerStatsWriteStreamServer = grpc.ClientStreamingServer[ContainerStatsBatch, WriteStreamResponse] func _RuntimeSecurityAgentAPI_NetflowWriteStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).NetflowWriteStream(&runtimeSecurityAgentAPINetflowWriteStreamServer{stream}) -} - -type RuntimeSecurityAgentAPI_NetflowWriteStreamServer interface { - SendAndClose(*WriteStreamResponse) error - Recv() (*Netflow, error) - grpc.ServerStream + return srv.(RuntimeSecurityAgentAPIServer).NetflowWriteStream(&grpc.GenericServerStream[Netflow, WriteStreamResponse]{ServerStream: stream}) } -type runtimeSecurityAgentAPINetflowWriteStreamServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPINetflowWriteStreamServer) SendAndClose(m *WriteStreamResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPINetflowWriteStreamServer) Recv() (*Netflow, error) { - m := new(Netflow) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_NetflowWriteStreamServer = grpc.ClientStreamingServer[Netflow, WriteStreamResponse] func _RuntimeSecurityAgentAPI_ProcessEventsWriteStream_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).ProcessEventsWriteStream(&runtimeSecurityAgentAPIProcessEventsWriteStreamServer{stream}) -} - -type RuntimeSecurityAgentAPI_ProcessEventsWriteStreamServer interface { - SendAndClose(*WriteStreamResponse) error - Recv() (*ProcessTreeEvent, error) - grpc.ServerStream + return srv.(RuntimeSecurityAgentAPIServer).ProcessEventsWriteStream(&grpc.GenericServerStream[ProcessTreeEvent, WriteStreamResponse]{ServerStream: stream}) } -type runtimeSecurityAgentAPIProcessEventsWriteStreamServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPIProcessEventsWriteStreamServer) SendAndClose(m *WriteStreamResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIProcessEventsWriteStreamServer) Recv() (*ProcessTreeEvent, error) { - m := new(ProcessTreeEvent) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_ProcessEventsWriteStreamServer = grpc.ClientStreamingServer[ProcessTreeEvent, WriteStreamResponse] func _RuntimeSecurityAgentAPI_GetSyncState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSyncStateRequest) @@ -608,56 +393,18 @@ func _RuntimeSecurityAgentAPI_UpdateSyncState_Handler(srv interface{}, ctx conte } func _RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngest_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).KubernetesDeltaBatchIngest(&runtimeSecurityAgentAPIKubernetesDeltaBatchIngestServer{stream}) + return srv.(RuntimeSecurityAgentAPIServer).KubernetesDeltaBatchIngest(&grpc.GenericServerStream[KubernetesDeltaBatch, KubernetesDeltaIngestResponse]{ServerStream: stream}) } -type RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestServer interface { - Send(*KubernetesDeltaIngestResponse) error - Recv() (*KubernetesDeltaBatch, error) - grpc.ServerStream -} - -type runtimeSecurityAgentAPIKubernetesDeltaBatchIngestServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaBatchIngestServer) Send(m *KubernetesDeltaIngestResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaBatchIngestServer) Recv() (*KubernetesDeltaBatch, error) { - m := new(KubernetesDeltaBatch) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_KubernetesDeltaBatchIngestServer = grpc.BidiStreamingServer[KubernetesDeltaBatch, KubernetesDeltaIngestResponse] func _RuntimeSecurityAgentAPI_KubernetesDeltaIngest_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(RuntimeSecurityAgentAPIServer).KubernetesDeltaIngest(&runtimeSecurityAgentAPIKubernetesDeltaIngestServer{stream}) + return srv.(RuntimeSecurityAgentAPIServer).KubernetesDeltaIngest(&grpc.GenericServerStream[KubernetesDeltaItem, KubernetesDeltaIngestResponse]{ServerStream: stream}) } -type RuntimeSecurityAgentAPI_KubernetesDeltaIngestServer interface { - Send(*KubernetesDeltaIngestResponse) error - Recv() (*KubernetesDeltaItem, error) - grpc.ServerStream -} - -type runtimeSecurityAgentAPIKubernetesDeltaIngestServer struct { - grpc.ServerStream -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaIngestServer) Send(m *KubernetesDeltaIngestResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *runtimeSecurityAgentAPIKubernetesDeltaIngestServer) Recv() (*KubernetesDeltaItem, error) { - m := new(KubernetesDeltaItem) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type RuntimeSecurityAgentAPI_KubernetesDeltaIngestServer = grpc.BidiStreamingServer[KubernetesDeltaItem, KubernetesDeltaIngestResponse] func _RuntimeSecurityAgentAPI_ImageMetadataIngest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ImageMetadata) diff --git a/charts/kvisor/values-local.yaml b/charts/kvisor/values-local.yaml index 9d08feee..d1320a53 100644 --- a/charts/kvisor/values-local.yaml +++ b/charts/kvisor/values-local.yaml @@ -26,6 +26,8 @@ agent: netflow-export-interval: 5s ebpf-events-stdio-exporter-enabled: false process-tree-enabled: true + ebpf-events-include-pod-labels: 'helm.sh/chart,app.kubernetes.io/name' + ebpf-events-include-pod-annotations: 'cast.ai' prometheusScrape: enabled: true diff --git a/cmd/agent/daemon/app/app.go b/cmd/agent/daemon/app/app.go index 7b658927..8ce58e05 100644 --- a/cmd/agent/daemon/app/app.go +++ b/cmd/agent/daemon/app/app.go @@ -17,6 +17,7 @@ import ( kubepb "github.com/castai/kvisor/api/v1/kube" castaipb "github.com/castai/kvisor/api/v1/runtime" "github.com/castai/kvisor/cmd/agent/daemon/conntrack" + "github.com/castai/kvisor/cmd/agent/daemon/cri" "github.com/castai/kvisor/cmd/agent/daemon/enrichment" "github.com/castai/kvisor/cmd/agent/daemon/netstats" "github.com/castai/kvisor/cmd/agent/daemon/state" @@ -80,6 +81,9 @@ type Config struct { KubeAPIServiceAddr string `json:"kubeAPIServiceAddr"` ExportersQueueSize int `validate:"required" json:"exportersQueueSize"` AutomountCgroupv2 bool `json:"automountCgroupv2"` + CRIEndpoint string `json:"criEndpoint"` + EventLabels []string `json:"eventLabels"` + EventAnnotations []string `json:"eventAnnotations"` } type EnricherConfig struct { @@ -236,11 +240,19 @@ func (a *App) Run(ctx context.Context) error { if err != nil { return err } + + criClient, criCloseFn, err := cri.NewRuntimeClient(ctx, cfg.CRIEndpoint) + if err != nil { + return fmt.Errorf("new CRI runtime client: %w", err) + } + defer criCloseFn() //nolint:errcheck + procHandler := proc.New() - containersClient, err := containers.NewClient(log, cgroupClient, a.cfg.ContainerdSockPath, procHandler) + containersClient, err := containers.NewClient(log, cgroupClient, a.cfg.ContainerdSockPath, procHandler, criClient, a.cfg.EventLabels, a.cfg.EventAnnotations) if err != nil { return err } + defer containersClient.Close() var processTreeCollector processtree.ProcessTreeCollector if cfg.ProcessTree.Enabled { diff --git a/cmd/agent/daemon/cri/cri.go b/cmd/agent/daemon/cri/cri.go new file mode 100644 index 00000000..a472e96c --- /dev/null +++ b/cmd/agent/daemon/cri/cri.go @@ -0,0 +1,35 @@ +package cri + +import ( + "context" + "fmt" + "net/url" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + criapi "k8s.io/cri-api/pkg/apis/runtime/v1" +) + +func NewRuntimeClient(ctx context.Context, endpoint string) (criapi.RuntimeServiceClient, func() error, error) { + u, err := url.Parse(endpoint) + if err != nil { + return nil, nil, err + } + if u.Scheme != "unix" { + return nil, nil, fmt.Errorf("only unix socket is supported") + } + + conn, err := grpc.NewClient(endpoint, + grpc.WithTransportCredentials(insecure.NewCredentials()), + ) + + if err != nil { + return nil, nil, fmt.Errorf("failed to connect to CRI runtime: %w", err) + } + rtcli := criapi.NewRuntimeServiceClient(conn) + if _, err := rtcli.Version(ctx, &criapi.VersionRequest{}); err != nil { + return nil, nil, fmt.Errorf("failed CRI version check: %w", err) + } + + return rtcli, conn.Close, nil +} diff --git a/cmd/agent/daemon/daemon.go b/cmd/agent/daemon/daemon.go index 4dfc31c9..a83b2c23 100644 --- a/cmd/agent/daemon/daemon.go +++ b/cmd/agent/daemon/daemon.go @@ -110,6 +110,10 @@ func NewRunCommand(version string) *cobra.Command { automountCgroupv2 = command.Flags().Bool("automount-cgroupv2", true, "Automount cgroupv2 if not mounted") redactSensitiveValuesRegexStr = command.Flags().String("redact-sensitive-values-regex", "", "Regex which will be used to detect sensitive values in process exec args") + + criEndpoint = command.Flags().String("cri-endpoint", "unix:///run/containerd/containerd.sock", "CRI endpoint") + ebpfEventLabels = command.Flags().StringSlice("ebpf-events-include-pod-labels", []string{}, "List of label keys to be sent with eBPF events, separated by comma") + ebpfEventAnnotations = command.Flags().StringSlice("ebpf-events-include-pod-annotations", []string{}, "List of annotation keys to be sent with eBPF events, separated by comma") ) command.Flags().Var(&netflowGrouping, "netflow-grouping", "Group netflow to reduce cardinality. Eg: drop_src_port to drop source port") @@ -196,6 +200,9 @@ func NewRunCommand(version string) *cobra.Command { KubeAPIServiceAddr: *kubeAPIServiceAddr, ExportersQueueSize: *exportersQueueSize, AutomountCgroupv2: *automountCgroupv2, + CRIEndpoint: *criEndpoint, + EventLabels: *ebpfEventLabels, + EventAnnotations: *ebpfEventAnnotations, }).Run(ctx); err != nil && !errors.Is(err, context.Canceled) { slog.Error(err.Error()) os.Exit(1) diff --git a/cmd/agent/daemon/state/events_pipeline.go b/cmd/agent/daemon/state/events_pipeline.go index dbc9aab5..dd625e71 100644 --- a/cmd/agent/daemon/state/events_pipeline.go +++ b/cmd/agent/daemon/state/events_pipeline.go @@ -67,6 +67,8 @@ func (c *Controller) toProtoEvent(e *ebpftypes.Event) *castpb.Event { Pid: e.Context.Pid, StartTime: uint64((time.Duration(e.Context.StartTime) * time.Nanosecond).Truncate(time.Second).Nanoseconds()), // nolint:gosec }, + ObjectLabels: e.Container.Labels, + ObjectAnnotations: e.Container.Annotations, } if podInfo, found := c.getPodInfo(event.PodUid); found { diff --git a/e2e/conn-generator.yaml b/e2e/conn-generator.yaml index dfa8c844..527bc1a5 100644 --- a/e2e/conn-generator.yaml +++ b/e2e/conn-generator.yaml @@ -19,6 +19,8 @@ metadata: spec: template: metadata: + annotations: + cast.ai/e2e: e2e labels: name: echo-a spec: diff --git a/e2e/dns-generator.yaml b/e2e/dns-generator.yaml index a7401a70..0f137523 100644 --- a/e2e/dns-generator.yaml +++ b/e2e/dns-generator.yaml @@ -11,6 +11,8 @@ spec: replicas: 1 template: metadata: + annotations: + cast.ai/e2e: e2e labels: app: dns-generator spec: diff --git a/e2e/e2e.go b/e2e/e2e.go index dac96f86..1a9a5dbf 100644 --- a/e2e/e2e.go +++ b/e2e/e2e.go @@ -172,6 +172,8 @@ func installChart(ns, imageTag string) ([]byte, error) { --set agent.extraArgs.netflow-enabled=true \ --set agent.extraArgs.netflow-sample-submit-interval-seconds=5 \ --set agent.extraArgs.process-tree-enabled=true \ + --set agent.extraArgs.ebpf-events-include-pod-labels="name\,app.kubernetes.io/name\,app.kubernetes.io/component" \ + --set agent.extraArgs.ebpf-events-include-pod-annotations="cast.ai\,checksum/config" \ --set controller.extraArgs.castai-server-insecure=true \ --set controller.extraArgs.log-level=debug \ --set controller.extraArgs.image-scan-enabled=true \ @@ -774,6 +776,15 @@ func (t *testCASTAIServer) assertEvents(ctx context.Context) error { if e.ProcessName == "" { return fmt.Errorf("missing process name: %v", e) } + if e.Namespace != "kube-system" { + // just our controlled pods + if len(e.ObjectLabels) == 0 { + return fmt.Errorf("missing object labels: %v", e) + } + if len(e.ObjectAnnotations) == 0 { + return fmt.Errorf("missing object annotations: %v", e) + } + } return nil } } diff --git a/e2e/e2e.yaml b/e2e/e2e.yaml index 3856957a..cc2d9813 100644 --- a/e2e/e2e.yaml +++ b/e2e/e2e.yaml @@ -28,6 +28,8 @@ spec: backoffLimit: 0 template: metadata: + annotations: + cast.ai/e2e: e2e labels: app.kubernetes.io/name: e2e spec: diff --git a/e2e/iperf.yaml b/e2e/iperf.yaml index 56900a85..778c5abf 100644 --- a/e2e/iperf.yaml +++ b/e2e/iperf.yaml @@ -17,6 +17,8 @@ spec: app: iperf-server template: metadata: + annotations: + cast.ai/e2e: e2e labels: app: iperf-server spec: diff --git a/e2e/magic-write-generator.yaml b/e2e/magic-write-generator.yaml index b8604986..6e750927 100644 --- a/e2e/magic-write-generator.yaml +++ b/e2e/magic-write-generator.yaml @@ -11,6 +11,8 @@ spec: replicas: 1 template: metadata: + annotations: + cast.ai/e2e: e2e labels: app: magic-write-generator spec: diff --git a/e2e/miner.yaml b/e2e/miner.yaml index 36c9d1ff..8bd53b07 100644 --- a/e2e/miner.yaml +++ b/e2e/miner.yaml @@ -11,6 +11,8 @@ spec: replicas: 1 template: metadata: + annotations: + cast.ai/e2e: e2e labels: app: miner spec: diff --git a/e2e/nc-server-client.yaml b/e2e/nc-server-client.yaml index b165ca03..73ad448b 100644 --- a/e2e/nc-server-client.yaml +++ b/e2e/nc-server-client.yaml @@ -11,6 +11,8 @@ spec: app: nc-server template: metadata: + annotations: + cast.ai/e2e: e2e labels: app: nc-server spec: diff --git a/e2e/oom-generator.yaml b/e2e/oom-generator.yaml index d41669d4..bfd803f4 100644 --- a/e2e/oom-generator.yaml +++ b/e2e/oom-generator.yaml @@ -11,6 +11,8 @@ spec: app: oom-generator template: metadata: + annotations: + cast.ai/e2e: e2e labels: app: oom-generator spec: diff --git a/go.mod b/go.mod index c0762d84..f9404521 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/cilium/ebpf v0.16.0 github.com/containerd/containerd v1.7.24 github.com/containerd/containerd/api v1.8.0 + github.com/containerd/typeurl v1.0.2 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/elastic/go-freelru v0.16.0 github.com/fatih/color v1.18.0 @@ -39,6 +40,7 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 github.com/testcontainers/testcontainers-go v0.34.0 + github.com/tidwall/gjson v1.18.0 github.com/tklauser/go-sysconf v0.3.14 github.com/vishvananda/netns v0.0.5 go.uber.org/atomic v1.11.0 @@ -54,6 +56,7 @@ require ( k8s.io/api v0.31.3 k8s.io/apimachinery v0.31.3 k8s.io/client-go v0.31.3 + k8s.io/cri-api v0.31.3 k8s.io/klog/v2 v2.130.1 ) @@ -188,6 +191,8 @@ require ( github.com/skeema/knownhosts v1.2.2 // indirect github.com/spdx/tools-golang v0.5.5 // indirect github.com/tchap/go-patricia/v2 v2.3.1 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tklauser/numcpus v0.8.0 // indirect github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect github.com/vishvananda/netlink v1.3.1-0.20241022031324-976bd8de7d81 // indirect diff --git a/go.sum b/go.sum index 38adbe7f..99b4cfd1 100644 --- a/go.sum +++ b/go.sum @@ -460,6 +460,8 @@ github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU= github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= +github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsPEmzLso= github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= @@ -1278,7 +1280,14 @@ github.com/tetratelabs/wazero v1.8.0 h1:iEKu0d4c2Pd+QSRieYbnQC9yiFlMS9D+Jr0LsRmc github.com/tetratelabs/wazero v1.8.0/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= github.com/theupdateframework/go-tuf v0.7.0 h1:CqbQFrWo1ae3/I0UCblSbczevCCbS31Qvs5LdxRWqRI= github.com/theupdateframework/go-tuf v0.7.0/go.mod h1:uEB7WSY+7ZIugK6R1hiBMBjQftaFzn7ZCDJcp1tCUug= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= @@ -2061,6 +2070,8 @@ k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= k8s.io/component-base v0.31.2 h1:Z1J1LIaC0AV+nzcPRFqfK09af6bZ4D1nAOpWsy9owlA= k8s.io/component-base v0.31.2/go.mod h1:9PeyyFN/drHjtJZMCTkSpQJS3U9OXORnHQqMLDz0sUQ= +k8s.io/cri-api v0.31.3 h1:dsZXzrGrCEwHjsTDlAV7rutEplpMLY8bfNRMIqrtXjo= +k8s.io/cri-api v0.31.3/go.mod h1:Po3TMAYH/+KrZabi7QiwQI4a692oZcUOUThd/rqwxrI= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 h1:1dWzkmJrrprYvjGwh9kEUxmcUV/CtNU8QM7h1FLWQOo= diff --git a/pkg/containers/client.go b/pkg/containers/client.go index 094faedf..9e9de65e 100644 --- a/pkg/containers/client.go +++ b/pkg/containers/client.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "sync" "time" @@ -11,10 +12,10 @@ import ( "github.com/castai/kvisor/pkg/cgroup" "github.com/castai/kvisor/pkg/logging" "github.com/castai/kvisor/pkg/proc" - containerdContainers "github.com/containerd/containerd/containers" "github.com/samber/lo" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + criapi "k8s.io/cri-api/pkg/apis/runtime/v1" ) var ( @@ -34,13 +35,17 @@ type Container struct { Cgroup *cgroup.Cgroup PIDs []uint32 Err error + + Labels map[string]string + Annotations map[string]string } // Client is generic container client. type Client struct { - log *logging.Logger - containerClient *containerClient - cgroupClient *cgroup.Client + log *logging.Logger + containerClient *containerClient + cgroupClient *cgroup.Client + criRuntimeServiceClient criapi.RuntimeServiceClient containersByCgroup map[uint64]*Container mu sync.RWMutex @@ -50,23 +55,34 @@ type Client struct { listenerMu sync.RWMutex procHandler *proc.Proc + + forwardedLabels []string + forwardedAnnotations []string } -func NewClient(log *logging.Logger, cgroupClient *cgroup.Client, containerdSock string, procHandler *proc.Proc) (*Client, error) { +func NewClient(log *logging.Logger, cgroupClient *cgroup.Client, containerdSock string, procHandler *proc.Proc, criRuntimeServiceClient criapi.RuntimeServiceClient, + labels, annotations []string) (*Client, error) { contClient, err := newContainerClient(containerdSock) if err != nil { return nil, err } return &Client{ - log: log.WithField("component", "cgroups"), - containerClient: contClient, - cgroupClient: cgroupClient, - containersByCgroup: map[uint64]*Container{}, - procHandler: procHandler, + log: log.WithField("component", "cgroups"), + containerClient: contClient, + cgroupClient: cgroupClient, + containersByCgroup: map[uint64]*Container{}, + procHandler: procHandler, + criRuntimeServiceClient: criRuntimeServiceClient, + forwardedLabels: labels, + forwardedAnnotations: annotations, }, nil } +func (c *Client) Close() error { + return c.containerClient.client.Close() +} + type ContainerProcess struct { ContainerID string PID uint32 @@ -130,15 +146,26 @@ func (c *Client) AddContainerByCgroupID(ctx context.Context, cgroupID cgroup.ID) return nil, ErrContainerNotFound } - container, err := c.containerClient.client.ContainerService().Get(ctx, cg.ContainerID) + resp, err := c.criRuntimeServiceClient.ListContainers(ctx, &criapi.ListContainersRequest{ + Filter: &criapi.ContainerFilter{ + Id: cg.ContainerID, + }, + }) if err != nil { return nil, err } + if len(resp.Containers) == 0 { + return nil, ErrContainerNotFound + } + + if len(resp.Containers) > 1 { + return nil, fmt.Errorf("multiple containers found when one was expected") + } - return c.addContainerWithCgroup(container, cg) + return c.addContainerWithCgroup(resp.Containers[0], cg) } -func (c *Client) addContainerWithCgroup(container containerdContainers.Container, cg *cgroup.Cgroup) (cont *Container, rerrr error) { +func (c *Client) addContainerWithCgroup(container *criapi.Container, cg *cgroup.Cgroup) (cont *Container, rerrr error) { podNamespace := container.Labels["io.kubernetes.pod.namespace"] containerName := container.Labels["io.kubernetes.container.name"] podName := container.Labels["io.kubernetes.pod.name"] @@ -152,6 +179,7 @@ func (c *Client) addContainerWithCgroup(container containerdContainers.Container ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() + pids, err := c.containerClient.getContainerPids(ctx, cg.ContainerID) if err != nil { if st, ok := status.FromError(err); ok && st.Code() == codes.NotFound { @@ -171,17 +199,67 @@ func (c *Client) addContainerWithCgroup(container containerdContainers.Container PIDs: pids, } + sandbox, err := c.getPodSandbox(ctx, container) + if err != nil { + c.log.Warnf("cannot get pod sandbox: %v", err) + } + + if sandbox != nil { + for k, v := range sandbox.Labels { + for _, labelPrefix := range c.forwardedLabels { + if strings.HasPrefix(k, labelPrefix) { + if cont.Labels == nil { + cont.Labels = make(map[string]string) + } + cont.Labels[k] = v + } + } + } + + for k, v := range sandbox.Annotations { + for _, annotationPrefix := range c.forwardedAnnotations { + if strings.HasPrefix(k, annotationPrefix) { + if cont.Annotations == nil { + cont.Annotations = make(map[string]string) + } + cont.Annotations[k] = v + } + } + } + } + c.mu.Lock() c.containersByCgroup[cg.Id] = cont c.mu.Unlock() - c.log.Debugf("added container, id=%s pod=%s name=%s", container.ID, podName, containerName) + c.log.Debugf("added container, id=%s pod=%s name=%s sandbox=%s", container.Id, podName, containerName, sandbox.Metadata.Uid) go c.fireContainerCreatedListeners(cont) return cont, nil } +func (c *Client) getPodSandbox(ctx context.Context, cont *criapi.Container) (*criapi.PodSandbox, error) { + sandboxResp, err := c.criRuntimeServiceClient.ListPodSandbox(ctx, &criapi.ListPodSandboxRequest{ + Filter: &criapi.PodSandboxFilter{ + Id: cont.PodSandboxId, + }, + }) + + if err != nil { + return nil, err + } + + if len(sandboxResp.Items) == 0 { + return nil, fmt.Errorf("pod sandbox not found: %w", err) + } + if len(sandboxResp.Items) > 1 { + return nil, fmt.Errorf("multiple sandboxes found when one was expected") + } + + return sandboxResp.Items[0], nil +} + func (c *Client) GetContainerForCgroup(ctx context.Context, cgroup uint64) (*Container, error) { container, found, err := c.LookupContainerForCgroupInCache(cgroup) if err != nil {