blob: a2c077dfdbb79fa5609c47fd49fa545d5a606f23 [file] [log] [blame]
// Copyright 2020 The Chromium 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.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.17.0
// source: infra/chromeperf/pinpoint/pinpoint.proto
package proto
import (
_ "google.golang.org/genproto/googleapis/api/annotations"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
structpb "google.golang.org/protobuf/types/known/structpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Supported statistics for when performing statistical analysis/comparisons.
type TelemetryBenchmark_Statistic int32
const (
// If unspecified, lets Pinpoint determine the default statistic to use
// depending on the mode.
TelemetryBenchmark_STATISTIC_UNSPECIFIED TelemetryBenchmark_Statistic = 0
// Use all the sample values when performing statistical
// analysis/comparisons.
TelemetryBenchmark_NONE TelemetryBenchmark_Statistic = 1
// All the following values select the appropriate statistic across
// multiple attempts, and performs statistical analysis on these values,
// instead of the raw sample values.
TelemetryBenchmark_MIN TelemetryBenchmark_Statistic = 2
TelemetryBenchmark_MAX TelemetryBenchmark_Statistic = 3
TelemetryBenchmark_MEAN TelemetryBenchmark_Statistic = 4
TelemetryBenchmark_STD_DEV TelemetryBenchmark_Statistic = 5
TelemetryBenchmark_MEDIAN TelemetryBenchmark_Statistic = 6
TelemetryBenchmark_PCT90 TelemetryBenchmark_Statistic = 7
TelemetryBenchmark_PCT99 TelemetryBenchmark_Statistic = 8
)
// Enum value maps for TelemetryBenchmark_Statistic.
var (
TelemetryBenchmark_Statistic_name = map[int32]string{
0: "STATISTIC_UNSPECIFIED",
1: "NONE",
2: "MIN",
3: "MAX",
4: "MEAN",
5: "STD_DEV",
6: "MEDIAN",
7: "PCT90",
8: "PCT99",
}
TelemetryBenchmark_Statistic_value = map[string]int32{
"STATISTIC_UNSPECIFIED": 0,
"NONE": 1,
"MIN": 2,
"MAX": 3,
"MEAN": 4,
"STD_DEV": 5,
"MEDIAN": 6,
"PCT90": 7,
"PCT99": 8,
}
)
func (x TelemetryBenchmark_Statistic) Enum() *TelemetryBenchmark_Statistic {
p := new(TelemetryBenchmark_Statistic)
*p = x
return p
}
func (x TelemetryBenchmark_Statistic) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TelemetryBenchmark_Statistic) Descriptor() protoreflect.EnumDescriptor {
return file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes[0].Descriptor()
}
func (TelemetryBenchmark_Statistic) Type() protoreflect.EnumType {
return &file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes[0]
}
func (x TelemetryBenchmark_Statistic) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use TelemetryBenchmark_Statistic.Descriptor instead.
func (TelemetryBenchmark_Statistic) EnumDescriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{0, 0}
}
// The comparison mode used by Pinpoint in this job.
type JobSpec_ComparisonMode int32
const (
// If unspecified, it's as if 'PERFORMANCE' was specified.
JobSpec_COMPARISON_MODE_UNSPECIFIED JobSpec_ComparisonMode = 0
// Performs statistical tests appropriate for performance measurements.
JobSpec_PERFORMANCE JobSpec_ComparisonMode = 1
// Performs statistical tests appropriate for functional success/failure
// measurements. This is used in determining whether a benchmark has failed
// or started to become flaky in a bisection or to try out whether a patch
// will cause failures for specific benchmarks/stories in experiments.
JobSpec_FUNCTIONAL JobSpec_ComparisonMode = 2
)
// Enum value maps for JobSpec_ComparisonMode.
var (
JobSpec_ComparisonMode_name = map[int32]string{
0: "COMPARISON_MODE_UNSPECIFIED",
1: "PERFORMANCE",
2: "FUNCTIONAL",
}
JobSpec_ComparisonMode_value = map[string]int32{
"COMPARISON_MODE_UNSPECIFIED": 0,
"PERFORMANCE": 1,
"FUNCTIONAL": 2,
}
)
func (x JobSpec_ComparisonMode) Enum() *JobSpec_ComparisonMode {
p := new(JobSpec_ComparisonMode)
*p = x
return p
}
func (x JobSpec_ComparisonMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (JobSpec_ComparisonMode) Descriptor() protoreflect.EnumDescriptor {
return file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes[1].Descriptor()
}
func (JobSpec_ComparisonMode) Type() protoreflect.EnumType {
return &file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes[1]
}
func (x JobSpec_ComparisonMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use JobSpec_ComparisonMode.Descriptor instead.
func (JobSpec_ComparisonMode) EnumDescriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{8, 0}
}
type Job_State int32
const (
Job_STATE_UNSPECIFIED Job_State = 0
Job_PENDING Job_State = 1
Job_RUNNING Job_State = 2
Job_SUCCEEDED Job_State = 3
Job_FAILED Job_State = 4
Job_CANCELLED Job_State = 5
)
// Enum value maps for Job_State.
var (
Job_State_name = map[int32]string{
0: "STATE_UNSPECIFIED",
1: "PENDING",
2: "RUNNING",
3: "SUCCEEDED",
4: "FAILED",
5: "CANCELLED",
}
Job_State_value = map[string]int32{
"STATE_UNSPECIFIED": 0,
"PENDING": 1,
"RUNNING": 2,
"SUCCEEDED": 3,
"FAILED": 4,
"CANCELLED": 5,
}
)
func (x Job_State) Enum() *Job_State {
p := new(Job_State)
*p = x
return p
}
func (x Job_State) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Job_State) Descriptor() protoreflect.EnumDescriptor {
return file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes[2].Descriptor()
}
func (Job_State) Type() protoreflect.EnumType {
return &file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes[2]
}
func (x Job_State) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Job_State.Descriptor instead.
func (Job_State) EnumDescriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{17, 0}
}
// Specifies the details for data generated by a Telemetry benchmark.
type TelemetryBenchmark struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The name of the benchmark.
Benchmark string `protobuf:"bytes,1,opt,name=benchmark,proto3" json:"benchmark,omitempty"`
// Types that are assignable to StorySelection:
// *TelemetryBenchmark_Story
// *TelemetryBenchmark_StoryTags
StorySelection isTelemetryBenchmark_StorySelection `protobuf_oneof:"story_selection"`
// The name of the measurement to extract. This refers to the name of the
// histogram in a HistogramSet which we'll be making statistical analysis
// decisions on.
//
// See
// https://chromium.googlesource.com/catapult.git/+/HEAD/docs/how-to-write-metrics.md#histograms
// and
// https://chromium.googlesource.com/catapult/+/HEAD/docs/histogram-set-json-format.md
// for details on what metric names can be and how to select those from
// histograms produced by Telemetry benchmarks.
Measurement string `protobuf:"bytes,4,opt,name=measurement,proto3" json:"measurement,omitempty"`
// The optional grouping label, as described in
// https://chromium.googlesource.com/catapult.git/+/HEAD/docs/how-to-write-metrics.md#reserved-names
// (as `labels`, passed as a flag to Telemetry via the --results-label flag).
GroupingLabel string `protobuf:"bytes,5,opt,name=grouping_label,json=groupingLabel,proto3" json:"grouping_label,omitempty"`
// The statistic to extract. If unspecified defaults to "NONE", i.e. use all
// the sample values instead of computing a statistic.
Statistic TelemetryBenchmark_Statistic `protobuf:"varint,6,opt,name=statistic,proto3,enum=pinpoint.TelemetryBenchmark_Statistic" json:"statistic,omitempty"`
// List of extra arguments passed to the Telemetry runner.
ExtraArgs []string `protobuf:"bytes,7,rep,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
}
func (x *TelemetryBenchmark) Reset() {
*x = TelemetryBenchmark{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TelemetryBenchmark) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TelemetryBenchmark) ProtoMessage() {}
func (x *TelemetryBenchmark) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TelemetryBenchmark.ProtoReflect.Descriptor instead.
func (*TelemetryBenchmark) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{0}
}
func (x *TelemetryBenchmark) GetBenchmark() string {
if x != nil {
return x.Benchmark
}
return ""
}
func (m *TelemetryBenchmark) GetStorySelection() isTelemetryBenchmark_StorySelection {
if m != nil {
return m.StorySelection
}
return nil
}
func (x *TelemetryBenchmark) GetStory() string {
if x, ok := x.GetStorySelection().(*TelemetryBenchmark_Story); ok {
return x.Story
}
return ""
}
func (x *TelemetryBenchmark) GetStoryTags() *TelemetryBenchmark_StoryTagList {
if x, ok := x.GetStorySelection().(*TelemetryBenchmark_StoryTags); ok {
return x.StoryTags
}
return nil
}
func (x *TelemetryBenchmark) GetMeasurement() string {
if x != nil {
return x.Measurement
}
return ""
}
func (x *TelemetryBenchmark) GetGroupingLabel() string {
if x != nil {
return x.GroupingLabel
}
return ""
}
func (x *TelemetryBenchmark) GetStatistic() TelemetryBenchmark_Statistic {
if x != nil {
return x.Statistic
}
return TelemetryBenchmark_STATISTIC_UNSPECIFIED
}
func (x *TelemetryBenchmark) GetExtraArgs() []string {
if x != nil {
return x.ExtraArgs
}
return nil
}
type isTelemetryBenchmark_StorySelection interface {
isTelemetryBenchmark_StorySelection()
}
type TelemetryBenchmark_Story struct {
// A story to run.
Story string `protobuf:"bytes,2,opt,name=story,proto3,oneof"`
}
type TelemetryBenchmark_StoryTags struct {
// NOTE: We use a nested message in this proto oneof because it cannot
// include repeated fields.
StoryTags *TelemetryBenchmark_StoryTagList `protobuf:"bytes,3,opt,name=story_tags,json=storyTags,proto3,oneof"`
}
func (*TelemetryBenchmark_Story) isTelemetryBenchmark_StorySelection() {}
func (*TelemetryBenchmark_StoryTags) isTelemetryBenchmark_StorySelection() {}
// Specify the details for data generated by a GTest benchmark.
type GTestBenchmark struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the benchmark. This is provided to the GTest benchmark through the
// '--gtest-benchmark-name' flag, to identify which benchmark in the `target`
// (provided in the JobSpec) will be run.
Benchmark string `protobuf:"bytes,1,opt,name=benchmark,proto3" json:"benchmark,omitempty"`
// Name of the measurement that shows up as a chart in the Dashboard.
Measurement string `protobuf:"bytes,2,opt,name=measurement,proto3" json:"measurement,omitempty"`
// Name of the testcase in the benchmark, supplied as a filter to the GTest.
Test string `protobuf:"bytes,3,opt,name=test,proto3" json:"test,omitempty"`
}
func (x *GTestBenchmark) Reset() {
*x = GTestBenchmark{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GTestBenchmark) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GTestBenchmark) ProtoMessage() {}
func (x *GTestBenchmark) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GTestBenchmark.ProtoReflect.Descriptor instead.
func (*GTestBenchmark) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{1}
}
func (x *GTestBenchmark) GetBenchmark() string {
if x != nil {
return x.Benchmark
}
return ""
}
func (x *GTestBenchmark) GetMeasurement() string {
if x != nil {
return x.Measurement
}
return ""
}
func (x *GTestBenchmark) GetTest() string {
if x != nil {
return x.Test
}
return ""
}
// A commit in a Gitiles repostory.
type GitilesCommit struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The gitiles host to query for commits.
Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
// The gitiles project to query for commits.
Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"`
// The hash for the specific Git commit.
GitHash string `protobuf:"bytes,3,opt,name=git_hash,json=gitHash,proto3" json:"git_hash,omitempty"`
}
func (x *GitilesCommit) Reset() {
*x = GitilesCommit{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GitilesCommit) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GitilesCommit) ProtoMessage() {}
func (x *GitilesCommit) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GitilesCommit.ProtoReflect.Descriptor instead.
func (*GitilesCommit) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{2}
}
func (x *GitilesCommit) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *GitilesCommit) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *GitilesCommit) GetGitHash() string {
if x != nil {
return x.GitHash
}
return ""
}
// A Gerrit change review, to refer to patches to apply in builds.
type GerritChange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Gerrit hostname.
Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
// Gerrit project in the host.
Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"`
// A change ID against the project in the host.
Change int64 `protobuf:"varint,3,opt,name=change,proto3" json:"change,omitempty"`
// A reference to the patch set. If unspecified this will always be the
// latest.
Patchset int64 `protobuf:"varint,4,opt,name=patchset,proto3" json:"patchset,omitempty"`
}
func (x *GerritChange) Reset() {
*x = GerritChange{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GerritChange) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GerritChange) ProtoMessage() {}
func (x *GerritChange) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GerritChange.ProtoReflect.Descriptor instead.
func (*GerritChange) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{3}
}
func (x *GerritChange) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *GerritChange) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *GerritChange) GetChange() int64 {
if x != nil {
return x.Change
}
return 0
}
func (x *GerritChange) GetPatchset() int64 {
if x != nil {
return x.Patchset
}
return 0
}
// A CommitRange consists of two git commit hashes from the same project that
// the end commit must be reachable from the start commit.
type GitilesCommitRange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The gitiles host to query for commits.
Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
// The gitiles project to query for commits.
Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"`
// The start of the commit range.
StartGitHash string `protobuf:"bytes,3,opt,name=start_git_hash,json=startGitHash,proto3" json:"start_git_hash,omitempty"`
// The end of the commit range.
EndGitHash string `protobuf:"bytes,4,opt,name=end_git_hash,json=endGitHash,proto3" json:"end_git_hash,omitempty"`
}
func (x *GitilesCommitRange) Reset() {
*x = GitilesCommitRange{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GitilesCommitRange) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GitilesCommitRange) ProtoMessage() {}
func (x *GitilesCommitRange) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GitilesCommitRange.ProtoReflect.Descriptor instead.
func (*GitilesCommitRange) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{4}
}
func (x *GitilesCommitRange) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *GitilesCommitRange) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *GitilesCommitRange) GetStartGitHash() string {
if x != nil {
return x.StartGitHash
}
return ""
}
func (x *GitilesCommitRange) GetEndGitHash() string {
if x != nil {
return x.EndGitHash
}
return ""
}
// A Bisection specifies a range through which Pinpoint will perform
// builds/runs against to find potential culprits.
type Bisection struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A commit range through which the bisection will be performed.
CommitRange *GitilesCommitRange `protobuf:"bytes,1,opt,name=commit_range,json=commitRange,proto3" json:"commit_range,omitempty"`
// A patch to apply to all commits in the range before building. This is
// useful if you want to apply a patch that fixes the build in a range where
// the bisection might encounter broken builds.
Patch *GerritChange `protobuf:"bytes,3,opt,name=patch,proto3" json:"patch,omitempty"`
}
func (x *Bisection) Reset() {
*x = Bisection{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Bisection) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Bisection) ProtoMessage() {}
func (x *Bisection) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Bisection.ProtoReflect.Descriptor instead.
func (*Bisection) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{5}
}
func (x *Bisection) GetCommitRange() *GitilesCommitRange {
if x != nil {
return x.CommitRange
}
return nil
}
func (x *Bisection) GetPatch() *GerritChange {
if x != nil {
return x.Patch
}
return nil
}
// An Experiment defines an A/B test between a base build (with an optional
// patch) and an experimental build. This is also referred to as a "tryjob" in
// Pinpoint.
type Experiment struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The commit and optional patch from which we'd perform the A/B Test.
BaseCommit *GitilesCommit `protobuf:"bytes,1,opt,name=base_commit,json=baseCommit,proto3" json:"base_commit,omitempty"`
BasePatch *GerritChange `protobuf:"bytes,2,opt,name=base_patch,json=basePatch,proto3" json:"base_patch,omitempty"`
// The commit and required patch which we'll compare against the base and
// optional patch. If the experiment_commit is empty, we use the base_commit
// instead.
ExperimentCommit *GitilesCommit `protobuf:"bytes,3,opt,name=experiment_commit,json=experimentCommit,proto3" json:"experiment_commit,omitempty"`
ExperimentPatch *GerritChange `protobuf:"bytes,4,opt,name=experiment_patch,json=experimentPatch,proto3" json:"experiment_patch,omitempty"`
// The alpha and histogram_filter are used for deciding whether the
// experiment is statistic significante enough as a difference. We check the
// alpah_value on filtered histograms
// https://en.wikipedia.org/wiki/Statistical_significance
Alpha float64 `protobuf:"fixed64,5,opt,name=alpha,proto3" json:"alpha,omitempty"`
MeasurementRegex string `protobuf:"bytes,6,opt,name=measurement_regex,json=measurementRegex,proto3" json:"measurement_regex,omitempty"`
}
func (x *Experiment) Reset() {
*x = Experiment{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Experiment) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Experiment) ProtoMessage() {}
func (x *Experiment) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Experiment.ProtoReflect.Descriptor instead.
func (*Experiment) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{6}
}
func (x *Experiment) GetBaseCommit() *GitilesCommit {
if x != nil {
return x.BaseCommit
}
return nil
}
func (x *Experiment) GetBasePatch() *GerritChange {
if x != nil {
return x.BasePatch
}
return nil
}
func (x *Experiment) GetExperimentCommit() *GitilesCommit {
if x != nil {
return x.ExperimentCommit
}
return nil
}
func (x *Experiment) GetExperimentPatch() *GerritChange {
if x != nil {
return x.ExperimentPatch
}
return nil
}
func (x *Experiment) GetAlpha() float64 {
if x != nil {
return x.Alpha
}
return 0
}
func (x *Experiment) GetMeasurementRegex() string {
if x != nil {
return x.MeasurementRegex
}
return ""
}
type MonorailIssue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the Monorail project.
Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
// The Issue ID in the provided project.
IssueId int64 `protobuf:"varint,2,opt,name=issue_id,json=issueId,proto3" json:"issue_id,omitempty"`
}
func (x *MonorailIssue) Reset() {
*x = MonorailIssue{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MonorailIssue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MonorailIssue) ProtoMessage() {}
func (x *MonorailIssue) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MonorailIssue.ProtoReflect.Descriptor instead.
func (*MonorailIssue) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{7}
}
func (x *MonorailIssue) GetProject() string {
if x != nil {
return x.Project
}
return ""
}
func (x *MonorailIssue) GetIssueId() int64 {
if x != nil {
return x.IssueId
}
return 0
}
// A JobSpec defines inputs for Pinpoint to configure a job being created and
// managed by the service.
type JobSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The comparison mode to perform. Defaults to 'PERFORMANCE' if unspecified.
ComparisonMode JobSpec_ComparisonMode `protobuf:"varint,1,opt,name=comparison_mode,json=comparisonMode,proto3,enum=pinpoint.JobSpec_ComparisonMode" json:"comparison_mode,omitempty"`
// A threshold value which determines how sensitive the comparison algorithm
// should be. This is typically a multiple of the inter-quartile range for
// the measurements, indicating how "tight" the bounds for differences must
// be when considering statistical significance.
//
// If unspecified, the service will determine a default comparison magnitude
// based on the empirically measured inter-quartile range.
ComparisonMagnitude float64 `protobuf:"fixed64,2,opt,name=comparison_magnitude,json=comparisonMagnitude,proto3" json:"comparison_magnitude,omitempty"`
// A named configuration, representing a "bot pool" in Pinpoint.
//
// These are managed through the administration console on the Chromeperf UI.
//
// TODO(dberris): Add a reference to the luci-config files when these have
// been migrated.
Config string `protobuf:"bytes,3,opt,name=config,proto3" json:"config,omitempty"`
// The target representing a build target that will be built/run by Pinpoint.
Target string `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"`
// Types that are assignable to JobKind:
// *JobSpec_Bisection
// *JobSpec_Experiment
JobKind isJobSpec_JobKind `protobuf_oneof:"job_kind"`
// Types that are assignable to Arguments:
// *JobSpec_TelemetryBenchmark
// *JobSpec_GtestBenchmark
Arguments isJobSpec_Arguments `protobuf_oneof:"arguments"`
// The associated Monorail issue.
MonorailIssue *MonorailIssue `protobuf:"bytes,9,opt,name=monorail_issue,json=monorailIssue,proto3" json:"monorail_issue,omitempty"`
// A client can associate an agent identifier (similar to an HTTP User Agent).
// This is purely metadata.
UserAgent string `protobuf:"bytes,10,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
// A batch identifier links multiple jobs together.
BatchId string `protobuf:"bytes,11,opt,name=batch_id,json=batchId,proto3" json:"batch_id,omitempty"`
}
func (x *JobSpec) Reset() {
*x = JobSpec{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *JobSpec) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*JobSpec) ProtoMessage() {}
func (x *JobSpec) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use JobSpec.ProtoReflect.Descriptor instead.
func (*JobSpec) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{8}
}
func (x *JobSpec) GetComparisonMode() JobSpec_ComparisonMode {
if x != nil {
return x.ComparisonMode
}
return JobSpec_COMPARISON_MODE_UNSPECIFIED
}
func (x *JobSpec) GetComparisonMagnitude() float64 {
if x != nil {
return x.ComparisonMagnitude
}
return 0
}
func (x *JobSpec) GetConfig() string {
if x != nil {
return x.Config
}
return ""
}
func (x *JobSpec) GetTarget() string {
if x != nil {
return x.Target
}
return ""
}
func (m *JobSpec) GetJobKind() isJobSpec_JobKind {
if m != nil {
return m.JobKind
}
return nil
}
func (x *JobSpec) GetBisection() *Bisection {
if x, ok := x.GetJobKind().(*JobSpec_Bisection); ok {
return x.Bisection
}
return nil
}
func (x *JobSpec) GetExperiment() *Experiment {
if x, ok := x.GetJobKind().(*JobSpec_Experiment); ok {
return x.Experiment
}
return nil
}
func (m *JobSpec) GetArguments() isJobSpec_Arguments {
if m != nil {
return m.Arguments
}
return nil
}
func (x *JobSpec) GetTelemetryBenchmark() *TelemetryBenchmark {
if x, ok := x.GetArguments().(*JobSpec_TelemetryBenchmark); ok {
return x.TelemetryBenchmark
}
return nil
}
func (x *JobSpec) GetGtestBenchmark() *GTestBenchmark {
if x, ok := x.GetArguments().(*JobSpec_GtestBenchmark); ok {
return x.GtestBenchmark
}
return nil
}
func (x *JobSpec) GetMonorailIssue() *MonorailIssue {
if x != nil {
return x.MonorailIssue
}
return nil
}
func (x *JobSpec) GetUserAgent() string {
if x != nil {
return x.UserAgent
}
return ""
}
func (x *JobSpec) GetBatchId() string {
if x != nil {
return x.BatchId
}
return ""
}
type isJobSpec_JobKind interface {
isJobSpec_JobKind()
}
type JobSpec_Bisection struct {
Bisection *Bisection `protobuf:"bytes,5,opt,name=bisection,proto3,oneof"`
}
type JobSpec_Experiment struct {
Experiment *Experiment `protobuf:"bytes,6,opt,name=experiment,proto3,oneof"`
}
func (*JobSpec_Bisection) isJobSpec_JobKind() {}
func (*JobSpec_Experiment) isJobSpec_JobKind() {}
type isJobSpec_Arguments interface {
isJobSpec_Arguments()
}
type JobSpec_TelemetryBenchmark struct {
TelemetryBenchmark *TelemetryBenchmark `protobuf:"bytes,7,opt,name=telemetry_benchmark,json=telemetryBenchmark,proto3,oneof"`
}
type JobSpec_GtestBenchmark struct {
GtestBenchmark *GTestBenchmark `protobuf:"bytes,8,opt,name=gtest_benchmark,json=gtestBenchmark,proto3,oneof"`
}
func (*JobSpec_TelemetryBenchmark) isJobSpec_Arguments() {}
func (*JobSpec_GtestBenchmark) isJobSpec_Arguments() {}
// Contains the required information for creating a Job represented in
// the datastore.
type ScheduleJobRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Job *JobSpec `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"`
}
func (x *ScheduleJobRequest) Reset() {
*x = ScheduleJobRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScheduleJobRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScheduleJobRequest) ProtoMessage() {}
func (x *ScheduleJobRequest) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ScheduleJobRequest.ProtoReflect.Descriptor instead.
func (*ScheduleJobRequest) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{9}
}
func (x *ScheduleJobRequest) GetJob() *JobSpec {
if x != nil {
return x.Job
}
return nil
}
// ==== LEGACY RESULTS PROTOS
// Everything within this section is a translation of the schema used by the
// legacy API to represent results for a given job.
//
type Change struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Commit *GitilesCommit `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"`
Patch *GerritChange `protobuf:"bytes,2,opt,name=patch,proto3" json:"patch,omitempty"`
}
func (x *Change) Reset() {
*x = Change{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Change) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Change) ProtoMessage() {}
func (x *Change) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Change.ProtoReflect.Descriptor instead.
func (*Change) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{10}
}
func (x *Change) GetCommit() *GitilesCommit {
if x != nil {
return x.Commit
}
return nil
}
func (x *Change) GetPatch() *GerritChange {
if x != nil {
return x.Patch
}
return nil
}
type ExecutionDetails struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
}
func (x *ExecutionDetails) Reset() {
*x = ExecutionDetails{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExecutionDetails) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExecutionDetails) ProtoMessage() {}
func (x *ExecutionDetails) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExecutionDetails.ProtoReflect.Descriptor instead.
func (*ExecutionDetails) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{11}
}
func (x *ExecutionDetails) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *ExecutionDetails) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
func (x *ExecutionDetails) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
type Execution struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Completed bool `protobuf:"varint,1,opt,name=completed,proto3" json:"completed,omitempty"`
Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"`
Details []*ExecutionDetails `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"`
Exception *structpb.Struct `protobuf:"bytes,3,opt,name=exception,proto3" json:"exception,omitempty"`
}
func (x *Execution) Reset() {
*x = Execution{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Execution) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Execution) ProtoMessage() {}
func (x *Execution) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Execution.ProtoReflect.Descriptor instead.
func (*Execution) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{12}
}
func (x *Execution) GetCompleted() bool {
if x != nil {
return x.Completed
}
return false
}
func (x *Execution) GetLabel() string {
if x != nil {
return x.Label
}
return ""
}
func (x *Execution) GetDetails() []*ExecutionDetails {
if x != nil {
return x.Details
}
return nil
}
func (x *Execution) GetException() *structpb.Struct {
if x != nil {
return x.Exception
}
return nil
}
type Attempt struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Executions []*Execution `protobuf:"bytes,1,rep,name=executions,proto3" json:"executions,omitempty"`
}
func (x *Attempt) Reset() {
*x = Attempt{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Attempt) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Attempt) ProtoMessage() {}
func (x *Attempt) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Attempt.ProtoReflect.Descriptor instead.
func (*Attempt) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{13}
}
func (x *Attempt) GetExecutions() []*Execution {
if x != nil {
return x.Executions
}
return nil
}
// Results associated with a Change.
type ChangeResult struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Attempts []*Attempt `protobuf:"bytes,1,rep,name=attempts,proto3" json:"attempts,omitempty"`
Change *Change `protobuf:"bytes,2,opt,name=change,proto3" json:"change,omitempty"`
ResultValues []float64 `protobuf:"fixed64,3,rep,packed,name=result_values,json=resultValues,proto3" json:"result_values,omitempty"`
}
func (x *ChangeResult) Reset() {
*x = ChangeResult{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ChangeResult) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChangeResult) ProtoMessage() {}
func (x *ChangeResult) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChangeResult.ProtoReflect.Descriptor instead.
func (*ChangeResult) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{14}
}
func (x *ChangeResult) GetAttempts() []*Attempt {
if x != nil {
return x.Attempts
}
return nil
}
func (x *ChangeResult) GetChange() *Change {
if x != nil {
return x.Change
}
return nil
}
func (x *ChangeResult) GetResultValues() []float64 {
if x != nil {
return x.ResultValues
}
return nil
}
type BisectionResults struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Results []*ChangeResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
}
func (x *BisectionResults) Reset() {
*x = BisectionResults{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BisectionResults) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BisectionResults) ProtoMessage() {}
func (x *BisectionResults) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BisectionResults.ProtoReflect.Descriptor instead.
func (*BisectionResults) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{15}
}
func (x *BisectionResults) GetResults() []*ChangeResult {
if x != nil {
return x.Results
}
return nil
}
type ABExperimentResults struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
AChangeResult *ChangeResult `protobuf:"bytes,1,opt,name=a_change_result,json=aChangeResult,proto3" json:"a_change_result,omitempty"`
BChangeResult *ChangeResult `protobuf:"bytes,2,opt,name=b_change_result,json=bChangeResult,proto3" json:"b_change_result,omitempty"`
}
func (x *ABExperimentResults) Reset() {
*x = ABExperimentResults{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ABExperimentResults) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ABExperimentResults) ProtoMessage() {}
func (x *ABExperimentResults) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ABExperimentResults.ProtoReflect.Descriptor instead.
func (*ABExperimentResults) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{16}
}
func (x *ABExperimentResults) GetAChangeResult() *ChangeResult {
if x != nil {
return x.AChangeResult
}
return nil
}
func (x *ABExperimentResults) GetBChangeResult() *ChangeResult {
if x != nil {
return x.BChangeResult
}
return nil
}
// A representation of a Pinpoint Job.
type Job struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The resource name of the job.
// Format: jobs/{job}
//
// Name must follow either of the following formats:
// - 'legacy-<hex>' where <hex> is a non-prefixed hexadecimal string
// - a canonical textual representation of a UUID
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
State Job_State `protobuf:"varint,2,opt,name=state,proto3,enum=pinpoint.Job_State" json:"state,omitempty"`
// The user that created this Job, referred to by email address.
CreatedBy string `protobuf:"bytes,3,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"`
CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
LastUpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_update_time,json=lastUpdateTime,proto3" json:"last_update_time,omitempty"`
// Specification provided when the Job was created.
JobSpec *JobSpec `protobuf:"bytes,6,opt,name=job_spec,json=jobSpec,proto3" json:"job_spec,omitempty"`
// If present, the reason provided for when a job is cancelled.
CancellationReason string `protobuf:"bytes,7,opt,name=cancellation_reason,json=cancellationReason,proto3" json:"cancellation_reason,omitempty"`
// Types that are assignable to Results:
// *Job_BisectionResults
// *Job_AbExperimentResults
Results isJob_Results `protobuf_oneof:"results"`
// A list of files representing results for the associated Job, for example
// an HTML summary page. This field will only be set if state==SUCCEEDED.
ResultFiles []*ResultFile `protobuf:"bytes,10,rep,name=result_files,json=resultFiles,proto3" json:"result_files,omitempty"`
}
func (x *Job) Reset() {
*x = Job{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Job) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Job) ProtoMessage() {}
func (x *Job) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Job.ProtoReflect.Descriptor instead.
func (*Job) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{17}
}
func (x *Job) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Job) GetState() Job_State {
if x != nil {
return x.State
}
return Job_STATE_UNSPECIFIED
}
func (x *Job) GetCreatedBy() string {
if x != nil {
return x.CreatedBy
}
return ""
}
func (x *Job) GetCreateTime() *timestamppb.Timestamp {
if x != nil {
return x.CreateTime
}
return nil
}
func (x *Job) GetLastUpdateTime() *timestamppb.Timestamp {
if x != nil {
return x.LastUpdateTime
}
return nil
}
func (x *Job) GetJobSpec() *JobSpec {
if x != nil {
return x.JobSpec
}
return nil
}
func (x *Job) GetCancellationReason() string {
if x != nil {
return x.CancellationReason
}
return ""
}
func (m *Job) GetResults() isJob_Results {
if m != nil {
return m.Results
}
return nil
}
func (x *Job) GetBisectionResults() *BisectionResults {
if x, ok := x.GetResults().(*Job_BisectionResults); ok {
return x.BisectionResults
}
return nil
}
func (x *Job) GetAbExperimentResults() *ABExperimentResults {
if x, ok := x.GetResults().(*Job_AbExperimentResults); ok {
return x.AbExperimentResults
}
return nil
}
func (x *Job) GetResultFiles() []*ResultFile {
if x != nil {
return x.ResultFiles
}
return nil
}
type isJob_Results interface {
isJob_Results()
}
type Job_BisectionResults struct {
BisectionResults *BisectionResults `protobuf:"bytes,8,opt,name=bisection_results,json=bisectionResults,proto3,oneof"`
}
type Job_AbExperimentResults struct {
AbExperimentResults *ABExperimentResults `protobuf:"bytes,9,opt,name=ab_experiment_results,json=abExperimentResults,proto3,oneof"`
}
func (*Job_BisectionResults) isJob_Results() {}
func (*Job_AbExperimentResults) isJob_Results() {}
// ResultFile represents a result for a Pinpoint Job; the file is stored in
// Google Cloud Storage (GCS).
type ResultFile struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
GcsBucket string `protobuf:"bytes,1,opt,name=gcs_bucket,json=gcsBucket,proto3" json:"gcs_bucket,omitempty"`
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
}
func (x *ResultFile) Reset() {
*x = ResultFile{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ResultFile) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ResultFile) ProtoMessage() {}
func (x *ResultFile) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ResultFile.ProtoReflect.Descriptor instead.
func (*ResultFile) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{18}
}
func (x *ResultFile) GetGcsBucket() string {
if x != nil {
return x.GcsBucket
}
return ""
}
func (x *ResultFile) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
type GetJobRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *GetJobRequest) Reset() {
*x = GetJobRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetJobRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetJobRequest) ProtoMessage() {}
func (x *GetJobRequest) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead.
func (*GetJobRequest) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{19}
}
func (x *GetJobRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
type ListJobsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// If unspecified, at most 100 Jobs will be returned.
// Max is 1000, any values above will be capped to 1000.
PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
// A page token, received from a previous `ListJobs` call.
// Provide this to retrieve the subsequent page.
// When paginating, all other parameters provided must match previous
// requests.
PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
// A structured string specifying a filter on Job properties.
// TODO(dberris): Document this, see https://aip.dev/160 for details.
Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
}
func (x *ListJobsRequest) Reset() {
*x = ListJobsRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListJobsRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListJobsRequest) ProtoMessage() {}
func (x *ListJobsRequest) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead.
func (*ListJobsRequest) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{20}
}
func (x *ListJobsRequest) GetPageSize() int32 {
if x != nil {
return x.PageSize
}
return 0
}
func (x *ListJobsRequest) GetPageToken() string {
if x != nil {
return x.PageToken
}
return ""
}
func (x *ListJobsRequest) GetFilter() string {
if x != nil {
return x.Filter
}
return ""
}
type ListJobsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Jobs []*Job `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"`
NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
}
func (x *ListJobsResponse) Reset() {
*x = ListJobsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListJobsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListJobsResponse) ProtoMessage() {}
func (x *ListJobsResponse) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead.
func (*ListJobsResponse) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{21}
}
func (x *ListJobsResponse) GetJobs() []*Job {
if x != nil {
return x.Jobs
}
return nil
}
func (x *ListJobsResponse) GetNextPageToken() string {
if x != nil {
return x.NextPageToken
}
return ""
}
type CancelJobRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
}
func (x *CancelJobRequest) Reset() {
*x = CancelJobRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CancelJobRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CancelJobRequest) ProtoMessage() {}
func (x *CancelJobRequest) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CancelJobRequest.ProtoReflect.Descriptor instead.
func (*CancelJobRequest) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{22}
}
func (x *CancelJobRequest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *CancelJobRequest) GetReason() string {
if x != nil {
return x.Reason
}
return ""
}
type TelemetryBenchmark_StoryTagList struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A list of story tags which specify stories that will be run. All stories
// that match any of the specified tags will be collected (unioned) in the
// run.
StoryTags []string `protobuf:"bytes,1,rep,name=story_tags,json=storyTags,proto3" json:"story_tags,omitempty"`
}
func (x *TelemetryBenchmark_StoryTagList) Reset() {
*x = TelemetryBenchmark_StoryTagList{}
if protoimpl.UnsafeEnabled {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TelemetryBenchmark_StoryTagList) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TelemetryBenchmark_StoryTagList) ProtoMessage() {}
func (x *TelemetryBenchmark_StoryTagList) ProtoReflect() protoreflect.Message {
mi := &file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TelemetryBenchmark_StoryTagList.ProtoReflect.Descriptor instead.
func (*TelemetryBenchmark_StoryTagList) Descriptor() ([]byte, []int) {
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP(), []int{0, 0}
}
func (x *TelemetryBenchmark_StoryTagList) GetStoryTags() []string {
if x != nil {
return x.StoryTags
}
return nil
}
var File_infra_chromeperf_pinpoint_pinpoint_proto protoreflect.FileDescriptor
var file_infra_chromeperf_pinpoint_pinpoint_proto_rawDesc = []byte{
0x0a, 0x28, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x70, 0x65,
0x72, 0x66, 0x2f, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x70, 0x69, 0x6e, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x70, 0x69, 0x6e, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66,
0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f,
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 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,
0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x04,
0x0a, 0x12, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x65, 0x6e, 0x63, 0x68,
0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
0x72, 0x6b, 0x12, 0x16, 0x0a, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x0a, 0x73, 0x74,
0x6f, 0x72, 0x79, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29,
0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65,
0x74, 0x72, 0x79, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x2e, 0x53, 0x74, 0x6f,
0x72, 0x79, 0x54, 0x61, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x6f,
0x72, 0x79, 0x54, 0x61, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x61,
0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75,
0x70, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12,
0x44, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x26, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x54, 0x65,
0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74,
0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x61,
0x72, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61,
0x41, 0x72, 0x67, 0x73, 0x1a, 0x2d, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x67,
0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x74, 0x61,
0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x54,
0x61, 0x67, 0x73, 0x22, 0x7b, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63,
0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x54, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x55, 0x4e,
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e,
0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x07,
0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x45, 0x41, 0x4e, 0x10,
0x04, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x10, 0x05, 0x12, 0x0a,
0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x4e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x43,
0x54, 0x39, 0x30, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x43, 0x54, 0x39, 0x39, 0x10, 0x08,
0x42, 0x11, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0e, 0x47, 0x54, 0x65, 0x73, 0x74, 0x42, 0x65, 0x6e, 0x63,
0x68, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
0x61, 0x72, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x73, 0x74, 0x22, 0x67, 0x0a, 0x0d, 0x47, 0x69, 0x74,
0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x68, 0x6f,
0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x68,
0x6f, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65,
0x63, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x67, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x67, 0x69, 0x74, 0x48, 0x61,
0x73, 0x68, 0x22, 0x84, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07,
0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63,
0x68, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x47, 0x69,
0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65,
0x12, 0x17, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03,
0xe0, 0x41, 0x02, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f,
0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52,
0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72,
0x74, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x47, 0x69, 0x74, 0x48,
0x61, 0x73, 0x68, 0x12, 0x25, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x68,
0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a,
0x65, 0x6e, 0x64, 0x47, 0x69, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x7f, 0x0a, 0x09, 0x42, 0x69,
0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69,
0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73,
0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a,
0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70,
0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22, 0xd3, 0x02, 0x0a, 0x0a,
0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x62, 0x61,
0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x17, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c,
0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x62,
0x61, 0x73, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x0a, 0x62, 0x61, 0x73,
0x65, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x50, 0x61, 0x74, 0x63, 0x68,
0x12, 0x44, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63,
0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x69,
0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f,
0x6d, 0x6d, 0x69, 0x74, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74,
0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x46, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69,
0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72,
0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x65,
0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14,
0x0a, 0x05, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61,
0x6c, 0x70, 0x68, 0x61, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
0x10, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x65,
0x78, 0x22, 0x4e, 0x0a, 0x0d, 0x4d, 0x6f, 0x6e, 0x6f, 0x72, 0x61, 0x69, 0x6c, 0x49, 0x73, 0x73,
0x75, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
0x74, 0x12, 0x1e, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49,
0x64, 0x22, 0xab, 0x05, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x49, 0x0a,
0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e,
0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72,
0x69, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72,
0x69, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x31, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x70,
0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73,
0x6f, 0x6e, 0x4d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x63,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02,
0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67,
0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x74,
0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f,
0x69, 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
0x09, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0a, 0x65, 0x78,
0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69,
0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65,
0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f,
0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x74, 0x72, 0x79, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x48, 0x01, 0x52,
0x12, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d,
0x61, 0x72, 0x6b, 0x12, 0x43, 0x0a, 0x0f, 0x67, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x6e,
0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70,
0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x54, 0x65, 0x73, 0x74, 0x42, 0x65, 0x6e,
0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x48, 0x01, 0x52, 0x0e, 0x67, 0x74, 0x65, 0x73, 0x74, 0x42,
0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x3e, 0x0a, 0x0e, 0x6d, 0x6f, 0x6e, 0x6f,
0x72, 0x61, 0x69, 0x6c, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x17, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x6f,
0x72, 0x61, 0x69, 0x6c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x6f, 0x72,
0x61, 0x69, 0x6c, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72,
0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73,
0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68,
0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68,
0x49, 0x64, 0x22, 0x52, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e,
0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53,
0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x4d,
0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49,
0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x42, 0x0a, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x6b, 0x69,
0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22,
0x3e, 0x0a, 0x12, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4a, 0x6f,
0x62, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22,
0x67, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x69, 0x6e, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d,
0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x61,
0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x69, 0x6e, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22, 0x4c, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63,
0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 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, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x45, 0x78, 0x65, 0x63, 0x75,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61,
0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x69, 0x6e, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65,
0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x35,
0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0x0a, 0x07, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74,
0x12, 0x33, 0x0a, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e,
0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70,
0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f,
0x69, 0x6e, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x52, 0x08, 0x61, 0x74, 0x74,
0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x63, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x10, 0x42, 0x69, 0x73,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x30, 0x0a,
0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16,
0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22,
0x95, 0x01, 0x0a, 0x13, 0x41, 0x42, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0f, 0x61, 0x5f, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x0f, 0x62, 0x5f, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x16, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x62, 0x43, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xb7, 0x05, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4a, 0x6f,
0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d,
0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x3b, 0x0a,
0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 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, 0x0a,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x6c, 0x61,
0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05,
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, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x12, 0x2c, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4a, 0x6f,
0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2f,
0x0a, 0x13, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72,
0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x61, 0x6e,
0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
0x49, 0x0a, 0x11, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x69, 0x6e,
0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x42, 0x69, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x10, 0x62, 0x69, 0x73, 0x65, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x15, 0x61, 0x62,
0x5f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x69, 0x6e, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x41, 0x42, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e,
0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x13, 0x61, 0x62, 0x45, 0x78,
0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12,
0x37, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18,
0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x62, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44,
0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47,
0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10,
0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a,
0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x3a, 0x28, 0xea, 0x41,
0x25, 0x0a, 0x17, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e,
0x63, 0x72, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x4a, 0x6f, 0x62, 0x12, 0x0a, 0x6a, 0x6f, 0x62, 0x73,
0x2f, 0x7b, 0x6a, 0x6f, 0x62, 0x7d, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x73, 0x22, 0x3f, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12,
0x1d, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61,
0x74, 0x68, 0x22, 0x44, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x1f, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x19, 0x0a, 0x17, 0x61, 0x70, 0x69, 0x2e, 0x70,
0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x4a,
0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x65, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65,
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61,
0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22,
0x5d, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62,
0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70,
0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x64,
0x0a, 0x10, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x42, 0x1f, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x19, 0x0a, 0x17, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x69,
0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x63, 0x72, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x4a, 0x6f,
0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f,
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x72, 0x65,
0x61, 0x73, 0x6f, 0x6e, 0x32, 0xdc, 0x02, 0x0a, 0x08, 0x50, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e,
0x74, 0x12, 0x51, 0x0a, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4a, 0x6f, 0x62,
0x12, 0x1c, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x68, 0x65,
0x64, 0x75, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d,
0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x22, 0x15, 0x82,
0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x3a,
0x03, 0x6a, 0x6f, 0x62, 0x12, 0x4b, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x17,
0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69,
0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11,
0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x2a,
0x7d, 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x19, 0x2e,
0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f,
0x69, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76,
0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0x5b, 0x0a, 0x09, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c,
0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43,
0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0d, 0x2e, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x22, 0x23,
0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d,
0x65, 0x3d, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c,
0x3a, 0x01, 0x2a, 0x42, 0x21, 0x5a, 0x1f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x63, 0x68, 0x72,
0x6f, 0x6d, 0x65, 0x70, 0x65, 0x72, 0x66, 0x2f, 0x70, 0x69, 0x6e, 0x70, 0x6f, 0x69, 0x6e, 0x74,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescOnce sync.Once
file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescData = file_infra_chromeperf_pinpoint_pinpoint_proto_rawDesc
)
func file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescGZIP() []byte {
file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescOnce.Do(func() {
file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescData = protoimpl.X.CompressGZIP(file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescData)
})
return file_infra_chromeperf_pinpoint_pinpoint_proto_rawDescData
}
var file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes = make([]protoimpl.MessageInfo, 24)
var file_infra_chromeperf_pinpoint_pinpoint_proto_goTypes = []interface{}{
(TelemetryBenchmark_Statistic)(0), // 0: pinpoint.TelemetryBenchmark.Statistic
(JobSpec_ComparisonMode)(0), // 1: pinpoint.JobSpec.ComparisonMode
(Job_State)(0), // 2: pinpoint.Job.State
(*TelemetryBenchmark)(nil), // 3: pinpoint.TelemetryBenchmark
(*GTestBenchmark)(nil), // 4: pinpoint.GTestBenchmark
(*GitilesCommit)(nil), // 5: pinpoint.GitilesCommit
(*GerritChange)(nil), // 6: pinpoint.GerritChange
(*GitilesCommitRange)(nil), // 7: pinpoint.GitilesCommitRange
(*Bisection)(nil), // 8: pinpoint.Bisection
(*Experiment)(nil), // 9: pinpoint.Experiment
(*MonorailIssue)(nil), // 10: pinpoint.MonorailIssue
(*JobSpec)(nil), // 11: pinpoint.JobSpec
(*ScheduleJobRequest)(nil), // 12: pinpoint.ScheduleJobRequest
(*Change)(nil), // 13: pinpoint.Change
(*ExecutionDetails)(nil), // 14: pinpoint.ExecutionDetails
(*Execution)(nil), // 15: pinpoint.Execution
(*Attempt)(nil), // 16: pinpoint.Attempt
(*ChangeResult)(nil), // 17: pinpoint.ChangeResult
(*BisectionResults)(nil), // 18: pinpoint.BisectionResults
(*ABExperimentResults)(nil), // 19: pinpoint.ABExperimentResults
(*Job)(nil), // 20: pinpoint.Job
(*ResultFile)(nil), // 21: pinpoint.ResultFile
(*GetJobRequest)(nil), // 22: pinpoint.GetJobRequest
(*ListJobsRequest)(nil), // 23: pinpoint.ListJobsRequest
(*ListJobsResponse)(nil), // 24: pinpoint.ListJobsResponse
(*CancelJobRequest)(nil), // 25: pinpoint.CancelJobRequest
(*TelemetryBenchmark_StoryTagList)(nil), // 26: pinpoint.TelemetryBenchmark.StoryTagList
(*structpb.Struct)(nil), // 27: google.protobuf.Struct
(*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp
}
var file_infra_chromeperf_pinpoint_pinpoint_proto_depIdxs = []int32{
26, // 0: pinpoint.TelemetryBenchmark.story_tags:type_name -> pinpoint.TelemetryBenchmark.StoryTagList
0, // 1: pinpoint.TelemetryBenchmark.statistic:type_name -> pinpoint.TelemetryBenchmark.Statistic
7, // 2: pinpoint.Bisection.commit_range:type_name -> pinpoint.GitilesCommitRange
6, // 3: pinpoint.Bisection.patch:type_name -> pinpoint.GerritChange
5, // 4: pinpoint.Experiment.base_commit:type_name -> pinpoint.GitilesCommit
6, // 5: pinpoint.Experiment.base_patch:type_name -> pinpoint.GerritChange
5, // 6: pinpoint.Experiment.experiment_commit:type_name -> pinpoint.GitilesCommit
6, // 7: pinpoint.Experiment.experiment_patch:type_name -> pinpoint.GerritChange
1, // 8: pinpoint.JobSpec.comparison_mode:type_name -> pinpoint.JobSpec.ComparisonMode
8, // 9: pinpoint.JobSpec.bisection:type_name -> pinpoint.Bisection
9, // 10: pinpoint.JobSpec.experiment:type_name -> pinpoint.Experiment
3, // 11: pinpoint.JobSpec.telemetry_benchmark:type_name -> pinpoint.TelemetryBenchmark
4, // 12: pinpoint.JobSpec.gtest_benchmark:type_name -> pinpoint.GTestBenchmark
10, // 13: pinpoint.JobSpec.monorail_issue:type_name -> pinpoint.MonorailIssue
11, // 14: pinpoint.ScheduleJobRequest.job:type_name -> pinpoint.JobSpec
5, // 15: pinpoint.Change.commit:type_name -> pinpoint.GitilesCommit
6, // 16: pinpoint.Change.patch:type_name -> pinpoint.GerritChange
14, // 17: pinpoint.Execution.details:type_name -> pinpoint.ExecutionDetails
27, // 18: pinpoint.Execution.exception:type_name -> google.protobuf.Struct
15, // 19: pinpoint.Attempt.executions:type_name -> pinpoint.Execution
16, // 20: pinpoint.ChangeResult.attempts:type_name -> pinpoint.Attempt
13, // 21: pinpoint.ChangeResult.change:type_name -> pinpoint.Change
17, // 22: pinpoint.BisectionResults.results:type_name -> pinpoint.ChangeResult
17, // 23: pinpoint.ABExperimentResults.a_change_result:type_name -> pinpoint.ChangeResult
17, // 24: pinpoint.ABExperimentResults.b_change_result:type_name -> pinpoint.ChangeResult
2, // 25: pinpoint.Job.state:type_name -> pinpoint.Job.State
28, // 26: pinpoint.Job.create_time:type_name -> google.protobuf.Timestamp
28, // 27: pinpoint.Job.last_update_time:type_name -> google.protobuf.Timestamp
11, // 28: pinpoint.Job.job_spec:type_name -> pinpoint.JobSpec
18, // 29: pinpoint.Job.bisection_results:type_name -> pinpoint.BisectionResults
19, // 30: pinpoint.Job.ab_experiment_results:type_name -> pinpoint.ABExperimentResults
21, // 31: pinpoint.Job.result_files:type_name -> pinpoint.ResultFile
20, // 32: pinpoint.ListJobsResponse.jobs:type_name -> pinpoint.Job
12, // 33: pinpoint.Pinpoint.ScheduleJob:input_type -> pinpoint.ScheduleJobRequest
22, // 34: pinpoint.Pinpoint.GetJob:input_type -> pinpoint.GetJobRequest
23, // 35: pinpoint.Pinpoint.ListJobs:input_type -> pinpoint.ListJobsRequest
25, // 36: pinpoint.Pinpoint.CancelJob:input_type -> pinpoint.CancelJobRequest
20, // 37: pinpoint.Pinpoint.ScheduleJob:output_type -> pinpoint.Job
20, // 38: pinpoint.Pinpoint.GetJob:output_type -> pinpoint.Job
24, // 39: pinpoint.Pinpoint.ListJobs:output_type -> pinpoint.ListJobsResponse
20, // 40: pinpoint.Pinpoint.CancelJob:output_type -> pinpoint.Job
37, // [37:41] is the sub-list for method output_type
33, // [33:37] is the sub-list for method input_type
33, // [33:33] is the sub-list for extension type_name
33, // [33:33] is the sub-list for extension extendee
0, // [0:33] is the sub-list for field type_name
}
func init() { file_infra_chromeperf_pinpoint_pinpoint_proto_init() }
func file_infra_chromeperf_pinpoint_pinpoint_proto_init() {
if File_infra_chromeperf_pinpoint_pinpoint_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TelemetryBenchmark); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GTestBenchmark); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GitilesCommit); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GerritChange); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GitilesCommitRange); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Bisection); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Experiment); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MonorailIssue); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JobSpec); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScheduleJobRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Change); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExecutionDetails); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Execution); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Attempt); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ChangeResult); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BisectionResults); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ABExperimentResults); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Job); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ResultFile); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetJobRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListJobsRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListJobsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CancelJobRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TelemetryBenchmark_StoryTagList); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[0].OneofWrappers = []interface{}{
(*TelemetryBenchmark_Story)(nil),
(*TelemetryBenchmark_StoryTags)(nil),
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[8].OneofWrappers = []interface{}{
(*JobSpec_Bisection)(nil),
(*JobSpec_Experiment)(nil),
(*JobSpec_TelemetryBenchmark)(nil),
(*JobSpec_GtestBenchmark)(nil),
}
file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes[17].OneofWrappers = []interface{}{
(*Job_BisectionResults)(nil),
(*Job_AbExperimentResults)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_infra_chromeperf_pinpoint_pinpoint_proto_rawDesc,
NumEnums: 3,
NumMessages: 24,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_infra_chromeperf_pinpoint_pinpoint_proto_goTypes,
DependencyIndexes: file_infra_chromeperf_pinpoint_pinpoint_proto_depIdxs,
EnumInfos: file_infra_chromeperf_pinpoint_pinpoint_proto_enumTypes,
MessageInfos: file_infra_chromeperf_pinpoint_pinpoint_proto_msgTypes,
}.Build()
File_infra_chromeperf_pinpoint_pinpoint_proto = out.File
file_infra_chromeperf_pinpoint_pinpoint_proto_rawDesc = nil
file_infra_chromeperf_pinpoint_pinpoint_proto_goTypes = nil
file_infra_chromeperf_pinpoint_pinpoint_proto_depIdxs = nil
}