// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: api/v1/api.proto

package v1

import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "github.com/gogo/protobuf/gogoproto"
import _ "google.golang.org/genproto/googleapis/api/annotations"

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package

type ListServiceNameReq struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListServiceNameReq) Reset()         { *m = ListServiceNameReq{} }
func (m *ListServiceNameReq) String() string { return proto.CompactTextString(m) }
func (*ListServiceNameReq) ProtoMessage()    {}
func (*ListServiceNameReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{0}
}
func (m *ListServiceNameReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListServiceNameReq.Unmarshal(m, b)
}
func (m *ListServiceNameReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListServiceNameReq.Marshal(b, m, deterministic)
}
func (dst *ListServiceNameReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListServiceNameReq.Merge(dst, src)
}
func (m *ListServiceNameReq) XXX_Size() int {
	return xxx_messageInfo_ListServiceNameReq.Size(m)
}
func (m *ListServiceNameReq) XXX_DiscardUnknown() {
	xxx_messageInfo_ListServiceNameReq.DiscardUnknown(m)
}

var xxx_messageInfo_ListServiceNameReq proto.InternalMessageInfo

type ListServiceNameReply struct {
	ServiceNames         []string `protobuf:"bytes,1,rep,name=service_names,json=serviceNames" json:"service_names,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListServiceNameReply) Reset()         { *m = ListServiceNameReply{} }
func (m *ListServiceNameReply) String() string { return proto.CompactTextString(m) }
func (*ListServiceNameReply) ProtoMessage()    {}
func (*ListServiceNameReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{1}
}
func (m *ListServiceNameReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListServiceNameReply.Unmarshal(m, b)
}
func (m *ListServiceNameReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListServiceNameReply.Marshal(b, m, deterministic)
}
func (dst *ListServiceNameReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListServiceNameReply.Merge(dst, src)
}
func (m *ListServiceNameReply) XXX_Size() int {
	return xxx_messageInfo_ListServiceNameReply.Size(m)
}
func (m *ListServiceNameReply) XXX_DiscardUnknown() {
	xxx_messageInfo_ListServiceNameReply.DiscardUnknown(m)
}

var xxx_messageInfo_ListServiceNameReply proto.InternalMessageInfo

func (m *ListServiceNameReply) GetServiceNames() []string {
	if m != nil {
		return m.ServiceNames
	}
	return nil
}

type ListOperationNameReq struct {
	ServiceName          string   `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListOperationNameReq) Reset()         { *m = ListOperationNameReq{} }
func (m *ListOperationNameReq) String() string { return proto.CompactTextString(m) }
func (*ListOperationNameReq) ProtoMessage()    {}
func (*ListOperationNameReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{2}
}
func (m *ListOperationNameReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListOperationNameReq.Unmarshal(m, b)
}
func (m *ListOperationNameReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListOperationNameReq.Marshal(b, m, deterministic)
}
func (dst *ListOperationNameReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListOperationNameReq.Merge(dst, src)
}
func (m *ListOperationNameReq) XXX_Size() int {
	return xxx_messageInfo_ListOperationNameReq.Size(m)
}
func (m *ListOperationNameReq) XXX_DiscardUnknown() {
	xxx_messageInfo_ListOperationNameReq.DiscardUnknown(m)
}

var xxx_messageInfo_ListOperationNameReq proto.InternalMessageInfo

func (m *ListOperationNameReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

type ListOperationNameReply struct {
	OperationNames       []string `protobuf:"bytes,1,rep,name=operation_names,json=operationNames" json:"operation_names,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListOperationNameReply) Reset()         { *m = ListOperationNameReply{} }
func (m *ListOperationNameReply) String() string { return proto.CompactTextString(m) }
func (*ListOperationNameReply) ProtoMessage()    {}
func (*ListOperationNameReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{3}
}
func (m *ListOperationNameReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListOperationNameReply.Unmarshal(m, b)
}
func (m *ListOperationNameReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListOperationNameReply.Marshal(b, m, deterministic)
}
func (dst *ListOperationNameReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListOperationNameReply.Merge(dst, src)
}
func (m *ListOperationNameReply) XXX_Size() int {
	return xxx_messageInfo_ListOperationNameReply.Size(m)
}
func (m *ListOperationNameReply) XXX_DiscardUnknown() {
	xxx_messageInfo_ListOperationNameReply.DiscardUnknown(m)
}

var xxx_messageInfo_ListOperationNameReply proto.InternalMessageInfo

func (m *ListOperationNameReply) GetOperationNames() []string {
	if m != nil {
		return m.OperationNames
	}
	return nil
}

type ListSpanReq struct {
	ServiceName   string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	OperationName string `protobuf:"bytes,2,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty" form:"operation_name" validate:"required"`
	Start         int64  `protobuf:"varint,3,opt,name=start,proto3" json:"start,omitempty" form:"start"`
	End           int64  `protobuf:"varint,4,opt,name=end,proto3" json:"end,omitempty" form:"end"`
	// 目前支持的 order
	// time:desc time:asc 按时间排序
	// duration:desc duration:asc 按耗时排序
	Order string `protobuf:"bytes,5,opt,name=order,proto3" json:"order,omitempty" form:"order"`
	// 只显示 error 的 span
	OnlyError            bool     `protobuf:"varint,6,opt,name=only_error,json=onlyError,proto3" json:"only_error,omitempty" form:"only_error"`
	Offset               int32    `protobuf:"varint,7,opt,name=offset,proto3" json:"offset,omitempty" form:"offset"`
	Limit                int32    `protobuf:"varint,8,opt,name=limit,proto3" json:"limit,omitempty" form:"limit"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ListSpanReq) Reset()         { *m = ListSpanReq{} }
func (m *ListSpanReq) String() string { return proto.CompactTextString(m) }
func (*ListSpanReq) ProtoMessage()    {}
func (*ListSpanReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{4}
}
func (m *ListSpanReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListSpanReq.Unmarshal(m, b)
}
func (m *ListSpanReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListSpanReq.Marshal(b, m, deterministic)
}
func (dst *ListSpanReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListSpanReq.Merge(dst, src)
}
func (m *ListSpanReq) XXX_Size() int {
	return xxx_messageInfo_ListSpanReq.Size(m)
}
func (m *ListSpanReq) XXX_DiscardUnknown() {
	xxx_messageInfo_ListSpanReq.DiscardUnknown(m)
}

var xxx_messageInfo_ListSpanReq proto.InternalMessageInfo

func (m *ListSpanReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *ListSpanReq) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *ListSpanReq) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *ListSpanReq) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

func (m *ListSpanReq) GetOrder() string {
	if m != nil {
		return m.Order
	}
	return ""
}

func (m *ListSpanReq) GetOnlyError() bool {
	if m != nil {
		return m.OnlyError
	}
	return false
}

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

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

type SpanListItem struct {
	TraceId       string               `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
	SpanId        string               `protobuf:"bytes,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"`
	ParentId      string               `protobuf:"bytes,3,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
	ServiceName   string               `protobuf:"bytes,4,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	OperationName string               `protobuf:"bytes,5,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"`
	StartTime     string               `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	Duration      string               `protobuf:"bytes,7,opt,name=duration,proto3" json:"duration,omitempty"`
	Tags          map[string]*TagValue `protobuf:"bytes,12,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
	// Deprecated: use tags
	IsError              bool     `protobuf:"varint,8,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
	ContainerIp          string   `protobuf:"bytes,9,opt,name=container_ip,json=containerIp,proto3" json:"container_ip,omitempty"`
	RegionZone           string   `protobuf:"bytes,10,opt,name=region_zone,json=regionZone,proto3" json:"region_zone,omitempty"`
	Mark                 string   `protobuf:"bytes,11,opt,name=mark,proto3" json:"mark,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SpanListItem) Reset()         { *m = SpanListItem{} }
func (m *SpanListItem) String() string { return proto.CompactTextString(m) }
func (*SpanListItem) ProtoMessage()    {}
func (*SpanListItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{5}
}
func (m *SpanListItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SpanListItem.Unmarshal(m, b)
}
func (m *SpanListItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SpanListItem.Marshal(b, m, deterministic)
}
func (dst *SpanListItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SpanListItem.Merge(dst, src)
}
func (m *SpanListItem) XXX_Size() int {
	return xxx_messageInfo_SpanListItem.Size(m)
}
func (m *SpanListItem) XXX_DiscardUnknown() {
	xxx_messageInfo_SpanListItem.DiscardUnknown(m)
}

var xxx_messageInfo_SpanListItem proto.InternalMessageInfo

func (m *SpanListItem) GetTraceId() string {
	if m != nil {
		return m.TraceId
	}
	return ""
}

func (m *SpanListItem) GetSpanId() string {
	if m != nil {
		return m.SpanId
	}
	return ""
}

func (m *SpanListItem) GetParentId() string {
	if m != nil {
		return m.ParentId
	}
	return ""
}

func (m *SpanListItem) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *SpanListItem) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *SpanListItem) GetStartTime() string {
	if m != nil {
		return m.StartTime
	}
	return ""
}

func (m *SpanListItem) GetDuration() string {
	if m != nil {
		return m.Duration
	}
	return ""
}

func (m *SpanListItem) GetTags() map[string]*TagValue {
	if m != nil {
		return m.Tags
	}
	return nil
}

func (m *SpanListItem) GetIsError() bool {
	if m != nil {
		return m.IsError
	}
	return false
}

func (m *SpanListItem) GetContainerIp() string {
	if m != nil {
		return m.ContainerIp
	}
	return ""
}

func (m *SpanListItem) GetRegionZone() string {
	if m != nil {
		return m.RegionZone
	}
	return ""
}

func (m *SpanListItem) GetMark() string {
	if m != nil {
		return m.Mark
	}
	return ""
}

type TraceReq struct {
	TraceId              string   `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty" form:"trace_id" validate:"required"`
	SpanId               string   `protobuf:"bytes,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty" form:"span_id"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *TraceReq) Reset()         { *m = TraceReq{} }
func (m *TraceReq) String() string { return proto.CompactTextString(m) }
func (*TraceReq) ProtoMessage()    {}
func (*TraceReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{6}
}
func (m *TraceReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TraceReq.Unmarshal(m, b)
}
func (m *TraceReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TraceReq.Marshal(b, m, deterministic)
}
func (dst *TraceReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TraceReq.Merge(dst, src)
}
func (m *TraceReq) XXX_Size() int {
	return xxx_messageInfo_TraceReq.Size(m)
}
func (m *TraceReq) XXX_DiscardUnknown() {
	xxx_messageInfo_TraceReq.DiscardUnknown(m)
}

var xxx_messageInfo_TraceReq proto.InternalMessageInfo

func (m *TraceReq) GetTraceId() string {
	if m != nil {
		return m.TraceId
	}
	return ""
}

func (m *TraceReq) GetSpanId() string {
	if m != nil {
		return m.SpanId
	}
	return ""
}

type RawTraceReq struct {
	TraceId              string   `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty" form:"trace_id" validate:"required"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RawTraceReq) Reset()         { *m = RawTraceReq{} }
func (m *RawTraceReq) String() string { return proto.CompactTextString(m) }
func (*RawTraceReq) ProtoMessage()    {}
func (*RawTraceReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{7}
}
func (m *RawTraceReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RawTraceReq.Unmarshal(m, b)
}
func (m *RawTraceReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RawTraceReq.Marshal(b, m, deterministic)
}
func (dst *RawTraceReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RawTraceReq.Merge(dst, src)
}
func (m *RawTraceReq) XXX_Size() int {
	return xxx_messageInfo_RawTraceReq.Size(m)
}
func (m *RawTraceReq) XXX_DiscardUnknown() {
	xxx_messageInfo_RawTraceReq.DiscardUnknown(m)
}

var xxx_messageInfo_RawTraceReq proto.InternalMessageInfo

func (m *RawTraceReq) GetTraceId() string {
	if m != nil {
		return m.TraceId
	}
	return ""
}

type RawTraceReply struct {
	Items                []*Span  `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RawTraceReply) Reset()         { *m = RawTraceReply{} }
func (m *RawTraceReply) String() string { return proto.CompactTextString(m) }
func (*RawTraceReply) ProtoMessage()    {}
func (*RawTraceReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{8}
}
func (m *RawTraceReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RawTraceReply.Unmarshal(m, b)
}
func (m *RawTraceReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RawTraceReply.Marshal(b, m, deterministic)
}
func (dst *RawTraceReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RawTraceReply.Merge(dst, src)
}
func (m *RawTraceReply) XXX_Size() int {
	return xxx_messageInfo_RawTraceReply.Size(m)
}
func (m *RawTraceReply) XXX_DiscardUnknown() {
	xxx_messageInfo_RawTraceReply.DiscardUnknown(m)
}

var xxx_messageInfo_RawTraceReply proto.InternalMessageInfo

func (m *RawTraceReply) GetItems() []*Span {
	if m != nil {
		return m.Items
	}
	return nil
}

type TagValue struct {
	// Types that are valid to be assigned to Value:
	//	*TagValue_StringValue
	//	*TagValue_Int64Value
	//	*TagValue_BoolValue
	//	*TagValue_FloatValue
	Value                isTagValue_Value `protobuf_oneof:"value"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

func (m *TagValue) Reset()         { *m = TagValue{} }
func (m *TagValue) String() string { return proto.CompactTextString(m) }
func (*TagValue) ProtoMessage()    {}
func (*TagValue) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{9}
}
func (m *TagValue) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TagValue.Unmarshal(m, b)
}
func (m *TagValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TagValue.Marshal(b, m, deterministic)
}
func (dst *TagValue) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TagValue.Merge(dst, src)
}
func (m *TagValue) XXX_Size() int {
	return xxx_messageInfo_TagValue.Size(m)
}
func (m *TagValue) XXX_DiscardUnknown() {
	xxx_messageInfo_TagValue.DiscardUnknown(m)
}

var xxx_messageInfo_TagValue proto.InternalMessageInfo

type isTagValue_Value interface {
	isTagValue_Value()
}

type TagValue_StringValue struct {
	StringValue string `protobuf:"bytes,2,opt,name=string_value,json=stringValue,proto3,oneof"`
}
type TagValue_Int64Value struct {
	Int64Value int64 `protobuf:"varint,3,opt,name=int64_value,json=int64Value,proto3,oneof"`
}
type TagValue_BoolValue struct {
	BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"`
}
type TagValue_FloatValue struct {
	FloatValue float32 `protobuf:"fixed32,5,opt,name=float_value,json=floatValue,proto3,oneof"`
}

func (*TagValue_StringValue) isTagValue_Value() {}
func (*TagValue_Int64Value) isTagValue_Value()  {}
func (*TagValue_BoolValue) isTagValue_Value()   {}
func (*TagValue_FloatValue) isTagValue_Value()  {}

func (m *TagValue) GetValue() isTagValue_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *TagValue) GetStringValue() string {
	if x, ok := m.GetValue().(*TagValue_StringValue); ok {
		return x.StringValue
	}
	return ""
}

func (m *TagValue) GetInt64Value() int64 {
	if x, ok := m.GetValue().(*TagValue_Int64Value); ok {
		return x.Int64Value
	}
	return 0
}

func (m *TagValue) GetBoolValue() bool {
	if x, ok := m.GetValue().(*TagValue_BoolValue); ok {
		return x.BoolValue
	}
	return false
}

func (m *TagValue) GetFloatValue() float32 {
	if x, ok := m.GetValue().(*TagValue_FloatValue); ok {
		return x.FloatValue
	}
	return 0
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*TagValue) 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 _TagValue_OneofMarshaler, _TagValue_OneofUnmarshaler, _TagValue_OneofSizer, []interface{}{
		(*TagValue_StringValue)(nil),
		(*TagValue_Int64Value)(nil),
		(*TagValue_BoolValue)(nil),
		(*TagValue_FloatValue)(nil),
	}
}

func _TagValue_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*TagValue)
	// value
	switch x := m.Value.(type) {
	case *TagValue_StringValue:
		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
		_ = b.EncodeStringBytes(x.StringValue)
	case *TagValue_Int64Value:
		_ = b.EncodeVarint(3<<3 | proto.WireVarint)
		_ = b.EncodeVarint(uint64(x.Int64Value))
	case *TagValue_BoolValue:
		t := uint64(0)
		if x.BoolValue {
			t = 1
		}
		_ = b.EncodeVarint(4<<3 | proto.WireVarint)
		_ = b.EncodeVarint(t)
	case *TagValue_FloatValue:
		_ = b.EncodeVarint(5<<3 | proto.WireFixed32)
		_ = b.EncodeFixed32(uint64(math.Float32bits(x.FloatValue)))
	case nil:
	default:
		return fmt.Errorf("TagValue.Value has unexpected type %T", x)
	}
	return nil
}

func _TagValue_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*TagValue)
	switch tag {
	case 2: // value.string_value
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.Value = &TagValue_StringValue{x}
		return true, err
	case 3: // value.int64_value
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &TagValue_Int64Value{int64(x)}
		return true, err
	case 4: // value.bool_value
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.Value = &TagValue_BoolValue{x != 0}
		return true, err
	case 5: // value.float_value
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.Value = &TagValue_FloatValue{math.Float32frombits(uint32(x))}
		return true, err
	default:
		return false, nil
	}
}

func _TagValue_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*TagValue)
	// value
	switch x := m.Value.(type) {
	case *TagValue_StringValue:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(len(x.StringValue)))
		n += len(x.StringValue)
	case *TagValue_Int64Value:
		n += 1 // tag and wire
		n += proto.SizeVarint(uint64(x.Int64Value))
	case *TagValue_BoolValue:
		n += 1 // tag and wire
		n += 1
	case *TagValue_FloatValue:
		n += 1 // tag and wire
		n += 4
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

type Field struct {
	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Field) Reset()         { *m = Field{} }
func (m *Field) String() string { return proto.CompactTextString(m) }
func (*Field) ProtoMessage()    {}
func (*Field) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{10}
}
func (m *Field) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Field.Unmarshal(m, b)
}
func (m *Field) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Field.Marshal(b, m, deterministic)
}
func (dst *Field) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Field.Merge(dst, src)
}
func (m *Field) XXX_Size() int {
	return xxx_messageInfo_Field.Size(m)
}
func (m *Field) XXX_DiscardUnknown() {
	xxx_messageInfo_Field.DiscardUnknown(m)
}

var xxx_messageInfo_Field proto.InternalMessageInfo

func (m *Field) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *Field) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

type Log struct {
	Timestamp            int64    `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	Fields               []*Field `protobuf:"bytes,2,rep,name=fields" json:"fields,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Log) Reset()         { *m = Log{} }
func (m *Log) String() string { return proto.CompactTextString(m) }
func (*Log) ProtoMessage()    {}
func (*Log) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{11}
}
func (m *Log) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Log.Unmarshal(m, b)
}
func (m *Log) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Log.Marshal(b, m, deterministic)
}
func (dst *Log) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Log.Merge(dst, src)
}
func (m *Log) XXX_Size() int {
	return xxx_messageInfo_Log.Size(m)
}
func (m *Log) XXX_DiscardUnknown() {
	xxx_messageInfo_Log.DiscardUnknown(m)
}

var xxx_messageInfo_Log proto.InternalMessageInfo

func (m *Log) GetTimestamp() int64 {
	if m != nil {
		return m.Timestamp
	}
	return 0
}

func (m *Log) GetFields() []*Field {
	if m != nil {
		return m.Fields
	}
	return nil
}

type Span struct {
	ServiceName          string               `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	OperationName        string               `protobuf:"bytes,2,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"`
	TraceId              string               `protobuf:"bytes,3,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
	SpanId               string               `protobuf:"bytes,4,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"`
	ParentId             string               `protobuf:"bytes,5,opt,name=parent_id,json=parentId,proto3" json:"parent_id,omitempty"`
	StartTime            int64                `protobuf:"varint,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	Duration             int64                `protobuf:"varint,7,opt,name=duration,proto3" json:"duration,omitempty"`
	Tags                 map[string]*TagValue `protobuf:"bytes,8,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
	Logs                 []*Log               `protobuf:"bytes,9,rep,name=logs" json:"logs,omitempty"`
	Level                int32                `protobuf:"varint,10,opt,name=level,proto3" json:"level,omitempty"`
	Childs               []*Span              `protobuf:"bytes,11,rep,name=childs" json:"childs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Span) Reset()         { *m = Span{} }
func (m *Span) String() string { return proto.CompactTextString(m) }
func (*Span) ProtoMessage()    {}
func (*Span) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{12}
}
func (m *Span) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Span.Unmarshal(m, b)
}
func (m *Span) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Span.Marshal(b, m, deterministic)
}
func (dst *Span) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Span.Merge(dst, src)
}
func (m *Span) XXX_Size() int {
	return xxx_messageInfo_Span.Size(m)
}
func (m *Span) XXX_DiscardUnknown() {
	xxx_messageInfo_Span.DiscardUnknown(m)
}

var xxx_messageInfo_Span proto.InternalMessageInfo

func (m *Span) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *Span) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *Span) GetTraceId() string {
	if m != nil {
		return m.TraceId
	}
	return ""
}

func (m *Span) GetSpanId() string {
	if m != nil {
		return m.SpanId
	}
	return ""
}

func (m *Span) GetParentId() string {
	if m != nil {
		return m.ParentId
	}
	return ""
}

func (m *Span) GetStartTime() int64 {
	if m != nil {
		return m.StartTime
	}
	return 0
}

func (m *Span) GetDuration() int64 {
	if m != nil {
		return m.Duration
	}
	return 0
}

func (m *Span) GetTags() map[string]*TagValue {
	if m != nil {
		return m.Tags
	}
	return nil
}

func (m *Span) GetLogs() []*Log {
	if m != nil {
		return m.Logs
	}
	return nil
}

func (m *Span) GetLevel() int32 {
	if m != nil {
		return m.Level
	}
	return 0
}

func (m *Span) GetChilds() []*Span {
	if m != nil {
		return m.Childs
	}
	return nil
}

type TraceReply struct {
	ServiceCount         int32    `protobuf:"varint,1,opt,name=service_count,json=serviceCount,proto3" json:"service_count,omitempty"`
	SpanCount            int32    `protobuf:"varint,2,opt,name=span_count,json=spanCount,proto3" json:"span_count,omitempty"`
	MaxLevel             int32    `protobuf:"varint,3,opt,name=max_level,json=maxLevel,proto3" json:"max_level,omitempty"`
	Root                 *Span    `protobuf:"bytes,4,opt,name=root" json:"root,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *TraceReply) Reset()         { *m = TraceReply{} }
func (m *TraceReply) String() string { return proto.CompactTextString(m) }
func (*TraceReply) ProtoMessage()    {}
func (*TraceReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{13}
}
func (m *TraceReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TraceReply.Unmarshal(m, b)
}
func (m *TraceReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TraceReply.Marshal(b, m, deterministic)
}
func (dst *TraceReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TraceReply.Merge(dst, src)
}
func (m *TraceReply) XXX_Size() int {
	return xxx_messageInfo_TraceReply.Size(m)
}
func (m *TraceReply) XXX_DiscardUnknown() {
	xxx_messageInfo_TraceReply.DiscardUnknown(m)
}

var xxx_messageInfo_TraceReply proto.InternalMessageInfo

func (m *TraceReply) GetServiceCount() int32 {
	if m != nil {
		return m.ServiceCount
	}
	return 0
}

func (m *TraceReply) GetSpanCount() int32 {
	if m != nil {
		return m.SpanCount
	}
	return 0
}

func (m *TraceReply) GetMaxLevel() int32 {
	if m != nil {
		return m.MaxLevel
	}
	return 0
}

func (m *TraceReply) GetRoot() *Span {
	if m != nil {
		return m.Root
	}
	return nil
}

type ListSpanReply struct {
	Items                []*SpanListItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *ListSpanReply) Reset()         { *m = ListSpanReply{} }
func (m *ListSpanReply) String() string { return proto.CompactTextString(m) }
func (*ListSpanReply) ProtoMessage()    {}
func (*ListSpanReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{14}
}
func (m *ListSpanReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ListSpanReply.Unmarshal(m, b)
}
func (m *ListSpanReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ListSpanReply.Marshal(b, m, deterministic)
}
func (dst *ListSpanReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ListSpanReply.Merge(dst, src)
}
func (m *ListSpanReply) XXX_Size() int {
	return xxx_messageInfo_ListSpanReply.Size(m)
}
func (m *ListSpanReply) XXX_DiscardUnknown() {
	xxx_messageInfo_ListSpanReply.DiscardUnknown(m)
}

var xxx_messageInfo_ListSpanReply proto.InternalMessageInfo

func (m *ListSpanReply) GetItems() []*SpanListItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type OperationNameRankReq struct {
	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	Start       int64  `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty" form:"start"`
	End         int64  `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty" form:"end"`
	// 排序类型 max_duration 最大耗时, min_duration 最小耗时, avg_duration 平均耗时, errors 错误数
	RankType             string   `protobuf:"bytes,4,opt,name=rank_type,json=rankType,proto3" json:"rank_type,omitempty" form:"rank_type"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *OperationNameRankReq) Reset()         { *m = OperationNameRankReq{} }
func (m *OperationNameRankReq) String() string { return proto.CompactTextString(m) }
func (*OperationNameRankReq) ProtoMessage()    {}
func (*OperationNameRankReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{15}
}
func (m *OperationNameRankReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_OperationNameRankReq.Unmarshal(m, b)
}
func (m *OperationNameRankReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_OperationNameRankReq.Marshal(b, m, deterministic)
}
func (dst *OperationNameRankReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_OperationNameRankReq.Merge(dst, src)
}
func (m *OperationNameRankReq) XXX_Size() int {
	return xxx_messageInfo_OperationNameRankReq.Size(m)
}
func (m *OperationNameRankReq) XXX_DiscardUnknown() {
	xxx_messageInfo_OperationNameRankReq.DiscardUnknown(m)
}

var xxx_messageInfo_OperationNameRankReq proto.InternalMessageInfo

func (m *OperationNameRankReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *OperationNameRankReq) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *OperationNameRankReq) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

func (m *OperationNameRankReq) GetRankType() string {
	if m != nil {
		return m.RankType
	}
	return ""
}

type RankItem struct {
	ServiceName   string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	OperationName string `protobuf:"bytes,2,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"`
	// 当 rank type 是 max_duration, min_duration, avg_duration 时 value 是纳秒
	// 当 rank type 是 errors 是 value 是错误数
	Value                float64  `protobuf:"fixed64,3,opt,name=value,proto3" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RankItem) Reset()         { *m = RankItem{} }
func (m *RankItem) String() string { return proto.CompactTextString(m) }
func (*RankItem) ProtoMessage()    {}
func (*RankItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{16}
}
func (m *RankItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RankItem.Unmarshal(m, b)
}
func (m *RankItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RankItem.Marshal(b, m, deterministic)
}
func (dst *RankItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RankItem.Merge(dst, src)
}
func (m *RankItem) XXX_Size() int {
	return xxx_messageInfo_RankItem.Size(m)
}
func (m *RankItem) XXX_DiscardUnknown() {
	xxx_messageInfo_RankItem.DiscardUnknown(m)
}

var xxx_messageInfo_RankItem proto.InternalMessageInfo

func (m *RankItem) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *RankItem) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *RankItem) GetValue() float64 {
	if m != nil {
		return m.Value
	}
	return 0
}

type OperationNameRankReply struct {
	RankType             string      `protobuf:"bytes,1,opt,name=rank_type,json=rankType,proto3" json:"rank_type,omitempty"`
	Items                []*RankItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *OperationNameRankReply) Reset()         { *m = OperationNameRankReply{} }
func (m *OperationNameRankReply) String() string { return proto.CompactTextString(m) }
func (*OperationNameRankReply) ProtoMessage()    {}
func (*OperationNameRankReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{17}
}
func (m *OperationNameRankReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_OperationNameRankReply.Unmarshal(m, b)
}
func (m *OperationNameRankReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_OperationNameRankReply.Marshal(b, m, deterministic)
}
func (dst *OperationNameRankReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_OperationNameRankReply.Merge(dst, src)
}
func (m *OperationNameRankReply) XXX_Size() int {
	return xxx_messageInfo_OperationNameRankReply.Size(m)
}
func (m *OperationNameRankReply) XXX_DiscardUnknown() {
	xxx_messageInfo_OperationNameRankReply.DiscardUnknown(m)
}

var xxx_messageInfo_OperationNameRankReply proto.InternalMessageInfo

func (m *OperationNameRankReply) GetRankType() string {
	if m != nil {
		return m.RankType
	}
	return ""
}

func (m *OperationNameRankReply) GetItems() []*RankItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type DependsRankReq struct {
	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	Start       int64  `protobuf:"varint,3,opt,name=start,proto3" json:"start,omitempty" form:"start"`
	End         int64  `protobuf:"varint,4,opt,name=end,proto3" json:"end,omitempty" form:"end"`
	// 排序类型 max_duration 最大耗时, min_duration 最小耗时, avg_duration 平均耗时, errors 错误数
	RankType             string   `protobuf:"bytes,5,opt,name=rank_type,json=rankType,proto3" json:"rank_type,omitempty" form:"rank_type"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *DependsRankReq) Reset()         { *m = DependsRankReq{} }
func (m *DependsRankReq) String() string { return proto.CompactTextString(m) }
func (*DependsRankReq) ProtoMessage()    {}
func (*DependsRankReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{18}
}
func (m *DependsRankReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DependsRankReq.Unmarshal(m, b)
}
func (m *DependsRankReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DependsRankReq.Marshal(b, m, deterministic)
}
func (dst *DependsRankReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DependsRankReq.Merge(dst, src)
}
func (m *DependsRankReq) XXX_Size() int {
	return xxx_messageInfo_DependsRankReq.Size(m)
}
func (m *DependsRankReq) XXX_DiscardUnknown() {
	xxx_messageInfo_DependsRankReq.DiscardUnknown(m)
}

var xxx_messageInfo_DependsRankReq proto.InternalMessageInfo

func (m *DependsRankReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *DependsRankReq) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *DependsRankReq) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

func (m *DependsRankReq) GetRankType() string {
	if m != nil {
		return m.RankType
	}
	return ""
}

type DependsRankReply struct {
	RankType             string      `protobuf:"bytes,1,opt,name=rank_type,json=rankType,proto3" json:"rank_type,omitempty"`
	Items                []*RankItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *DependsRankReply) Reset()         { *m = DependsRankReply{} }
func (m *DependsRankReply) String() string { return proto.CompactTextString(m) }
func (*DependsRankReply) ProtoMessage()    {}
func (*DependsRankReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{19}
}
func (m *DependsRankReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DependsRankReply.Unmarshal(m, b)
}
func (m *DependsRankReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DependsRankReply.Marshal(b, m, deterministic)
}
func (dst *DependsRankReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DependsRankReply.Merge(dst, src)
}
func (m *DependsRankReply) XXX_Size() int {
	return xxx_messageInfo_DependsRankReply.Size(m)
}
func (m *DependsRankReply) XXX_DiscardUnknown() {
	xxx_messageInfo_DependsRankReply.DiscardUnknown(m)
}

var xxx_messageInfo_DependsRankReply proto.InternalMessageInfo

func (m *DependsRankReply) GetRankType() string {
	if m != nil {
		return m.RankType
	}
	return ""
}

func (m *DependsRankReply) GetItems() []*RankItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type SpanSeriesReq struct {
	ServiceName   string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	OperationName string `protobuf:"bytes,2,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty" form:"operation_name" validate:"required"`
	Start         int64  `protobuf:"varint,3,opt,name=start,proto3" json:"start,omitempty" form:"start"`
	End           int64  `protobuf:"varint,4,opt,name=end,proto3" json:"end,omitempty" form:"end"`
	// 可选的 fields 有 max_duration, min_duration, avg_duration, errors
	// 其中除 errors 返回的是一段时间内的总数 其他返回的都是平均数
	// fields 是个数组可以通过 fields=max_duration,min_duration,avg_duration 逗号分隔
	Fields               string   `protobuf:"bytes,6,opt,name=fields,proto3" json:"fields,omitempty" form:"fields"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SpanSeriesReq) Reset()         { *m = SpanSeriesReq{} }
func (m *SpanSeriesReq) String() string { return proto.CompactTextString(m) }
func (*SpanSeriesReq) ProtoMessage()    {}
func (*SpanSeriesReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{20}
}
func (m *SpanSeriesReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SpanSeriesReq.Unmarshal(m, b)
}
func (m *SpanSeriesReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SpanSeriesReq.Marshal(b, m, deterministic)
}
func (dst *SpanSeriesReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SpanSeriesReq.Merge(dst, src)
}
func (m *SpanSeriesReq) XXX_Size() int {
	return xxx_messageInfo_SpanSeriesReq.Size(m)
}
func (m *SpanSeriesReq) XXX_DiscardUnknown() {
	xxx_messageInfo_SpanSeriesReq.DiscardUnknown(m)
}

var xxx_messageInfo_SpanSeriesReq proto.InternalMessageInfo

func (m *SpanSeriesReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *SpanSeriesReq) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *SpanSeriesReq) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *SpanSeriesReq) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

func (m *SpanSeriesReq) GetFields() string {
	if m != nil {
		return m.Fields
	}
	return ""
}

type SeriesItem struct {
	// 名称一般是请求的 field+{count|mean}
	Field                string   `protobuf:"bytes,1,opt,name=field,proto3" json:"field,omitempty"`
	Values               []*int64 `protobuf:"varint,2,rep,packed,name=values,customtype=*int64" json:"values,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SeriesItem) Reset()         { *m = SeriesItem{} }
func (m *SeriesItem) String() string { return proto.CompactTextString(m) }
func (*SeriesItem) ProtoMessage()    {}
func (*SeriesItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{21}
}
func (m *SeriesItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SeriesItem.Unmarshal(m, b)
}
func (m *SeriesItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SeriesItem.Marshal(b, m, deterministic)
}
func (dst *SeriesItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SeriesItem.Merge(dst, src)
}
func (m *SeriesItem) XXX_Size() int {
	return xxx_messageInfo_SeriesItem.Size(m)
}
func (m *SeriesItem) XXX_DiscardUnknown() {
	xxx_messageInfo_SeriesItem.DiscardUnknown(m)
}

var xxx_messageInfo_SeriesItem proto.InternalMessageInfo

func (m *SeriesItem) GetField() string {
	if m != nil {
		return m.Field
	}
	return ""
}

type SpanSeriesReply struct {
	// 返回点的间隔
	Interval             int64         `protobuf:"varint,5,opt,name=interval,proto3" json:"interval,omitempty"`
	Times                []string      `protobuf:"bytes,1,rep,name=times" json:"times,omitempty"`
	Items                []*SeriesItem `protobuf:"bytes,2,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *SpanSeriesReply) Reset()         { *m = SpanSeriesReply{} }
func (m *SpanSeriesReply) String() string { return proto.CompactTextString(m) }
func (*SpanSeriesReply) ProtoMessage()    {}
func (*SpanSeriesReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{22}
}
func (m *SpanSeriesReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SpanSeriesReply.Unmarshal(m, b)
}
func (m *SpanSeriesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SpanSeriesReply.Marshal(b, m, deterministic)
}
func (dst *SpanSeriesReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SpanSeriesReply.Merge(dst, src)
}
func (m *SpanSeriesReply) XXX_Size() int {
	return xxx_messageInfo_SpanSeriesReply.Size(m)
}
func (m *SpanSeriesReply) XXX_DiscardUnknown() {
	xxx_messageInfo_SpanSeriesReply.DiscardUnknown(m)
}

var xxx_messageInfo_SpanSeriesReply proto.InternalMessageInfo

func (m *SpanSeriesReply) GetInterval() int64 {
	if m != nil {
		return m.Interval
	}
	return 0
}

func (m *SpanSeriesReply) GetTimes() []string {
	if m != nil {
		return m.Times
	}
	return nil
}

func (m *SpanSeriesReply) GetItems() []*SeriesItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type CltStatusReq struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CltStatusReq) Reset()         { *m = CltStatusReq{} }
func (m *CltStatusReq) String() string { return proto.CompactTextString(m) }
func (*CltStatusReq) ProtoMessage()    {}
func (*CltStatusReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{23}
}
func (m *CltStatusReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CltStatusReq.Unmarshal(m, b)
}
func (m *CltStatusReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CltStatusReq.Marshal(b, m, deterministic)
}
func (dst *CltStatusReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CltStatusReq.Merge(dst, src)
}
func (m *CltStatusReq) XXX_Size() int {
	return xxx_messageInfo_CltStatusReq.Size(m)
}
func (m *CltStatusReq) XXX_DiscardUnknown() {
	xxx_messageInfo_CltStatusReq.DiscardUnknown(m)
}

var xxx_messageInfo_CltStatusReq proto.InternalMessageInfo

type Client struct {
	Addr                 string   `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	ErrCount             int64    `protobuf:"varint,2,opt,name=err_count,json=errCount,proto3" json:"err_count,omitempty"`
	Rate                 int64    `protobuf:"varint,3,opt,name=rate,proto3" json:"rate,omitempty"`
	UpTime               int64    `protobuf:"varint,4,opt,name=up_time,json=upTime,proto3" json:"up_time,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Client) Reset()         { *m = Client{} }
func (m *Client) String() string { return proto.CompactTextString(m) }
func (*Client) ProtoMessage()    {}
func (*Client) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{24}
}
func (m *Client) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Client.Unmarshal(m, b)
}
func (m *Client) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Client.Marshal(b, m, deterministic)
}
func (dst *Client) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Client.Merge(dst, src)
}
func (m *Client) XXX_Size() int {
	return xxx_messageInfo_Client.Size(m)
}
func (m *Client) XXX_DiscardUnknown() {
	xxx_messageInfo_Client.DiscardUnknown(m)
}

var xxx_messageInfo_Client proto.InternalMessageInfo

func (m *Client) GetAddr() string {
	if m != nil {
		return m.Addr
	}
	return ""
}

func (m *Client) GetErrCount() int64 {
	if m != nil {
		return m.ErrCount
	}
	return 0
}

func (m *Client) GetRate() int64 {
	if m != nil {
		return m.Rate
	}
	return 0
}

func (m *Client) GetUpTime() int64 {
	if m != nil {
		return m.UpTime
	}
	return 0
}

type CltNode struct {
	Node                 string    `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
	QueueLen             int64     `protobuf:"varint,2,opt,name=queue_len,json=queueLen,proto3" json:"queue_len,omitempty"`
	Clients              []*Client `protobuf:"bytes,3,rep,name=clients" json:"clients,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (m *CltNode) Reset()         { *m = CltNode{} }
func (m *CltNode) String() string { return proto.CompactTextString(m) }
func (*CltNode) ProtoMessage()    {}
func (*CltNode) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{25}
}
func (m *CltNode) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CltNode.Unmarshal(m, b)
}
func (m *CltNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CltNode.Marshal(b, m, deterministic)
}
func (dst *CltNode) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CltNode.Merge(dst, src)
}
func (m *CltNode) XXX_Size() int {
	return xxx_messageInfo_CltNode.Size(m)
}
func (m *CltNode) XXX_DiscardUnknown() {
	xxx_messageInfo_CltNode.DiscardUnknown(m)
}

var xxx_messageInfo_CltNode proto.InternalMessageInfo

func (m *CltNode) GetNode() string {
	if m != nil {
		return m.Node
	}
	return ""
}

func (m *CltNode) GetQueueLen() int64 {
	if m != nil {
		return m.QueueLen
	}
	return 0
}

func (m *CltNode) GetClients() []*Client {
	if m != nil {
		return m.Clients
	}
	return nil
}

type CltStatusReply struct {
	Nodes                []*CltNode `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

func (m *CltStatusReply) Reset()         { *m = CltStatusReply{} }
func (m *CltStatusReply) String() string { return proto.CompactTextString(m) }
func (*CltStatusReply) ProtoMessage()    {}
func (*CltStatusReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{26}
}
func (m *CltStatusReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CltStatusReply.Unmarshal(m, b)
}
func (m *CltStatusReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CltStatusReply.Marshal(b, m, deterministic)
}
func (dst *CltStatusReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CltStatusReply.Merge(dst, src)
}
func (m *CltStatusReply) XXX_Size() int {
	return xxx_messageInfo_CltStatusReply.Size(m)
}
func (m *CltStatusReply) XXX_DiscardUnknown() {
	xxx_messageInfo_CltStatusReply.DiscardUnknown(m)
}

var xxx_messageInfo_CltStatusReply proto.InternalMessageInfo

func (m *CltStatusReply) GetNodes() []*CltNode {
	if m != nil {
		return m.Nodes
	}
	return nil
}

type SamplePointReq struct {
	ServiceName   string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	OperationName string `protobuf:"bytes,2,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty" form:"operation_name" validate:"required"`
	// only_error 在 errors 那个图可以指定为 true
	OnlyError bool `protobuf:"varint,3,opt,name=only_error,json=onlyError,proto3" json:"only_error,omitempty" form:"only_error"`
	// interval 使用 span-series 返回的 interval 即可
	Interval int64 `protobuf:"varint,5,opt,name=interval,proto3" json:"interval,omitempty" form:"interval" validate:"required"`
	// time 使用 time-series 返回的时间即可，相同格式型如 2006-01-02T15:04:05
	Time                 string   `protobuf:"bytes,6,opt,name=time,proto3" json:"time,omitempty" form:"time" validate:"required"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SamplePointReq) Reset()         { *m = SamplePointReq{} }
func (m *SamplePointReq) String() string { return proto.CompactTextString(m) }
func (*SamplePointReq) ProtoMessage()    {}
func (*SamplePointReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{27}
}
func (m *SamplePointReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SamplePointReq.Unmarshal(m, b)
}
func (m *SamplePointReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SamplePointReq.Marshal(b, m, deterministic)
}
func (dst *SamplePointReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SamplePointReq.Merge(dst, src)
}
func (m *SamplePointReq) XXX_Size() int {
	return xxx_messageInfo_SamplePointReq.Size(m)
}
func (m *SamplePointReq) XXX_DiscardUnknown() {
	xxx_messageInfo_SamplePointReq.DiscardUnknown(m)
}

var xxx_messageInfo_SamplePointReq proto.InternalMessageInfo

func (m *SamplePointReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *SamplePointReq) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *SamplePointReq) GetOnlyError() bool {
	if m != nil {
		return m.OnlyError
	}
	return false
}

func (m *SamplePointReq) GetInterval() int64 {
	if m != nil {
		return m.Interval
	}
	return 0
}

func (m *SamplePointReq) GetTime() string {
	if m != nil {
		return m.Time
	}
	return ""
}

type SamplePointItem struct {
	TraceId              string   `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty"`
	SpanId               string   `protobuf:"bytes,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"`
	Duration             int64    `protobuf:"varint,3,opt,name=duration,proto3" json:"duration,omitempty"`
	IsError              bool     `protobuf:"varint,4,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SamplePointItem) Reset()         { *m = SamplePointItem{} }
func (m *SamplePointItem) String() string { return proto.CompactTextString(m) }
func (*SamplePointItem) ProtoMessage()    {}
func (*SamplePointItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{28}
}
func (m *SamplePointItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SamplePointItem.Unmarshal(m, b)
}
func (m *SamplePointItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SamplePointItem.Marshal(b, m, deterministic)
}
func (dst *SamplePointItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SamplePointItem.Merge(dst, src)
}
func (m *SamplePointItem) XXX_Size() int {
	return xxx_messageInfo_SamplePointItem.Size(m)
}
func (m *SamplePointItem) XXX_DiscardUnknown() {
	xxx_messageInfo_SamplePointItem.DiscardUnknown(m)
}

var xxx_messageInfo_SamplePointItem proto.InternalMessageInfo

func (m *SamplePointItem) GetTraceId() string {
	if m != nil {
		return m.TraceId
	}
	return ""
}

func (m *SamplePointItem) GetSpanId() string {
	if m != nil {
		return m.SpanId
	}
	return ""
}

func (m *SamplePointItem) GetDuration() int64 {
	if m != nil {
		return m.Duration
	}
	return 0
}

func (m *SamplePointItem) GetIsError() bool {
	if m != nil {
		return m.IsError
	}
	return false
}

type SamplePointReply struct {
	Items                []*SamplePointItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *SamplePointReply) Reset()         { *m = SamplePointReply{} }
func (m *SamplePointReply) String() string { return proto.CompactTextString(m) }
func (*SamplePointReply) ProtoMessage()    {}
func (*SamplePointReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{29}
}
func (m *SamplePointReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SamplePointReply.Unmarshal(m, b)
}
func (m *SamplePointReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SamplePointReply.Marshal(b, m, deterministic)
}
func (dst *SamplePointReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SamplePointReply.Merge(dst, src)
}
func (m *SamplePointReply) XXX_Size() int {
	return xxx_messageInfo_SamplePointReply.Size(m)
}
func (m *SamplePointReply) XXX_DiscardUnknown() {
	xxx_messageInfo_SamplePointReply.DiscardUnknown(m)
}

var xxx_messageInfo_SamplePointReply proto.InternalMessageInfo

func (m *SamplePointReply) GetItems() []*SamplePointItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type DependsTopologyReq struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *DependsTopologyReq) Reset()         { *m = DependsTopologyReq{} }
func (m *DependsTopologyReq) String() string { return proto.CompactTextString(m) }
func (*DependsTopologyReq) ProtoMessage()    {}
func (*DependsTopologyReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{30}
}
func (m *DependsTopologyReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DependsTopologyReq.Unmarshal(m, b)
}
func (m *DependsTopologyReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DependsTopologyReq.Marshal(b, m, deterministic)
}
func (dst *DependsTopologyReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DependsTopologyReq.Merge(dst, src)
}
func (m *DependsTopologyReq) XXX_Size() int {
	return xxx_messageInfo_DependsTopologyReq.Size(m)
}
func (m *DependsTopologyReq) XXX_DiscardUnknown() {
	xxx_messageInfo_DependsTopologyReq.DiscardUnknown(m)
}

var xxx_messageInfo_DependsTopologyReq proto.InternalMessageInfo

type DependsTopologyItem struct {
	ServiceName          string   `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	DependOn             string   `protobuf:"bytes,2,opt,name=depend_on,json=dependOn,proto3" json:"depend_on,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *DependsTopologyItem) Reset()         { *m = DependsTopologyItem{} }
func (m *DependsTopologyItem) String() string { return proto.CompactTextString(m) }
func (*DependsTopologyItem) ProtoMessage()    {}
func (*DependsTopologyItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{31}
}
func (m *DependsTopologyItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DependsTopologyItem.Unmarshal(m, b)
}
func (m *DependsTopologyItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DependsTopologyItem.Marshal(b, m, deterministic)
}
func (dst *DependsTopologyItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DependsTopologyItem.Merge(dst, src)
}
func (m *DependsTopologyItem) XXX_Size() int {
	return xxx_messageInfo_DependsTopologyItem.Size(m)
}
func (m *DependsTopologyItem) XXX_DiscardUnknown() {
	xxx_messageInfo_DependsTopologyItem.DiscardUnknown(m)
}

var xxx_messageInfo_DependsTopologyItem proto.InternalMessageInfo

func (m *DependsTopologyItem) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *DependsTopologyItem) GetDependOn() string {
	if m != nil {
		return m.DependOn
	}
	return ""
}

type DependsTopologyReply struct {
	Items                []*DependsTopologyItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
	XXX_unrecognized     []byte                 `json:"-"`
	XXX_sizecache        int32                  `json:"-"`
}

func (m *DependsTopologyReply) Reset()         { *m = DependsTopologyReply{} }
func (m *DependsTopologyReply) String() string { return proto.CompactTextString(m) }
func (*DependsTopologyReply) ProtoMessage()    {}
func (*DependsTopologyReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{32}
}
func (m *DependsTopologyReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_DependsTopologyReply.Unmarshal(m, b)
}
func (m *DependsTopologyReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_DependsTopologyReply.Marshal(b, m, deterministic)
}
func (dst *DependsTopologyReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_DependsTopologyReply.Merge(dst, src)
}
func (m *DependsTopologyReply) XXX_Size() int {
	return xxx_messageInfo_DependsTopologyReply.Size(m)
}
func (m *DependsTopologyReply) XXX_DiscardUnknown() {
	xxx_messageInfo_DependsTopologyReply.DiscardUnknown(m)
}

var xxx_messageInfo_DependsTopologyReply proto.InternalMessageInfo

func (m *DependsTopologyReply) GetItems() []*DependsTopologyItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type OpsLogReq struct {
	TraceId       string `protobuf:"bytes,1,opt,name=trace_id,json=traceId,proto3" json:"trace_id,omitempty" form:"trace_id" validate:"required"`
	SpanId        string `protobuf:"bytes,2,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty" form:"span_id"`
	TraceField    string `protobuf:"bytes,3,opt,name=trace_field,json=traceField,proto3" json:"trace_field,omitempty" form:"trace_field"`
	ServiceName   string `protobuf:"bytes,4,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name"`
	OperationName string `protobuf:"bytes,5,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty" form:"operation_name"`
	// 开始时间
	Start int64 `protobuf:"varint,6,opt,name=start,proto3" json:"start,omitempty" form:"start"`
	// 结束时间
	End                  int64    `protobuf:"varint,7,opt,name=end,proto3" json:"end,omitempty" form:"end"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *OpsLogReq) Reset()         { *m = OpsLogReq{} }
func (m *OpsLogReq) String() string { return proto.CompactTextString(m) }
func (*OpsLogReq) ProtoMessage()    {}
func (*OpsLogReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{33}
}
func (m *OpsLogReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_OpsLogReq.Unmarshal(m, b)
}
func (m *OpsLogReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_OpsLogReq.Marshal(b, m, deterministic)
}
func (dst *OpsLogReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_OpsLogReq.Merge(dst, src)
}
func (m *OpsLogReq) XXX_Size() int {
	return xxx_messageInfo_OpsLogReq.Size(m)
}
func (m *OpsLogReq) XXX_DiscardUnknown() {
	xxx_messageInfo_OpsLogReq.DiscardUnknown(m)
}

var xxx_messageInfo_OpsLogReq proto.InternalMessageInfo

func (m *OpsLogReq) GetTraceId() string {
	if m != nil {
		return m.TraceId
	}
	return ""
}

func (m *OpsLogReq) GetSpanId() string {
	if m != nil {
		return m.SpanId
	}
	return ""
}

func (m *OpsLogReq) GetTraceField() string {
	if m != nil {
		return m.TraceField
	}
	return ""
}

func (m *OpsLogReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *OpsLogReq) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

func (m *OpsLogReq) GetStart() int64 {
	if m != nil {
		return m.Start
	}
	return 0
}

func (m *OpsLogReq) GetEnd() int64 {
	if m != nil {
		return m.End
	}
	return 0
}

type OpsLogRecord struct {
	Time                 string               `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
	Fields               map[string]*TagValue `protobuf:"bytes,2,rep,name=fields" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
	Level                string               `protobuf:"bytes,3,opt,name=level,proto3" json:"level,omitempty"`
	Message              string               `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *OpsLogRecord) Reset()         { *m = OpsLogRecord{} }
func (m *OpsLogRecord) String() string { return proto.CompactTextString(m) }
func (*OpsLogRecord) ProtoMessage()    {}
func (*OpsLogRecord) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{34}
}
func (m *OpsLogRecord) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_OpsLogRecord.Unmarshal(m, b)
}
func (m *OpsLogRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_OpsLogRecord.Marshal(b, m, deterministic)
}
func (dst *OpsLogRecord) XXX_Merge(src proto.Message) {
	xxx_messageInfo_OpsLogRecord.Merge(dst, src)
}
func (m *OpsLogRecord) XXX_Size() int {
	return xxx_messageInfo_OpsLogRecord.Size(m)
}
func (m *OpsLogRecord) XXX_DiscardUnknown() {
	xxx_messageInfo_OpsLogRecord.DiscardUnknown(m)
}

var xxx_messageInfo_OpsLogRecord proto.InternalMessageInfo

func (m *OpsLogRecord) GetTime() string {
	if m != nil {
		return m.Time
	}
	return ""
}

func (m *OpsLogRecord) GetFields() map[string]*TagValue {
	if m != nil {
		return m.Fields
	}
	return nil
}

func (m *OpsLogRecord) GetLevel() string {
	if m != nil {
		return m.Level
	}
	return ""
}

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

type OpsLogReply struct {
	Records              []*OpsLogRecord `protobuf:"bytes,1,rep,name=records" json:"records,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *OpsLogReply) Reset()         { *m = OpsLogReply{} }
func (m *OpsLogReply) String() string { return proto.CompactTextString(m) }
func (*OpsLogReply) ProtoMessage()    {}
func (*OpsLogReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{35}
}
func (m *OpsLogReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_OpsLogReply.Unmarshal(m, b)
}
func (m *OpsLogReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_OpsLogReply.Marshal(b, m, deterministic)
}
func (dst *OpsLogReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_OpsLogReply.Merge(dst, src)
}
func (m *OpsLogReply) XXX_Size() int {
	return xxx_messageInfo_OpsLogReply.Size(m)
}
func (m *OpsLogReply) XXX_DiscardUnknown() {
	xxx_messageInfo_OpsLogReply.DiscardUnknown(m)
}

var xxx_messageInfo_OpsLogReply proto.InternalMessageInfo

func (m *OpsLogReply) GetRecords() []*OpsLogRecord {
	if m != nil {
		return m.Records
	}
	return nil
}

type ServiceDependReq struct {
	// service_name 不解释!
	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty" form:"service_name" validate:"required"`
	// operation_name 当 operation_name 为空时查询所有 operation_name 然后 merge 结果
	OperationName        string   `protobuf:"bytes,2,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty" form:"operation_name"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ServiceDependReq) Reset()         { *m = ServiceDependReq{} }
func (m *ServiceDependReq) String() string { return proto.CompactTextString(m) }
func (*ServiceDependReq) ProtoMessage()    {}
func (*ServiceDependReq) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{36}
}
func (m *ServiceDependReq) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ServiceDependReq.Unmarshal(m, b)
}
func (m *ServiceDependReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ServiceDependReq.Marshal(b, m, deterministic)
}
func (dst *ServiceDependReq) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ServiceDependReq.Merge(dst, src)
}
func (m *ServiceDependReq) XXX_Size() int {
	return xxx_messageInfo_ServiceDependReq.Size(m)
}
func (m *ServiceDependReq) XXX_DiscardUnknown() {
	xxx_messageInfo_ServiceDependReq.DiscardUnknown(m)
}

var xxx_messageInfo_ServiceDependReq proto.InternalMessageInfo

func (m *ServiceDependReq) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *ServiceDependReq) GetOperationName() string {
	if m != nil {
		return m.OperationName
	}
	return ""
}

type ServiceDependReply struct {
	Items                []*ServiceDependItem `protobuf:"bytes,1,rep,name=items" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *ServiceDependReply) Reset()         { *m = ServiceDependReply{} }
func (m *ServiceDependReply) String() string { return proto.CompactTextString(m) }
func (*ServiceDependReply) ProtoMessage()    {}
func (*ServiceDependReply) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{37}
}
func (m *ServiceDependReply) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ServiceDependReply.Unmarshal(m, b)
}
func (m *ServiceDependReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ServiceDependReply.Marshal(b, m, deterministic)
}
func (dst *ServiceDependReply) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ServiceDependReply.Merge(dst, src)
}
func (m *ServiceDependReply) XXX_Size() int {
	return xxx_messageInfo_ServiceDependReply.Size(m)
}
func (m *ServiceDependReply) XXX_DiscardUnknown() {
	xxx_messageInfo_ServiceDependReply.DiscardUnknown(m)
}

var xxx_messageInfo_ServiceDependReply proto.InternalMessageInfo

func (m *ServiceDependReply) GetItems() []*ServiceDependItem {
	if m != nil {
		return m.Items
	}
	return nil
}

type ServiceDependItem struct {
	// service_name 依赖服务名称, service 为 AppID 其他为组件名 mysql, redis, http 等
	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
	// component, 通讯组件 e.g. net/http, goRPC, gRPC
	Component string `protobuf:"bytes,2,opt,name=component,proto3" json:"component,omitempty"`
	// operation_names 被依赖服务的 operation_names, mysql, redis 等为空
	OperationNames       []string `protobuf:"bytes,3,rep,name=operation_names,json=operationNames" json:"operation_names,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ServiceDependItem) Reset()         { *m = ServiceDependItem{} }
func (m *ServiceDependItem) String() string { return proto.CompactTextString(m) }
func (*ServiceDependItem) ProtoMessage()    {}
func (*ServiceDependItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_api_f0d39efb13fd4b71, []int{38}
}
func (m *ServiceDependItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ServiceDependItem.Unmarshal(m, b)
}
func (m *ServiceDependItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ServiceDependItem.Marshal(b, m, deterministic)
}
func (dst *ServiceDependItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ServiceDependItem.Merge(dst, src)
}
func (m *ServiceDependItem) XXX_Size() int {
	return xxx_messageInfo_ServiceDependItem.Size(m)
}
func (m *ServiceDependItem) XXX_DiscardUnknown() {
	xxx_messageInfo_ServiceDependItem.DiscardUnknown(m)
}

var xxx_messageInfo_ServiceDependItem proto.InternalMessageInfo

func (m *ServiceDependItem) GetServiceName() string {
	if m != nil {
		return m.ServiceName
	}
	return ""
}

func (m *ServiceDependItem) GetComponent() string {
	if m != nil {
		return m.Component
	}
	return ""
}

func (m *ServiceDependItem) GetOperationNames() []string {
	if m != nil {
		return m.OperationNames
	}
	return nil
}

func init() {
	proto.RegisterType((*ListServiceNameReq)(nil), "dapper.query.v1.ListServiceNameReq")
	proto.RegisterType((*ListServiceNameReply)(nil), "dapper.query.v1.ListServiceNameReply")
	proto.RegisterType((*ListOperationNameReq)(nil), "dapper.query.v1.ListOperationNameReq")
	proto.RegisterType((*ListOperationNameReply)(nil), "dapper.query.v1.ListOperationNameReply")
	proto.RegisterType((*ListSpanReq)(nil), "dapper.query.v1.ListSpanReq")
	proto.RegisterType((*SpanListItem)(nil), "dapper.query.v1.SpanListItem")
	proto.RegisterMapType((map[string]*TagValue)(nil), "dapper.query.v1.SpanListItem.TagsEntry")
	proto.RegisterType((*TraceReq)(nil), "dapper.query.v1.TraceReq")
	proto.RegisterType((*RawTraceReq)(nil), "dapper.query.v1.RawTraceReq")
	proto.RegisterType((*RawTraceReply)(nil), "dapper.query.v1.RawTraceReply")
	proto.RegisterType((*TagValue)(nil), "dapper.query.v1.TagValue")
	proto.RegisterType((*Field)(nil), "dapper.query.v1.Field")
	proto.RegisterType((*Log)(nil), "dapper.query.v1.Log")
	proto.RegisterType((*Span)(nil), "dapper.query.v1.Span")
	proto.RegisterMapType((map[string]*TagValue)(nil), "dapper.query.v1.Span.TagsEntry")
	proto.RegisterType((*TraceReply)(nil), "dapper.query.v1.TraceReply")
	proto.RegisterType((*ListSpanReply)(nil), "dapper.query.v1.ListSpanReply")
	proto.RegisterType((*OperationNameRankReq)(nil), "dapper.query.v1.OperationNameRankReq")
	proto.RegisterType((*RankItem)(nil), "dapper.query.v1.RankItem")
	proto.RegisterType((*OperationNameRankReply)(nil), "dapper.query.v1.OperationNameRankReply")
	proto.RegisterType((*DependsRankReq)(nil), "dapper.query.v1.DependsRankReq")
	proto.RegisterType((*DependsRankReply)(nil), "dapper.query.v1.DependsRankReply")
	proto.RegisterType((*SpanSeriesReq)(nil), "dapper.query.v1.SpanSeriesReq")
	proto.RegisterType((*SeriesItem)(nil), "dapper.query.v1.SeriesItem")
	proto.RegisterType((*SpanSeriesReply)(nil), "dapper.query.v1.SpanSeriesReply")
	proto.RegisterType((*CltStatusReq)(nil), "dapper.query.v1.CltStatusReq")
	proto.RegisterType((*Client)(nil), "dapper.query.v1.Client")
	proto.RegisterType((*CltNode)(nil), "dapper.query.v1.CltNode")
	proto.RegisterType((*CltStatusReply)(nil), "dapper.query.v1.CltStatusReply")
	proto.RegisterType((*SamplePointReq)(nil), "dapper.query.v1.SamplePointReq")
	proto.RegisterType((*SamplePointItem)(nil), "dapper.query.v1.SamplePointItem")
	proto.RegisterType((*SamplePointReply)(nil), "dapper.query.v1.SamplePointReply")
	proto.RegisterType((*DependsTopologyReq)(nil), "dapper.query.v1.DependsTopologyReq")
	proto.RegisterType((*DependsTopologyItem)(nil), "dapper.query.v1.DependsTopologyItem")
	proto.RegisterType((*DependsTopologyReply)(nil), "dapper.query.v1.DependsTopologyReply")
	proto.RegisterType((*OpsLogReq)(nil), "dapper.query.v1.OpsLogReq")
	proto.RegisterType((*OpsLogRecord)(nil), "dapper.query.v1.OpsLogRecord")
	proto.RegisterMapType((map[string]*TagValue)(nil), "dapper.query.v1.OpsLogRecord.FieldsEntry")
	proto.RegisterType((*OpsLogReply)(nil), "dapper.query.v1.OpsLogReply")
	proto.RegisterType((*ServiceDependReq)(nil), "dapper.query.v1.ServiceDependReq")
	proto.RegisterType((*ServiceDependReply)(nil), "dapper.query.v1.ServiceDependReply")
	proto.RegisterType((*ServiceDependItem)(nil), "dapper.query.v1.ServiceDependItem")
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// DapperQueryClient is the client API for DapperQuery service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type DapperQueryClient interface {
	// ListServiceName 列出所有 service
	ListServiceName(ctx context.Context, in *ListServiceNameReq, opts ...grpc.CallOption) (*ListServiceNameReply, error)
	// ListOperationName 列出某一 service  下所有 operation_name 仅 span.kind 为 server 的 operation_name
	ListOperationName(ctx context.Context, in *ListOperationNameReq, opts ...grpc.CallOption) (*ListOperationNameReply, error)
	// ListSpan 列出一个 service_name 某一 operation_name 所有采样到 Span
	ListSpan(ctx context.Context, in *ListSpanReq, opts ...grpc.CallOption) (*ListSpanReply, error)
	// Trace 查询一个 Trace
	Trace(ctx context.Context, in *TraceReq, opts ...grpc.CallOption) (*TraceReply, error)
	// RawTrace 原始 Trace 数据
	RawTrace(ctx context.Context, in *RawTraceReq, opts ...grpc.CallOption) (*RawTraceReply, error)
	// OperationNameRank 查询 OperationName 排名列表
	OperationNameRank(ctx context.Context, in *OperationNameRankReq, opts ...grpc.CallOption) (*OperationNameRankReply, error)
	// DependsRank 查询某一个 service_name:operation_name 下所有依赖组件排名
	DependsRank(ctx context.Context, in *DependsRankReq, opts ...grpc.CallOption) (*DependsRankReply, error)
	// SpanSeries 获取 span 的时间序列数据
	SpanSeries(ctx context.Context, in *SpanSeriesReq, opts ...grpc.CallOption) (*SpanSeriesReply, error)
	// SamplePoint 获取采样点数据
	SamplePoint(ctx context.Context, in *SamplePointReq, opts ...grpc.CallOption) (*SamplePointReply, error)
	// CltStatus 获取 collector 信息
	CltStatus(ctx context.Context, in *CltStatusReq, opts ...grpc.CallOption) (*CltStatusReply, error)
	// DependsTopology 获取依赖拓扑图
	DependsTopology(ctx context.Context, in *DependsTopologyReq, opts ...grpc.CallOption) (*DependsTopologyReply, error)
	// OpsLog 获取 通过 trace-id 获取 opslog 记录
	// 如果请求的 trace-id 没有被记录到, 则需要提供 service_name operation_name 和 timestamp 进行模糊查询
	OpsLog(ctx context.Context, in *OpsLogReq, opts ...grpc.CallOption) (*OpsLogReply, error)
	// ServiceDepend 查询服务的直接依赖
	// TODO: 通过最近收集的到3 个 span 实时计算的，在当前查询的服务出现不正常的时候，查询结果可能不准确
	ServiceDepend(ctx context.Context, in *ServiceDependReq, opts ...grpc.CallOption) (*ServiceDependReply, error)
}

type dapperQueryClient struct {
	cc *grpc.ClientConn
}

func NewDapperQueryClient(cc *grpc.ClientConn) DapperQueryClient {
	return &dapperQueryClient{cc}
}

func (c *dapperQueryClient) ListServiceName(ctx context.Context, in *ListServiceNameReq, opts ...grpc.CallOption) (*ListServiceNameReply, error) {
	out := new(ListServiceNameReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/ListServiceName", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) ListOperationName(ctx context.Context, in *ListOperationNameReq, opts ...grpc.CallOption) (*ListOperationNameReply, error) {
	out := new(ListOperationNameReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/ListOperationName", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) ListSpan(ctx context.Context, in *ListSpanReq, opts ...grpc.CallOption) (*ListSpanReply, error) {
	out := new(ListSpanReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/ListSpan", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) Trace(ctx context.Context, in *TraceReq, opts ...grpc.CallOption) (*TraceReply, error) {
	out := new(TraceReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/Trace", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) RawTrace(ctx context.Context, in *RawTraceReq, opts ...grpc.CallOption) (*RawTraceReply, error) {
	out := new(RawTraceReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/RawTrace", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) OperationNameRank(ctx context.Context, in *OperationNameRankReq, opts ...grpc.CallOption) (*OperationNameRankReply, error) {
	out := new(OperationNameRankReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/OperationNameRank", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) DependsRank(ctx context.Context, in *DependsRankReq, opts ...grpc.CallOption) (*DependsRankReply, error) {
	out := new(DependsRankReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/DependsRank", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) SpanSeries(ctx context.Context, in *SpanSeriesReq, opts ...grpc.CallOption) (*SpanSeriesReply, error) {
	out := new(SpanSeriesReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/SpanSeries", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) SamplePoint(ctx context.Context, in *SamplePointReq, opts ...grpc.CallOption) (*SamplePointReply, error) {
	out := new(SamplePointReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/SamplePoint", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) CltStatus(ctx context.Context, in *CltStatusReq, opts ...grpc.CallOption) (*CltStatusReply, error) {
	out := new(CltStatusReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/CltStatus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) DependsTopology(ctx context.Context, in *DependsTopologyReq, opts ...grpc.CallOption) (*DependsTopologyReply, error) {
	out := new(DependsTopologyReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/DependsTopology", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) OpsLog(ctx context.Context, in *OpsLogReq, opts ...grpc.CallOption) (*OpsLogReply, error) {
	out := new(OpsLogReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/OpsLog", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *dapperQueryClient) ServiceDepend(ctx context.Context, in *ServiceDependReq, opts ...grpc.CallOption) (*ServiceDependReply, error) {
	out := new(ServiceDependReply)
	err := c.cc.Invoke(ctx, "/dapper.query.v1.DapperQuery/ServiceDepend", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// DapperQueryServer is the server API for DapperQuery service.
type DapperQueryServer interface {
	// ListServiceName 列出所有 service
	ListServiceName(context.Context, *ListServiceNameReq) (*ListServiceNameReply, error)
	// ListOperationName 列出某一 service  下所有 operation_name 仅 span.kind 为 server 的 operation_name
	ListOperationName(context.Context, *ListOperationNameReq) (*ListOperationNameReply, error)
	// ListSpan 列出一个 service_name 某一 operation_name 所有采样到 Span
	ListSpan(context.Context, *ListSpanReq) (*ListSpanReply, error)
	// Trace 查询一个 Trace
	Trace(context.Context, *TraceReq) (*TraceReply, error)
	// RawTrace 原始 Trace 数据
	RawTrace(context.Context, *RawTraceReq) (*RawTraceReply, error)
	// OperationNameRank 查询 OperationName 排名列表
	OperationNameRank(context.Context, *OperationNameRankReq) (*OperationNameRankReply, error)
	// DependsRank 查询某一个 service_name:operation_name 下所有依赖组件排名
	DependsRank(context.Context, *DependsRankReq) (*DependsRankReply, error)
	// SpanSeries 获取 span 的时间序列数据
	SpanSeries(context.Context, *SpanSeriesReq) (*SpanSeriesReply, error)
	// SamplePoint 获取采样点数据
	SamplePoint(context.Context, *SamplePointReq) (*SamplePointReply, error)
	// CltStatus 获取 collector 信息
	CltStatus(context.Context, *CltStatusReq) (*CltStatusReply, error)
	// DependsTopology 获取依赖拓扑图
	DependsTopology(context.Context, *DependsTopologyReq) (*DependsTopologyReply, error)
	// OpsLog 获取 通过 trace-id 获取 opslog 记录
	// 如果请求的 trace-id 没有被记录到, 则需要提供 service_name operation_name 和 timestamp 进行模糊查询
	OpsLog(context.Context, *OpsLogReq) (*OpsLogReply, error)
	// ServiceDepend 查询服务的直接依赖
	// TODO: 通过最近收集的到3 个 span 实时计算的，在当前查询的服务出现不正常的时候，查询结果可能不准确
	ServiceDepend(context.Context, *ServiceDependReq) (*ServiceDependReply, error)
}

func RegisterDapperQueryServer(s *grpc.Server, srv DapperQueryServer) {
	s.RegisterService(&_DapperQuery_serviceDesc, srv)
}

func _DapperQuery_ListServiceName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListServiceNameReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).ListServiceName(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/ListServiceName",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).ListServiceName(ctx, req.(*ListServiceNameReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_ListOperationName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListOperationNameReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).ListOperationName(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/ListOperationName",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).ListOperationName(ctx, req.(*ListOperationNameReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_ListSpan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListSpanReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).ListSpan(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/ListSpan",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).ListSpan(ctx, req.(*ListSpanReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_Trace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(TraceReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).Trace(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/Trace",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).Trace(ctx, req.(*TraceReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_RawTrace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RawTraceReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).RawTrace(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/RawTrace",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).RawTrace(ctx, req.(*RawTraceReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_OperationNameRank_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(OperationNameRankReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).OperationNameRank(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/OperationNameRank",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).OperationNameRank(ctx, req.(*OperationNameRankReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_DependsRank_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DependsRankReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).DependsRank(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/DependsRank",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).DependsRank(ctx, req.(*DependsRankReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_SpanSeries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SpanSeriesReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).SpanSeries(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/SpanSeries",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).SpanSeries(ctx, req.(*SpanSeriesReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_SamplePoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SamplePointReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).SamplePoint(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/SamplePoint",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).SamplePoint(ctx, req.(*SamplePointReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_CltStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CltStatusReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).CltStatus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/CltStatus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).CltStatus(ctx, req.(*CltStatusReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_DependsTopology_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DependsTopologyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).DependsTopology(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/DependsTopology",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).DependsTopology(ctx, req.(*DependsTopologyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_OpsLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(OpsLogReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).OpsLog(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/OpsLog",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).OpsLog(ctx, req.(*OpsLogReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _DapperQuery_ServiceDepend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ServiceDependReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(DapperQueryServer).ServiceDepend(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/dapper.query.v1.DapperQuery/ServiceDepend",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(DapperQueryServer).ServiceDepend(ctx, req.(*ServiceDependReq))
	}
	return interceptor(ctx, in, info, handler)
}

var _DapperQuery_serviceDesc = grpc.ServiceDesc{
	ServiceName: "dapper.query.v1.DapperQuery",
	HandlerType: (*DapperQueryServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "ListServiceName",
			Handler:    _DapperQuery_ListServiceName_Handler,
		},
		{
			MethodName: "ListOperationName",
			Handler:    _DapperQuery_ListOperationName_Handler,
		},
		{
			MethodName: "ListSpan",
			Handler:    _DapperQuery_ListSpan_Handler,
		},
		{
			MethodName: "Trace",
			Handler:    _DapperQuery_Trace_Handler,
		},
		{
			MethodName: "RawTrace",
			Handler:    _DapperQuery_RawTrace_Handler,
		},
		{
			MethodName: "OperationNameRank",
			Handler:    _DapperQuery_OperationNameRank_Handler,
		},
		{
			MethodName: "DependsRank",
			Handler:    _DapperQuery_DependsRank_Handler,
		},
		{
			MethodName: "SpanSeries",
			Handler:    _DapperQuery_SpanSeries_Handler,
		},
		{
			MethodName: "SamplePoint",
			Handler:    _DapperQuery_SamplePoint_Handler,
		},
		{
			MethodName: "CltStatus",
			Handler:    _DapperQuery_CltStatus_Handler,
		},
		{
			MethodName: "DependsTopology",
			Handler:    _DapperQuery_DependsTopology_Handler,
		},
		{
			MethodName: "OpsLog",
			Handler:    _DapperQuery_OpsLog_Handler,
		},
		{
			MethodName: "ServiceDepend",
			Handler:    _DapperQuery_ServiceDepend_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "api/v1/api.proto",
}

func init() { proto.RegisterFile("api/v1/api.proto", fileDescriptor_api_f0d39efb13fd4b71) }

var fileDescriptor_api_f0d39efb13fd4b71 = []byte{
	// 2209 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x39, 0xbd, 0x8f, 0xdb, 0xc8,
	0xf5, 0xa6, 0xa8, 0x2f, 0x3e, 0x69, 0x3f, 0x3c, 0xb7, 0xb6, 0x65, 0xed, 0xda, 0xd4, 0xce, 0xda,
	0xb7, 0xbb, 0x67, 0x68, 0x85, 0xb5, 0x0f, 0xe7, 0x83, 0xef, 0x57, 0xf8, 0x64, 0x9f, 0x61, 0xff,
	0x60, 0xd8, 0x39, 0x7a, 0x93, 0xe2, 0x1a, 0x85, 0x96, 0x46, 0x3a, 0xc6, 0x14, 0x49, 0x93, 0x94,
	0xce, 0xeb, 0x24, 0xcd, 0x35, 0x01, 0xd2, 0xa4, 0x48, 0x8a, 0x74, 0x69, 0x52, 0xa5, 0xc8, 0x3f,
	0x93, 0x54, 0x01, 0x22, 0x20, 0x48, 0x8a, 0x20, 0xe9, 0xd4, 0x07, 0x08, 0xe6, 0x0d, 0x29, 0x91,
	0xe2, 0x48, 0x5e, 0x24, 0x5e, 0x04, 0x41, 0x3a, 0xf1, 0xbd, 0x37, 0xf3, 0xbe, 0xbf, 0x46, 0xb0,
	0x69, 0x7a, 0x56, 0x6b, 0x7c, 0xdc, 0x32, 0x3d, 0xeb, 0xc8, 0xf3, 0xdd, 0xd0, 0x25, 0x1b, 0x3d,
	0xd3, 0xf3, 0x98, 0x7f, 0xf4, 0x7a, 0xc4, 0xfc, 0xd3, 0xa3, 0xf1, 0x71, 0x7d, 0x67, 0xe0, 0xba,
	0x03, 0x9b, 0x71, 0x92, 0x96, 0xe9, 0x38, 0x6e, 0x68, 0x86, 0x96, 0xeb, 0x04, 0x82, 0xbc, 0xde,
	0x1c, 0x58, 0xe1, 0xd7, 0xa3, 0x97, 0x47, 0x5d, 0x77, 0xd8, 0x1a, 0xb8, 0x03, 0xb7, 0x85, 0xe0,
	0x97, 0xa3, 0x3e, 0x7e, 0xe1, 0x07, 0xfe, 0x12, 0xe4, 0x74, 0x0b, 0xc8, 0x53, 0x2b, 0x08, 0x5f,
	0x30, 0x7f, 0x6c, 0x75, 0xd9, 0x33, 0x73, 0xc8, 0x0c, 0xf6, 0x9a, 0x7e, 0x06, 0x5b, 0x19, 0xa8,
	0x67, 0x9f, 0x92, 0x3d, 0x58, 0x0b, 0x04, 0xac, 0xe3, 0x98, 0x43, 0x16, 0xd4, 0x94, 0x86, 0x7a,
	0xa0, 0x19, 0xd5, 0x60, 0x4e, 0x18, 0xd0, 0xbe, 0x38, 0xfc, 0xdc, 0x63, 0x3e, 0x4a, 0x16, 0x5d,
	0x4a, 0x9e, 0x41, 0x35, 0x79, 0xb8, 0xa6, 0x34, 0x94, 0x03, 0xad, 0x7d, 0x6b, 0x3a, 0xd1, 0xf7,
	0xfb, 0xae, 0x3f, 0xbc, 0x47, 0x93, 0x58, 0xda, 0x18, 0x9b, 0xb6, 0xd5, 0x33, 0x43, 0x76, 0x8f,
	0xfa, 0xec, 0xf5, 0xc8, 0xf2, 0x59, 0x8f, 0x1a, 0x95, 0x04, 0x23, 0xfa, 0x39, 0x5c, 0x96, 0xf0,
	0xe1, 0x62, 0xee, 0xc3, 0x86, 0x1b, 0x43, 0x53, 0x82, 0xae, 0xbb, 0x49, 0xe2, 0x80, 0xfe, 0x56,
	0x85, 0x0a, 0x2a, 0xea, 0x99, 0xce, 0x39, 0x88, 0x48, 0x4e, 0x60, 0x3d, 0x2d, 0x48, 0x2d, 0x87,
	0x37, 0x36, 0xa7, 0x13, 0xfd, 0x50, 0xdc, 0x98, 0xc6, 0xcb, 0xef, 0x5c, 0x4b, 0x89, 0x4d, 0x3e,
	0x84, 0x42, 0x10, 0x9a, 0x7e, 0x58, 0x53, 0x1b, 0xca, 0x81, 0xda, 0xde, 0x9c, 0x4e, 0xf4, 0x6a,
	0x24, 0x1e, 0x07, 0x53, 0x43, 0xa0, 0x49, 0x03, 0x54, 0xe6, 0xf4, 0x6a, 0x79, 0xa4, 0x5a, 0x9f,
	0x4e, 0x74, 0x10, 0x54, 0xcc, 0xe9, 0x51, 0x83, 0xa3, 0xf8, 0x4d, 0xae, 0xdf, 0x63, 0x7e, 0xad,
	0x80, 0x62, 0x25, 0x6e, 0x42, 0x30, 0x35, 0x04, 0x9a, 0x7c, 0x0c, 0xe0, 0x3a, 0xf6, 0x69, 0x87,
	0xf9, 0xbe, 0xeb, 0xd7, 0x8a, 0x0d, 0xe5, 0xa0, 0xdc, 0xbe, 0x34, 0x9d, 0xe8, 0x17, 0x23, 0xe2,
	0x19, 0x8e, 0x1a, 0x1a, 0xff, 0xf8, 0x82, 0xff, 0x26, 0x87, 0x50, 0x74, 0xfb, 0xfd, 0x80, 0x85,
	0xb5, 0x52, 0x43, 0x39, 0x28, 0xb4, 0x2f, 0x4e, 0x27, 0xfa, 0x5a, 0x74, 0x02, 0xe1, 0xd4, 0x88,
	0x08, 0xb8, 0x20, 0xb6, 0x35, 0xb4, 0xc2, 0x5a, 0x19, 0x29, 0x13, 0x82, 0x20, 0x98, 0x1a, 0x02,
	0x4d, 0xff, 0xaa, 0x42, 0x95, 0x3b, 0x8b, 0x3b, 0xed, 0x49, 0xc8, 0x86, 0xe4, 0x2a, 0x94, 0x43,
	0xdf, 0xec, 0xb2, 0x8e, 0xd5, 0x13, 0xde, 0x32, 0x4a, 0xf8, 0xfd, 0xa4, 0x47, 0xae, 0x40, 0x29,
	0xf0, 0x4c, 0x87, 0x63, 0xd0, 0xea, 0x46, 0x91, 0x7f, 0x3e, 0xe9, 0x91, 0x6d, 0xd0, 0x3c, 0xd3,
	0x67, 0x4e, 0xc8, 0x51, 0x2a, 0xa2, 0xca, 0x02, 0xf0, 0xa4, 0x47, 0x76, 0x17, 0x42, 0x20, 0x8f,
	0xf8, 0x94, 0x57, 0x6f, 0x66, 0xbc, 0x8a, 0xe6, 0x5b, 0x74, 0xd3, 0x35, 0x00, 0xf4, 0x43, 0x27,
	0xb4, 0x86, 0x0c, 0x8d, 0xa6, 0x19, 0x1a, 0x42, 0x4e, 0xac, 0x21, 0x23, 0x75, 0x28, 0xf7, 0x46,
	0x82, 0x1c, 0xed, 0xa3, 0x19, 0xb3, 0x6f, 0xf2, 0x19, 0xe4, 0x43, 0x73, 0x10, 0xd4, 0xaa, 0x0d,
	0xf5, 0xa0, 0x72, 0x7b, 0xff, 0x68, 0xa1, 0x04, 0x1c, 0x25, 0x4d, 0x70, 0x74, 0x62, 0x0e, 0x82,
	0x2f, 0x9c, 0xd0, 0x3f, 0x35, 0xf0, 0x10, 0x37, 0x89, 0x15, 0x44, 0xae, 0xe2, 0xe6, 0x2c, 0x1b,
	0x25, 0x2b, 0x10, 0x1e, 0xd9, 0x85, 0x6a, 0xd7, 0x75, 0x42, 0xd3, 0x72, 0x98, 0xdf, 0xb1, 0xbc,
	0x9a, 0x26, 0x94, 0x9b, 0xc1, 0x9e, 0x78, 0x44, 0x87, 0x8a, 0xcf, 0x06, 0x5c, 0xb3, 0xb7, 0xae,
	0xc3, 0x6a, 0x80, 0x14, 0x20, 0x40, 0x5f, 0xb9, 0x0e, 0x23, 0x04, 0xf2, 0x43, 0xd3, 0x7f, 0x55,
	0xab, 0x20, 0x06, 0x7f, 0xd7, 0x0d, 0xd0, 0x66, 0x52, 0x90, 0x4d, 0x50, 0x5f, 0xb1, 0xd3, 0xc8,
	0x1b, 0xfc, 0x27, 0x69, 0x41, 0x61, 0x6c, 0xda, 0x23, 0x11, 0xfd, 0x95, 0xdb, 0x57, 0x33, 0xfa,
	0x9c, 0x98, 0x83, 0xef, 0x71, 0x02, 0x43, 0xd0, 0xdd, 0xcb, 0x7d, 0xaa, 0xd0, 0x1f, 0x42, 0xf9,
	0x84, 0x7b, 0x92, 0xe7, 0x65, 0x7b, 0xd1, 0xcb, 0xed, 0xfd, 0xe9, 0x44, 0xdf, 0x13, 0x11, 0x12,
	0x63, 0xe4, 0xb9, 0x33, 0x0b, 0x87, 0x5b, 0x0b, 0xe1, 0xd0, 0x26, 0xd3, 0x89, 0xbe, 0x1e, 0xe5,
	0x8d, 0x40, 0xd0, 0x38, 0x44, 0xe8, 0x97, 0x50, 0x31, 0xcc, 0x6f, 0xde, 0x27, 0x7f, 0xfa, 0x7f,
	0xb0, 0x36, 0xbf, 0x92, 0x57, 0xa9, 0x5b, 0x50, 0xb0, 0x42, 0x36, 0x14, 0xb5, 0xa9, 0x72, 0xfb,
	0x92, 0xd4, 0xcb, 0x86, 0xa0, 0xa1, 0xbf, 0x52, 0xa0, 0x1c, 0x5b, 0x89, 0xec, 0x41, 0x35, 0x08,
	0x7d, 0xcb, 0x19, 0x74, 0xe6, 0x66, 0xd5, 0x1e, 0x5f, 0x30, 0x2a, 0x02, 0x2a, 0x88, 0x76, 0xa1,
	0x62, 0x39, 0xe1, 0x27, 0x1f, 0x47, 0x34, 0x58, 0x2b, 0x1e, 0x5f, 0x30, 0x00, 0x81, 0x82, 0x44,
	0x07, 0x78, 0xe9, 0xba, 0x76, 0x44, 0xc1, 0x23, 0xbd, 0xfc, 0xf8, 0x82, 0xa1, 0x71, 0xd8, 0xec,
	0x8e, 0xbe, 0xed, 0x9a, 0x61, 0x44, 0xc1, 0xc3, 0x3c, 0xc7, 0xef, 0x40, 0x20, 0x92, 0xb4, 0x4b,
	0x91, 0x6f, 0x69, 0x0b, 0x0a, 0x8f, 0x2c, 0x66, 0xf7, 0x24, 0xfe, 0xdf, 0x4a, 0xfa, 0x5f, 0x8b,
	0x9c, 0x4c, 0x5f, 0x80, 0xfa, 0xd4, 0x1d, 0x90, 0x1d, 0xd0, 0x78, 0x82, 0x04, 0xa1, 0x39, 0xf4,
	0xf0, 0x90, 0x6a, 0xcc, 0x01, 0xe4, 0x08, 0x8a, 0x7d, 0x7e, 0x6b, 0x50, 0xcb, 0xa1, 0x95, 0x2e,
	0x67, 0xac, 0x84, 0x4c, 0x8d, 0x88, 0x8a, 0xfe, 0x5e, 0x85, 0x3c, 0xb7, 0x5b, 0x26, 0x8f, 0x95,
	0xb3, 0xe4, 0x71, 0x4e, 0x96, 0xc7, 0xc9, 0x12, 0xa3, 0x2e, 0x2d, 0x31, 0xf9, 0xe5, 0x25, 0xa6,
	0xb0, 0x50, 0x62, 0xb2, 0x85, 0x41, 0x5d, 0x55, 0x18, 0xd4, 0x44, 0x61, 0xb8, 0x13, 0x15, 0x86,
	0x32, 0x1a, 0x43, 0x97, 0x86, 0x4c, 0xa6, 0x20, 0x1c, 0x40, 0xde, 0x76, 0x07, 0x41, 0x4d, 0xc3,
	0x43, 0x5b, 0x99, 0x43, 0x4f, 0xdd, 0x81, 0x81, 0x14, 0xdc, 0x51, 0x36, 0x1b, 0x33, 0x1b, 0xd3,
	0xbe, 0x60, 0x88, 0x0f, 0xd2, 0x84, 0x62, 0xf7, 0x6b, 0x8b, 0xfb, 0xa0, 0xb2, 0x2a, 0x52, 0x23,
	0xa2, 0x73, 0x29, 0x06, 0xbf, 0x54, 0x00, 0x12, 0xa9, 0x93, 0x98, 0x43, 0xba, 0xee, 0xc8, 0x09,
	0xf1, 0xfe, 0xc2, 0x6c, 0x0e, 0x79, 0xc0, 0x61, 0x68, 0x66, 0xee, 0x1c, 0x41, 0x91, 0x43, 0x0a,
	0x8d, 0x43, 0x04, 0x7a, 0x1b, 0xb4, 0xa1, 0xf9, 0xa6, 0x23, 0xf4, 0x55, 0x11, 0x5b, 0x1e, 0x9a,
	0x6f, 0x9e, 0xa2, 0xca, 0x87, 0x90, 0xf7, 0x5d, 0x37, 0x44, 0xaf, 0x2e, 0x55, 0x18, 0x49, 0xe8,
	0x43, 0x58, 0x9b, 0x8f, 0x10, 0x5c, 0xb8, 0x3b, 0x71, 0x5e, 0x8b, 0x88, 0xbd, 0xb6, 0xb2, 0x7a,
	0xc7, 0xf9, 0xfd, 0x67, 0x05, 0xb6, 0xd2, 0x93, 0x8c, 0xe9, 0xbc, 0x3a, 0x8f, 0x91, 0x64, 0x36,
	0x3c, 0xe4, 0xce, 0x34, 0x3c, 0xa8, 0xcb, 0x87, 0x87, 0x63, 0xd0, 0x7c, 0xd3, 0x79, 0xd5, 0x09,
	0x4f, 0xbd, 0xa8, 0x4d, 0xb6, 0xb7, 0xa6, 0x13, 0x7d, 0x53, 0xd0, 0xcd, 0x50, 0xd4, 0x28, 0xf3,
	0xdf, 0x27, 0xfc, 0xe7, 0x0f, 0xa0, 0xcc, 0xf5, 0xc2, 0xce, 0xfd, 0xfe, 0x12, 0x74, 0x56, 0x5e,
	0xb8, 0xb0, 0x4a, 0x5c, 0x5e, 0xfa, 0x70, 0x59, 0x62, 0x50, 0xee, 0xa0, 0xed, 0xa4, 0xe0, 0x82,
	0xed, 0x4c, 0x44, 0x1e, 0x9e, 0x49, 0xef, 0x65, 0xc3, 0x33, 0x56, 0x20, 0xf6, 0xdc, 0x1f, 0x15,
	0x58, 0x7f, 0xc8, 0x3c, 0xe6, 0xf4, 0x82, 0x73, 0xf7, 0xd9, 0xbf, 0x3d, 0xf0, 0xa5, 0x7c, 0x56,
	0x38, 0x93, 0xcf, 0xbe, 0x0f, 0x9b, 0x29, 0xf5, 0xde, 0xbf, 0x05, 0x7f, 0x93, 0x83, 0x35, 0x9e,
	0x13, 0x2f, 0x98, 0x6f, 0xb1, 0xe0, 0x7f, 0x71, 0x0e, 0x3f, 0x9c, 0x75, 0x39, 0x1c, 0x13, 0x93,
	0x93, 0x72, 0xd4, 0xd7, 0x66, 0x0d, 0xee, 0x11, 0x80, 0xb0, 0x13, 0x26, 0xd1, 0x16, 0x14, 0x10,
	0x1e, 0x39, 0x41, 0x7c, 0x10, 0x0a, 0x45, 0xcc, 0x01, 0xe1, 0x02, 0xb5, 0x0d, 0x7f, 0x98, 0xe8,
	0xc5, 0x8f, 0xb0, 0xf1, 0x1b, 0x11, 0x86, 0x8e, 0x61, 0x23, 0x69, 0x73, 0xee, 0xd5, 0x3a, 0x94,
	0x2d, 0x27, 0x64, 0xfe, 0xd8, 0xb4, 0x31, 0x36, 0x54, 0x63, 0xf6, 0xcd, 0x19, 0x61, 0x53, 0x8e,
	0x16, 0x29, 0xf1, 0x41, 0x8e, 0xd3, 0xae, 0xde, 0xce, 0x96, 0xba, 0x99, 0xa8, 0xb1, 0xb3, 0xd7,
	0xa1, 0xfa, 0xc0, 0x0e, 0x5f, 0x84, 0x66, 0x38, 0xe2, 0xae, 0xa6, 0x7d, 0x28, 0x3e, 0xb0, 0x2d,
	0xe6, 0x84, 0x7c, 0xb0, 0x34, 0x7b, 0x3d, 0x3f, 0x52, 0x05, 0x7f, 0xf3, 0x40, 0x63, 0xbe, 0x9f,
	0x28, 0xe1, 0xaa, 0x51, 0x66, 0xbe, 0x2f, 0x2a, 0x38, 0x81, 0xbc, 0x6f, 0x86, 0xd1, 0x68, 0x63,
	0xe0, 0x6f, 0xde, 0x91, 0x47, 0x9e, 0x68, 0xac, 0x68, 0x6f, 0xa3, 0x38, 0xf2, 0x78, 0x57, 0xa5,
	0x43, 0x28, 0x3d, 0xb0, 0xc3, 0x67, 0x6e, 0x0f, 0x27, 0x58, 0xc7, 0xed, 0xc5, 0x81, 0x8b, 0xbf,
	0x39, 0xa3, 0xd7, 0x23, 0x36, 0x62, 0x1d, 0x9b, 0x39, 0x31, 0x23, 0x04, 0x3c, 0x65, 0x0e, 0x39,
	0x86, 0x52, 0x17, 0x65, 0x0c, 0x6a, 0x2a, 0x2a, 0x7a, 0x25, 0xa3, 0xa8, 0xd0, 0xc1, 0x88, 0xe9,
	0xe8, 0x7d, 0x58, 0x4f, 0xa8, 0xc9, 0xad, 0x7b, 0x04, 0x05, 0xce, 0x29, 0x1e, 0xf7, 0x6a, 0x92,
	0x2b, 0x50, 0x3c, 0x43, 0x90, 0xd1, 0xbf, 0xe5, 0x60, 0xfd, 0x85, 0x39, 0xf4, 0x6c, 0xf6, 0x1d,
	0xd7, 0x72, 0xc2, 0xff, 0x9e, 0xb4, 0x48, 0x2f, 0x8b, 0xea, 0x19, 0x97, 0xc5, 0x07, 0x8b, 0xc1,
	0x97, 0x1c, 0xb1, 0x63, 0x8c, 0x9c, 0xff, 0x3c, 0x4a, 0xef, 0x42, 0x7e, 0xbe, 0x6c, 0xb5, 0xf7,
	0xa6, 0x13, 0x5d, 0x8f, 0x66, 0x74, 0x6b, 0x99, 0xf0, 0x78, 0x80, 0xfe, 0x08, 0x36, 0x12, 0xb6,
	0xfe, 0x97, 0x37, 0xcb, 0xe4, 0xe8, 0xa6, 0x2e, 0x8c, 0x6e, 0xc9, 0xb5, 0x2c, 0x9f, 0x5a, 0xcb,
	0xe8, 0xff, 0xc3, 0x66, 0xca, 0xd3, 0x3c, 0x5c, 0x3e, 0x49, 0x6f, 0x07, 0x8d, 0x6c, 0x6a, 0xa5,
	0xe5, 0x8d, 0xf3, 0x6b, 0x0b, 0x48, 0x54, 0xae, 0x4f, 0x5c, 0xcf, 0xb5, 0xdd, 0xc1, 0x29, 0xcf,
	0xb2, 0xef, 0xc2, 0x07, 0x0b, 0xd0, 0xb3, 0xf6, 0xe0, 0x6d, 0xd0, 0x7a, 0x78, 0xb2, 0xe3, 0x3a,
	0x91, 0xb6, 0x65, 0x01, 0x78, 0xee, 0x50, 0x03, 0xb6, 0x32, 0xcc, 0xb8, 0xf0, 0xf7, 0xd2, 0xc2,
	0xdf, 0xc8, 0x08, 0x2f, 0x11, 0x26, 0x56, 0xe0, 0x1f, 0x39, 0xd0, 0x9e, 0x7b, 0x01, 0x1f, 0x4a,
	0xff, 0x03, 0x9b, 0x1f, 0xb9, 0x0b, 0x15, 0x71, 0xad, 0xa8, 0xab, 0x38, 0xf0, 0xb7, 0x2f, 0x4f,
	0x27, 0x3a, 0x49, 0xf2, 0x44, 0x24, 0x35, 0x00, 0xbf, 0xc4, 0xda, 0x73, 0x4f, 0xf6, 0x70, 0xd0,
	0xbe, 0x32, 0x9d, 0xe8, 0x1f, 0x48, 0x92, 0x33, 0x6d, 0xe4, 0xfb, 0xf2, 0x17, 0x85, 0xf6, 0xd5,
	0xe9, 0x44, 0xbf, 0x24, 0x4d, 0xc4, 0xa5, 0xbd, 0xa8, 0x78, 0xa6, 0x5e, 0x54, 0x5a, 0xda, 0x8b,
	0xe8, 0xdf, 0x15, 0xa8, 0xc6, 0xf6, 0xef, 0xba, 0x7e, 0x8f, 0x97, 0x4b, 0x4c, 0xaa, 0xa8, 0x5c,
	0xf2, 0xdf, 0xe4, 0xf3, 0x85, 0xb5, 0xec, 0x30, 0xe3, 0xe1, 0xe4, 0x15, 0x62, 0x47, 0x8b, 0x76,
	0x92, 0xe8, 0xe0, 0x7c, 0xd7, 0x10, 0x3b, 0x55, 0xb4, 0x6b, 0xd4, 0xa0, 0x34, 0x64, 0x41, 0x60,
	0x0e, 0xe2, 0x97, 0x97, 0xf8, 0xb3, 0x7e, 0x02, 0x95, 0xc4, 0x35, 0xef, 0x6b, 0xb1, 0x78, 0x04,
	0x95, 0x58, 0x52, 0x1e, 0xb8, 0x77, 0xa1, 0xe4, 0xa3, 0xc8, 0x71, 0xe8, 0x5e, 0x5b, 0xa9, 0x98,
	0x11, 0x53, 0xd3, 0x5f, 0x2b, 0xb0, 0x19, 0x3d, 0x97, 0x8a, 0xd8, 0x3e, 0x8f, 0x7a, 0x7d, 0x7f,
	0x49, 0xbd, 0x3e, 0x73, 0x98, 0xd0, 0x67, 0x40, 0x16, 0xa4, 0xe4, 0x5a, 0x7f, 0x9a, 0x4e, 0x57,
	0x2a, 0x6b, 0xe3, 0xf3, 0x33, 0xc9, 0x64, 0xfd, 0x31, 0x5c, 0xcc, 0xe0, 0xce, 0x52, 0x55, 0x76,
	0x40, 0xeb, 0xba, 0x43, 0xcf, 0x75, 0x58, 0xd4, 0xd7, 0x35, 0x63, 0x0e, 0x90, 0xbd, 0xdf, 0xaa,
	0xb2, 0xf7, 0xdb, 0xdb, 0x7f, 0xaa, 0x42, 0xe5, 0x21, 0xca, 0xfa, 0x25, 0x17, 0x95, 0xfc, 0x44,
	0x81, 0x8d, 0x85, 0x87, 0x6b, 0xb2, 0x97, 0xdd, 0x77, 0x33, 0x0f, 0xde, 0xf5, 0x9b, 0xef, 0x26,
	0xf2, 0xec, 0x53, 0x7a, 0xf0, 0xed, 0xef, 0xfe, 0xf2, 0xf3, 0x1c, 0x25, 0x8d, 0xd6, 0x9b, 0x16,
	0x36, 0x1d, 0xc7, 0xb4, 0x5b, 0xe2, 0x64, 0x2b, 0x52, 0xaf, 0x89, 0xf2, 0x92, 0x9f, 0x29, 0x70,
	0x31, 0xf3, 0x3a, 0x4d, 0xe4, 0x6c, 0x16, 0x5f, 0xca, 0xeb, 0xfb, 0x67, 0x21, 0xe3, 0xf2, 0x7c,
	0x84, 0xf2, 0xdc, 0x20, 0x54, 0x22, 0xcf, 0xcc, 0x54, 0x91, 0x44, 0x0e, 0x94, 0xe3, 0x3d, 0x95,
	0xec, 0xc8, 0xd5, 0x15, 0xaf, 0xe0, 0xf5, 0xeb, 0x2b, 0xb0, 0x9c, 0xeb, 0x0d, 0xe4, 0x7a, 0x9d,
	0xec, 0x48, 0xb8, 0xda, 0x56, 0x10, 0x36, 0x79, 0x29, 0x25, 0x26, 0x14, 0x70, 0x63, 0x27, 0x92,
	0x44, 0x8c, 0xde, 0xd5, 0xea, 0xdb, 0xcb, 0x50, 0x9c, 0x4d, 0x03, 0xd9, 0xd4, 0x49, 0x4d, 0xc2,
	0x06, 0xeb, 0x2e, 0x57, 0x29, 0x7e, 0x52, 0x93, 0xa8, 0x94, 0x78, 0xc0, 0x93, 0xa8, 0x94, 0x7a,
	0x8b, 0x5b, 0xa9, 0x92, 0x6f, 0x7e, 0xd3, 0x14, 0xfc, 0x7e, 0xa1, 0xc0, 0xc5, 0xcc, 0x4e, 0x29,
	0x71, 0xaa, 0x6c, 0x91, 0x97, 0x38, 0x55, 0xbe, 0x9e, 0xd2, 0x16, 0xca, 0x72, 0x48, 0xf6, 0xdf,
	0xed, 0xd4, 0x26, 0x5f, 0xba, 0xc8, 0x5b, 0xa8, 0x24, 0x36, 0x34, 0xa2, 0x2f, 0xeb, 0xb6, 0xb1,
	0x24, 0xbb, 0xab, 0x09, 0xb8, 0x0c, 0xfb, 0x28, 0xc3, 0x2e, 0xd1, 0x25, 0x32, 0x88, 0xee, 0x1f,
	0xf1, 0x1e, 0x03, 0xcc, 0xd7, 0x08, 0x72, 0x5d, 0xfa, 0xd6, 0x31, 0xdb, 0xeb, 0xea, 0x8d, 0x95,
	0x78, 0xce, 0xf8, 0x43, 0x64, 0xdc, 0x20, 0xd7, 0x65, 0x19, 0xe6, 0x99, 0x4e, 0x33, 0x10, 0x9c,
	0xde, 0x42, 0x25, 0x31, 0x00, 0x49, 0x74, 0x4e, 0x8f, 0xce, 0x12, 0x9d, 0x17, 0x27, 0xae, 0x95,
	0x3a, 0x07, 0x48, 0xdc, 0xf4, 0x90, 0x99, 0x0f, 0xda, 0x6c, 0xb6, 0x27, 0xd7, 0x64, 0x73, 0xfc,
	0x6c, 0xbd, 0xa9, 0xeb, 0xab, 0xd0, 0x9c, 0xeb, 0x4d, 0xe4, 0xaa, 0x93, 0x6b, 0x12, 0xae, 0x5d,
	0x3b, 0x6c, 0x06, 0x82, 0xcd, 0x4f, 0x15, 0xd8, 0x58, 0x18, 0x9a, 0x24, 0x95, 0x2d, 0x3b, 0xf9,
	0x49, 0x2a, 0x9b, 0x6c, 0x62, 0xa3, 0xb7, 0x50, 0x8c, 0x9b, 0x64, 0x6f, 0x85, 0xc3, 0xc3, 0x98,
	0x71, 0x1f, 0x8a, 0xa2, 0x0b, 0x92, 0xfa, 0xd2, 0xf6, 0xf8, 0xba, 0xbe, 0xb3, 0x14, 0xc7, 0x19,
	0x52, 0x64, 0xb8, 0x43, 0xea, 0xd2, 0x28, 0x0f, 0x9a, 0xb6, 0x3b, 0x20, 0xdf, 0x2a, 0xb0, 0x96,
	0x6a, 0x2f, 0x64, 0x77, 0x75, 0x6b, 0xe2, 0x6c, 0xf7, 0xde, 0x45, 0xc2, 0xb9, 0x1f, 0x22, 0xf7,
	0x3d, 0xb2, 0xbb, 0xa2, 0x90, 0x0b, 0xb5, 0xdb, 0xf9, 0xaf, 0x72, 0xe3, 0xe3, 0x97, 0x45, 0xfc,
	0xbb, 0xf4, 0xce, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x63, 0x88, 0x46, 0xf5, 0xa0, 0x1d, 0x00,
	0x00,
}
