Copyright 2018, OpenCensus Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
This package describes the Metrics data model. It is currently experimental but may eventually become the wire format for metrics. Please see https://github.com/census-instrumentation/opencensus-specs/blob/master/stats/Metrics.md for more details.
Code generated by protoc-gen-go. DO NOT EDIT. versions: protoc-gen-go v1.25.0 protoc v3.12.3 source: opencensus/proto/metrics/v1/metrics.proto

package v1

import (
	v1 
	proto 
	timestamp 
	wrappers 
	protoreflect 
	protoimpl 
	reflect 
	sync 
)

Verify that this generated code is sufficiently up-to-date.
Verify that runtime/protoimpl is sufficiently up-to-date.
This is a compile-time assertion that a sufficiently up-to-date version of the legacy proto package is being used.
The kind of metric. It describes how the data is reported. A gauge is an instantaneous measurement of a value. A cumulative measurement is a value accumulated over a time interval. In a time series, cumulative measurements should have the same start time, increasing values and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.
Do not use this default value.
Integer gauge. The value can go both up and down.
Floating point gauge. The value can go both up and down.
Distribution gauge measurement. The count and sum can go both up and down. Recorded values are always >= 0. Used in scenarios like a snapshot of time the current items in a queue have spent there.
Integer cumulative measurement. The value cannot decrease, if resets then the start_time should also be reset.
Floating point cumulative measurement. The value cannot decrease, if resets then the start_time should also be reset. Recorded values are always >= 0.
Distribution cumulative measurement. The count and sum cannot decrease, if resets then the start_time should also be reset.
Some frameworks implemented Histograms as a summary of observations (usually things like request durations and response sizes). While it also provides a total count of observations and a sum of all observed values, it calculates configurable percentiles over a sliding time window. This is not recommended, since it cannot be aggregated.
Enum value maps for MetricDescriptor_Type.
var (
	MetricDescriptor_Type_name = map[int32]string{
		0: "UNSPECIFIED",
		1: "GAUGE_INT64",
		2: "GAUGE_DOUBLE",
		3: "GAUGE_DISTRIBUTION",
		4: "CUMULATIVE_INT64",
		5: "CUMULATIVE_DOUBLE",
		6: "CUMULATIVE_DISTRIBUTION",
		7: "SUMMARY",
	}
	MetricDescriptor_Type_value = map[string]int32{
		"UNSPECIFIED":             0,
		"GAUGE_INT64":             1,
		"GAUGE_DOUBLE":            2,
		"GAUGE_DISTRIBUTION":      3,
		"CUMULATIVE_INT64":        4,
		"CUMULATIVE_DOUBLE":       5,
		"CUMULATIVE_DISTRIBUTION": 6,
		"SUMMARY":                 7,
	}
)

func ( MetricDescriptor_Type) () *MetricDescriptor_Type {
	 := new(MetricDescriptor_Type)
	* = 
	return 
}

func ( MetricDescriptor_Type) () string {
	return protoimpl.X.EnumStringOf(.Descriptor(), protoreflect.EnumNumber())
}

func (MetricDescriptor_Type) () protoreflect.EnumDescriptor {
	return file_opencensus_proto_metrics_v1_metrics_proto_enumTypes[0].Descriptor()
}

func (MetricDescriptor_Type) () protoreflect.EnumType {
	return &file_opencensus_proto_metrics_v1_metrics_proto_enumTypes[0]
}

func ( MetricDescriptor_Type) () protoreflect.EnumNumber {
	return protoreflect.EnumNumber()
}
Deprecated: Use MetricDescriptor_Type.Descriptor instead.
Defines a Metric which has one or more timeseries.
The descriptor of the Metric. TODO(issue #152): consider only sending the name of descriptor for optimization.
One or more timeseries for a single metric, where each timeseries has one or more points.
The resource for the metric. If unset, it may be set to a default value provided for a sequence of messages in an RPC stream.
	Resource *v1.Resource `protobuf:"bytes,3,opt,name=resource,proto3" json:"resource,omitempty"`
}

func ( *Metric) () {
	* = Metric{}
	if protoimpl.UnsafeEnabled {
		 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[0]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *Metric) () string {
	return protoimpl.X.MessageStringOf()
}

func (*Metric) () {}

func ( *Metric) () protoreflect.Message {
	 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use Metric.ProtoReflect.Descriptor instead.
func (*Metric) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{0}
}

func ( *Metric) () *MetricDescriptor {
	if  != nil {
		return .MetricDescriptor
	}
	return nil
}

func ( *Metric) () []*TimeSeries {
	if  != nil {
		return .Timeseries
	}
	return nil
}

func ( *Metric) () *v1.Resource {
	if  != nil {
		return .Resource
	}
	return nil
}
The metric type, including its DNS name prefix. It must be unique.
A detailed description of the metric, which can be used in documentation.
The unit in which the metric value is reported. Follows the format described by http://unitsofmeasure.org/ucum.html.
	Unit string                `protobuf:"bytes,3,opt,name=unit,proto3" json:"unit,omitempty"`
The label keys associated with the metric descriptor.
	LabelKeys []*LabelKey `protobuf:"bytes,5,rep,name=label_keys,json=labelKeys,proto3" json:"label_keys,omitempty"`
}

func ( *MetricDescriptor) () {
	* = MetricDescriptor{}
	if protoimpl.UnsafeEnabled {
		 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[1]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *MetricDescriptor) () string {
	return protoimpl.X.MessageStringOf()
}

func (*MetricDescriptor) () {}

func ( *MetricDescriptor) () protoreflect.Message {
	 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use MetricDescriptor.ProtoReflect.Descriptor instead.
func (*MetricDescriptor) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{1}
}

func ( *MetricDescriptor) () string {
	if  != nil {
		return .Name
	}
	return ""
}

func ( *MetricDescriptor) () string {
	if  != nil {
		return .Description
	}
	return ""
}

func ( *MetricDescriptor) () string {
	if  != nil {
		return .Unit
	}
	return ""
}

func ( *MetricDescriptor) () MetricDescriptor_Type {
	if  != nil {
		return .Type
	}
	return MetricDescriptor_UNSPECIFIED
}

func ( *MetricDescriptor) () []*LabelKey {
	if  != nil {
		return .LabelKeys
	}
	return nil
}
Defines a label key associated with a metric descriptor.
The key for the label.
A human-readable description of what this label key represents.
	Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
}

func ( *LabelKey) () {
	* = LabelKey{}
	if protoimpl.UnsafeEnabled {
		 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[2]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *LabelKey) () string {
	return protoimpl.X.MessageStringOf()
}

func (*LabelKey) () {}

func ( *LabelKey) () protoreflect.Message {
	 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use LabelKey.ProtoReflect.Descriptor instead.
func (*LabelKey) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{2}
}

func ( *LabelKey) () string {
	if  != nil {
		return .Key
	}
	return ""
}

func ( *LabelKey) () string {
	if  != nil {
		return .Description
	}
	return ""
}
A collection of data points that describes the time-varying values of a metric.
Must be present for cumulative metrics. The time when the cumulative value was reset to zero. Exclusive. The cumulative value is over the time interval (start_timestamp, timestamp]. If not specified, the backend can use the previous recorded value.
The set of label values that uniquely identify this timeseries. Applies to all points. The order of label values must match that of label keys in the metric descriptor.
The data points of this timeseries. Point.value type MUST match the MetricDescriptor.type.
	Points []*Point `protobuf:"bytes,3,rep,name=points,proto3" json:"points,omitempty"`
}

func ( *TimeSeries) () {
	* = TimeSeries{}
	if protoimpl.UnsafeEnabled {
		 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[3]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *TimeSeries) () string {
	return protoimpl.X.MessageStringOf()
}

func (*TimeSeries) () {}

func ( *TimeSeries) () protoreflect.Message {
	 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use TimeSeries.ProtoReflect.Descriptor instead.
The value for the label.
If false the value field is ignored and considered not set. This is used to differentiate a missing label from an empty string.
	HasValue bool `protobuf:"varint,2,opt,name=has_value,json=hasValue,proto3" json:"has_value,omitempty"`
}

func ( *LabelValue) () {
	* = LabelValue{}
	if protoimpl.UnsafeEnabled {
		 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[4]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *LabelValue) () string {
	return protoimpl.X.MessageStringOf()
}

func (*LabelValue) () {}

func ( *LabelValue) () protoreflect.Message {
	 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use LabelValue.ProtoReflect.Descriptor instead.
func (*LabelValue) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{4}
}

func ( *LabelValue) () string {
	if  != nil {
		return .Value
	}
	return ""
}

func ( *LabelValue) () bool {
	if  != nil {
		return .HasValue
	}
	return false
}
The moment when this point was recorded. Inclusive. If not specified, the timestamp will be decided by the backend.
The actual point value. Types that are assignable to Value: *Point_Int64Value *Point_DoubleValue *Point_DistributionValue *Point_SummaryValue
Deprecated: Use Point.ProtoReflect.Descriptor instead.
func (*Point) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{5}
}

func ( *Point) () *timestamp.Timestamp {
	if  != nil {
		return .Timestamp
	}
	return nil
}

func ( *Point) () isPoint_Value {
	if  != nil {
		return .Value
	}
	return nil
}

func ( *Point) () int64 {
	if ,  := .GetValue().(*Point_Int64Value);  {
		return .Int64Value
	}
	return 0
}

func ( *Point) () float64 {
	if ,  := .GetValue().(*Point_DoubleValue);  {
		return .DoubleValue
	}
	return 0
}

func ( *Point) () *DistributionValue {
	if ,  := .GetValue().(*Point_DistributionValue);  {
		return .DistributionValue
	}
	return nil
}

func ( *Point) () *SummaryValue {
	if ,  := .GetValue().(*Point_SummaryValue);  {
		return .SummaryValue
	}
	return nil
}

type isPoint_Value interface {
	isPoint_Value()
}

A 64-bit integer.
	Int64Value int64 `protobuf:"varint,2,opt,name=int64_value,json=int64Value,proto3,oneof"`
}

A 64-bit double-precision floating-point number.
	DoubleValue float64 `protobuf:"fixed64,3,opt,name=double_value,json=doubleValue,proto3,oneof"`
}

A distribution value.
	DistributionValue *DistributionValue `protobuf:"bytes,4,opt,name=distribution_value,json=distributionValue,proto3,oneof"`
}

A summary value. This is not recommended, since it cannot be aggregated.
	SummaryValue *SummaryValue `protobuf:"bytes,5,opt,name=summary_value,json=summaryValue,proto3,oneof"`
}

func (*Point_Int64Value) () {}

func (*Point_DoubleValue) () {}

func (*Point_DistributionValue) () {}

func (*Point_SummaryValue) () {}
Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.
The number of values in the population. Must be non-negative. This value must equal the sum of the values in bucket_counts if a histogram is provided.
The sum of the values in the population. If count is zero then this field must be zero.
The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, "The Art of Computer Programming", Vol. 2, page 323, 3rd edition describes Welford's method for accumulating this sum in one pass. If count is zero then this field must be zero.
Don't change bucket boundaries within a TimeSeries if your backend doesn't support this. TODO(issue #152): consider not required to send bucket options for optimization.
If the distribution does not have a histogram, then omit this field. If there is a histogram, then the sum of the values in the Bucket counts must equal the value in the count field of the distribution.
Deprecated: Use DistributionValue.ProtoReflect.Descriptor instead.
func (*DistributionValue) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{6}
}

func ( *DistributionValue) () int64 {
	if  != nil {
		return .Count
	}
	return 0
}

func ( *DistributionValue) () float64 {
	if  != nil {
		return .Sum
	}
	return 0
}

func ( *DistributionValue) () float64 {
	if  != nil {
		return .SumOfSquaredDeviation
	}
	return 0
}

func ( *DistributionValue) () *DistributionValue_BucketOptions {
	if  != nil {
		return .BucketOptions
	}
	return nil
}

func ( *DistributionValue) () []*DistributionValue_Bucket {
	if  != nil {
		return .Buckets
	}
	return nil
}
The start_timestamp only applies to the count and sum in the SummaryValue.
The total number of recorded values since start_time. Optional since some systems don't expose this.
The total sum of recorded values since start_time. Optional since some systems don't expose this. If count is zero then this field must be zero. This field must be unset if the sum is not available.
Values calculated over an arbitrary time window.
Deprecated: Use SummaryValue.ProtoReflect.Descriptor instead.
func (*SummaryValue) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{7}
}

func ( *SummaryValue) () *wrappers.Int64Value {
	if  != nil {
		return .Count
	}
	return nil
}

func ( *SummaryValue) () *wrappers.DoubleValue {
	if  != nil {
		return .Sum
	}
	return nil
}

func ( *SummaryValue) () *SummaryValue_Snapshot {
	if  != nil {
		return .Snapshot
	}
	return nil
}
A Distribution may optionally contain a histogram of the values in the population. The bucket boundaries for that histogram are described by BucketOptions. If bucket_options has no type, then there is no histogram associated with the Distribution.
Deprecated: Use DistributionValue_BucketOptions.ProtoReflect.Descriptor instead.
The number of values in each bucket of the histogram, as described in bucket_bounds.
If the distribution does not have a histogram, then omit this field.
Deprecated: Use DistributionValue_Bucket.ProtoReflect.Descriptor instead.
Exemplars are example points that may be used to annotate aggregated Distribution values. They are metadata that gives information about a particular value added to a Distribution bucket.
Value of the exemplar point. It determines which bucket the exemplar belongs to.
The observation (sampling) time of the above value.
Contextual information about the example value.
	Attachments map[string]string `protobuf:"bytes,3,rep,name=attachments,proto3" json:"attachments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func ( *DistributionValue_Exemplar) () {
	* = DistributionValue_Exemplar{}
	if protoimpl.UnsafeEnabled {
		 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[10]
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		.StoreMessageInfo()
	}
}

func ( *DistributionValue_Exemplar) () string {
	return protoimpl.X.MessageStringOf()
}

func (*DistributionValue_Exemplar) () {}

func ( *DistributionValue_Exemplar) () protoreflect.Message {
	 := &file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled &&  != nil {
		 := protoimpl.X.MessageStateOf(protoimpl.Pointer())
		if .LoadMessageInfo() == nil {
			.StoreMessageInfo()
		}
		return 
	}
	return .MessageOf()
}
Deprecated: Use DistributionValue_Exemplar.ProtoReflect.Descriptor instead.
func (*DistributionValue_Exemplar) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{6, 2}
}

func ( *DistributionValue_Exemplar) () float64 {
	if  != nil {
		return .Value
	}
	return 0
}

func ( *DistributionValue_Exemplar) () *timestamp.Timestamp {
	if  != nil {
		return .Timestamp
	}
	return nil
}

func ( *DistributionValue_Exemplar) () map[string]string {
	if  != nil {
		return .Attachments
	}
	return nil
}
Specifies a set of buckets with arbitrary upper-bounds. This defines size(bounds) + 1 (= N) buckets. The boundaries for bucket index i are: [0, bucket_bounds[i]) for i == 0 [bucket_bounds[i-1], bucket_bounds[i]) for 0 < i < N-1 [bucket_bounds[i], +infinity) for i == N-1
Deprecated: Use DistributionValue_BucketOptions_Explicit.ProtoReflect.Descriptor instead.
The values in this message can be reset at arbitrary unknown times, with the requirement that all of them are reset at the same time.
The number of values in the snapshot. Optional since some systems don't expose this.
The sum of values in the snapshot. Optional since some systems don't expose this. If count is zero then this field must be zero or not set (if not supported).
A list of values at different percentiles of the distribution calculated from the current snapshot. The percentiles must be strictly increasing.
Deprecated: Use SummaryValue_Snapshot.ProtoReflect.Descriptor instead.
Represents the value at a given percentile of a distribution.
The percentile of a distribution. Must be in the interval (0.0, 100.0].
Deprecated: Use SummaryValue_Snapshot_ValueAtPercentile.ProtoReflect.Descriptor instead.
func (*SummaryValue_Snapshot_ValueAtPercentile) () ([]byte, []int) {
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescGZIP(), []int{7, 0, 0}
}

func ( *SummaryValue_Snapshot_ValueAtPercentile) () float64 {
	if  != nil {
		return .Percentile
	}
	return 0
}

func ( *SummaryValue_Snapshot_ValueAtPercentile) () float64 {
	if  != nil {
		return .Value
	}
	return 0
}

var File_opencensus_proto_metrics_v1_metrics_proto protoreflect.FileDescriptor

var file_opencensus_proto_metrics_v1_metrics_proto_rawDesc = []byte{
	0x0a, 0x29, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2f, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x6f, 0x70, 0x65,
	0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70,
	0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x6f, 0x70, 0x65, 0x6e, 0x63,
	0x65, 0x6e, 0x73, 0x75, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf1, 0x01, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x12, 0x5a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x64, 0x65, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f,
	0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x10, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x47, 0x0a,
	0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63,
	0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x72, 0x65, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x96, 0x03, 0x0a, 0x10, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65,
	0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
	0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73,
	0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x41, 0x55, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34,
	0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x41, 0x55, 0x47, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42,
	0x4c, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x47, 0x41, 0x55, 0x47, 0x45, 0x5f, 0x44, 0x49,
	0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10,
	0x43, 0x55, 0x4d, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34,
	0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x55, 0x4d, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45,
	0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x55, 0x4d,
	0x55, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55,
	0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52,
	0x59, 0x10, 0x07, 0x22, 0x3e, 0x0a, 0x08, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x4b, 0x65, 0x79, 0x12,
	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
	0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x22, 0xd9, 0x01, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69,
	0x65, 0x73, 0x12, 0x43, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0c, 0x6c, 0x61, 0x62, 0x65, 0x6c,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
	0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x62, 0x65,
	0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76,
	0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22,
	0x3f, 0x0a, 0x0a, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x22, 0xc5, 0x02, 0x0a, 0x05, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69,
	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74,
	0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c,
	0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
	0x0b, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x5f, 0x0a, 0x12,
	0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63,
	0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
	0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x11, 0x64, 0x69, 0x73, 0x74,
	0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x50, 0x0a,
	0x0d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x76, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48,
	0x00, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42,
	0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcb, 0x06, 0x0a, 0x11, 0x44, 0x69, 0x73,
	0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x01, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x75, 0x6d, 0x5f, 0x6f, 0x66,
	0x5f, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x15, 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x53,
	0x71, 0x75, 0x61, 0x72, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x63, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65,
	0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69,
	0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73,
	0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75,
	0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0xa0, 0x01, 0x0a, 0x0d, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x63, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69,
	0x63, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x6f, 0x70, 0x65, 0x6e,
	0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74,
	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74,
	0x48, 0x00, 0x52, 0x08, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x1a, 0x22, 0x0a, 0x08,
	0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x6e,
	0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x01, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73,
	0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x73, 0x0a, 0x06, 0x42, 0x75, 0x63, 0x6b,
	0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x6d,
	0x70, 0x6c, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6f, 0x70, 0x65,
	0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62,
	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x45, 0x78, 0x65, 0x6d, 0x70,
	0x6c, 0x61, 0x72, 0x52, 0x08, 0x65, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x1a, 0x86, 0x02,
	0x0a, 0x08, 0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
	0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x6a, 0x0a, 0x0b, 0x61, 0x74,
	0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x48, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69,
	0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e,
	0x45, 0x78, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x72, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d,
	0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63,
	0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xef, 0x03, 0x0a, 0x0c, 0x53, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x73, 0x75,
	0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x4e, 0x0a, 0x08, 0x73, 0x6e,
	0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f,
	0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74,
	0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, 0xab, 0x02, 0x0a, 0x08, 0x53,
	0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x31, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x03, 0x73, 0x75,
	0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x73, 0x75, 0x6d, 0x12, 0x71, 0x0a, 0x11, 0x70, 0x65,
	0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73,
	0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65,
	0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41,
	0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x10, 0x70, 0x65, 0x72,
	0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x49, 0x0a,
	0x11, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x74, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
	0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69,
	0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x94, 0x01, 0x0a, 0x1e, 0x69, 0x6f, 0x2e,
	0x6f, 0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x44, 0x67, 0x69, 0x74,
	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2d, 0x69,
	0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f,
	0x70, 0x65, 0x6e, 0x63, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f,
	0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x76,
	0x31, 0xea, 0x02, 0x1b, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x2e, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x56, 0x31, 0x62,
	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_opencensus_proto_metrics_v1_metrics_proto_rawDescOnce sync.Once
	file_opencensus_proto_metrics_v1_metrics_proto_rawDescData = file_opencensus_proto_metrics_v1_metrics_proto_rawDesc
)

func () []byte {
	file_opencensus_proto_metrics_v1_metrics_proto_rawDescOnce.Do(func() {
		file_opencensus_proto_metrics_v1_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_opencensus_proto_metrics_v1_metrics_proto_rawDescData)
	})
	return file_opencensus_proto_metrics_v1_metrics_proto_rawDescData
}

var file_opencensus_proto_metrics_v1_metrics_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_opencensus_proto_metrics_v1_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_opencensus_proto_metrics_v1_metrics_proto_goTypes = []interface{}{
	(MetricDescriptor_Type)(0),                       // 0: opencensus.proto.metrics.v1.MetricDescriptor.Type
	(*Metric)(nil),                                   // 1: opencensus.proto.metrics.v1.Metric
	(*MetricDescriptor)(nil),                         // 2: opencensus.proto.metrics.v1.MetricDescriptor
	(*LabelKey)(nil),                                 // 3: opencensus.proto.metrics.v1.LabelKey
	(*TimeSeries)(nil),                               // 4: opencensus.proto.metrics.v1.TimeSeries
	(*LabelValue)(nil),                               // 5: opencensus.proto.metrics.v1.LabelValue
	(*Point)(nil),                                    // 6: opencensus.proto.metrics.v1.Point
	(*DistributionValue)(nil),                        // 7: opencensus.proto.metrics.v1.DistributionValue
	(*SummaryValue)(nil),                             // 8: opencensus.proto.metrics.v1.SummaryValue
	(*DistributionValue_BucketOptions)(nil),          // 9: opencensus.proto.metrics.v1.DistributionValue.BucketOptions
	(*DistributionValue_Bucket)(nil),                 // 10: opencensus.proto.metrics.v1.DistributionValue.Bucket
	(*DistributionValue_Exemplar)(nil),               // 11: opencensus.proto.metrics.v1.DistributionValue.Exemplar
	(*DistributionValue_BucketOptions_Explicit)(nil), // 12: opencensus.proto.metrics.v1.DistributionValue.BucketOptions.Explicit
	nil,                           // 13: opencensus.proto.metrics.v1.DistributionValue.Exemplar.AttachmentsEntry
	(*SummaryValue_Snapshot)(nil), // 14: opencensus.proto.metrics.v1.SummaryValue.Snapshot
	(*SummaryValue_Snapshot_ValueAtPercentile)(nil), // 15: opencensus.proto.metrics.v1.SummaryValue.Snapshot.ValueAtPercentile
	(*v1.Resource)(nil),                             // 16: opencensus.proto.resource.v1.Resource
	(*timestamp.Timestamp)(nil),                     // 17: google.protobuf.Timestamp
	(*wrappers.Int64Value)(nil),                     // 18: google.protobuf.Int64Value
	(*wrappers.DoubleValue)(nil),                    // 19: google.protobuf.DoubleValue
}
var file_opencensus_proto_metrics_v1_metrics_proto_depIdxs = []int32{
	2,  // 0: opencensus.proto.metrics.v1.Metric.metric_descriptor:type_name -> opencensus.proto.metrics.v1.MetricDescriptor
	4,  // 1: opencensus.proto.metrics.v1.Metric.timeseries:type_name -> opencensus.proto.metrics.v1.TimeSeries
	16, // 2: opencensus.proto.metrics.v1.Metric.resource:type_name -> opencensus.proto.resource.v1.Resource
	0,  // 3: opencensus.proto.metrics.v1.MetricDescriptor.type:type_name -> opencensus.proto.metrics.v1.MetricDescriptor.Type
	3,  // 4: opencensus.proto.metrics.v1.MetricDescriptor.label_keys:type_name -> opencensus.proto.metrics.v1.LabelKey
	17, // 5: opencensus.proto.metrics.v1.TimeSeries.start_timestamp:type_name -> google.protobuf.Timestamp
	5,  // 6: opencensus.proto.metrics.v1.TimeSeries.label_values:type_name -> opencensus.proto.metrics.v1.LabelValue
	6,  // 7: opencensus.proto.metrics.v1.TimeSeries.points:type_name -> opencensus.proto.metrics.v1.Point
	17, // 8: opencensus.proto.metrics.v1.Point.timestamp:type_name -> google.protobuf.Timestamp
	7,  // 9: opencensus.proto.metrics.v1.Point.distribution_value:type_name -> opencensus.proto.metrics.v1.DistributionValue
	8,  // 10: opencensus.proto.metrics.v1.Point.summary_value:type_name -> opencensus.proto.metrics.v1.SummaryValue
	9,  // 11: opencensus.proto.metrics.v1.DistributionValue.bucket_options:type_name -> opencensus.proto.metrics.v1.DistributionValue.BucketOptions
	10, // 12: opencensus.proto.metrics.v1.DistributionValue.buckets:type_name -> opencensus.proto.metrics.v1.DistributionValue.Bucket
	18, // 13: opencensus.proto.metrics.v1.SummaryValue.count:type_name -> google.protobuf.Int64Value
	19, // 14: opencensus.proto.metrics.v1.SummaryValue.sum:type_name -> google.protobuf.DoubleValue
	14, // 15: opencensus.proto.metrics.v1.SummaryValue.snapshot:type_name -> opencensus.proto.metrics.v1.SummaryValue.Snapshot
	12, // 16: opencensus.proto.metrics.v1.DistributionValue.BucketOptions.explicit:type_name -> opencensus.proto.metrics.v1.DistributionValue.BucketOptions.Explicit
	11, // 17: opencensus.proto.metrics.v1.DistributionValue.Bucket.exemplar:type_name -> opencensus.proto.metrics.v1.DistributionValue.Exemplar
	17, // 18: opencensus.proto.metrics.v1.DistributionValue.Exemplar.timestamp:type_name -> google.protobuf.Timestamp
	13, // 19: opencensus.proto.metrics.v1.DistributionValue.Exemplar.attachments:type_name -> opencensus.proto.metrics.v1.DistributionValue.Exemplar.AttachmentsEntry
	18, // 20: opencensus.proto.metrics.v1.SummaryValue.Snapshot.count:type_name -> google.protobuf.Int64Value
	19, // 21: opencensus.proto.metrics.v1.SummaryValue.Snapshot.sum:type_name -> google.protobuf.DoubleValue
	15, // 22: opencensus.proto.metrics.v1.SummaryValue.Snapshot.percentile_values:type_name -> opencensus.proto.metrics.v1.SummaryValue.Snapshot.ValueAtPercentile
	23, // [23:23] is the sub-list for method output_type
	23, // [23:23] is the sub-list for method input_type
	23, // [23:23] is the sub-list for extension type_name
	23, // [23:23] is the sub-list for extension extendee
	0,  // [0:23] is the sub-list for field type_name
}

func () { file_opencensus_proto_metrics_v1_metrics_proto_init() }
func () {
	if File_opencensus_proto_metrics_v1_metrics_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[0].Exporter = func( interface{},  int) interface{} {
			switch  := .(*Metric);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[1].Exporter = func( interface{},  int) interface{} {
			switch  := .(*MetricDescriptor);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[2].Exporter = func( interface{},  int) interface{} {
			switch  := .(*LabelKey);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[3].Exporter = func( interface{},  int) interface{} {
			switch  := .(*TimeSeries);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[4].Exporter = func( interface{},  int) interface{} {
			switch  := .(*LabelValue);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[5].Exporter = func( interface{},  int) interface{} {
			switch  := .(*Point);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[6].Exporter = func( interface{},  int) interface{} {
			switch  := .(*DistributionValue);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[7].Exporter = func( interface{},  int) interface{} {
			switch  := .(*SummaryValue);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[8].Exporter = func( interface{},  int) interface{} {
			switch  := .(*DistributionValue_BucketOptions);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[9].Exporter = func( interface{},  int) interface{} {
			switch  := .(*DistributionValue_Bucket);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[10].Exporter = func( interface{},  int) interface{} {
			switch  := .(*DistributionValue_Exemplar);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[11].Exporter = func( interface{},  int) interface{} {
			switch  := .(*DistributionValue_BucketOptions_Explicit);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[13].Exporter = func( interface{},  int) interface{} {
			switch  := .(*SummaryValue_Snapshot);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
		file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[14].Exporter = func( interface{},  int) interface{} {
			switch  := .(*SummaryValue_Snapshot_ValueAtPercentile);  {
			case 0:
				return &.state
			case 1:
				return &.sizeCache
			case 2:
				return &.unknownFields
			default:
				return nil
			}
		}
	}
	file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[5].OneofWrappers = []interface{}{
		(*Point_Int64Value)(nil),
		(*Point_DoubleValue)(nil),
		(*Point_DistributionValue)(nil),
		(*Point_SummaryValue)(nil),
	}
	file_opencensus_proto_metrics_v1_metrics_proto_msgTypes[8].OneofWrappers = []interface{}{
		(*DistributionValue_BucketOptions_Explicit_)(nil),
	}
	type  struct{}
	 := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf({}).PkgPath(),
			RawDescriptor: file_opencensus_proto_metrics_v1_metrics_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   15,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_opencensus_proto_metrics_v1_metrics_proto_goTypes,
		DependencyIndexes: file_opencensus_proto_metrics_v1_metrics_proto_depIdxs,
		EnumInfos:         file_opencensus_proto_metrics_v1_metrics_proto_enumTypes,
		MessageInfos:      file_opencensus_proto_metrics_v1_metrics_proto_msgTypes,
	}.Build()
	File_opencensus_proto_metrics_v1_metrics_proto = .File
	file_opencensus_proto_metrics_v1_metrics_proto_rawDesc = nil
	file_opencensus_proto_metrics_v1_metrics_proto_goTypes = nil
	file_opencensus_proto_metrics_v1_metrics_proto_depIdxs = nil