diff --git a/channelz/funcs.go b/channelz/funcs.go index 586a0336..be5d6de6 100644 --- a/channelz/funcs.go +++ b/channelz/funcs.go @@ -16,6 +16,8 @@ * */ +//go:generate ./regenerate.sh + // Package channelz defines APIs for enabling channelz service, entry // registration/deletion, and accessing channelz data. It also defines channelz // metric struct formats. diff --git a/channelz/grpc_channelz_v1/channelz.pb.go b/channelz/grpc_channelz_v1/channelz.pb.go index 03a0f5da..eb3698b7 100644 --- a/channelz/grpc_channelz_v1/channelz.pb.go +++ b/channelz/grpc_channelz_v1/channelz.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: channelz.proto +// source: grpc/channelz/v1/channelz.proto package grpc_channelz_v1 // import "google.golang.org/grpc/channelz/grpc_channelz_v1" @@ -59,7 +59,37 @@ func (x ChannelConnectivityState_State) String() string { return proto.EnumName(ChannelConnectivityState_State_name, int32(x)) } func (ChannelConnectivityState_State) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{2, 0} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{2, 0} +} + +// The supported severity levels of trace events. +type ChannelTraceEvent_Severity int32 + +const ( + ChannelTraceEvent_CT_UNKNOWN ChannelTraceEvent_Severity = 0 + ChannelTraceEvent_CT_INFO ChannelTraceEvent_Severity = 1 + ChannelTraceEvent_CT_WARNING ChannelTraceEvent_Severity = 2 + ChannelTraceEvent_CT_ERROR ChannelTraceEvent_Severity = 3 +) + +var ChannelTraceEvent_Severity_name = map[int32]string{ + 0: "CT_UNKNOWN", + 1: "CT_INFO", + 2: "CT_WARNING", + 3: "CT_ERROR", +} +var ChannelTraceEvent_Severity_value = map[string]int32{ + "CT_UNKNOWN": 0, + "CT_INFO": 1, + "CT_WARNING": 2, + "CT_ERROR": 3, +} + +func (x ChannelTraceEvent_Severity) String() string { + return proto.EnumName(ChannelTraceEvent_Severity_name, int32(x)) +} +func (ChannelTraceEvent_Severity) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{4, 0} } // Channel is a logical grouping of channels, subchannels, and sockets. @@ -88,7 +118,7 @@ func (m *Channel) Reset() { *m = Channel{} } func (m *Channel) String() string { return proto.CompactTextString(m) } func (*Channel) ProtoMessage() {} func (*Channel) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{0} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{0} } func (m *Channel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Channel.Unmarshal(m, b) @@ -170,7 +200,7 @@ func (m *Subchannel) Reset() { *m = Subchannel{} } func (m *Subchannel) String() string { return proto.CompactTextString(m) } func (*Subchannel) ProtoMessage() {} func (*Subchannel) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{1} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{1} } func (m *Subchannel) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Subchannel.Unmarshal(m, b) @@ -238,7 +268,7 @@ func (m *ChannelConnectivityState) Reset() { *m = ChannelConnectivitySta func (m *ChannelConnectivityState) String() string { return proto.CompactTextString(m) } func (*ChannelConnectivityState) ProtoMessage() {} func (*ChannelConnectivityState) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{2} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{2} } func (m *ChannelConnectivityState) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelConnectivityState.Unmarshal(m, b) @@ -291,7 +321,7 @@ func (m *ChannelData) Reset() { *m = ChannelData{} } func (m *ChannelData) String() string { return proto.CompactTextString(m) } func (*ChannelData) ProtoMessage() {} func (*ChannelData) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{3} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{3} } func (m *ChannelData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelData.Unmarshal(m, b) @@ -360,18 +390,203 @@ func (m *ChannelData) GetLastCallStartedTimestamp() *timestamp.Timestamp { return nil } +// A trace event is an interesting thing that happened to a channel or +// subchannel, such as creation, address resolution, subchannel creation, etc. +type ChannelTraceEvent struct { + // High level description of the event. + Description string `protobuf:"bytes,1,opt,name=description" json:"description,omitempty"` + // the severity of the trace event + Severity ChannelTraceEvent_Severity `protobuf:"varint,2,opt,name=severity,enum=grpc.channelz.v1.ChannelTraceEvent_Severity" json:"severity,omitempty"` + // When this event occurred. + Timestamp *timestamp.Timestamp `protobuf:"bytes,3,opt,name=timestamp" json:"timestamp,omitempty"` + // ref of referenced channel or subchannel. + // Optional, only present if this event refers to a child object. For example, + // this field would be filled if this trace event was for a subchannel being + // created. + // + // Types that are valid to be assigned to ChildRef: + // *ChannelTraceEvent_ChannelRef + // *ChannelTraceEvent_SubchannelRef + ChildRef isChannelTraceEvent_ChildRef `protobuf_oneof:"child_ref"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ChannelTraceEvent) Reset() { *m = ChannelTraceEvent{} } +func (m *ChannelTraceEvent) String() string { return proto.CompactTextString(m) } +func (*ChannelTraceEvent) ProtoMessage() {} +func (*ChannelTraceEvent) Descriptor() ([]byte, []int) { + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{4} +} +func (m *ChannelTraceEvent) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ChannelTraceEvent.Unmarshal(m, b) +} +func (m *ChannelTraceEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ChannelTraceEvent.Marshal(b, m, deterministic) +} +func (dst *ChannelTraceEvent) XXX_Merge(src proto.Message) { + xxx_messageInfo_ChannelTraceEvent.Merge(dst, src) +} +func (m *ChannelTraceEvent) XXX_Size() int { + return xxx_messageInfo_ChannelTraceEvent.Size(m) +} +func (m *ChannelTraceEvent) XXX_DiscardUnknown() { + xxx_messageInfo_ChannelTraceEvent.DiscardUnknown(m) +} + +var xxx_messageInfo_ChannelTraceEvent proto.InternalMessageInfo + +type isChannelTraceEvent_ChildRef interface { + isChannelTraceEvent_ChildRef() +} + +type ChannelTraceEvent_ChannelRef struct { + ChannelRef *ChannelRef `protobuf:"bytes,4,opt,name=channel_ref,json=channelRef,oneof"` +} +type ChannelTraceEvent_SubchannelRef struct { + SubchannelRef *SubchannelRef `protobuf:"bytes,5,opt,name=subchannel_ref,json=subchannelRef,oneof"` +} + +func (*ChannelTraceEvent_ChannelRef) isChannelTraceEvent_ChildRef() {} +func (*ChannelTraceEvent_SubchannelRef) isChannelTraceEvent_ChildRef() {} + +func (m *ChannelTraceEvent) GetChildRef() isChannelTraceEvent_ChildRef { + if m != nil { + return m.ChildRef + } + return nil +} + +func (m *ChannelTraceEvent) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *ChannelTraceEvent) GetSeverity() ChannelTraceEvent_Severity { + if m != nil { + return m.Severity + } + return ChannelTraceEvent_CT_UNKNOWN +} + +func (m *ChannelTraceEvent) GetTimestamp() *timestamp.Timestamp { + if m != nil { + return m.Timestamp + } + return nil +} + +func (m *ChannelTraceEvent) GetChannelRef() *ChannelRef { + if x, ok := m.GetChildRef().(*ChannelTraceEvent_ChannelRef); ok { + return x.ChannelRef + } + return nil +} + +func (m *ChannelTraceEvent) GetSubchannelRef() *SubchannelRef { + if x, ok := m.GetChildRef().(*ChannelTraceEvent_SubchannelRef); ok { + return x.SubchannelRef + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ChannelTraceEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ChannelTraceEvent_OneofMarshaler, _ChannelTraceEvent_OneofUnmarshaler, _ChannelTraceEvent_OneofSizer, []interface{}{ + (*ChannelTraceEvent_ChannelRef)(nil), + (*ChannelTraceEvent_SubchannelRef)(nil), + } +} + +func _ChannelTraceEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ChannelTraceEvent) + // child_ref + switch x := m.ChildRef.(type) { + case *ChannelTraceEvent_ChannelRef: + b.EncodeVarint(4<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ChannelRef); err != nil { + return err + } + case *ChannelTraceEvent_SubchannelRef: + b.EncodeVarint(5<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.SubchannelRef); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ChannelTraceEvent.ChildRef has unexpected type %T", x) + } + return nil +} + +func _ChannelTraceEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ChannelTraceEvent) + switch tag { + case 4: // child_ref.channel_ref + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ChannelRef) + err := b.DecodeMessage(msg) + m.ChildRef = &ChannelTraceEvent_ChannelRef{msg} + return true, err + case 5: // child_ref.subchannel_ref + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(SubchannelRef) + err := b.DecodeMessage(msg) + m.ChildRef = &ChannelTraceEvent_SubchannelRef{msg} + return true, err + default: + return false, nil + } +} + +func _ChannelTraceEvent_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ChannelTraceEvent) + // child_ref + switch x := m.ChildRef.(type) { + case *ChannelTraceEvent_ChannelRef: + s := proto.Size(x.ChannelRef) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *ChannelTraceEvent_SubchannelRef: + s := proto.Size(x.SubchannelRef) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + // ChannelTrace represents the recent events that have occurred on the channel. type ChannelTrace struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // Number of events ever logged in this tracing object. This can differ from + // events.size() because events can be overwritten or garbage collected by + // implementations. + NumEventsLogged int64 `protobuf:"varint,1,opt,name=num_events_logged,json=numEventsLogged" json:"num_events_logged,omitempty"` + // Time that this channel was created. + CreationTimestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=creation_timestamp,json=creationTimestamp" json:"creation_timestamp,omitempty"` + // List of events that have occurred on this channel. + Events []*ChannelTraceEvent `protobuf:"bytes,3,rep,name=events" json:"events,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ChannelTrace) Reset() { *m = ChannelTrace{} } func (m *ChannelTrace) String() string { return proto.CompactTextString(m) } func (*ChannelTrace) ProtoMessage() {} func (*ChannelTrace) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{4} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{5} } func (m *ChannelTrace) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelTrace.Unmarshal(m, b) @@ -391,6 +606,27 @@ func (m *ChannelTrace) XXX_DiscardUnknown() { var xxx_messageInfo_ChannelTrace proto.InternalMessageInfo +func (m *ChannelTrace) GetNumEventsLogged() int64 { + if m != nil { + return m.NumEventsLogged + } + return 0 +} + +func (m *ChannelTrace) GetCreationTimestamp() *timestamp.Timestamp { + if m != nil { + return m.CreationTimestamp + } + return nil +} + +func (m *ChannelTrace) GetEvents() []*ChannelTraceEvent { + if m != nil { + return m.Events + } + return nil +} + // ChannelRef is a reference to a Channel. type ChannelRef struct { // The globally unique id for this channel. Must be a positive number. @@ -406,7 +642,7 @@ func (m *ChannelRef) Reset() { *m = ChannelRef{} } func (m *ChannelRef) String() string { return proto.CompactTextString(m) } func (*ChannelRef) ProtoMessage() {} func (*ChannelRef) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{5} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{6} } func (m *ChannelRef) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ChannelRef.Unmarshal(m, b) @@ -455,7 +691,7 @@ func (m *SubchannelRef) Reset() { *m = SubchannelRef{} } func (m *SubchannelRef) String() string { return proto.CompactTextString(m) } func (*SubchannelRef) ProtoMessage() {} func (*SubchannelRef) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{6} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{7} } func (m *SubchannelRef) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SubchannelRef.Unmarshal(m, b) @@ -503,7 +739,7 @@ func (m *SocketRef) Reset() { *m = SocketRef{} } func (m *SocketRef) String() string { return proto.CompactTextString(m) } func (*SocketRef) ProtoMessage() {} func (*SocketRef) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{7} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{8} } func (m *SocketRef) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SocketRef.Unmarshal(m, b) @@ -552,7 +788,7 @@ func (m *ServerRef) Reset() { *m = ServerRef{} } func (m *ServerRef) String() string { return proto.CompactTextString(m) } func (*ServerRef) ProtoMessage() {} func (*ServerRef) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{8} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{9} } func (m *ServerRef) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServerRef.Unmarshal(m, b) @@ -605,7 +841,7 @@ func (m *Server) Reset() { *m = Server{} } func (m *Server) String() string { return proto.CompactTextString(m) } func (*Server) ProtoMessage() {} func (*Server) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{9} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{10} } func (m *Server) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Server.Unmarshal(m, b) @@ -667,7 +903,7 @@ func (m *ServerData) Reset() { *m = ServerData{} } func (m *ServerData) String() string { return proto.CompactTextString(m) } func (*ServerData) ProtoMessage() {} func (*ServerData) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{10} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{11} } func (m *ServerData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServerData.Unmarshal(m, b) @@ -747,7 +983,7 @@ func (m *Socket) Reset() { *m = Socket{} } func (m *Socket) String() string { return proto.CompactTextString(m) } func (*Socket) ProtoMessage() {} func (*Socket) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{11} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{12} } func (m *Socket) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Socket.Unmarshal(m, b) @@ -859,7 +1095,7 @@ func (m *SocketData) Reset() { *m = SocketData{} } func (m *SocketData) String() string { return proto.CompactTextString(m) } func (*SocketData) ProtoMessage() {} func (*SocketData) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{12} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{13} } func (m *SocketData) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SocketData.Unmarshal(m, b) @@ -986,7 +1222,7 @@ func (m *Address) Reset() { *m = Address{} } func (m *Address) String() string { return proto.CompactTextString(m) } func (*Address) ProtoMessage() {} func (*Address) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{13} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{14} } func (m *Address) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Address.Unmarshal(m, b) @@ -1160,7 +1396,7 @@ func (m *Address_TcpIpAddress) Reset() { *m = Address_TcpIpAddress{} } func (m *Address_TcpIpAddress) String() string { return proto.CompactTextString(m) } func (*Address_TcpIpAddress) ProtoMessage() {} func (*Address_TcpIpAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{13, 0} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{14, 0} } func (m *Address_TcpIpAddress) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Address_TcpIpAddress.Unmarshal(m, b) @@ -1206,7 +1442,7 @@ func (m *Address_UdsAddress) Reset() { *m = Address_UdsAddress{} } func (m *Address_UdsAddress) String() string { return proto.CompactTextString(m) } func (*Address_UdsAddress) ProtoMessage() {} func (*Address_UdsAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{13, 1} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{14, 1} } func (m *Address_UdsAddress) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Address_UdsAddress.Unmarshal(m, b) @@ -1248,7 +1484,7 @@ func (m *Address_OtherAddress) Reset() { *m = Address_OtherAddress{} } func (m *Address_OtherAddress) String() string { return proto.CompactTextString(m) } func (*Address_OtherAddress) ProtoMessage() {} func (*Address_OtherAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{13, 2} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{14, 2} } func (m *Address_OtherAddress) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Address_OtherAddress.Unmarshal(m, b) @@ -1297,7 +1533,7 @@ func (m *Security) Reset() { *m = Security{} } func (m *Security) String() string { return proto.CompactTextString(m) } func (*Security) ProtoMessage() {} func (*Security) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{14} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{15} } func (m *Security) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Security.Unmarshal(m, b) @@ -1444,7 +1680,7 @@ func (m *Security_Tls) Reset() { *m = Security_Tls{} } func (m *Security_Tls) String() string { return proto.CompactTextString(m) } func (*Security_Tls) ProtoMessage() {} func (*Security_Tls) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{14, 0} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{15, 0} } func (m *Security_Tls) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Security_Tls.Unmarshal(m, b) @@ -1593,7 +1829,7 @@ func (m *Security_OtherSecurity) Reset() { *m = Security_OtherSecurity{} func (m *Security_OtherSecurity) String() string { return proto.CompactTextString(m) } func (*Security_OtherSecurity) ProtoMessage() {} func (*Security_OtherSecurity) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{14, 1} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{15, 1} } func (m *Security_OtherSecurity) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Security_OtherSecurity.Unmarshal(m, b) @@ -1648,7 +1884,7 @@ func (m *SocketOption) Reset() { *m = SocketOption{} } func (m *SocketOption) String() string { return proto.CompactTextString(m) } func (*SocketOption) ProtoMessage() {} func (*SocketOption) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{15} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{16} } func (m *SocketOption) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SocketOption.Unmarshal(m, b) @@ -1702,7 +1938,7 @@ func (m *SocketOptionTimeout) Reset() { *m = SocketOptionTimeout{} } func (m *SocketOptionTimeout) String() string { return proto.CompactTextString(m) } func (*SocketOptionTimeout) ProtoMessage() {} func (*SocketOptionTimeout) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{16} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{17} } func (m *SocketOptionTimeout) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SocketOptionTimeout.Unmarshal(m, b) @@ -1745,7 +1981,7 @@ func (m *SocketOptionLinger) Reset() { *m = SocketOptionLinger{} } func (m *SocketOptionLinger) String() string { return proto.CompactTextString(m) } func (*SocketOptionLinger) ProtoMessage() {} func (*SocketOptionLinger) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{17} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{18} } func (m *SocketOptionLinger) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SocketOptionLinger.Unmarshal(m, b) @@ -1820,7 +2056,7 @@ func (m *SocketOptionTcpInfo) Reset() { *m = SocketOptionTcpInfo{} } func (m *SocketOptionTcpInfo) String() string { return proto.CompactTextString(m) } func (*SocketOptionTcpInfo) ProtoMessage() {} func (*SocketOptionTcpInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{18} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{19} } func (m *SocketOptionTcpInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SocketOptionTcpInfo.Unmarshal(m, b) @@ -2056,7 +2292,7 @@ func (m *GetTopChannelsRequest) Reset() { *m = GetTopChannelsRequest{} } func (m *GetTopChannelsRequest) String() string { return proto.CompactTextString(m) } func (*GetTopChannelsRequest) ProtoMessage() {} func (*GetTopChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{19} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{20} } func (m *GetTopChannelsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTopChannelsRequest.Unmarshal(m, b) @@ -2100,7 +2336,7 @@ func (m *GetTopChannelsResponse) Reset() { *m = GetTopChannelsResponse{} func (m *GetTopChannelsResponse) String() string { return proto.CompactTextString(m) } func (*GetTopChannelsResponse) ProtoMessage() {} func (*GetTopChannelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{20} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{21} } func (m *GetTopChannelsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetTopChannelsResponse.Unmarshal(m, b) @@ -2147,7 +2383,7 @@ func (m *GetServersRequest) Reset() { *m = GetServersRequest{} } func (m *GetServersRequest) String() string { return proto.CompactTextString(m) } func (*GetServersRequest) ProtoMessage() {} func (*GetServersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{21} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{22} } func (m *GetServersRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetServersRequest.Unmarshal(m, b) @@ -2191,7 +2427,7 @@ func (m *GetServersResponse) Reset() { *m = GetServersResponse{} } func (m *GetServersResponse) String() string { return proto.CompactTextString(m) } func (*GetServersResponse) ProtoMessage() {} func (*GetServersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{22} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{23} } func (m *GetServersResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetServersResponse.Unmarshal(m, b) @@ -2239,7 +2475,7 @@ func (m *GetServerSocketsRequest) Reset() { *m = GetServerSocketsRequest func (m *GetServerSocketsRequest) String() string { return proto.CompactTextString(m) } func (*GetServerSocketsRequest) ProtoMessage() {} func (*GetServerSocketsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{23} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{24} } func (m *GetServerSocketsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetServerSocketsRequest.Unmarshal(m, b) @@ -2290,7 +2526,7 @@ func (m *GetServerSocketsResponse) Reset() { *m = GetServerSocketsRespon func (m *GetServerSocketsResponse) String() string { return proto.CompactTextString(m) } func (*GetServerSocketsResponse) ProtoMessage() {} func (*GetServerSocketsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{24} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{25} } func (m *GetServerSocketsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetServerSocketsResponse.Unmarshal(m, b) @@ -2336,7 +2572,7 @@ func (m *GetChannelRequest) Reset() { *m = GetChannelRequest{} } func (m *GetChannelRequest) String() string { return proto.CompactTextString(m) } func (*GetChannelRequest) ProtoMessage() {} func (*GetChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{25} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{26} } func (m *GetChannelRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetChannelRequest.Unmarshal(m, b) @@ -2376,7 +2612,7 @@ func (m *GetChannelResponse) Reset() { *m = GetChannelResponse{} } func (m *GetChannelResponse) String() string { return proto.CompactTextString(m) } func (*GetChannelResponse) ProtoMessage() {} func (*GetChannelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{26} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{27} } func (m *GetChannelResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetChannelResponse.Unmarshal(m, b) @@ -2415,7 +2651,7 @@ func (m *GetSubchannelRequest) Reset() { *m = GetSubchannelRequest{} } func (m *GetSubchannelRequest) String() string { return proto.CompactTextString(m) } func (*GetSubchannelRequest) ProtoMessage() {} func (*GetSubchannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{27} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{28} } func (m *GetSubchannelRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSubchannelRequest.Unmarshal(m, b) @@ -2455,7 +2691,7 @@ func (m *GetSubchannelResponse) Reset() { *m = GetSubchannelResponse{} } func (m *GetSubchannelResponse) String() string { return proto.CompactTextString(m) } func (*GetSubchannelResponse) ProtoMessage() {} func (*GetSubchannelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{28} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{29} } func (m *GetSubchannelResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSubchannelResponse.Unmarshal(m, b) @@ -2494,7 +2730,7 @@ func (m *GetSocketRequest) Reset() { *m = GetSocketRequest{} } func (m *GetSocketRequest) String() string { return proto.CompactTextString(m) } func (*GetSocketRequest) ProtoMessage() {} func (*GetSocketRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{29} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{30} } func (m *GetSocketRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSocketRequest.Unmarshal(m, b) @@ -2534,7 +2770,7 @@ func (m *GetSocketResponse) Reset() { *m = GetSocketResponse{} } func (m *GetSocketResponse) String() string { return proto.CompactTextString(m) } func (*GetSocketResponse) ProtoMessage() {} func (*GetSocketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_channelz_544d5edb3d49afb2, []int{30} + return fileDescriptor_channelz_ce3ed45d08251f2f, []int{31} } func (m *GetSocketResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GetSocketResponse.Unmarshal(m, b) @@ -2566,6 +2802,7 @@ func init() { proto.RegisterType((*Subchannel)(nil), "grpc.channelz.v1.Subchannel") proto.RegisterType((*ChannelConnectivityState)(nil), "grpc.channelz.v1.ChannelConnectivityState") proto.RegisterType((*ChannelData)(nil), "grpc.channelz.v1.ChannelData") + proto.RegisterType((*ChannelTraceEvent)(nil), "grpc.channelz.v1.ChannelTraceEvent") proto.RegisterType((*ChannelTrace)(nil), "grpc.channelz.v1.ChannelTrace") proto.RegisterType((*ChannelRef)(nil), "grpc.channelz.v1.ChannelRef") proto.RegisterType((*SubchannelRef)(nil), "grpc.channelz.v1.SubchannelRef") @@ -2599,6 +2836,7 @@ func init() { proto.RegisterType((*GetSocketRequest)(nil), "grpc.channelz.v1.GetSocketRequest") proto.RegisterType((*GetSocketResponse)(nil), "grpc.channelz.v1.GetSocketResponse") proto.RegisterEnum("grpc.channelz.v1.ChannelConnectivityState_State", ChannelConnectivityState_State_name, ChannelConnectivityState_State_value) + proto.RegisterEnum("grpc.channelz.v1.ChannelTraceEvent_Severity", ChannelTraceEvent_Severity_name, ChannelTraceEvent_Severity_value) } // Reference imports to suppress errors if they are not otherwise used. @@ -2850,156 +3088,171 @@ var _Channelz_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "channelz.proto", + Metadata: "grpc/channelz/v1/channelz.proto", } -func init() { proto.RegisterFile("channelz.proto", fileDescriptor_channelz_544d5edb3d49afb2) } - -var fileDescriptor_channelz_544d5edb3d49afb2 = []byte{ - // 2317 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, - 0x15, 0x8f, 0xbe, 0x2c, 0xea, 0x59, 0x52, 0xe8, 0x49, 0x36, 0x4b, 0x2b, 0x1f, 0x4e, 0x99, 0x6c, - 0xe2, 0xcd, 0x22, 0x72, 0xe2, 0x4d, 0x73, 0xe8, 0xb6, 0xc0, 0x2a, 0x8a, 0x9d, 0xd8, 0x75, 0x9c, - 0x80, 0x92, 0x37, 0xd9, 0x1e, 0x96, 0x3b, 0x21, 0x47, 0x36, 0x6b, 0x8a, 0x54, 0x39, 0x23, 0x19, - 0xc9, 0xb5, 0xf7, 0x1e, 0xfb, 0x27, 0xf4, 0xd2, 0x43, 0x81, 0x02, 0x05, 0xda, 0x6b, 0xd1, 0x7f, - 0xa6, 0xff, 0x45, 0x31, 0x1f, 0x24, 0x47, 0x96, 0x64, 0x3b, 0xc8, 0xb1, 0x17, 0x43, 0x7c, 0xfc, - 0xbd, 0xdf, 0x7b, 0xf3, 0xbe, 0x38, 0x33, 0x86, 0xa6, 0x77, 0x84, 0xa3, 0x88, 0x84, 0x1f, 0xdb, - 0xa3, 0x24, 0x66, 0x31, 0x32, 0x0f, 0x93, 0x91, 0xd7, 0xce, 0x84, 0x93, 0xc7, 0xad, 0xd5, 0xc3, - 0x38, 0x3e, 0x0c, 0xc9, 0x86, 0x78, 0xff, 0x7e, 0x3c, 0xd8, 0xc0, 0xd1, 0x07, 0x09, 0x6e, 0xdd, - 0x3a, 0xfd, 0xca, 0x1f, 0x27, 0x98, 0x05, 0x71, 0xa4, 0xde, 0xaf, 0x9d, 0x7e, 0xcf, 0x82, 0x21, - 0xa1, 0x0c, 0x0f, 0x47, 0x8b, 0x08, 0x4e, 0x12, 0x3c, 0x1a, 0x91, 0x84, 0xca, 0xf7, 0xf6, 0xdf, - 0x8a, 0x50, 0xed, 0x4a, 0x5f, 0x50, 0x1b, 0x4a, 0x09, 0x19, 0x58, 0x85, 0xdb, 0x85, 0xf5, 0xe5, - 0xcd, 0x1b, 0xed, 0xd3, 0x7e, 0xb6, 0x15, 0xce, 0x21, 0x03, 0x87, 0x03, 0xd1, 0x63, 0x28, 0xfb, - 0x98, 0x61, 0xab, 0x28, 0x14, 0x6e, 0x2e, 0x54, 0x78, 0x8e, 0x19, 0x76, 0x04, 0x14, 0xfd, 0x06, - 0x96, 0x15, 0xc0, 0xe5, 0xa6, 0x4a, 0xb7, 0x4b, 0xe7, 0x9a, 0x02, 0x2f, 0xfb, 0x8d, 0xb6, 0xa1, - 0x49, 0xc7, 0xef, 0x75, 0x86, 0xb2, 0x60, 0x58, 0x9b, 0x65, 0xe8, 0x65, 0x38, 0x4e, 0xd2, 0xa0, - 0xfa, 0x23, 0xfa, 0x15, 0x00, 0x8d, 0xbd, 0x63, 0xc2, 0x04, 0x47, 0x45, 0x70, 0x5c, 0x9f, 0xc3, - 0x21, 0x30, 0x5c, 0xbf, 0x46, 0xd3, 0x9f, 0xf6, 0x3f, 0x8a, 0x00, 0x39, 0x39, 0x7a, 0xac, 0x07, - 0xed, 0x5c, 0x3f, 0xfe, 0x8f, 0xe3, 0xf6, 0xef, 0x02, 0x58, 0xca, 0xbd, 0x6e, 0x1c, 0x45, 0xc4, - 0x63, 0xc1, 0x24, 0x60, 0x1f, 0x7a, 0x0c, 0x33, 0x82, 0xb6, 0xa1, 0x42, 0xf9, 0x0f, 0x11, 0xc7, - 0xe6, 0xe6, 0xa3, 0x85, 0x2b, 0x9b, 0x51, 0x6d, 0x8b, 0xbf, 0x8e, 0x54, 0xb7, 0x7f, 0x82, 0x8a, - 0x24, 0x5c, 0x86, 0xea, 0xc1, 0xfe, 0x6f, 0xf7, 0x5f, 0xbf, 0xdd, 0x37, 0x2f, 0x21, 0x03, 0xca, - 0x3b, 0xcf, 0xf7, 0xb6, 0xcc, 0x02, 0x6a, 0x02, 0x74, 0x5f, 0xef, 0xef, 0x6f, 0x75, 0xfb, 0x3b, - 0xfb, 0x2f, 0xcc, 0x22, 0xaa, 0x41, 0xc5, 0xd9, 0xea, 0x3c, 0xff, 0xd1, 0x2c, 0xa1, 0x2f, 0x60, - 0xa5, 0xef, 0x74, 0xf6, 0x7b, 0x3b, 0x5b, 0xfb, 0x7d, 0x77, 0xbb, 0xb3, 0xb3, 0x77, 0xe0, 0x6c, - 0x99, 0x65, 0x54, 0x07, 0xa3, 0xf7, 0xf2, 0xa0, 0xff, 0x9c, 0x33, 0x55, 0xec, 0xff, 0x16, 0x61, - 0x59, 0xcb, 0x0e, 0xfa, 0x5e, 0xf7, 0x7b, 0x79, 0xf3, 0xc1, 0xc5, 0xfd, 0x56, 0x1e, 0xa3, 0x6b, - 0xb0, 0xc4, 0x70, 0x72, 0x48, 0x98, 0x28, 0x87, 0x9a, 0xa3, 0x9e, 0xd0, 0x13, 0xa8, 0xb0, 0x04, - 0x7b, 0xc4, 0x2a, 0x09, 0xe6, 0x5b, 0x0b, 0x99, 0xfb, 0x1c, 0xe5, 0x48, 0x30, 0xba, 0x03, 0x0d, - 0x0f, 0x87, 0x21, 0x75, 0x29, 0xc3, 0x09, 0x23, 0xbe, 0x55, 0xbe, 0x5d, 0x58, 0x2f, 0x39, 0x75, - 0x21, 0xec, 0x49, 0x19, 0xba, 0x0f, 0x97, 0x15, 0x68, 0xec, 0x79, 0x84, 0xf8, 0xc4, 0xb7, 0x2a, - 0x02, 0xd6, 0x94, 0xb0, 0x54, 0x8a, 0x7e, 0x01, 0x52, 0xd1, 0x1d, 0xe0, 0x20, 0x24, 0xbe, 0xb5, - 0x24, 0x50, 0xcb, 0x42, 0xb6, 0x2d, 0x44, 0xe8, 0x47, 0xb8, 0x1e, 0x62, 0xca, 0x5c, 0x2e, 0x4b, - 0x8d, 0xba, 0xd9, 0x10, 0xb2, 0xaa, 0xc2, 0xf9, 0x56, 0x5b, 0x4e, 0xa1, 0x76, 0x3a, 0x85, 0xda, - 0xfd, 0x14, 0xe1, 0x58, 0x5c, 0xbd, 0x8b, 0xc3, 0x50, 0x79, 0x97, 0xbd, 0xb1, 0x9b, 0x50, 0xd7, - 0x97, 0x68, 0x7b, 0x00, 0x79, 0x79, 0xa3, 0x9b, 0x90, 0x16, 0xb8, 0x1b, 0xf8, 0x22, 0xfc, 0x25, - 0xa7, 0xa6, 0x24, 0x3b, 0x3e, 0x42, 0x50, 0x8e, 0xf0, 0x90, 0xa8, 0xa0, 0x8a, 0xdf, 0xbb, 0x65, - 0xa3, 0x64, 0x96, 0x77, 0xcb, 0x46, 0xd9, 0xac, 0xec, 0x96, 0x8d, 0x8a, 0xb9, 0xb4, 0x5b, 0x36, - 0x96, 0xcc, 0xea, 0x6e, 0xd9, 0xa8, 0x9a, 0xc6, 0x6e, 0xd9, 0x30, 0xcc, 0x9a, 0x1d, 0x42, 0x63, - 0xaa, 0x03, 0x78, 0x44, 0xb5, 0xd6, 0x09, 0x7c, 0xb1, 0xa4, 0x92, 0x53, 0xcf, 0x85, 0x9a, 0x35, - 0x63, 0xca, 0x5a, 0xc1, 0x2c, 0xee, 0x96, 0x8d, 0xa2, 0x59, 0x5a, 0x64, 0xd9, 0xfe, 0x19, 0x6a, - 0x59, 0xaf, 0xa0, 0xeb, 0xa0, 0xba, 0x85, 0x5b, 0x29, 0x09, 0x2b, 0x86, 0x14, 0x68, 0x16, 0xca, - 0x0b, 0x2d, 0xcc, 0x5f, 0x0f, 0xb7, 0x40, 0x92, 0x09, 0x49, 0x52, 0x0b, 0xe2, 0x81, 0x5b, 0xa8, - 0x28, 0x0b, 0x42, 0xa0, 0x59, 0x58, 0xba, 0xd0, 0x1a, 0x72, 0x0b, 0x7f, 0x2d, 0xc0, 0x92, 0x34, - 0x81, 0x1e, 0xea, 0xb3, 0x70, 0xde, 0x5c, 0x48, 0x3d, 0x91, 0x73, 0xf0, 0xd1, 0xd4, 0x1c, 0xbc, - 0xb1, 0x08, 0xaf, 0x8d, 0xc1, 0xef, 0xa1, 0x11, 0x06, 0x94, 0x91, 0xc8, 0x95, 0x81, 0x51, 0x83, - 0xf0, 0xcc, 0x11, 0x54, 0x97, 0x1a, 0x52, 0x60, 0xff, 0x89, 0x4f, 0xef, 0x8c, 0x36, 0xef, 0xb2, - 0xc2, 0x67, 0x75, 0x59, 0xf1, 0x62, 0x5d, 0x56, 0xba, 0x50, 0x97, 0x95, 0x3f, 0xb9, 0xcb, 0x2a, - 0x9f, 0xd1, 0x65, 0x7f, 0x29, 0xc2, 0x92, 0x8c, 0xcd, 0xf9, 0xe9, 0xcb, 0x62, 0x7a, 0xc1, 0xf4, - 0x09, 0xbc, 0x96, 0xbe, 0x0d, 0xa8, 0x84, 0xb1, 0x87, 0x43, 0x35, 0xd3, 0x56, 0x67, 0x55, 0x3a, - 0xbe, 0x9f, 0x10, 0x4a, 0x1d, 0x89, 0x43, 0x8f, 0x61, 0x29, 0x21, 0xc3, 0x98, 0xc9, 0xba, 0x3f, - 0x53, 0x43, 0x01, 0xd1, 0x53, 0x30, 0x28, 0xf1, 0xc6, 0x49, 0xc0, 0x3e, 0xe4, 0x71, 0x99, 0x2d, - 0x2c, 0x89, 0x70, 0x32, 0x2c, 0x5a, 0x83, 0x65, 0xc9, 0xe0, 0x6a, 0x5d, 0x00, 0x52, 0xb4, 0x8f, - 0x87, 0xc4, 0xfe, 0x63, 0x15, 0x20, 0x5f, 0x11, 0x4f, 0x2f, 0x65, 0x09, 0xc1, 0xc3, 0xbc, 0x0a, - 0xe4, 0x10, 0x6a, 0x2a, 0x71, 0x5a, 0x07, 0xdf, 0xc0, 0x4a, 0x06, 0xcc, 0x2a, 0x41, 0x16, 0x8c, - 0x99, 0x42, 0xb3, 0x5a, 0xf8, 0x0a, 0x52, 0xf5, 0xb4, 0x1a, 0x64, 0xcd, 0x34, 0x94, 0x54, 0xd5, - 0xc3, 0x1d, 0x68, 0x0c, 0x09, 0xa5, 0xf8, 0x90, 0x50, 0x97, 0x92, 0x88, 0xa5, 0x63, 0x3e, 0x15, - 0xf6, 0x48, 0xc4, 0xb8, 0xe1, 0x0c, 0x94, 0x10, 0x8f, 0x04, 0x93, 0x6c, 0xd0, 0x9b, 0xe9, 0x0b, - 0x47, 0xc9, 0xd1, 0x3a, 0x98, 0xc7, 0x84, 0x8c, 0x5c, 0x1c, 0x06, 0x93, 0x94, 0x54, 0x8e, 0xfb, - 0x26, 0x97, 0x77, 0x84, 0x58, 0xd0, 0x1e, 0xc1, 0x1d, 0x51, 0x8b, 0x22, 0x43, 0xae, 0xf4, 0xcb, - 0xf5, 0x12, 0x82, 0x3f, 0x75, 0xf2, 0xaf, 0x71, 0x9a, 0x3d, 0xce, 0xd2, 0x13, 0x24, 0x5d, 0xc9, - 0x91, 0x01, 0xd0, 0xef, 0xe1, 0xae, 0xb0, 0xa4, 0xf2, 0xb2, 0xd0, 0x94, 0x71, 0xae, 0xa9, 0xdb, - 0x9c, 0xc7, 0x11, 0x34, 0x0b, 0x6c, 0xa5, 0x1d, 0xa6, 0x02, 0x23, 0x02, 0xa0, 0x99, 0xa8, 0x5d, - 0xac, 0xc3, 0x5e, 0x49, 0x6d, 0x1e, 0xa7, 0x9c, 0x1a, 0xc3, 0xda, 0x14, 0x75, 0x9a, 0x0b, 0x8d, - 0x1e, 0xce, 0xa5, 0xbf, 0xa1, 0xd1, 0xa7, 0x49, 0xcb, 0x4d, 0xfc, 0x00, 0xab, 0x32, 0x1d, 0x83, - 0x30, 0x3e, 0x71, 0xbd, 0x38, 0x62, 0x49, 0x1c, 0xba, 0x27, 0x41, 0xe4, 0xc7, 0x27, 0xd6, 0x72, - 0xda, 0xcf, 0xa7, 0xc8, 0x77, 0x22, 0xf6, 0xf4, 0xc9, 0x0f, 0x38, 0x1c, 0x13, 0xe7, 0x9a, 0xd0, - 0xde, 0x0e, 0xe3, 0x93, 0xae, 0xd4, 0x7d, 0x2b, 0x54, 0xd1, 0x3b, 0x68, 0xa9, 0xe0, 0xcf, 0x23, - 0xae, 0x9f, 0x4f, 0xfc, 0xa5, 0x54, 0x9f, 0x65, 0x7e, 0x0a, 0x4b, 0xf1, 0x88, 0x1f, 0x64, 0xac, - 0x86, 0x18, 0xe1, 0xb7, 0x16, 0x8d, 0x8f, 0xd7, 0x02, 0xe5, 0x28, 0xb4, 0xfd, 0xcf, 0x12, 0x54, - 0x55, 0xcb, 0xa3, 0x57, 0xd0, 0x60, 0xde, 0x28, 0x18, 0xb9, 0x58, 0x0a, 0xd4, 0xe4, 0xba, 0xb7, - 0x70, 0x48, 0xb4, 0xfb, 0xde, 0x68, 0x67, 0xa4, 0x1e, 0x5e, 0x5e, 0x72, 0xea, 0x42, 0x3d, 0xa5, - 0x7b, 0x01, 0xcb, 0x63, 0x9f, 0x66, 0x64, 0x72, 0xac, 0xdd, 0x5d, 0x4c, 0x76, 0xe0, 0xd3, 0x9c, - 0x0a, 0xc6, 0xd9, 0x13, 0xf7, 0x2b, 0x66, 0x47, 0x24, 0xc9, 0xa8, 0x4a, 0xe7, 0xf9, 0xf5, 0x9a, - 0xc3, 0x35, 0xbf, 0x62, 0xed, 0xb9, 0xd5, 0x81, 0xba, 0xee, 0x37, 0xdf, 0xf9, 0x9c, 0x5a, 0x73, - 0xdd, 0xa9, 0xe5, 0xcb, 0x40, 0x50, 0x1e, 0xc5, 0x89, 0xdc, 0x4e, 0x56, 0x1c, 0xf1, 0xbb, 0xb5, - 0x0e, 0x90, 0x7b, 0x8b, 0x5a, 0x60, 0x0c, 0x82, 0x90, 0x88, 0x39, 0x57, 0x10, 0x73, 0x2e, 0x7b, - 0x6e, 0xed, 0x43, 0x5d, 0x77, 0x26, 0xdb, 0x15, 0x14, 0xf2, 0x5d, 0x01, 0x7a, 0x00, 0x95, 0x09, - 0xcf, 0xae, 0x0a, 0xd1, 0xd5, 0x99, 0x02, 0xe8, 0x44, 0x1f, 0x1c, 0x09, 0x79, 0x56, 0x83, 0xaa, - 0xf2, 0xd4, 0xfe, 0x73, 0x09, 0x8c, 0x74, 0xf0, 0xa2, 0x4d, 0x28, 0xb1, 0x90, 0x2e, 0xfe, 0xec, - 0xa6, 0xc0, 0x76, 0x3f, 0xe4, 0x11, 0xe1, 0x60, 0xbe, 0xd9, 0x16, 0x81, 0x51, 0x76, 0xd7, 0xcf, - 0xd0, 0x12, 0x6b, 0x48, 0x9f, 0x5e, 0x5e, 0x72, 0xa4, 0x62, 0xeb, 0x5f, 0x05, 0x28, 0xf5, 0x43, - 0x8a, 0xbe, 0x82, 0x06, 0x65, 0x38, 0xf2, 0x71, 0xe2, 0xbb, 0xf9, 0xf2, 0x78, 0xe4, 0x53, 0x31, - 0x1f, 0xf9, 0x68, 0x0d, 0x40, 0x26, 0x32, 0xdf, 0x4a, 0xbe, 0xbc, 0xe4, 0xd4, 0x84, 0x4c, 0x00, - 0xbe, 0x81, 0x15, 0xd9, 0x77, 0x1e, 0x49, 0x58, 0x30, 0x08, 0x3c, 0x7e, 0x14, 0x28, 0x89, 0x8c, - 0x98, 0xe2, 0x45, 0x37, 0x97, 0xa3, 0x87, 0x80, 0x54, 0x33, 0xe9, 0xe8, 0xb2, 0x40, 0xaf, 0xc8, - 0x37, 0x1a, 0xfc, 0x59, 0x13, 0xea, 0x5e, 0x30, 0xe2, 0xd6, 0xe9, 0x38, 0x60, 0xa4, 0xf5, 0x1a, - 0x1a, 0x53, 0xab, 0xfa, 0xec, 0xd4, 0x54, 0xa1, 0x32, 0x8c, 0x7d, 0x12, 0xda, 0x11, 0xd4, 0xf5, - 0x5e, 0x9b, 0x4b, 0x7c, 0x55, 0x27, 0xae, 0x29, 0x0a, 0xf4, 0x04, 0x00, 0xfb, 0x7e, 0xc0, 0xb5, - 0xb2, 0xaf, 0xfa, 0x7c, 0x9b, 0x1a, 0xce, 0xde, 0x83, 0x2b, 0xba, 0x3d, 0x3e, 0xc6, 0xe2, 0x31, - 0x43, 0xbf, 0x04, 0x23, 0xbd, 0xdd, 0x50, 0x75, 0xb1, 0x3a, 0x43, 0xf5, 0x5c, 0x01, 0x9c, 0x0c, - 0x6a, 0x7b, 0x80, 0x74, 0xb6, 0xbd, 0x20, 0x3a, 0x24, 0x09, 0x3f, 0x56, 0x61, 0x7e, 0xdc, 0x92, - 0xab, 0x30, 0x1c, 0xf5, 0x34, 0x65, 0xa4, 0x78, 0x71, 0x23, 0x7f, 0x37, 0x4e, 0xf9, 0xec, 0x8d, - 0x76, 0xa2, 0x41, 0xcc, 0x7b, 0x91, 0xcf, 0x10, 0x37, 0x3f, 0x04, 0x36, 0x9c, 0x1a, 0x97, 0xc8, - 0x53, 0xa8, 0x2d, 0x27, 0x94, 0xeb, 0x61, 0x85, 0x28, 0x0a, 0xc4, 0x32, 0x17, 0x76, 0xb1, 0xc4, - 0x7c, 0x0d, 0xa6, 0xc0, 0x24, 0x84, 0x25, 0x38, 0xa2, 0xc3, 0x80, 0xc9, 0x81, 0xd1, 0x70, 0x2e, - 0x73, 0xb9, 0x93, 0x8b, 0xf9, 0x1e, 0x45, 0x40, 0x47, 0x49, 0xfc, 0x9e, 0x50, 0x51, 0x3a, 0x0d, - 0x47, 0x38, 0xf0, 0x46, 0x48, 0xf8, 0x56, 0x52, 0x00, 0xde, 0x63, 0xef, 0x38, 0x1e, 0x0c, 0xc4, - 0xd7, 0x5e, 0x99, 0x7b, 0x26, 0x45, 0x19, 0x44, 0xce, 0x53, 0x2a, 0x3e, 0xf2, 0x0a, 0x22, 0x97, - 0x46, 0xd1, 0x3d, 0xb8, 0x2c, 0x17, 0x15, 0xf9, 0xee, 0x09, 0xf5, 0x70, 0x48, 0xc4, 0xd7, 0xbc, - 0xe1, 0x88, 0xc5, 0xf4, 0x22, 0xff, 0xad, 0x10, 0x66, 0xb8, 0xc4, 0x9b, 0xa4, 0x38, 0x23, 0xc7, - 0x39, 0xde, 0x44, 0xe1, 0x56, 0xc1, 0x90, 0x38, 0x16, 0x8b, 0x0f, 0x69, 0xc3, 0xa9, 0x0a, 0x00, - 0x8b, 0xb3, 0x57, 0x98, 0xc5, 0xe2, 0x23, 0xa8, 0x5e, 0x75, 0x58, 0x8c, 0x6e, 0x2b, 0x47, 0xb9, - 0x17, 0x43, 0x4a, 0xc5, 0x67, 0x4c, 0xad, 0xb6, 0x17, 0xf9, 0xaf, 0x28, 0xcd, 0x10, 0xdc, 0x3e, - 0x47, 0xd4, 0x73, 0x84, 0xe3, 0x4d, 0x38, 0x22, 0x5d, 0xec, 0x38, 0xc2, 0xde, 0x31, 0xf1, 0xad, - 0x46, 0xbe, 0xd8, 0x03, 0x29, 0xca, 0x62, 0x4a, 0x25, 0xa2, 0xa9, 0x59, 0x91, 0x80, 0xeb, 0x20, - 0x12, 0xea, 0x86, 0x31, 0x65, 0xd6, 0x65, 0xf1, 0x5a, 0xf8, 0xbc, 0x17, 0x53, 0x96, 0x19, 0x50, - 0xc9, 0xb3, 0xcc, 0xdc, 0x80, 0x4a, 0x5c, 0x06, 0x19, 0x70, 0x3a, 0x46, 0xad, 0x95, 0x1c, 0xb2, - 0x2d, 0x45, 0xe8, 0x21, 0x5c, 0x91, 0x26, 0xf8, 0x36, 0x81, 0xef, 0x94, 0xe5, 0xfe, 0x0b, 0x09, - 0xa4, 0xa8, 0x8e, 0x3d, 0x4c, 0xc5, 0xb6, 0x53, 0x6d, 0xec, 0x50, 0x0e, 0xc7, 0xde, 0xb1, 0x44, - 0x5f, 0xc9, 0x6b, 0x86, 0xa3, 0x3b, 0xde, 0xb1, 0x00, 0xcf, 0x72, 0x27, 0xc4, 0x9b, 0x58, 0x57, - 0x67, 0xb9, 0x1d, 0xe2, 0x4d, 0x66, 0xb9, 0x05, 0xfa, 0x8b, 0x19, 0x6e, 0x01, 0x4e, 0x43, 0x33, - 0x1a, 0xb2, 0xb1, 0x75, 0x2d, 0x0f, 0xcd, 0x9b, 0x21, 0x1b, 0xa3, 0x07, 0xb0, 0x92, 0x65, 0x87, - 0x52, 0x76, 0x94, 0x10, 0x7a, 0x64, 0x7d, 0xa9, 0x15, 0xb6, 0x37, 0xe9, 0x29, 0xb1, 0x56, 0x21, - 0xcc, 0xb2, 0xf4, 0x0a, 0x61, 0x59, 0x7e, 0x12, 0xc6, 0x26, 0x38, 0xb1, 0x56, 0xb5, 0x1c, 0x0b, - 0x49, 0x66, 0x87, 0xd7, 0x49, 0x66, 0xa7, 0x95, 0xdb, 0xe9, 0x45, 0x7e, 0x66, 0x27, 0xed, 0x47, - 0x8e, 0xf5, 0x4e, 0x22, 0xdf, 0xba, 0x9e, 0x27, 0xa3, 0x17, 0xf9, 0xdd, 0x93, 0x28, 0x2f, 0x08, - 0xec, 0x4f, 0x78, 0x51, 0xdd, 0xc8, 0x0d, 0x76, 0x84, 0x84, 0xef, 0xfc, 0x55, 0xce, 0xe3, 0xc4, - 0x27, 0x49, 0x10, 0x1d, 0x5a, 0x37, 0x05, 0xa8, 0x29, 0xd3, 0x9e, 0x4a, 0xed, 0x0e, 0x7c, 0xf1, - 0x82, 0xb0, 0x7e, 0x3c, 0x52, 0x67, 0x48, 0xea, 0x90, 0x3f, 0x8c, 0x09, 0x65, 0x7c, 0xb3, 0x2d, - 0xce, 0x0c, 0xee, 0xcc, 0x0d, 0x46, 0x53, 0xc8, 0xbb, 0xe9, 0xc5, 0x82, 0xed, 0xc2, 0xb5, 0xd3, - 0x14, 0x74, 0x14, 0x47, 0x94, 0xa0, 0x6f, 0xa1, 0xaa, 0xb4, 0xad, 0x82, 0xd8, 0x41, 0xad, 0x2e, - 0xbe, 0x0d, 0x4c, 0x91, 0xc8, 0x84, 0x12, 0x89, 0xe4, 0xe9, 0xc3, 0x70, 0xf8, 0x4f, 0xfb, 0x3b, - 0x58, 0x79, 0x41, 0x98, 0x3c, 0x11, 0x67, 0xfe, 0xdd, 0xe3, 0x67, 0x1b, 0xee, 0x5f, 0x7e, 0x5b, - 0x50, 0x48, 0x8f, 0x21, 0x38, 0x51, 0xe8, 0x1d, 0xdf, 0x7e, 0x07, 0x48, 0x57, 0x56, 0x9e, 0x3d, - 0x82, 0x25, 0xa9, 0xa7, 0x1c, 0xb3, 0x16, 0x5e, 0x04, 0x28, 0xdc, 0x1c, 0xb7, 0x7e, 0x82, 0x2f, - 0x33, 0x66, 0x39, 0x77, 0x33, 0xe7, 0xa6, 0x2e, 0x31, 0x0a, 0xa7, 0x2e, 0x31, 0x72, 0xcf, 0xb3, - 0x9b, 0x94, 0xa2, 0xee, 0xb9, 0xba, 0x4e, 0xb1, 0x8f, 0xc0, 0x9a, 0xe5, 0x57, 0xfe, 0x4f, 0x5f, - 0x72, 0x16, 0x3e, 0xe5, 0x92, 0x73, 0xce, 0x4a, 0x36, 0x45, 0x80, 0xb3, 0x8b, 0x2b, 0xb9, 0x86, - 0xb3, 0x2f, 0xaf, 0xec, 0x1d, 0x11, 0xd7, 0x4c, 0x67, 0x5e, 0xc6, 0x0b, 0x17, 0xcb, 0xb8, 0xfd, - 0x1d, 0x5c, 0xe5, 0x0b, 0xd5, 0xae, 0xb4, 0xa4, 0x07, 0x33, 0xd7, 0x5a, 0x85, 0xd9, 0x6b, 0x2d, - 0xfb, 0x40, 0x14, 0xb0, 0xae, 0xac, 0x5c, 0xf9, 0x35, 0x40, 0x0e, 0x5c, 0xfc, 0x0f, 0x03, 0x4d, - 0x53, 0xc3, 0xdb, 0x1b, 0x60, 0x72, 0x5a, 0x15, 0xb4, 0x3c, 0xab, 0x59, 0xca, 0x0a, 0xd3, 0x97, - 0x5f, 0xf6, 0x96, 0x2c, 0x52, 0xa5, 0xa0, 0x95, 0x99, 0xbc, 0x04, 0x92, 0xf6, 0xad, 0x85, 0x29, - 0x52, 0xb8, 0xcd, 0xff, 0x94, 0xc1, 0x50, 0x01, 0xfa, 0x88, 0x3c, 0x68, 0x4e, 0x77, 0x16, 0xba, - 0x3f, 0x4b, 0x30, 0xb7, 0x7d, 0x5b, 0xeb, 0xe7, 0x03, 0x95, 0x8f, 0x6f, 0x01, 0xf2, 0x06, 0x41, - 0x77, 0xe6, 0xea, 0x4d, 0xf7, 0x5e, 0xeb, 0xee, 0xd9, 0x20, 0x45, 0x1c, 0xc8, 0x10, 0xea, 0xf5, - 0x8b, 0xbe, 0x3e, 0x43, 0x73, 0xba, 0x87, 0x5a, 0x0f, 0x2e, 0x02, 0x9d, 0x5a, 0x43, 0xfa, 0x3f, - 0xa2, 0xf9, 0x6b, 0x98, 0x2e, 0xef, 0x05, 0x6b, 0x38, 0x5d, 0xcf, 0x3f, 0x43, 0x63, 0xaa, 0xba, - 0xd0, 0xbd, 0xf9, 0x5e, 0x9d, 0xae, 0xdd, 0xd6, 0xfd, 0x73, 0x71, 0xca, 0x42, 0x1f, 0x6a, 0x59, - 0xdd, 0x20, 0x7b, 0xbe, 0x96, 0x5e, 0x85, 0xad, 0x3b, 0x67, 0x62, 0x24, 0xeb, 0xb3, 0x77, 0x70, - 0x25, 0x88, 0x67, 0x80, 0xcf, 0x1a, 0x69, 0x69, 0xbd, 0xe1, 0xfb, 0xc8, 0x37, 0x85, 0xdf, 0x3d, - 0x52, 0xfb, 0xca, 0xc3, 0x38, 0xc4, 0xd1, 0x61, 0x3b, 0x4e, 0x0e, 0x37, 0xb8, 0xd2, 0x46, 0xaa, - 0x24, 0x9e, 0xd2, 0x4f, 0xc0, 0x47, 0x77, 0xf2, 0xf8, 0xfd, 0x92, 0xd8, 0x82, 0x7e, 0xfb, 0xbf, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xce, 0xbe, 0x6e, 0x8a, 0x33, 0x1c, 0x00, 0x00, +func init() { + proto.RegisterFile("grpc/channelz/v1/channelz.proto", fileDescriptor_channelz_ce3ed45d08251f2f) +} + +var fileDescriptor_channelz_ce3ed45d08251f2f = []byte{ + // 2515 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0x4b, 0x6f, 0xdb, 0xca, + 0x15, 0xb6, 0xde, 0xd4, 0xd1, 0x23, 0xf2, 0xe4, 0x45, 0x2b, 0x0f, 0xbb, 0x74, 0x6e, 0xe2, 0x9b, + 0x34, 0x72, 0xec, 0x9b, 0x06, 0x45, 0xd3, 0xa2, 0x57, 0x56, 0xec, 0x58, 0xae, 0x23, 0x07, 0x94, + 0x7c, 0x93, 0xdb, 0xc5, 0xe5, 0x65, 0xc8, 0xb1, 0xcc, 0x9a, 0x22, 0x55, 0xce, 0x48, 0x46, 0xb2, + 0xed, 0xbe, 0xcb, 0xa2, 0xbf, 0xa0, 0x9b, 0x2e, 0x0a, 0x14, 0x28, 0xd0, 0x6e, 0x8b, 0xfe, 0x99, + 0xfe, 0x8b, 0x62, 0x1e, 0x7c, 0xc8, 0x92, 0x2c, 0x07, 0x59, 0x76, 0x63, 0x88, 0x87, 0xdf, 0xf9, + 0xce, 0x99, 0xf3, 0x9a, 0xe1, 0x18, 0x56, 0xfb, 0xc1, 0xd0, 0xda, 0xb4, 0x4e, 0x4d, 0xcf, 0xc3, + 0xee, 0xa7, 0xcd, 0xf1, 0x56, 0xf4, 0xbb, 0x31, 0x0c, 0x7c, 0xea, 0xa3, 0x1a, 0x03, 0x34, 0x22, + 0xe1, 0x78, 0xab, 0xbe, 0xd2, 0xf7, 0xfd, 0xbe, 0x8b, 0x37, 0xf9, 0xfb, 0x0f, 0xa3, 0x93, 0x4d, + 0xd3, 0xfb, 0x28, 0xc0, 0xf5, 0xfb, 0x17, 0x5f, 0xd9, 0xa3, 0xc0, 0xa4, 0x8e, 0xef, 0xc9, 0xf7, + 0xab, 0x17, 0xdf, 0x53, 0x67, 0x80, 0x09, 0x35, 0x07, 0xc3, 0x79, 0x04, 0xe7, 0x81, 0x39, 0x1c, + 0xe2, 0x80, 0x88, 0xf7, 0xda, 0xdf, 0xd2, 0x50, 0x68, 0x09, 0x5f, 0x50, 0x03, 0x32, 0x01, 0x3e, + 0x51, 0x53, 0x6b, 0xa9, 0x8d, 0xd2, 0xf6, 0xdd, 0xc6, 0x45, 0x3f, 0x1b, 0x12, 0xa7, 0xe3, 0x13, + 0x9d, 0x01, 0xd1, 0x16, 0x64, 0x6d, 0x93, 0x9a, 0x6a, 0x9a, 0x2b, 0xdc, 0x9b, 0xab, 0xf0, 0xca, + 0xa4, 0xa6, 0xce, 0xa1, 0xe8, 0x57, 0x50, 0x92, 0x00, 0x83, 0x99, 0xca, 0xac, 0x65, 0x16, 0x9a, + 0x02, 0x2b, 0xfa, 0x8d, 0xf6, 0xa0, 0x4a, 0x46, 0x1f, 0x92, 0x0c, 0x59, 0xce, 0xb0, 0x3a, 0xcd, + 0xd0, 0x8d, 0x70, 0x8c, 0xa4, 0x42, 0x92, 0x8f, 0xe8, 0x17, 0x00, 0xc4, 0xb7, 0xce, 0x30, 0xe5, + 0x1c, 0x39, 0xce, 0x71, 0x67, 0x06, 0x07, 0xc7, 0x30, 0xfd, 0x22, 0x09, 0x7f, 0x6a, 0xff, 0x48, + 0x03, 0xc4, 0xe4, 0x68, 0x2b, 0x19, 0xb4, 0x85, 0x7e, 0xfc, 0x1f, 0xc7, 0xed, 0xdf, 0x29, 0x50, + 0xa5, 0x7b, 0x2d, 0xdf, 0xf3, 0xb0, 0x45, 0x9d, 0xb1, 0x43, 0x3f, 0x76, 0xa9, 0x49, 0x31, 0xda, + 0x83, 0x1c, 0x61, 0x3f, 0x78, 0x1c, 0xab, 0xdb, 0xcf, 0xe6, 0xae, 0x6c, 0x4a, 0xb5, 0xc1, 0xff, + 0xea, 0x42, 0x5d, 0xfb, 0x01, 0x72, 0x82, 0xb0, 0x04, 0x85, 0xe3, 0xce, 0x6f, 0x3a, 0x47, 0xef, + 0x3a, 0xb5, 0x25, 0xa4, 0x40, 0xb6, 0xfd, 0xea, 0x70, 0xb7, 0x96, 0x42, 0x55, 0x80, 0xd6, 0x51, + 0xa7, 0xb3, 0xdb, 0xea, 0xb5, 0x3b, 0xaf, 0x6b, 0x69, 0x54, 0x84, 0x9c, 0xbe, 0xdb, 0x7c, 0xf5, + 0x7d, 0x2d, 0x83, 0x6e, 0xc2, 0x72, 0x4f, 0x6f, 0x76, 0xba, 0xed, 0xdd, 0x4e, 0xcf, 0xd8, 0x6b, + 0xb6, 0x0f, 0x8f, 0xf5, 0xdd, 0x5a, 0x16, 0x95, 0x41, 0xe9, 0xee, 0x1f, 0xf7, 0x5e, 0x31, 0xa6, + 0x9c, 0xf6, 0xdf, 0x34, 0x94, 0x12, 0xd9, 0x41, 0xdf, 0x26, 0xfd, 0x2e, 0x6d, 0x3f, 0xbe, 0xba, + 0xdf, 0xd2, 0x63, 0x74, 0x0b, 0xf2, 0xd4, 0x0c, 0xfa, 0x98, 0xf2, 0x72, 0x28, 0xea, 0xf2, 0x09, + 0x3d, 0x87, 0x1c, 0x0d, 0x4c, 0x0b, 0xab, 0x19, 0xce, 0x7c, 0x7f, 0x2e, 0x73, 0x8f, 0xa1, 0x74, + 0x01, 0x46, 0xeb, 0x50, 0xb1, 0x4c, 0xd7, 0x25, 0x06, 0xa1, 0x66, 0x40, 0xb1, 0xad, 0x66, 0xd7, + 0x52, 0x1b, 0x19, 0xbd, 0xcc, 0x85, 0x5d, 0x21, 0x43, 0x8f, 0xe0, 0x9a, 0x04, 0x8d, 0x2c, 0x0b, + 0x63, 0x1b, 0xdb, 0x6a, 0x8e, 0xc3, 0xaa, 0x02, 0x16, 0x4a, 0xd1, 0x4f, 0x40, 0x28, 0x1a, 0x27, + 0xa6, 0xe3, 0x62, 0x5b, 0xcd, 0x73, 0x54, 0x89, 0xcb, 0xf6, 0xb8, 0x08, 0x7d, 0x0f, 0x77, 0x5c, + 0x93, 0x50, 0x83, 0xc9, 0x42, 0xa3, 0x46, 0x34, 0x84, 0xd4, 0x02, 0x77, 0xbe, 0xde, 0x10, 0x53, + 0xa8, 0x11, 0x4e, 0xa1, 0x46, 0x2f, 0x44, 0xe8, 0x2a, 0x53, 0x6f, 0x99, 0xae, 0x2b, 0xbd, 0x8b, + 0xde, 0x68, 0x7f, 0xce, 0xc0, 0x72, 0x72, 0x8d, 0xbb, 0x63, 0xec, 0x51, 0xb4, 0x06, 0x25, 0x1b, + 0x13, 0x2b, 0x70, 0x86, 0x6c, 0x0c, 0xf2, 0xb8, 0x17, 0xf5, 0xa4, 0x08, 0xed, 0x83, 0x42, 0xf0, + 0x18, 0x07, 0x0e, 0xfd, 0xc8, 0x63, 0x5a, 0xdd, 0xfe, 0xe9, 0xe5, 0xc1, 0xe3, 0xc4, 0x8d, 0xae, + 0xd4, 0xd1, 0x23, 0x6d, 0xf4, 0x73, 0x28, 0xc6, 0x4b, 0xc9, 0x2c, 0x5c, 0x4a, 0x0c, 0x46, 0xbf, + 0x9e, 0xec, 0xd7, 0xec, 0xe2, 0x91, 0xba, 0xbf, 0x34, 0xd1, 0xb1, 0xfb, 0x53, 0x1d, 0x9b, 0xbb, + 0xd2, 0x84, 0xd9, 0x5f, 0xba, 0xd0, 0xb3, 0xda, 0x2e, 0x28, 0xe1, 0xd2, 0x78, 0xf9, 0xf7, 0x8c, + 0xb8, 0x31, 0x4a, 0x50, 0x68, 0xf5, 0x8c, 0x76, 0x67, 0xef, 0x48, 0xf6, 0x46, 0xcf, 0x78, 0xd7, + 0xd4, 0x3b, 0xa2, 0x37, 0xca, 0xa0, 0xb4, 0x7a, 0xc6, 0xae, 0xae, 0x1f, 0xe9, 0xb5, 0xcc, 0x4e, + 0x09, 0x8a, 0xd6, 0xa9, 0xe3, 0xda, 0xcc, 0x17, 0xd6, 0xcb, 0xe5, 0x64, 0x04, 0xd1, 0x63, 0x58, + 0xf6, 0x46, 0x03, 0x03, 0xb3, 0x48, 0x12, 0xc3, 0xf5, 0xfb, 0x7d, 0x6c, 0xf3, 0xdc, 0x64, 0xf4, + 0x6b, 0xde, 0x68, 0xc0, 0x23, 0x4c, 0x0e, 0xb9, 0x18, 0xb5, 0x01, 0x59, 0x01, 0xe6, 0xbb, 0x58, + 0xa2, 0x52, 0xd2, 0x0b, 0xc3, 0xbb, 0x1c, 0x6a, 0x45, 0x22, 0xf4, 0x12, 0xf2, 0xc2, 0xa4, 0x9c, + 0x88, 0xeb, 0x57, 0x48, 0xb4, 0x2e, 0x55, 0x34, 0x0b, 0x20, 0x0e, 0x3f, 0xba, 0x07, 0x61, 0xf8, + 0x0d, 0x27, 0x74, 0xbd, 0x28, 0x25, 0x6d, 0x1b, 0x21, 0xc8, 0x7a, 0xe6, 0x00, 0xcb, 0x26, 0xe5, + 0xbf, 0x0f, 0xb2, 0x4a, 0xa6, 0x96, 0x3d, 0xc8, 0x2a, 0xd9, 0x5a, 0xee, 0x20, 0xab, 0xe4, 0x6a, + 0xf9, 0x83, 0xac, 0x92, 0xaf, 0x15, 0x0e, 0xb2, 0x4a, 0xa1, 0xa6, 0x1c, 0x64, 0x15, 0xa5, 0x56, + 0xd4, 0x5c, 0xa8, 0x4c, 0xe4, 0x87, 0x75, 0x68, 0x22, 0xb1, 0x8e, 0xcd, 0x5b, 0x24, 0xa3, 0x97, + 0x63, 0x61, 0xc2, 0x9a, 0x32, 0x61, 0x2d, 0x55, 0x4b, 0x1f, 0x64, 0x95, 0x74, 0x2d, 0x33, 0xcf, + 0xb2, 0xf6, 0x23, 0x14, 0xa3, 0xd9, 0x8b, 0xee, 0x80, 0x9c, 0xbe, 0xcc, 0x4a, 0x86, 0x5b, 0x51, + 0x84, 0x20, 0x61, 0x21, 0x3b, 0xd7, 0xc2, 0xec, 0xf5, 0x30, 0x0b, 0x38, 0x18, 0xe3, 0x20, 0xb4, + 0xc0, 0x1f, 0x98, 0x85, 0x9c, 0xb4, 0xc0, 0x05, 0x09, 0x0b, 0xf9, 0x2b, 0xad, 0x21, 0xb6, 0xf0, + 0xd7, 0x14, 0xe4, 0x85, 0x09, 0xf4, 0x34, 0xb9, 0xb7, 0xce, 0xda, 0x67, 0x42, 0x4f, 0xc4, 0xbe, + 0xfa, 0x6c, 0x62, 0x5f, 0xbd, 0x3b, 0x0f, 0x9f, 0xd8, 0x56, 0xbf, 0x85, 0x8a, 0xeb, 0x10, 0x8a, + 0x3d, 0x43, 0x04, 0x46, 0x96, 0xd1, 0xa5, 0x5b, 0x5a, 0x59, 0x68, 0x08, 0x81, 0xf6, 0x47, 0x76, + 0x1a, 0x88, 0x68, 0xe3, 0xa9, 0x9d, 0xfa, 0xa2, 0xa9, 0x9d, 0xbe, 0xda, 0xd4, 0xce, 0x5c, 0x69, + 0x6a, 0x67, 0x3f, 0x7b, 0x6a, 0xe7, 0xbe, 0x60, 0x6a, 0xff, 0x25, 0x0d, 0x79, 0x11, 0x9b, 0xc5, + 0xe9, 0x8b, 0x62, 0x7a, 0xc5, 0xf4, 0x71, 0x7c, 0x22, 0x7d, 0x9b, 0x90, 0x73, 0x7d, 0xcb, 0x74, + 0xe5, 0x6c, 0x5e, 0x99, 0x56, 0x69, 0xda, 0x76, 0x80, 0x09, 0xd1, 0x05, 0x0e, 0x6d, 0x41, 0x3e, + 0xc0, 0x03, 0x9f, 0x62, 0x39, 0x91, 0x2f, 0xd1, 0x90, 0x40, 0xf4, 0x82, 0xed, 0x26, 0xd6, 0x88, + 0xef, 0x26, 0x51, 0x5c, 0xa6, 0x0b, 0x4b, 0x20, 0xf4, 0x08, 0x8b, 0x56, 0xa1, 0x24, 0x18, 0x8c, + 0x44, 0x17, 0x80, 0x10, 0x75, 0xcc, 0x01, 0xd6, 0xfe, 0x50, 0x00, 0x88, 0x57, 0xc4, 0xd2, 0x4b, + 0x68, 0x80, 0xcd, 0x41, 0x5c, 0x05, 0x62, 0x08, 0x55, 0xa5, 0x38, 0xac, 0x83, 0x27, 0xb0, 0x1c, + 0x01, 0xa3, 0x4a, 0x10, 0x05, 0x53, 0x0b, 0xa1, 0x51, 0x2d, 0x7c, 0x05, 0xa1, 0x7a, 0x58, 0x0d, + 0xa2, 0x66, 0x2a, 0x52, 0x2a, 0xeb, 0x61, 0x1d, 0x2a, 0x03, 0x4c, 0x88, 0xd9, 0xc7, 0xc4, 0x20, + 0xd8, 0xa3, 0xe1, 0xb1, 0x21, 0x14, 0x76, 0xd9, 0xce, 0xfb, 0x04, 0x96, 0x23, 0x50, 0x80, 0x2d, + 0xec, 0x8c, 0xa3, 0x83, 0x43, 0x2d, 0x7c, 0xa1, 0x4b, 0x39, 0xda, 0x80, 0xda, 0x19, 0xc6, 0x43, + 0xc3, 0x74, 0x9d, 0x71, 0x48, 0x2a, 0x8e, 0x0f, 0x55, 0x26, 0x6f, 0x72, 0x31, 0xa7, 0x3d, 0x85, + 0x75, 0x5e, 0x8b, 0x3c, 0x43, 0x86, 0xf0, 0xcb, 0xe0, 0xa3, 0xfe, 0x33, 0x4f, 0x12, 0xab, 0x8c, + 0xe6, 0x90, 0xb1, 0x74, 0x39, 0x49, 0x4b, 0x70, 0xc4, 0xbb, 0xc5, 0xef, 0xe0, 0x01, 0xb7, 0x24, + 0xf3, 0x32, 0xd7, 0x94, 0xb2, 0xd0, 0xd4, 0x1a, 0xe3, 0xd1, 0x39, 0xcd, 0x1c, 0x5b, 0x61, 0x87, + 0xc9, 0xc0, 0xf0, 0x00, 0x24, 0x4c, 0x14, 0xaf, 0xd6, 0x61, 0x6f, 0x84, 0x36, 0x8b, 0x53, 0x4c, + 0x6d, 0xc2, 0xea, 0x04, 0x75, 0x98, 0x8b, 0x04, 0x3d, 0x2c, 0xa4, 0xbf, 0x9b, 0xa0, 0x0f, 0x93, + 0x16, 0x9b, 0xf8, 0x0e, 0x56, 0x44, 0x3a, 0x4e, 0x5c, 0xff, 0xdc, 0xb0, 0x7c, 0x8f, 0x06, 0xbe, + 0x6b, 0x9c, 0x3b, 0x9e, 0xed, 0x9f, 0xab, 0xa5, 0xb0, 0x9f, 0x2f, 0x90, 0xb7, 0x3d, 0xfa, 0xe2, + 0xf9, 0x77, 0xa6, 0x3b, 0xc2, 0xfa, 0x2d, 0xae, 0xbd, 0xe7, 0xfa, 0xe7, 0x2d, 0xa1, 0xfb, 0x8e, + 0xab, 0xa2, 0xf7, 0x50, 0x97, 0xc1, 0x9f, 0x45, 0x5c, 0x5e, 0x4c, 0x7c, 0x5b, 0xa8, 0x4f, 0x33, + 0xbf, 0x80, 0xbc, 0x2f, 0x4e, 0x84, 0x15, 0x3e, 0xc2, 0xef, 0xcf, 0x1b, 0x1f, 0x47, 0x1c, 0xa5, + 0x4b, 0xb4, 0xf6, 0xcf, 0x0c, 0x14, 0x64, 0xcb, 0xa3, 0x37, 0x50, 0xa1, 0xd6, 0xd0, 0x19, 0x1a, + 0xa6, 0x10, 0xc8, 0xc9, 0xf5, 0x70, 0xee, 0x90, 0x68, 0xf4, 0xac, 0x61, 0x7b, 0x28, 0x1f, 0xf6, + 0x97, 0xf4, 0x32, 0x57, 0x0f, 0xe9, 0x5e, 0x43, 0x69, 0x64, 0x93, 0x88, 0x4c, 0x8c, 0xb5, 0x07, + 0xf3, 0xc9, 0x8e, 0x6d, 0x12, 0x53, 0xc1, 0x28, 0x7a, 0x62, 0x7e, 0xf9, 0xf4, 0x14, 0x07, 0x11, + 0x55, 0x66, 0x91, 0x5f, 0x47, 0x0c, 0x9e, 0xf0, 0xcb, 0x4f, 0x3c, 0xd7, 0x9b, 0x50, 0x4e, 0xfa, + 0xcd, 0x4e, 0x3e, 0x17, 0xd6, 0x5c, 0xd6, 0x8b, 0xf1, 0x32, 0x10, 0x64, 0x87, 0x7e, 0x20, 0x3e, + 0x4f, 0x72, 0x3a, 0xff, 0x5d, 0xdf, 0x00, 0x88, 0xbd, 0x45, 0x75, 0x50, 0x4e, 0x1c, 0x17, 0xf3, + 0x39, 0x27, 0xce, 0xe3, 0xd1, 0x73, 0xbd, 0x03, 0xe5, 0xa4, 0x33, 0xd1, 0xa9, 0x20, 0x15, 0x9f, + 0x0a, 0xd0, 0x63, 0xc8, 0x8d, 0x59, 0x76, 0x65, 0x88, 0x6e, 0x4c, 0x15, 0x40, 0xd3, 0xfb, 0xa8, + 0x0b, 0xc8, 0x4e, 0x11, 0x0a, 0xd2, 0x53, 0xed, 0x4f, 0x19, 0x76, 0xb2, 0x95, 0xe3, 0x76, 0x1b, + 0x32, 0xd4, 0x25, 0xf3, 0xb7, 0xdd, 0x10, 0xd8, 0xe8, 0xb9, 0x2c, 0x22, 0x0c, 0xcc, 0x3e, 0xde, + 0x78, 0x60, 0xa4, 0xdd, 0x8d, 0x4b, 0xb4, 0xf8, 0x1a, 0xc2, 0xa7, 0xfd, 0x25, 0x5d, 0x28, 0xd6, + 0xff, 0x95, 0x82, 0x4c, 0xcf, 0x25, 0xe8, 0x2b, 0xa8, 0x10, 0x6a, 0x7a, 0xb6, 0x19, 0xd8, 0x46, + 0xbc, 0x3c, 0x16, 0xf9, 0x50, 0xcc, 0x46, 0x3e, 0x5a, 0x05, 0x10, 0x89, 0x8c, 0x8f, 0x92, 0xfb, + 0x4b, 0x7a, 0x91, 0xcb, 0x38, 0xe0, 0x09, 0x2c, 0x8b, 0xbe, 0xb3, 0x70, 0x40, 0x9d, 0x13, 0xc7, + 0x62, 0x9f, 0x96, 0x19, 0x9e, 0x91, 0x1a, 0x7f, 0xd1, 0x8a, 0xe5, 0xe8, 0x29, 0x20, 0xd9, 0x4c, + 0x49, 0x74, 0x96, 0xa3, 0x97, 0xc5, 0x9b, 0x04, 0x7c, 0xa7, 0x0a, 0x65, 0xcb, 0x19, 0x32, 0xeb, + 0x64, 0xe4, 0x50, 0x5c, 0x3f, 0x82, 0xca, 0xc4, 0xaa, 0xbe, 0x38, 0x35, 0x05, 0xc8, 0x0d, 0x7c, + 0x1b, 0xbb, 0x9a, 0x07, 0xe5, 0x64, 0xaf, 0xcd, 0x24, 0xbe, 0x91, 0x24, 0x2e, 0x4a, 0x0a, 0xf4, + 0x1c, 0xc0, 0xb4, 0x6d, 0x87, 0x69, 0x45, 0xbb, 0xfa, 0x6c, 0x9b, 0x09, 0x9c, 0x76, 0x08, 0xd7, + 0x93, 0xf6, 0xd8, 0x18, 0xf3, 0x47, 0x14, 0xfd, 0x0c, 0x94, 0xf0, 0xb6, 0x4c, 0xd6, 0xc5, 0xca, + 0x14, 0xd5, 0x2b, 0x09, 0xd0, 0x23, 0xa8, 0x66, 0x01, 0x4a, 0xb2, 0x1d, 0x3a, 0x5e, 0x1f, 0x07, + 0xec, 0x33, 0xdd, 0x64, 0x9f, 0xef, 0x62, 0x15, 0x8a, 0x2e, 0x9f, 0x26, 0x8c, 0xa4, 0xaf, 0x6e, + 0xe4, 0xef, 0xca, 0x05, 0x9f, 0xad, 0x61, 0xdb, 0x3b, 0xf1, 0x59, 0x2f, 0xb2, 0x19, 0x62, 0xc4, + 0x97, 0x0a, 0x15, 0xbd, 0xc8, 0x24, 0xe2, 0x56, 0x43, 0x13, 0x13, 0xca, 0xb0, 0x4c, 0x89, 0x48, + 0x73, 0x44, 0x89, 0x09, 0x5b, 0xa6, 0xc0, 0x7c, 0x0d, 0x35, 0x8e, 0x09, 0x30, 0x0d, 0x4c, 0x8f, + 0x0c, 0x1c, 0x2a, 0x06, 0x46, 0x45, 0xbf, 0xc6, 0xe4, 0x7a, 0x2c, 0x66, 0x67, 0x14, 0x0e, 0x1d, + 0x06, 0xfe, 0x07, 0x4c, 0x78, 0xe9, 0x54, 0x74, 0xee, 0xc0, 0x5b, 0x2e, 0x61, 0x47, 0x49, 0x0e, + 0xf8, 0x60, 0x5a, 0x67, 0xfe, 0x89, 0xf8, 0x06, 0x95, 0xe6, 0x76, 0x84, 0x28, 0x82, 0x88, 0x79, + 0x4a, 0xf8, 0x26, 0x2f, 0x21, 0x62, 0x69, 0x04, 0x3d, 0x84, 0x6b, 0x62, 0x51, 0x9e, 0x6d, 0x9c, + 0x13, 0xcb, 0x74, 0x31, 0xdf, 0xcd, 0x2b, 0x3a, 0x5f, 0x4c, 0xd7, 0xb3, 0xdf, 0x71, 0x61, 0x84, + 0x0b, 0xac, 0x71, 0x88, 0x53, 0x62, 0x9c, 0x6e, 0x8d, 0x25, 0x6e, 0x05, 0x14, 0x81, 0xa3, 0x3e, + 0xdf, 0x48, 0x2b, 0x7a, 0x81, 0x03, 0xa8, 0x1f, 0xbd, 0x32, 0xa9, 0xcf, 0x37, 0x41, 0xf9, 0xaa, + 0x49, 0x7d, 0xb4, 0x26, 0x1d, 0x65, 0x5e, 0x0c, 0x08, 0xe1, 0xdb, 0x98, 0x5c, 0x6d, 0xd7, 0xb3, + 0xdf, 0x10, 0x12, 0x21, 0x98, 0x7d, 0x86, 0x28, 0xc7, 0x08, 0xdd, 0x1a, 0x33, 0x44, 0xb8, 0xd8, + 0x91, 0x67, 0x5a, 0x67, 0xd8, 0x56, 0x2b, 0xf1, 0x62, 0x8f, 0x85, 0x28, 0x8a, 0x29, 0x11, 0x88, + 0x6a, 0xc2, 0x8a, 0x00, 0xdc, 0x01, 0x9e, 0x50, 0xc3, 0xf5, 0x09, 0x55, 0xaf, 0xf1, 0xd7, 0xdc, + 0xe7, 0x43, 0x9f, 0xd0, 0xc8, 0x80, 0x4c, 0x9e, 0x5a, 0x8b, 0x0d, 0xc8, 0xc4, 0x45, 0x90, 0x13, + 0x46, 0x47, 0x89, 0xba, 0x1c, 0x43, 0xf6, 0x84, 0x08, 0x3d, 0x85, 0xeb, 0xc2, 0x04, 0x3b, 0x26, + 0xb0, 0x93, 0xb2, 0x38, 0x7f, 0x21, 0x8e, 0xe4, 0xd5, 0x71, 0x68, 0x12, 0x7e, 0xec, 0x94, 0x07, + 0x3b, 0x14, 0xc3, 0x4d, 0xeb, 0x4c, 0xa0, 0xaf, 0xc7, 0x35, 0xc3, 0xd0, 0x4d, 0xeb, 0x8c, 0x83, + 0xa7, 0xb9, 0x03, 0x6c, 0x8d, 0xd5, 0x1b, 0xd3, 0xdc, 0x3a, 0xb6, 0xc6, 0xd3, 0xdc, 0x1c, 0x7d, + 0x73, 0x8a, 0x9b, 0x83, 0xc3, 0xd0, 0x0c, 0x07, 0x74, 0xa4, 0xde, 0x8a, 0x43, 0xf3, 0x76, 0x40, + 0x47, 0xe8, 0x31, 0x2c, 0x47, 0xd9, 0x21, 0x84, 0x9e, 0x06, 0x98, 0x9c, 0xaa, 0xb7, 0x13, 0x85, + 0x6d, 0x8d, 0xbb, 0x52, 0x9c, 0xa8, 0x10, 0xaa, 0xaa, 0xc9, 0x0a, 0xa1, 0x51, 0x7e, 0x02, 0x4a, + 0xc7, 0x66, 0xa0, 0xae, 0x24, 0x72, 0xcc, 0x25, 0x91, 0x1d, 0x56, 0x27, 0x91, 0x9d, 0x7a, 0x6c, + 0xa7, 0xeb, 0xd9, 0x91, 0x9d, 0xb0, 0x1f, 0x19, 0xd6, 0x3a, 0xf7, 0x6c, 0xf5, 0x4e, 0x9c, 0x8c, + 0xae, 0x67, 0xb7, 0xce, 0xbd, 0xb8, 0x20, 0x4c, 0x7b, 0xcc, 0x8a, 0xea, 0x6e, 0x6c, 0xb0, 0xc9, + 0x25, 0xec, 0xe4, 0x2f, 0x73, 0xee, 0x07, 0x36, 0x0e, 0x1c, 0xaf, 0xaf, 0xde, 0xe3, 0xa0, 0xaa, + 0x48, 0x7b, 0x28, 0xd5, 0x9a, 0x70, 0xf3, 0x35, 0xa6, 0x3d, 0x7f, 0x28, 0xbf, 0x21, 0x89, 0x8e, + 0x7f, 0x3f, 0xc2, 0x84, 0xb2, 0xc3, 0x36, 0xff, 0x66, 0x30, 0xa6, 0x6e, 0x30, 0xaa, 0x5c, 0xde, + 0x0a, 0x2f, 0x16, 0x34, 0x03, 0x6e, 0x5d, 0xa4, 0x20, 0x43, 0xdf, 0x23, 0x18, 0x7d, 0x03, 0x05, + 0xa9, 0xad, 0xa6, 0xf8, 0x09, 0x6a, 0x65, 0xfe, 0x6d, 0x55, 0x88, 0x44, 0x35, 0xc8, 0x60, 0x4f, + 0x7c, 0x7d, 0x28, 0x3a, 0xfb, 0xa9, 0xbd, 0x84, 0xe5, 0xd7, 0x98, 0x8a, 0x2f, 0xe2, 0xc8, 0xbf, + 0x87, 0xec, 0xdb, 0x86, 0xf9, 0x17, 0xdf, 0x16, 0xa4, 0xc2, 0xcf, 0x10, 0x33, 0x90, 0xe8, 0xb6, + 0xad, 0xbd, 0x07, 0x94, 0x54, 0x96, 0x9e, 0x3d, 0x83, 0xbc, 0xd0, 0x93, 0x8e, 0xa9, 0x73, 0x2f, + 0x02, 0x24, 0x6e, 0x86, 0x5b, 0x3f, 0xc0, 0xed, 0x88, 0x59, 0xcc, 0xdd, 0xc8, 0xb9, 0x89, 0x4b, + 0x8c, 0xd4, 0x85, 0x4b, 0x8c, 0xd8, 0xf3, 0xe8, 0x26, 0x25, 0x9d, 0xf4, 0x5c, 0x5e, 0xa7, 0x68, + 0xa7, 0xa0, 0x4e, 0xf3, 0x4b, 0xff, 0x27, 0x2f, 0xcd, 0x53, 0x9f, 0x73, 0x69, 0x3e, 0x63, 0x25, + 0xdb, 0x3c, 0xc0, 0xd1, 0xc5, 0x95, 0x58, 0xc3, 0xe5, 0x97, 0x57, 0x5a, 0x9b, 0xc7, 0x35, 0xd2, + 0x99, 0x95, 0xf1, 0xd4, 0xd5, 0x32, 0xae, 0xbd, 0x84, 0x1b, 0x6c, 0xa1, 0x89, 0x2b, 0x2d, 0xe1, + 0xc1, 0xd4, 0xb5, 0x56, 0x6a, 0xfa, 0x5a, 0x4b, 0x3b, 0xe6, 0x05, 0x9c, 0x54, 0x96, 0xae, 0xfc, + 0x12, 0x20, 0x06, 0xce, 0xff, 0x07, 0x54, 0x42, 0x33, 0x81, 0xd7, 0x36, 0xa1, 0xc6, 0x68, 0x65, + 0xd0, 0xe2, 0xac, 0x46, 0x29, 0x4b, 0x4d, 0x5e, 0x7e, 0x69, 0xbb, 0xa2, 0x48, 0xa5, 0x42, 0xa2, + 0xcc, 0xc4, 0x25, 0x90, 0xb0, 0xaf, 0xce, 0x4d, 0x91, 0xc4, 0x6d, 0xff, 0x27, 0x0b, 0x8a, 0x0c, + 0xd0, 0x27, 0x64, 0x41, 0x75, 0xb2, 0xb3, 0xd0, 0xa3, 0x69, 0x82, 0x99, 0xed, 0x5b, 0xdf, 0x58, + 0x0c, 0x94, 0x3e, 0xbe, 0x03, 0x88, 0x1b, 0x04, 0xad, 0xcf, 0xd4, 0x9b, 0xec, 0xbd, 0xfa, 0x83, + 0xcb, 0x41, 0x92, 0xd8, 0x11, 0x21, 0x4c, 0xd6, 0x2f, 0xfa, 0xfa, 0x12, 0xcd, 0xc9, 0x1e, 0xaa, + 0x3f, 0xbe, 0x0a, 0x74, 0x62, 0x0d, 0xe1, 0xff, 0x1c, 0x67, 0xaf, 0x61, 0xb2, 0xbc, 0xe7, 0xac, + 0xe1, 0x62, 0x3d, 0xff, 0x08, 0x95, 0x89, 0xea, 0x42, 0x0f, 0x67, 0x7b, 0x75, 0xb1, 0x76, 0xeb, + 0x8f, 0x16, 0xe2, 0xa4, 0x85, 0x1e, 0x14, 0xa3, 0xba, 0x41, 0xda, 0x6c, 0xad, 0x64, 0x15, 0xd6, + 0xd7, 0x2f, 0xc5, 0x08, 0xd6, 0x9d, 0xf7, 0x70, 0xdd, 0xf1, 0xa7, 0x80, 0x3b, 0x95, 0xb0, 0xb4, + 0xde, 0xb2, 0x73, 0xe4, 0xdb, 0xd4, 0x6f, 0x9f, 0xc9, 0x73, 0x65, 0xdf, 0x77, 0x4d, 0xaf, 0xdf, + 0xf0, 0x83, 0xfe, 0xe6, 0xe4, 0xff, 0x9a, 0xd9, 0x53, 0xb8, 0x05, 0x7c, 0x32, 0xc6, 0x5b, 0x1f, + 0xf2, 0xfc, 0x08, 0xfa, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x7a, 0xae, 0xc5, 0x94, + 0x1e, 0x00, 0x00, } diff --git a/channelz/grpc_channelz_v1/channelz.proto b/channelz/grpc_channelz_v1/channelz.proto deleted file mode 100644 index de6c6ef2..00000000 --- a/channelz/grpc_channelz_v1/channelz.proto +++ /dev/null @@ -1,485 +0,0 @@ -// Copyright 2018 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// This file defines an interface for exporting monitoring information -// out of gRPC servers. See the full design at -// https://github.com/grpc/proposal/blob/master/A14-channelz.md -// -// The canonical version of this proto can be found at -// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto - -syntax = "proto3"; - -package grpc.channelz.v1; - -import "google/protobuf/any.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option go_package = "google.golang.org/grpc/channelz/grpc_channelz_v1"; -option java_multiple_files = true; -option java_package = "io.grpc.channelz.v1"; -option java_outer_classname = "ChannelzProto"; - -// Channel is a logical grouping of channels, subchannels, and sockets. -message Channel { - // The identifier for this channel. This should bet set. - ChannelRef ref = 1; - // Data specific to this channel. - ChannelData data = 2; - // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. - - // There are no ordering guarantees on the order of channel refs. - // There may not be cycles in the ref graph. - // A channel ref may be present in more than one channel or subchannel. - repeated ChannelRef channel_ref = 3; - - // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. - // There are no ordering guarantees on the order of subchannel refs. - // There may not be cycles in the ref graph. - // A sub channel ref may be present in more than one channel or subchannel. - repeated SubchannelRef subchannel_ref = 4; - - // There are no ordering guarantees on the order of sockets. - repeated SocketRef socket_ref = 5; -} - -// Subchannel is a logical grouping of channels, subchannels, and sockets. -// A subchannel is load balanced over by it's ancestor -message Subchannel { - // The identifier for this channel. - SubchannelRef ref = 1; - // Data specific to this channel. - ChannelData data = 2; - // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. - - // There are no ordering guarantees on the order of channel refs. - // There may not be cycles in the ref graph. - // A channel ref may be present in more than one channel or subchannel. - repeated ChannelRef channel_ref = 3; - - // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. - // There are no ordering guarantees on the order of subchannel refs. - // There may not be cycles in the ref graph. - // A sub channel ref may be present in more than one channel or subchannel. - repeated SubchannelRef subchannel_ref = 4; - - // There are no ordering guarantees on the order of sockets. - repeated SocketRef socket_ref = 5; -} - -// These come from the specified states in this document: -// https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md -message ChannelConnectivityState { - enum State { - UNKNOWN = 0; - IDLE = 1; - CONNECTING = 2; - READY = 3; - TRANSIENT_FAILURE = 4; - SHUTDOWN = 5; - } - State state = 1; -} - -// Channel data is data related to a specific Channel or Subchannel. -message ChannelData { - // The connectivity state of the channel or subchannel. Implementations - // should always set this. - ChannelConnectivityState state = 1; - - // The target this channel originally tried to connect to. May be absent - string target = 2; - - // A trace of recent events on the channel. May be absent. - ChannelTrace trace = 3; - - // The number of calls started on the channel - int64 calls_started = 4; - // The number of calls that have completed with an OK status - int64 calls_succeeded = 5; - // The number of calls that have completed with a non-OK status - int64 calls_failed = 6; - - // The last time a call was started on the channel. - google.protobuf.Timestamp last_call_started_timestamp = 7; -} - -// ChannelTrace represents the recent events that have occurred on the channel. -message ChannelTrace { - // see the proto in the gRFC for channel tracing: - // A3-channel-tracing.md -} - -// ChannelRef is a reference to a Channel. -message ChannelRef { - // The globally unique id for this channel. Must be a positive number. - int64 channel_id = 1; - // An optional name associated with the channel. - string name = 2; - // Intentionally don't use field numbers from other refs. - reserved 3, 4, 5, 6, 7, 8; -} - -// ChannelRef is a reference to a Subchannel. -message SubchannelRef { - // The globally unique id for this subchannel. Must be a positive number. - int64 subchannel_id = 7; - // An optional name associated with the subchannel. - string name = 8; - // Intentionally don't use field numbers from other refs. - reserved 1, 2, 3, 4, 5, 6; -} - -// SocketRef is a reference to a Socket. -message SocketRef { - int64 socket_id = 3; - // An optional name associated with the socket. - string name = 4; - // Intentionally don't use field numbers from other refs. - reserved 1, 2, 5, 6, 7, 8; -} - -// ServerRef is a reference to a Server. -message ServerRef { - // A globally unique identifier for this server. Must be a positive number. - int64 server_id = 5; - // An optional name associated with the server. - string name = 6; - // Intentionally don't use field numbers from other refs. - reserved 1, 2, 3, 4, 7, 8; -} - -// Server represents a single server. There may be multiple servers in a single -// program. -message Server { - // The identifier for a Server. This should be set. - ServerRef ref = 1; - // The associated data of the Server. - ServerData data = 2; - - // The sockets that the server is listening on. There are no ordering - // guarantees. This may be absent. - repeated SocketRef listen_socket = 3; -} - -// ServerData is data for a specific Server. -message ServerData { - // A trace of recent events on the server. May be absent. - ChannelTrace trace = 1; - - // The number of incoming calls started on the server - int64 calls_started = 2; - // The number of incoming calls that have completed with an OK status - int64 calls_succeeded = 3; - // The number of incoming calls that have a completed with a non-OK status - int64 calls_failed = 4; - - // The last time a call was started on the server. - google.protobuf.Timestamp last_call_started_timestamp = 5; -} - -// Information about an actual connection. Pronounced "sock-ay". -message Socket { - // The identifier for the Socket. - SocketRef ref = 1; - - // Data specific to this Socket. - SocketData data = 2; - // The locally bound address. - Address local = 3; - // The remote bound address. May be absent. - Address remote = 4; - // Security details for this socket. May be absent if not available, or - // there is no security on the socket. - Security security = 5; - - // Optional, represents the name of the remote endpoint, if different than - // the original target name. - string remote_name = 6; -} - -// SocketData is data associated for a specific Socket. The fields present -// are specific to the implementation, so there may be minor differences in -// the semantics. (e.g. flow control windows) -message SocketData { - // The number of streams that have been started. - int64 streams_started = 1; - // The number of streams that have ended successfully: - // On client side, received frame with eos bit set; - // On server side, sent frame with eos bit set. - int64 streams_succeeded = 2; - // The number of streams that have ended unsuccessfully: - // On client side, ended without receiving frame with eos bit set; - // On server side, ended without sending frame with eos bit set. - int64 streams_failed = 3; - // The number of grpc messages successfully sent on this socket. - int64 messages_sent = 4; - // The number of grpc messages received on this socket. - int64 messages_received = 5; - - // The number of keep alives sent. This is typically implemented with HTTP/2 - // ping messages. - int64 keep_alives_sent = 6; - - // The last time a stream was created by this endpoint. Usually unset for - // servers. - google.protobuf.Timestamp last_local_stream_created_timestamp = 7; - // The last time a stream was created by the remote endpoint. Usually unset - // for clients. - google.protobuf.Timestamp last_remote_stream_created_timestamp = 8; - - // The last time a message was sent by this endpoint. - google.protobuf.Timestamp last_message_sent_timestamp = 9; - // The last time a message was received by this endpoint. - google.protobuf.Timestamp last_message_received_timestamp = 10; - - // The amount of window, granted to the local endpoint by the remote endpoint. - // This may be slightly out of date due to network latency. This does NOT - // include stream level or TCP level flow control info. - google.protobuf.Int64Value local_flow_control_window = 11; - - // The amount of window, granted to the remote endpoint by the local endpoint. - // This may be slightly out of date due to network latency. This does NOT - // include stream level or TCP level flow control info. - google.protobuf.Int64Value remote_flow_control_window = 12; - - // Socket options set on this socket. May be absent. - repeated SocketOption option = 13; -} - -// Address represents the address used to create the socket. -message Address { - message TcpIpAddress { - // Either the IPv4 or IPv6 address in bytes. Will be either 4 bytes or 16 - // bytes in length. - bytes ip_address = 1; - // 0-64k, or -1 if not appropriate. - int32 port = 2; - } - // A Unix Domain Socket address. - message UdsAddress { - string filename = 1; - } - // An address type not included above. - message OtherAddress { - // The human readable version of the value. This value should be set. - string name = 1; - // The actual address message. - google.protobuf.Any value = 2; - } - - oneof address { - TcpIpAddress tcpip_address = 1; - UdsAddress uds_address = 2; - OtherAddress other_address = 3; - } -} - -// Security represents details about how secure the socket is. -message Security { - message Tls { - oneof cipher_suite { - // The cipher suite name in the RFC 4346 format: - // https://tools.ietf.org/html/rfc4346#appendix-C - string standard_name = 1; - // Some other way to describe the cipher suite if - // the RFC 4346 name is not available. - string other_name = 2; - } - // the certificate used by this endpoint. - bytes local_certificate = 3; - // the certificate used by the remote endpoint. - bytes remote_certificate = 4; - } - message OtherSecurity { - // The human readable version of the value. - string name = 1; - // The actual security details message. - google.protobuf.Any value = 2; - } - oneof model { - Tls tls = 1; - OtherSecurity other = 2; - } -} - -// SocketOption represents socket options for a socket. Specifically, these -// are the options returned by getsockopt(). -message SocketOption { - // The full name of the socket option. Typically this will be the upper case - // name, such as "SO_REUSEPORT". - string name = 1; - // The human readable value of this socket option. At least one of value or - // additional will be set. - string value = 2; - // Additional data associated with the socket option. At least one of value - // or additional will be set. - google.protobuf.Any additional = 3; -} - -// For use with SocketOption's additional field. This is primarily used for -// SO_RCVTIMEO and SO_SNDTIMEO -message SocketOptionTimeout { - google.protobuf.Duration duration = 1; -} - -// For use with SocketOption's additional field. This is primarily used for -// SO_LINGER. -message SocketOptionLinger { - // active maps to `struct linger.l_onoff` - bool active = 1; - // duration maps to `struct linger.l_linger` - google.protobuf.Duration duration = 2; -} - -// For use with SocketOption's additional field. Tcp info for -// SOL_TCP and TCP_INFO. -message SocketOptionTcpInfo { - uint32 tcpi_state = 1; - - uint32 tcpi_ca_state = 2; - uint32 tcpi_retransmits = 3; - uint32 tcpi_probes = 4; - uint32 tcpi_backoff = 5; - uint32 tcpi_options = 6; - uint32 tcpi_snd_wscale = 7; - uint32 tcpi_rcv_wscale = 8; - - uint32 tcpi_rto = 9; - uint32 tcpi_ato = 10; - uint32 tcpi_snd_mss = 11; - uint32 tcpi_rcv_mss = 12; - - uint32 tcpi_unacked = 13; - uint32 tcpi_sacked = 14; - uint32 tcpi_lost = 15; - uint32 tcpi_retrans = 16; - uint32 tcpi_fackets = 17; - - uint32 tcpi_last_data_sent = 18; - uint32 tcpi_last_ack_sent = 19; - uint32 tcpi_last_data_recv = 20; - uint32 tcpi_last_ack_recv = 21; - - uint32 tcpi_pmtu = 22; - uint32 tcpi_rcv_ssthresh = 23; - uint32 tcpi_rtt = 24; - uint32 tcpi_rttvar = 25; - uint32 tcpi_snd_ssthresh = 26; - uint32 tcpi_snd_cwnd = 27; - uint32 tcpi_advmss = 28; - uint32 tcpi_reordering = 29; -} - -// Channelz is a service exposed by gRPC servers that provides detailed debug -// information. -service Channelz { - // Gets all root channels (i.e. channels the application has directly - // created). This does not include subchannels nor non-top level channels. - rpc GetTopChannels(GetTopChannelsRequest) returns (GetTopChannelsResponse); - // Gets all servers that exist in the process. - rpc GetServers(GetServersRequest) returns (GetServersResponse); - // Gets all server sockets that exist in the process. - rpc GetServerSockets(GetServerSocketsRequest) returns (GetServerSocketsResponse); - // Returns a single Channel, or else a NOT_FOUND code. - rpc GetChannel(GetChannelRequest) returns (GetChannelResponse); - // Returns a single Subchannel, or else a NOT_FOUND code. - rpc GetSubchannel(GetSubchannelRequest) returns (GetSubchannelResponse); - // Returns a single Socket or else a NOT_FOUND code. - rpc GetSocket(GetSocketRequest) returns (GetSocketResponse); -} - -message GetTopChannelsRequest { - // start_channel_id indicates that only channels at or above this id should be - // included in the results. - int64 start_channel_id = 1; -} - -message GetTopChannelsResponse { - // list of channels that the connection detail service knows about. Sorted in - // ascending channel_id order. - repeated Channel channel = 1; - // If set, indicates that the list of channels is the final list. Requesting - // more channels can only return more if they are created after this RPC - // completes. - bool end = 2; -} - -message GetServersRequest { - // start_server_id indicates that only servers at or above this id should be - // included in the results. - int64 start_server_id = 1; -} - -message GetServersResponse { - // list of servers that the connection detail service knows about. Sorted in - // ascending server_id order. - repeated Server server = 1; - // If set, indicates that the list of servers is the final list. Requesting - // more servers will only return more if they are created after this RPC - // completes. - bool end = 2; -} - -message GetServerSocketsRequest { - int64 server_id = 1; - // start_socket_id indicates that only sockets at or above this id should be - // included in the results. - int64 start_socket_id = 2; -} - -message GetServerSocketsResponse { - // list of socket refs that the connection detail service knows about. Sorted in - // ascending socket_id order. - repeated SocketRef socket_ref = 1; - // If set, indicates that the list of sockets is the final list. Requesting - // more sockets will only return more if they are created after this RPC - // completes. - bool end = 2; -} - -message GetChannelRequest { - // channel_id is the identifier of the specific channel to get. - int64 channel_id = 1; -} - -message GetChannelResponse { - // The Channel that corresponds to the requested channel_id. This field - // should be set. - Channel channel = 1; -} - -message GetSubchannelRequest { - // subchannel_id is the identifier of the specific subchannel to get. - int64 subchannel_id = 1; -} - -message GetSubchannelResponse { - // The Subchannel that corresponds to the requested subchannel_id. This - // field should be set. - Subchannel subchannel = 1; -} - -message GetSocketRequest { - // socket_id is the identifier of the specific socket to get. - int64 socket_id = 1; -} - -message GetSocketResponse { - // The Socket that corresponds to the requested socket_id. This field - // should be set. - Socket socket = 1; -} diff --git a/channelz/regenerate.sh b/channelz/regenerate.sh new file mode 100755 index 00000000..e749efa1 --- /dev/null +++ b/channelz/regenerate.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright 2018 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eux -o pipefail + +TMP=$(mktemp -d) + +function finish { + rm -rf "$TMP" +} +trap finish EXIT + +pushd "$TMP" +mkdir -p grpc/channelz/v1 +curl https://raw.githubusercontent.com/grpc/grpc-proto/master/grpc/channelz/v1/channelz.proto > grpc/channelz/v1/channelz.proto + +protoc --go_out=plugins=grpc,paths=source_relative:. -I. grpc/channelz/v1/*.proto +popd +rm -f grpc_channelz_v1/*.pb.go +cp "$TMP"/grpc/channelz/v1/*.pb.go grpc_channelz_v1/ +