1// Code generated by protoc-gen-go. DO NOT EDIT. 2// versions: 3// protoc-gen-go v1.25.0 4// protoc v3.19.1 5// source: envoy/api/v2/route/route_components.proto 6 7package envoy_api_v2_route 8 9import ( 10 _ "github.com/cncf/xds/go/udpa/annotations" 11 _ "github.com/envoyproxy/go-control-plane/envoy/annotations" 12 core "github.com/envoyproxy/go-control-plane/envoy/api/v2/core" 13 _type "github.com/envoyproxy/go-control-plane/envoy/type" 14 matcher "github.com/envoyproxy/go-control-plane/envoy/type/matcher" 15 v2 "github.com/envoyproxy/go-control-plane/envoy/type/tracing/v2" 16 _ "github.com/envoyproxy/protoc-gen-validate/validate" 17 proto "github.com/golang/protobuf/proto" 18 any "github.com/golang/protobuf/ptypes/any" 19 duration "github.com/golang/protobuf/ptypes/duration" 20 _struct "github.com/golang/protobuf/ptypes/struct" 21 wrappers "github.com/golang/protobuf/ptypes/wrappers" 22 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 23 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 24 reflect "reflect" 25 sync "sync" 26) 27 28const ( 29 // Verify that this generated code is sufficiently up-to-date. 30 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 31 // Verify that runtime/protoimpl is sufficiently up-to-date. 32 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 33) 34 35// This is a compile-time assertion that a sufficiently up-to-date version 36// of the legacy proto package is being used. 37const _ = proto.ProtoPackageIsVersion4 38 39type VirtualHost_TlsRequirementType int32 40 41const ( 42 // No TLS requirement for the virtual host. 43 VirtualHost_NONE VirtualHost_TlsRequirementType = 0 44 // External requests must use TLS. If a request is external and it is not 45 // using TLS, a 301 redirect will be sent telling the client to use HTTPS. 46 VirtualHost_EXTERNAL_ONLY VirtualHost_TlsRequirementType = 1 47 // All requests must use TLS. If a request is not using TLS, a 301 redirect 48 // will be sent telling the client to use HTTPS. 49 VirtualHost_ALL VirtualHost_TlsRequirementType = 2 50) 51 52// Enum value maps for VirtualHost_TlsRequirementType. 53var ( 54 VirtualHost_TlsRequirementType_name = map[int32]string{ 55 0: "NONE", 56 1: "EXTERNAL_ONLY", 57 2: "ALL", 58 } 59 VirtualHost_TlsRequirementType_value = map[string]int32{ 60 "NONE": 0, 61 "EXTERNAL_ONLY": 1, 62 "ALL": 2, 63 } 64) 65 66func (x VirtualHost_TlsRequirementType) Enum() *VirtualHost_TlsRequirementType { 67 p := new(VirtualHost_TlsRequirementType) 68 *p = x 69 return p 70} 71 72func (x VirtualHost_TlsRequirementType) String() string { 73 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 74} 75 76func (VirtualHost_TlsRequirementType) Descriptor() protoreflect.EnumDescriptor { 77 return file_envoy_api_v2_route_route_components_proto_enumTypes[0].Descriptor() 78} 79 80func (VirtualHost_TlsRequirementType) Type() protoreflect.EnumType { 81 return &file_envoy_api_v2_route_route_components_proto_enumTypes[0] 82} 83 84func (x VirtualHost_TlsRequirementType) Number() protoreflect.EnumNumber { 85 return protoreflect.EnumNumber(x) 86} 87 88// Deprecated: Use VirtualHost_TlsRequirementType.Descriptor instead. 89func (VirtualHost_TlsRequirementType) EnumDescriptor() ([]byte, []int) { 90 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{0, 0} 91} 92 93type RouteAction_ClusterNotFoundResponseCode int32 94 95const ( 96 // HTTP status code - 503 Service Unavailable. 97 RouteAction_SERVICE_UNAVAILABLE RouteAction_ClusterNotFoundResponseCode = 0 98 // HTTP status code - 404 Not Found. 99 RouteAction_NOT_FOUND RouteAction_ClusterNotFoundResponseCode = 1 100) 101 102// Enum value maps for RouteAction_ClusterNotFoundResponseCode. 103var ( 104 RouteAction_ClusterNotFoundResponseCode_name = map[int32]string{ 105 0: "SERVICE_UNAVAILABLE", 106 1: "NOT_FOUND", 107 } 108 RouteAction_ClusterNotFoundResponseCode_value = map[string]int32{ 109 "SERVICE_UNAVAILABLE": 0, 110 "NOT_FOUND": 1, 111 } 112) 113 114func (x RouteAction_ClusterNotFoundResponseCode) Enum() *RouteAction_ClusterNotFoundResponseCode { 115 p := new(RouteAction_ClusterNotFoundResponseCode) 116 *p = x 117 return p 118} 119 120func (x RouteAction_ClusterNotFoundResponseCode) String() string { 121 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 122} 123 124func (RouteAction_ClusterNotFoundResponseCode) Descriptor() protoreflect.EnumDescriptor { 125 return file_envoy_api_v2_route_route_components_proto_enumTypes[1].Descriptor() 126} 127 128func (RouteAction_ClusterNotFoundResponseCode) Type() protoreflect.EnumType { 129 return &file_envoy_api_v2_route_route_components_proto_enumTypes[1] 130} 131 132func (x RouteAction_ClusterNotFoundResponseCode) Number() protoreflect.EnumNumber { 133 return protoreflect.EnumNumber(x) 134} 135 136// Deprecated: Use RouteAction_ClusterNotFoundResponseCode.Descriptor instead. 137func (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) { 138 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 0} 139} 140 141// Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior. 142type RouteAction_InternalRedirectAction int32 143 144const ( 145 RouteAction_PASS_THROUGH_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 0 146 RouteAction_HANDLE_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 1 147) 148 149// Enum value maps for RouteAction_InternalRedirectAction. 150var ( 151 RouteAction_InternalRedirectAction_name = map[int32]string{ 152 0: "PASS_THROUGH_INTERNAL_REDIRECT", 153 1: "HANDLE_INTERNAL_REDIRECT", 154 } 155 RouteAction_InternalRedirectAction_value = map[string]int32{ 156 "PASS_THROUGH_INTERNAL_REDIRECT": 0, 157 "HANDLE_INTERNAL_REDIRECT": 1, 158 } 159) 160 161func (x RouteAction_InternalRedirectAction) Enum() *RouteAction_InternalRedirectAction { 162 p := new(RouteAction_InternalRedirectAction) 163 *p = x 164 return p 165} 166 167func (x RouteAction_InternalRedirectAction) String() string { 168 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 169} 170 171func (RouteAction_InternalRedirectAction) Descriptor() protoreflect.EnumDescriptor { 172 return file_envoy_api_v2_route_route_components_proto_enumTypes[2].Descriptor() 173} 174 175func (RouteAction_InternalRedirectAction) Type() protoreflect.EnumType { 176 return &file_envoy_api_v2_route_route_components_proto_enumTypes[2] 177} 178 179func (x RouteAction_InternalRedirectAction) Number() protoreflect.EnumNumber { 180 return protoreflect.EnumNumber(x) 181} 182 183// Deprecated: Use RouteAction_InternalRedirectAction.Descriptor instead. 184func (RouteAction_InternalRedirectAction) EnumDescriptor() ([]byte, []int) { 185 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1} 186} 187 188type RedirectAction_RedirectResponseCode int32 189 190const ( 191 // Moved Permanently HTTP Status Code - 301. 192 RedirectAction_MOVED_PERMANENTLY RedirectAction_RedirectResponseCode = 0 193 // Found HTTP Status Code - 302. 194 RedirectAction_FOUND RedirectAction_RedirectResponseCode = 1 195 // See Other HTTP Status Code - 303. 196 RedirectAction_SEE_OTHER RedirectAction_RedirectResponseCode = 2 197 // Temporary Redirect HTTP Status Code - 307. 198 RedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3 199 // Permanent Redirect HTTP Status Code - 308. 200 RedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4 201) 202 203// Enum value maps for RedirectAction_RedirectResponseCode. 204var ( 205 RedirectAction_RedirectResponseCode_name = map[int32]string{ 206 0: "MOVED_PERMANENTLY", 207 1: "FOUND", 208 2: "SEE_OTHER", 209 3: "TEMPORARY_REDIRECT", 210 4: "PERMANENT_REDIRECT", 211 } 212 RedirectAction_RedirectResponseCode_value = map[string]int32{ 213 "MOVED_PERMANENTLY": 0, 214 "FOUND": 1, 215 "SEE_OTHER": 2, 216 "TEMPORARY_REDIRECT": 3, 217 "PERMANENT_REDIRECT": 4, 218 } 219) 220 221func (x RedirectAction_RedirectResponseCode) Enum() *RedirectAction_RedirectResponseCode { 222 p := new(RedirectAction_RedirectResponseCode) 223 *p = x 224 return p 225} 226 227func (x RedirectAction_RedirectResponseCode) String() string { 228 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 229} 230 231func (RedirectAction_RedirectResponseCode) Descriptor() protoreflect.EnumDescriptor { 232 return file_envoy_api_v2_route_route_components_proto_enumTypes[3].Descriptor() 233} 234 235func (RedirectAction_RedirectResponseCode) Type() protoreflect.EnumType { 236 return &file_envoy_api_v2_route_route_components_proto_enumTypes[3] 237} 238 239func (x RedirectAction_RedirectResponseCode) Number() protoreflect.EnumNumber { 240 return protoreflect.EnumNumber(x) 241} 242 243// Deprecated: Use RedirectAction_RedirectResponseCode.Descriptor instead. 244func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) { 245 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{9, 0} 246} 247 248// The top level element in the routing configuration is a virtual host. Each virtual host has 249// a logical name as well as a set of domains that get routed to it based on the incoming request's 250// host header. This allows a single listener to service multiple top level domain path trees. Once 251// a virtual host is selected based on the domain, the routes are processed in order to see which 252// upstream cluster to route to or whether to perform a redirect. 253// [#next-free-field: 21] 254type VirtualHost struct { 255 state protoimpl.MessageState 256 sizeCache protoimpl.SizeCache 257 unknownFields protoimpl.UnknownFields 258 259 // The logical name of the virtual host. This is used when emitting certain 260 // statistics but is not relevant for routing. 261 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 262 // A list of domains (host/authority header) that will be matched to this 263 // virtual host. Wildcard hosts are supported in the suffix or prefix form. 264 // 265 // Domain search order: 266 // 1. Exact domain names: ``www.foo.com``. 267 // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. 268 // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. 269 // 4. Special wildcard ``*`` matching any domain. 270 // 271 // .. note:: 272 // 273 // The wildcard will not match the empty string. 274 // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. 275 // The longest wildcards match first. 276 // Only a single virtual host in the entire route configuration can match on ``*``. A domain 277 // must be unique across all virtual hosts or the config will fail to load. 278 // 279 // Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE. 280 Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` 281 // The list of routes that will be matched, in order, for incoming requests. 282 // The first route that matches will be used. 283 Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` 284 // Specifies the type of TLS enforcement the virtual host expects. If this option is not 285 // specified, there is no TLS requirement for the virtual host. 286 RequireTls VirtualHost_TlsRequirementType `protobuf:"varint,4,opt,name=require_tls,json=requireTls,proto3,enum=envoy.api.v2.route.VirtualHost_TlsRequirementType" json:"require_tls,omitempty"` 287 // A list of virtual clusters defined for this virtual host. Virtual clusters 288 // are used for additional statistics gathering. 289 VirtualClusters []*VirtualCluster `protobuf:"bytes,5,rep,name=virtual_clusters,json=virtualClusters,proto3" json:"virtual_clusters,omitempty"` 290 // Specifies a set of rate limit configurations that will be applied to the 291 // virtual host. 292 RateLimits []*RateLimit `protobuf:"bytes,6,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` 293 // Specifies a list of HTTP headers that should be added to each request 294 // handled by this virtual host. Headers specified at this level are applied 295 // after headers from enclosed :ref:`envoy_api_msg_route.Route` and before headers from the 296 // enclosing :ref:`envoy_api_msg_RouteConfiguration`. For more information, including 297 // details on header value syntax, see the documentation on :ref:`custom request headers 298 // <config_http_conn_man_headers_custom_request_headers>`. 299 RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,7,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` 300 // Specifies a list of HTTP headers that should be removed from each request 301 // handled by this virtual host. 302 RequestHeadersToRemove []string `protobuf:"bytes,13,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` 303 // Specifies a list of HTTP headers that should be added to each response 304 // handled by this virtual host. Headers specified at this level are applied 305 // after headers from enclosed :ref:`envoy_api_msg_route.Route` and before headers from the 306 // enclosing :ref:`envoy_api_msg_RouteConfiguration`. For more information, including 307 // details on header value syntax, see the documentation on :ref:`custom request headers 308 // <config_http_conn_man_headers_custom_request_headers>`. 309 ResponseHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` 310 // Specifies a list of HTTP headers that should be removed from each response 311 // handled by this virtual host. 312 ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` 313 // Indicates that the virtual host has a CORS policy. 314 Cors *CorsPolicy `protobuf:"bytes,8,opt,name=cors,proto3" json:"cors,omitempty"` 315 // The per_filter_config field can be used to provide virtual host-specific 316 // configurations for filters. The key should match the filter name, such as 317 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 318 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` 319 // for if and how it is utilized. 320 // 321 // Deprecated: Do not use. 322 PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,12,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 323 // The per_filter_config field can be used to provide virtual host-specific 324 // configurations for filters. The key should match the filter name, such as 325 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 326 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` 327 // for if and how it is utilized. 328 TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 329 // Decides whether the :ref:`x-envoy-attempt-count 330 // <config_http_filters_router_x-envoy-attempt-count>` header should be included 331 // in the upstream request. Setting this option will cause it to override any existing header 332 // value, so in the case of two Envoys on the request path with this option enabled, the upstream 333 // will see the attempt count as perceived by the second Envoy. Defaults to false. 334 // This header is unaffected by the 335 // :ref:`suppress_envoy_headers 336 // <envoy_api_field_config.filter.http.router.v2.Router.suppress_envoy_headers>` flag. 337 // 338 // [#next-major-version: rename to include_attempt_count_in_request.] 339 IncludeRequestAttemptCount bool `protobuf:"varint,14,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3" json:"include_request_attempt_count,omitempty"` 340 // Decides whether the :ref:`x-envoy-attempt-count 341 // <config_http_filters_router_x-envoy-attempt-count>` header should be included 342 // in the downstream response. Setting this option will cause the router to override any existing header 343 // value, so in the case of two Envoys on the request path with this option enabled, the downstream 344 // will see the attempt count as perceived by the Envoy closest upstream from itself. Defaults to false. 345 // This header is unaffected by the 346 // :ref:`suppress_envoy_headers 347 // <envoy_api_field_config.filter.http.router.v2.Router.suppress_envoy_headers>` flag. 348 IncludeAttemptCountInResponse bool `protobuf:"varint,19,opt,name=include_attempt_count_in_response,json=includeAttemptCountInResponse,proto3" json:"include_attempt_count_in_response,omitempty"` 349 // Indicates the retry policy for all routes in this virtual host. Note that setting a 350 // route level entry will take precedence over this config and it'll be treated 351 // independently (e.g.: values are not inherited). 352 RetryPolicy *RetryPolicy `protobuf:"bytes,16,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` 353 // [#not-implemented-hide:] 354 // Specifies the configuration for retry policy extension. Note that setting a route level entry 355 // will take precedence over this config and it'll be treated independently (e.g.: values are not 356 // inherited). :ref:`Retry policy <envoy_api_field_route.VirtualHost.retry_policy>` should not be 357 // set if this field is used. 358 RetryPolicyTypedConfig *any.Any `protobuf:"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` 359 // Indicates the hedge policy for all routes in this virtual host. Note that setting a 360 // route level entry will take precedence over this config and it'll be treated 361 // independently (e.g.: values are not inherited). 362 HedgePolicy *HedgePolicy `protobuf:"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` 363 // The maximum bytes which will be buffered for retries and shadowing. 364 // If set and a route-specific limit is not set, the bytes actually buffered will be the minimum 365 // value of this and the listener per_connection_buffer_limit_bytes. 366 PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` 367} 368 369func (x *VirtualHost) Reset() { 370 *x = VirtualHost{} 371 if protoimpl.UnsafeEnabled { 372 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[0] 373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 374 ms.StoreMessageInfo(mi) 375 } 376} 377 378func (x *VirtualHost) String() string { 379 return protoimpl.X.MessageStringOf(x) 380} 381 382func (*VirtualHost) ProtoMessage() {} 383 384func (x *VirtualHost) ProtoReflect() protoreflect.Message { 385 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[0] 386 if protoimpl.UnsafeEnabled && x != nil { 387 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 388 if ms.LoadMessageInfo() == nil { 389 ms.StoreMessageInfo(mi) 390 } 391 return ms 392 } 393 return mi.MessageOf(x) 394} 395 396// Deprecated: Use VirtualHost.ProtoReflect.Descriptor instead. 397func (*VirtualHost) Descriptor() ([]byte, []int) { 398 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{0} 399} 400 401func (x *VirtualHost) GetName() string { 402 if x != nil { 403 return x.Name 404 } 405 return "" 406} 407 408func (x *VirtualHost) GetDomains() []string { 409 if x != nil { 410 return x.Domains 411 } 412 return nil 413} 414 415func (x *VirtualHost) GetRoutes() []*Route { 416 if x != nil { 417 return x.Routes 418 } 419 return nil 420} 421 422func (x *VirtualHost) GetRequireTls() VirtualHost_TlsRequirementType { 423 if x != nil { 424 return x.RequireTls 425 } 426 return VirtualHost_NONE 427} 428 429func (x *VirtualHost) GetVirtualClusters() []*VirtualCluster { 430 if x != nil { 431 return x.VirtualClusters 432 } 433 return nil 434} 435 436func (x *VirtualHost) GetRateLimits() []*RateLimit { 437 if x != nil { 438 return x.RateLimits 439 } 440 return nil 441} 442 443func (x *VirtualHost) GetRequestHeadersToAdd() []*core.HeaderValueOption { 444 if x != nil { 445 return x.RequestHeadersToAdd 446 } 447 return nil 448} 449 450func (x *VirtualHost) GetRequestHeadersToRemove() []string { 451 if x != nil { 452 return x.RequestHeadersToRemove 453 } 454 return nil 455} 456 457func (x *VirtualHost) GetResponseHeadersToAdd() []*core.HeaderValueOption { 458 if x != nil { 459 return x.ResponseHeadersToAdd 460 } 461 return nil 462} 463 464func (x *VirtualHost) GetResponseHeadersToRemove() []string { 465 if x != nil { 466 return x.ResponseHeadersToRemove 467 } 468 return nil 469} 470 471func (x *VirtualHost) GetCors() *CorsPolicy { 472 if x != nil { 473 return x.Cors 474 } 475 return nil 476} 477 478// Deprecated: Do not use. 479func (x *VirtualHost) GetPerFilterConfig() map[string]*_struct.Struct { 480 if x != nil { 481 return x.PerFilterConfig 482 } 483 return nil 484} 485 486func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*any.Any { 487 if x != nil { 488 return x.TypedPerFilterConfig 489 } 490 return nil 491} 492 493func (x *VirtualHost) GetIncludeRequestAttemptCount() bool { 494 if x != nil { 495 return x.IncludeRequestAttemptCount 496 } 497 return false 498} 499 500func (x *VirtualHost) GetIncludeAttemptCountInResponse() bool { 501 if x != nil { 502 return x.IncludeAttemptCountInResponse 503 } 504 return false 505} 506 507func (x *VirtualHost) GetRetryPolicy() *RetryPolicy { 508 if x != nil { 509 return x.RetryPolicy 510 } 511 return nil 512} 513 514func (x *VirtualHost) GetRetryPolicyTypedConfig() *any.Any { 515 if x != nil { 516 return x.RetryPolicyTypedConfig 517 } 518 return nil 519} 520 521func (x *VirtualHost) GetHedgePolicy() *HedgePolicy { 522 if x != nil { 523 return x.HedgePolicy 524 } 525 return nil 526} 527 528func (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { 529 if x != nil { 530 return x.PerRequestBufferLimitBytes 531 } 532 return nil 533} 534 535// A filter-defined action type. 536type FilterAction struct { 537 state protoimpl.MessageState 538 sizeCache protoimpl.SizeCache 539 unknownFields protoimpl.UnknownFields 540 541 Action *any.Any `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` 542} 543 544func (x *FilterAction) Reset() { 545 *x = FilterAction{} 546 if protoimpl.UnsafeEnabled { 547 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[1] 548 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 549 ms.StoreMessageInfo(mi) 550 } 551} 552 553func (x *FilterAction) String() string { 554 return protoimpl.X.MessageStringOf(x) 555} 556 557func (*FilterAction) ProtoMessage() {} 558 559func (x *FilterAction) ProtoReflect() protoreflect.Message { 560 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[1] 561 if protoimpl.UnsafeEnabled && x != nil { 562 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 563 if ms.LoadMessageInfo() == nil { 564 ms.StoreMessageInfo(mi) 565 } 566 return ms 567 } 568 return mi.MessageOf(x) 569} 570 571// Deprecated: Use FilterAction.ProtoReflect.Descriptor instead. 572func (*FilterAction) Descriptor() ([]byte, []int) { 573 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{1} 574} 575 576func (x *FilterAction) GetAction() *any.Any { 577 if x != nil { 578 return x.Action 579 } 580 return nil 581} 582 583// A route is both a specification of how to match a request as well as an indication of what to do 584// next (e.g., redirect, forward, rewrite, etc.). 585// 586// .. attention:: 587// 588// Envoy supports routing on HTTP method via :ref:`header matching 589// <envoy_api_msg_route.HeaderMatcher>`. 590// [#next-free-field: 18] 591type Route struct { 592 state protoimpl.MessageState 593 sizeCache protoimpl.SizeCache 594 unknownFields protoimpl.UnknownFields 595 596 // Name for the route. 597 Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"` 598 // Route matching parameters. 599 Match *RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` 600 // Types that are assignable to Action: 601 // *Route_Route 602 // *Route_Redirect 603 // *Route_DirectResponse 604 // *Route_FilterAction 605 Action isRoute_Action `protobuf_oneof:"action"` 606 // The Metadata field can be used to provide additional information 607 // about the route. It can be used for configuration, stats, and logging. 608 // The metadata should go under the filter namespace that will need it. 609 // For instance, if the metadata is intended for the Router filter, 610 // the filter name should be specified as *envoy.filters.http.router*. 611 Metadata *core.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` 612 // Decorator for the matched route. 613 Decorator *Decorator `protobuf:"bytes,5,opt,name=decorator,proto3" json:"decorator,omitempty"` 614 // The per_filter_config field can be used to provide route-specific 615 // configurations for filters. The key should match the filter name, such as 616 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 617 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` for 618 // if and how it is utilized. 619 // 620 // Deprecated: Do not use. 621 PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 622 // The typed_per_filter_config field can be used to provide route-specific 623 // configurations for filters. The key should match the filter name, such as 624 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 625 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` for 626 // if and how it is utilized. 627 TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 628 // Specifies a set of headers that will be added to requests matching this 629 // route. Headers specified at this level are applied before headers from the 630 // enclosing :ref:`envoy_api_msg_route.VirtualHost` and 631 // :ref:`envoy_api_msg_RouteConfiguration`. For more information, including details on 632 // header value syntax, see the documentation on :ref:`custom request headers 633 // <config_http_conn_man_headers_custom_request_headers>`. 634 RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,9,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` 635 // Specifies a list of HTTP headers that should be removed from each request 636 // matching this route. 637 RequestHeadersToRemove []string `protobuf:"bytes,12,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` 638 // Specifies a set of headers that will be added to responses to requests 639 // matching this route. Headers specified at this level are applied before 640 // headers from the enclosing :ref:`envoy_api_msg_route.VirtualHost` and 641 // :ref:`envoy_api_msg_RouteConfiguration`. For more information, including 642 // details on header value syntax, see the documentation on 643 // :ref:`custom request headers <config_http_conn_man_headers_custom_request_headers>`. 644 ResponseHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` 645 // Specifies a list of HTTP headers that should be removed from each response 646 // to requests matching this route. 647 ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` 648 // Presence of the object defines whether the connection manager's tracing configuration 649 // is overridden by this route specific instance. 650 Tracing *Tracing `protobuf:"bytes,15,opt,name=tracing,proto3" json:"tracing,omitempty"` 651 // The maximum bytes which will be buffered for retries and shadowing. 652 // If set, the bytes actually buffered will be the minimum value of this and the 653 // listener per_connection_buffer_limit_bytes. 654 PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` 655} 656 657func (x *Route) Reset() { 658 *x = Route{} 659 if protoimpl.UnsafeEnabled { 660 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[2] 661 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 662 ms.StoreMessageInfo(mi) 663 } 664} 665 666func (x *Route) String() string { 667 return protoimpl.X.MessageStringOf(x) 668} 669 670func (*Route) ProtoMessage() {} 671 672func (x *Route) ProtoReflect() protoreflect.Message { 673 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[2] 674 if protoimpl.UnsafeEnabled && x != nil { 675 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 676 if ms.LoadMessageInfo() == nil { 677 ms.StoreMessageInfo(mi) 678 } 679 return ms 680 } 681 return mi.MessageOf(x) 682} 683 684// Deprecated: Use Route.ProtoReflect.Descriptor instead. 685func (*Route) Descriptor() ([]byte, []int) { 686 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{2} 687} 688 689func (x *Route) GetName() string { 690 if x != nil { 691 return x.Name 692 } 693 return "" 694} 695 696func (x *Route) GetMatch() *RouteMatch { 697 if x != nil { 698 return x.Match 699 } 700 return nil 701} 702 703func (m *Route) GetAction() isRoute_Action { 704 if m != nil { 705 return m.Action 706 } 707 return nil 708} 709 710func (x *Route) GetRoute() *RouteAction { 711 if x, ok := x.GetAction().(*Route_Route); ok { 712 return x.Route 713 } 714 return nil 715} 716 717func (x *Route) GetRedirect() *RedirectAction { 718 if x, ok := x.GetAction().(*Route_Redirect); ok { 719 return x.Redirect 720 } 721 return nil 722} 723 724func (x *Route) GetDirectResponse() *DirectResponseAction { 725 if x, ok := x.GetAction().(*Route_DirectResponse); ok { 726 return x.DirectResponse 727 } 728 return nil 729} 730 731func (x *Route) GetFilterAction() *FilterAction { 732 if x, ok := x.GetAction().(*Route_FilterAction); ok { 733 return x.FilterAction 734 } 735 return nil 736} 737 738func (x *Route) GetMetadata() *core.Metadata { 739 if x != nil { 740 return x.Metadata 741 } 742 return nil 743} 744 745func (x *Route) GetDecorator() *Decorator { 746 if x != nil { 747 return x.Decorator 748 } 749 return nil 750} 751 752// Deprecated: Do not use. 753func (x *Route) GetPerFilterConfig() map[string]*_struct.Struct { 754 if x != nil { 755 return x.PerFilterConfig 756 } 757 return nil 758} 759 760func (x *Route) GetTypedPerFilterConfig() map[string]*any.Any { 761 if x != nil { 762 return x.TypedPerFilterConfig 763 } 764 return nil 765} 766 767func (x *Route) GetRequestHeadersToAdd() []*core.HeaderValueOption { 768 if x != nil { 769 return x.RequestHeadersToAdd 770 } 771 return nil 772} 773 774func (x *Route) GetRequestHeadersToRemove() []string { 775 if x != nil { 776 return x.RequestHeadersToRemove 777 } 778 return nil 779} 780 781func (x *Route) GetResponseHeadersToAdd() []*core.HeaderValueOption { 782 if x != nil { 783 return x.ResponseHeadersToAdd 784 } 785 return nil 786} 787 788func (x *Route) GetResponseHeadersToRemove() []string { 789 if x != nil { 790 return x.ResponseHeadersToRemove 791 } 792 return nil 793} 794 795func (x *Route) GetTracing() *Tracing { 796 if x != nil { 797 return x.Tracing 798 } 799 return nil 800} 801 802func (x *Route) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { 803 if x != nil { 804 return x.PerRequestBufferLimitBytes 805 } 806 return nil 807} 808 809type isRoute_Action interface { 810 isRoute_Action() 811} 812 813type Route_Route struct { 814 // Route request to some upstream cluster. 815 Route *RouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"` 816} 817 818type Route_Redirect struct { 819 // Return a redirect. 820 Redirect *RedirectAction `protobuf:"bytes,3,opt,name=redirect,proto3,oneof"` 821} 822 823type Route_DirectResponse struct { 824 // Return an arbitrary HTTP response directly, without proxying. 825 DirectResponse *DirectResponseAction `protobuf:"bytes,7,opt,name=direct_response,json=directResponse,proto3,oneof"` 826} 827 828type Route_FilterAction struct { 829 // [#not-implemented-hide:] 830 // If true, a filter will define the action (e.g., it could dynamically generate the 831 // RouteAction). 832 FilterAction *FilterAction `protobuf:"bytes,17,opt,name=filter_action,json=filterAction,proto3,oneof"` 833} 834 835func (*Route_Route) isRoute_Action() {} 836 837func (*Route_Redirect) isRoute_Action() {} 838 839func (*Route_DirectResponse) isRoute_Action() {} 840 841func (*Route_FilterAction) isRoute_Action() {} 842 843// Compared to the :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` field that specifies a 844// single upstream cluster as the target of a request, the :ref:`weighted_clusters 845// <envoy_api_field_route.RouteAction.weighted_clusters>` option allows for specification of 846// multiple upstream clusters along with weights that indicate the percentage of 847// traffic to be forwarded to each cluster. The router selects an upstream cluster based on the 848// weights. 849type WeightedCluster struct { 850 state protoimpl.MessageState 851 sizeCache protoimpl.SizeCache 852 unknownFields protoimpl.UnknownFields 853 854 // Specifies one or more upstream clusters associated with the route. 855 Clusters []*WeightedCluster_ClusterWeight `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` 856 // Specifies the total weight across all clusters. The sum of all cluster weights must equal this 857 // value, which must be greater than 0. Defaults to 100. 858 TotalWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"` 859 // Specifies the runtime key prefix that should be used to construct the 860 // runtime keys associated with each cluster. When the *runtime_key_prefix* is 861 // specified, the router will look for weights associated with each upstream 862 // cluster under the key *runtime_key_prefix* + "." + *cluster[i].name* where 863 // *cluster[i]* denotes an entry in the clusters array field. If the runtime 864 // key for the cluster does not exist, the value specified in the 865 // configuration file will be used as the default weight. See the :ref:`runtime documentation 866 // <operations_runtime>` for how key names map to the underlying implementation. 867 RuntimeKeyPrefix string `protobuf:"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3" json:"runtime_key_prefix,omitempty"` 868} 869 870func (x *WeightedCluster) Reset() { 871 *x = WeightedCluster{} 872 if protoimpl.UnsafeEnabled { 873 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[3] 874 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 875 ms.StoreMessageInfo(mi) 876 } 877} 878 879func (x *WeightedCluster) String() string { 880 return protoimpl.X.MessageStringOf(x) 881} 882 883func (*WeightedCluster) ProtoMessage() {} 884 885func (x *WeightedCluster) ProtoReflect() protoreflect.Message { 886 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[3] 887 if protoimpl.UnsafeEnabled && x != nil { 888 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 889 if ms.LoadMessageInfo() == nil { 890 ms.StoreMessageInfo(mi) 891 } 892 return ms 893 } 894 return mi.MessageOf(x) 895} 896 897// Deprecated: Use WeightedCluster.ProtoReflect.Descriptor instead. 898func (*WeightedCluster) Descriptor() ([]byte, []int) { 899 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{3} 900} 901 902func (x *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight { 903 if x != nil { 904 return x.Clusters 905 } 906 return nil 907} 908 909func (x *WeightedCluster) GetTotalWeight() *wrappers.UInt32Value { 910 if x != nil { 911 return x.TotalWeight 912 } 913 return nil 914} 915 916func (x *WeightedCluster) GetRuntimeKeyPrefix() string { 917 if x != nil { 918 return x.RuntimeKeyPrefix 919 } 920 return "" 921} 922 923// [#next-free-field: 12] 924type RouteMatch struct { 925 state protoimpl.MessageState 926 sizeCache protoimpl.SizeCache 927 unknownFields protoimpl.UnknownFields 928 929 // Types that are assignable to PathSpecifier: 930 // *RouteMatch_Prefix 931 // *RouteMatch_Path 932 // *RouteMatch_Regex 933 // *RouteMatch_SafeRegex 934 PathSpecifier isRouteMatch_PathSpecifier `protobuf_oneof:"path_specifier"` 935 // Indicates that prefix/path matching should be case sensitive. The default 936 // is true. 937 CaseSensitive *wrappers.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` 938 // Indicates that the route should additionally match on a runtime key. Every time the route 939 // is considered for a match, it must also fall under the percentage of matches indicated by 940 // this field. For some fraction N/D, a random number in the range [0,D) is selected. If the 941 // number is <= the value of the numerator N, or if the key is not present, the default 942 // value, the router continues to evaluate the remaining match criteria. A runtime_fraction 943 // route configuration can be used to roll out route changes in a gradual manner without full 944 // code/config deploys. Refer to the :ref:`traffic shifting 945 // <config_http_conn_man_route_table_traffic_splitting_shift>` docs for additional documentation. 946 // 947 // .. note:: 948 // 949 // Parsing this field is implemented such that the runtime key's data may be represented 950 // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an 951 // integer with the assumption that the value is an integral percentage out of 100. For 952 // instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent 953 // whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics. 954 RuntimeFraction *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` 955 // Specifies a set of headers that the route should match on. The router will 956 // check the request’s headers against all the specified headers in the route 957 // config. A match will happen if all the headers in the route are present in 958 // the request with the same values (or based on presence if the value field 959 // is not in the config). 960 Headers []*HeaderMatcher `protobuf:"bytes,6,rep,name=headers,proto3" json:"headers,omitempty"` 961 // Specifies a set of URL query parameters on which the route should 962 // match. The router will check the query string from the *path* header 963 // against all the specified query parameters. If the number of specified 964 // query parameters is nonzero, they all must match the *path* header's 965 // query string for a match to occur. 966 QueryParameters []*QueryParameterMatcher `protobuf:"bytes,7,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"` 967 // If specified, only gRPC requests will be matched. The router will check 968 // that the content-type header has a application/grpc or one of the various 969 // application/grpc+ values. 970 Grpc *RouteMatch_GrpcRouteMatchOptions `protobuf:"bytes,8,opt,name=grpc,proto3" json:"grpc,omitempty"` 971 // If specified, the client tls context will be matched against the defined 972 // match options. 973 // 974 // [#next-major-version: unify with RBAC] 975 TlsContext *RouteMatch_TlsContextMatchOptions `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"` 976} 977 978func (x *RouteMatch) Reset() { 979 *x = RouteMatch{} 980 if protoimpl.UnsafeEnabled { 981 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[4] 982 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 983 ms.StoreMessageInfo(mi) 984 } 985} 986 987func (x *RouteMatch) String() string { 988 return protoimpl.X.MessageStringOf(x) 989} 990 991func (*RouteMatch) ProtoMessage() {} 992 993func (x *RouteMatch) ProtoReflect() protoreflect.Message { 994 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[4] 995 if protoimpl.UnsafeEnabled && x != nil { 996 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 997 if ms.LoadMessageInfo() == nil { 998 ms.StoreMessageInfo(mi) 999 } 1000 return ms 1001 } 1002 return mi.MessageOf(x) 1003} 1004 1005// Deprecated: Use RouteMatch.ProtoReflect.Descriptor instead. 1006func (*RouteMatch) Descriptor() ([]byte, []int) { 1007 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{4} 1008} 1009 1010func (m *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier { 1011 if m != nil { 1012 return m.PathSpecifier 1013 } 1014 return nil 1015} 1016 1017func (x *RouteMatch) GetPrefix() string { 1018 if x, ok := x.GetPathSpecifier().(*RouteMatch_Prefix); ok { 1019 return x.Prefix 1020 } 1021 return "" 1022} 1023 1024func (x *RouteMatch) GetPath() string { 1025 if x, ok := x.GetPathSpecifier().(*RouteMatch_Path); ok { 1026 return x.Path 1027 } 1028 return "" 1029} 1030 1031// Deprecated: Do not use. 1032func (x *RouteMatch) GetRegex() string { 1033 if x, ok := x.GetPathSpecifier().(*RouteMatch_Regex); ok { 1034 return x.Regex 1035 } 1036 return "" 1037} 1038 1039func (x *RouteMatch) GetSafeRegex() *matcher.RegexMatcher { 1040 if x, ok := x.GetPathSpecifier().(*RouteMatch_SafeRegex); ok { 1041 return x.SafeRegex 1042 } 1043 return nil 1044} 1045 1046func (x *RouteMatch) GetCaseSensitive() *wrappers.BoolValue { 1047 if x != nil { 1048 return x.CaseSensitive 1049 } 1050 return nil 1051} 1052 1053func (x *RouteMatch) GetRuntimeFraction() *core.RuntimeFractionalPercent { 1054 if x != nil { 1055 return x.RuntimeFraction 1056 } 1057 return nil 1058} 1059 1060func (x *RouteMatch) GetHeaders() []*HeaderMatcher { 1061 if x != nil { 1062 return x.Headers 1063 } 1064 return nil 1065} 1066 1067func (x *RouteMatch) GetQueryParameters() []*QueryParameterMatcher { 1068 if x != nil { 1069 return x.QueryParameters 1070 } 1071 return nil 1072} 1073 1074func (x *RouteMatch) GetGrpc() *RouteMatch_GrpcRouteMatchOptions { 1075 if x != nil { 1076 return x.Grpc 1077 } 1078 return nil 1079} 1080 1081func (x *RouteMatch) GetTlsContext() *RouteMatch_TlsContextMatchOptions { 1082 if x != nil { 1083 return x.TlsContext 1084 } 1085 return nil 1086} 1087 1088type isRouteMatch_PathSpecifier interface { 1089 isRouteMatch_PathSpecifier() 1090} 1091 1092type RouteMatch_Prefix struct { 1093 // If specified, the route is a prefix rule meaning that the prefix must 1094 // match the beginning of the *:path* header. 1095 Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3,oneof"` 1096} 1097 1098type RouteMatch_Path struct { 1099 // If specified, the route is an exact path rule meaning that the path must 1100 // exactly match the *:path* header once the query string is removed. 1101 Path string `protobuf:"bytes,2,opt,name=path,proto3,oneof"` 1102} 1103 1104type RouteMatch_Regex struct { 1105 // If specified, the route is a regular expression rule meaning that the 1106 // regex must match the *:path* header once the query string is removed. The entire path 1107 // (without the query string) must match the regex. The rule will not match if only a 1108 // subsequence of the *:path* header matches the regex. The regex grammar is defined `here 1109 // <https://en.cppreference.com/w/cpp/regex/ecmascript>`_. 1110 // 1111 // Examples: 1112 // 1113 // * The regex ``/b[io]t`` matches the path */bit* 1114 // * The regex ``/b[io]t`` matches the path */bot* 1115 // * The regex ``/b[io]t`` does not match the path */bite* 1116 // * The regex ``/b[io]t`` does not match the path */bit/bot* 1117 // 1118 // .. attention:: 1119 // This field has been deprecated in favor of `safe_regex` as it is not safe for use with 1120 // untrusted input in all cases. 1121 // 1122 // Deprecated: Do not use. 1123 Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"` 1124} 1125 1126type RouteMatch_SafeRegex struct { 1127 // If specified, the route is a regular expression rule meaning that the 1128 // regex must match the *:path* header once the query string is removed. The entire path 1129 // (without the query string) must match the regex. The rule will not match if only a 1130 // subsequence of the *:path* header matches the regex. 1131 // 1132 // [#next-major-version: In the v3 API we should redo how path specification works such 1133 // that we utilize StringMatcher, and additionally have consistent options around whether we 1134 // strip query strings, do a case sensitive match, etc. In the interim it will be too disruptive 1135 // to deprecate the existing options. We should even consider whether we want to do away with 1136 // path_specifier entirely and just rely on a set of header matchers which can already match 1137 // on :path, etc. The issue with that is it is unclear how to generically deal with query string 1138 // stripping. This needs more thought.] 1139 SafeRegex *matcher.RegexMatcher `protobuf:"bytes,10,opt,name=safe_regex,json=safeRegex,proto3,oneof"` 1140} 1141 1142func (*RouteMatch_Prefix) isRouteMatch_PathSpecifier() {} 1143 1144func (*RouteMatch_Path) isRouteMatch_PathSpecifier() {} 1145 1146func (*RouteMatch_Regex) isRouteMatch_PathSpecifier() {} 1147 1148func (*RouteMatch_SafeRegex) isRouteMatch_PathSpecifier() {} 1149 1150// [#next-free-field: 12] 1151type CorsPolicy struct { 1152 state protoimpl.MessageState 1153 sizeCache protoimpl.SizeCache 1154 unknownFields protoimpl.UnknownFields 1155 1156 // Specifies the origins that will be allowed to do CORS requests. 1157 // 1158 // An origin is allowed if either allow_origin or allow_origin_regex match. 1159 // 1160 // .. attention:: 1161 // This field has been deprecated in favor of `allow_origin_string_match`. 1162 // 1163 // Deprecated: Do not use. 1164 AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"` 1165 // Specifies regex patterns that match allowed origins. 1166 // 1167 // An origin is allowed if either allow_origin or allow_origin_regex match. 1168 // 1169 // .. attention:: 1170 // This field has been deprecated in favor of `allow_origin_string_match` as it is not safe for 1171 // use with untrusted input in all cases. 1172 // 1173 // Deprecated: Do not use. 1174 AllowOriginRegex []string `protobuf:"bytes,8,rep,name=allow_origin_regex,json=allowOriginRegex,proto3" json:"allow_origin_regex,omitempty"` 1175 // Specifies string patterns that match allowed origins. An origin is allowed if any of the 1176 // string matchers match. 1177 AllowOriginStringMatch []*matcher.StringMatcher `protobuf:"bytes,11,rep,name=allow_origin_string_match,json=allowOriginStringMatch,proto3" json:"allow_origin_string_match,omitempty"` 1178 // Specifies the content for the *access-control-allow-methods* header. 1179 AllowMethods string `protobuf:"bytes,2,opt,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"` 1180 // Specifies the content for the *access-control-allow-headers* header. 1181 AllowHeaders string `protobuf:"bytes,3,opt,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"` 1182 // Specifies the content for the *access-control-expose-headers* header. 1183 ExposeHeaders string `protobuf:"bytes,4,opt,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"` 1184 // Specifies the content for the *access-control-max-age* header. 1185 MaxAge string `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"` 1186 // Specifies whether the resource allows credentials. 1187 AllowCredentials *wrappers.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"` 1188 // Types that are assignable to EnabledSpecifier: 1189 // *CorsPolicy_Enabled 1190 // *CorsPolicy_FilterEnabled 1191 EnabledSpecifier isCorsPolicy_EnabledSpecifier `protobuf_oneof:"enabled_specifier"` 1192 // Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not 1193 // enforced. 1194 // 1195 // This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those 1196 // fields have to explicitly disable the filter in order for this setting to take effect. 1197 // 1198 // If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is specified, 1199 // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate 1200 // and track the request's *Origin* to determine if it's valid but will not enforce any policies. 1201 ShadowEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"` 1202} 1203 1204func (x *CorsPolicy) Reset() { 1205 *x = CorsPolicy{} 1206 if protoimpl.UnsafeEnabled { 1207 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[5] 1208 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1209 ms.StoreMessageInfo(mi) 1210 } 1211} 1212 1213func (x *CorsPolicy) String() string { 1214 return protoimpl.X.MessageStringOf(x) 1215} 1216 1217func (*CorsPolicy) ProtoMessage() {} 1218 1219func (x *CorsPolicy) ProtoReflect() protoreflect.Message { 1220 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[5] 1221 if protoimpl.UnsafeEnabled && x != nil { 1222 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1223 if ms.LoadMessageInfo() == nil { 1224 ms.StoreMessageInfo(mi) 1225 } 1226 return ms 1227 } 1228 return mi.MessageOf(x) 1229} 1230 1231// Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead. 1232func (*CorsPolicy) Descriptor() ([]byte, []int) { 1233 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{5} 1234} 1235 1236// Deprecated: Do not use. 1237func (x *CorsPolicy) GetAllowOrigin() []string { 1238 if x != nil { 1239 return x.AllowOrigin 1240 } 1241 return nil 1242} 1243 1244// Deprecated: Do not use. 1245func (x *CorsPolicy) GetAllowOriginRegex() []string { 1246 if x != nil { 1247 return x.AllowOriginRegex 1248 } 1249 return nil 1250} 1251 1252func (x *CorsPolicy) GetAllowOriginStringMatch() []*matcher.StringMatcher { 1253 if x != nil { 1254 return x.AllowOriginStringMatch 1255 } 1256 return nil 1257} 1258 1259func (x *CorsPolicy) GetAllowMethods() string { 1260 if x != nil { 1261 return x.AllowMethods 1262 } 1263 return "" 1264} 1265 1266func (x *CorsPolicy) GetAllowHeaders() string { 1267 if x != nil { 1268 return x.AllowHeaders 1269 } 1270 return "" 1271} 1272 1273func (x *CorsPolicy) GetExposeHeaders() string { 1274 if x != nil { 1275 return x.ExposeHeaders 1276 } 1277 return "" 1278} 1279 1280func (x *CorsPolicy) GetMaxAge() string { 1281 if x != nil { 1282 return x.MaxAge 1283 } 1284 return "" 1285} 1286 1287func (x *CorsPolicy) GetAllowCredentials() *wrappers.BoolValue { 1288 if x != nil { 1289 return x.AllowCredentials 1290 } 1291 return nil 1292} 1293 1294func (m *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier { 1295 if m != nil { 1296 return m.EnabledSpecifier 1297 } 1298 return nil 1299} 1300 1301// Deprecated: Do not use. 1302func (x *CorsPolicy) GetEnabled() *wrappers.BoolValue { 1303 if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_Enabled); ok { 1304 return x.Enabled 1305 } 1306 return nil 1307} 1308 1309func (x *CorsPolicy) GetFilterEnabled() *core.RuntimeFractionalPercent { 1310 if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_FilterEnabled); ok { 1311 return x.FilterEnabled 1312 } 1313 return nil 1314} 1315 1316func (x *CorsPolicy) GetShadowEnabled() *core.RuntimeFractionalPercent { 1317 if x != nil { 1318 return x.ShadowEnabled 1319 } 1320 return nil 1321} 1322 1323type isCorsPolicy_EnabledSpecifier interface { 1324 isCorsPolicy_EnabledSpecifier() 1325} 1326 1327type CorsPolicy_Enabled struct { 1328 // Specifies if the CORS filter is enabled. Defaults to true. Only effective on route. 1329 // 1330 // .. attention:: 1331 // 1332 // **This field is deprecated**. Set the 1333 // :ref:`filter_enabled<envoy_api_field_route.CorsPolicy.filter_enabled>` field instead. 1334 // 1335 // Deprecated: Do not use. 1336 Enabled *wrappers.BoolValue `protobuf:"bytes,7,opt,name=enabled,proto3,oneof"` 1337} 1338 1339type CorsPolicy_FilterEnabled struct { 1340 // Specifies the % of requests for which the CORS filter is enabled. 1341 // 1342 // If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS 1343 // filter will be enabled for 100% of the requests. 1344 // 1345 // If :ref:`runtime_key <envoy_api_field_core.RuntimeFractionalPercent.runtime_key>` is 1346 // specified, Envoy will lookup the runtime key to get the percentage of requests to filter. 1347 FilterEnabled *core.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"` 1348} 1349 1350func (*CorsPolicy_Enabled) isCorsPolicy_EnabledSpecifier() {} 1351 1352func (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {} 1353 1354// [#next-free-field: 34] 1355type RouteAction struct { 1356 state protoimpl.MessageState 1357 sizeCache protoimpl.SizeCache 1358 unknownFields protoimpl.UnknownFields 1359 1360 // Types that are assignable to ClusterSpecifier: 1361 // *RouteAction_Cluster 1362 // *RouteAction_ClusterHeader 1363 // *RouteAction_WeightedClusters 1364 ClusterSpecifier isRouteAction_ClusterSpecifier `protobuf_oneof:"cluster_specifier"` 1365 // The HTTP status code to use when configured cluster is not found. 1366 // The default response code is 503 Service Unavailable. 1367 ClusterNotFoundResponseCode RouteAction_ClusterNotFoundResponseCode `protobuf:"varint,20,opt,name=cluster_not_found_response_code,json=clusterNotFoundResponseCode,proto3,enum=envoy.api.v2.route.RouteAction_ClusterNotFoundResponseCode" json:"cluster_not_found_response_code,omitempty"` 1368 // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints 1369 // in the upstream cluster with metadata matching what's set in this field will be considered 1370 // for load balancing. If using :ref:`weighted_clusters 1371 // <envoy_api_field_route.RouteAction.weighted_clusters>`, metadata will be merged, with values 1372 // provided there taking precedence. The filter name should be specified as *envoy.lb*. 1373 MetadataMatch *core.Metadata `protobuf:"bytes,4,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` 1374 // Indicates that during forwarding, the matched prefix (or path) should be 1375 // swapped with this value. This option allows application URLs to be rooted 1376 // at a different path from those exposed at the reverse proxy layer. The router filter will 1377 // place the original path before rewrite into the :ref:`x-envoy-original-path 1378 // <config_http_filters_router_x-envoy-original-path>` header. 1379 // 1380 // Only one of *prefix_rewrite* or 1381 // :ref:`regex_rewrite <envoy_api_field_route.RouteAction.regex_rewrite>` 1382 // may be specified. 1383 // 1384 // .. attention:: 1385 // 1386 // Pay careful attention to the use of trailing slashes in the 1387 // :ref:`route's match <envoy_api_field_route.Route.match>` prefix value. 1388 // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, 1389 // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single 1390 // :ref:`Route <envoy_api_msg_route.Route>`, as shown by the below config entries: 1391 // 1392 // .. code-block:: yaml 1393 // 1394 // - match: 1395 // prefix: "/prefix/" 1396 // route: 1397 // prefix_rewrite: "/" 1398 // - match: 1399 // prefix: "/prefix" 1400 // route: 1401 // prefix_rewrite: "/" 1402 // 1403 // Having above entries in the config, requests to */prefix* will be stripped to */*, while 1404 // requests to */prefix/etc* will be stripped to */etc*. 1405 PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"` 1406 // Indicates that during forwarding, portions of the path that match the 1407 // pattern should be rewritten, even allowing the substitution of capture 1408 // groups from the pattern into the new path as specified by the rewrite 1409 // substitution string. This is useful to allow application paths to be 1410 // rewritten in a way that is aware of segments with variable content like 1411 // identifiers. The router filter will place the original path as it was 1412 // before the rewrite into the :ref:`x-envoy-original-path 1413 // <config_http_filters_router_x-envoy-original-path>` header. 1414 // 1415 // Only one of :ref:`prefix_rewrite <envoy_api_field_route.RouteAction.prefix_rewrite>` 1416 // or *regex_rewrite* may be specified. 1417 // 1418 // Examples using Google's `RE2 <https://github.com/google/re2>`_ engine: 1419 // 1420 // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution 1421 // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` 1422 // into ``/v1/api/instance/foo``. 1423 // 1424 // * The pattern ``one`` paired with a substitution string of ``two`` would 1425 // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. 1426 // 1427 // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of 1428 // ``\1two\2`` would replace only the first occurrence of ``one``, 1429 // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. 1430 // 1431 // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` 1432 // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to 1433 // ``/aaa/yyy/bbb``. 1434 RegexRewrite *matcher.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` 1435 // Types that are assignable to HostRewriteSpecifier: 1436 // *RouteAction_HostRewrite 1437 // *RouteAction_AutoHostRewrite 1438 // *RouteAction_AutoHostRewriteHeader 1439 HostRewriteSpecifier isRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"` 1440 // Specifies the upstream timeout for the route. If not specified, the default is 15s. This 1441 // spans between the point at which the entire downstream request (i.e. end-of-stream) has been 1442 // processed and when the upstream response has been completely processed. A value of 0 will 1443 // disable the route's timeout. 1444 // 1445 // .. note:: 1446 // 1447 // This timeout includes all retries. See also 1448 // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, 1449 // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the 1450 // :ref:`retry overview <arch_overview_http_routing_retry>`. 1451 Timeout *duration.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` 1452 // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, 1453 // although the connection manager wide :ref:`stream_idle_timeout 1454 // <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.stream_idle_timeout>` 1455 // will still apply. A value of 0 will completely disable the route's idle timeout, even if a 1456 // connection manager stream idle timeout is configured. 1457 // 1458 // The idle timeout is distinct to :ref:`timeout 1459 // <envoy_api_field_route.RouteAction.timeout>`, which provides an upper bound 1460 // on the upstream response time; :ref:`idle_timeout 1461 // <envoy_api_field_route.RouteAction.idle_timeout>` instead bounds the amount 1462 // of time the request's stream may be idle. 1463 // 1464 // After header decoding, the idle timeout will apply on downstream and 1465 // upstream request events. Each time an encode/decode event for headers or 1466 // data is processed for the stream, the timer will be reset. If the timeout 1467 // fires, the stream is terminated with a 408 Request Timeout error code if no 1468 // upstream response header has been received, otherwise a stream reset 1469 // occurs. 1470 IdleTimeout *duration.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` 1471 // Indicates that the route has a retry policy. Note that if this is set, 1472 // it'll take precedence over the virtual host level retry policy entirely 1473 // (e.g.: policies are not merged, most internal one becomes the enforced policy). 1474 RetryPolicy *RetryPolicy `protobuf:"bytes,9,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` 1475 // [#not-implemented-hide:] 1476 // Specifies the configuration for retry policy extension. Note that if this is set, it'll take 1477 // precedence over the virtual host level retry policy entirely (e.g.: policies are not merged, 1478 // most internal one becomes the enforced policy). :ref:`Retry policy <envoy_api_field_route.VirtualHost.retry_policy>` 1479 // should not be set if this field is used. 1480 RetryPolicyTypedConfig *any.Any `protobuf:"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` 1481 // Indicates that the route has a request mirroring policy. 1482 // 1483 // .. attention:: 1484 // This field has been deprecated in favor of `request_mirror_policies` which supports one or 1485 // more mirroring policies. 1486 // 1487 // Deprecated: Do not use. 1488 RequestMirrorPolicy *RouteAction_RequestMirrorPolicy `protobuf:"bytes,10,opt,name=request_mirror_policy,json=requestMirrorPolicy,proto3" json:"request_mirror_policy,omitempty"` 1489 // Indicates that the route has request mirroring policies. 1490 RequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:"bytes,30,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3" json:"request_mirror_policies,omitempty"` 1491 // Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`. 1492 Priority core.RoutingPriority `protobuf:"varint,11,opt,name=priority,proto3,enum=envoy.api.v2.core.RoutingPriority" json:"priority,omitempty"` 1493 // Specifies a set of rate limit configurations that could be applied to the 1494 // route. 1495 RateLimits []*RateLimit `protobuf:"bytes,13,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` 1496 // Specifies if the rate limit filter should include the virtual host rate 1497 // limits. By default, if the route configured rate limits, the virtual host 1498 // :ref:`rate_limits <envoy_api_field_route.VirtualHost.rate_limits>` are not applied to the 1499 // request. 1500 IncludeVhRateLimits *wrappers.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` 1501 // Specifies a list of hash policies to use for ring hash load balancing. Each 1502 // hash policy is evaluated individually and the combined result is used to 1503 // route the request. The method of combination is deterministic such that 1504 // identical lists of hash policies will produce the same hash. Since a hash 1505 // policy examines specific parts of a request, it can fail to produce a hash 1506 // (i.e. if the hashed header is not present). If (and only if) all configured 1507 // hash policies fail to generate a hash, no hash will be produced for 1508 // the route. In this case, the behavior is the same as if no hash policies 1509 // were specified (i.e. the ring hash load balancer will choose a random 1510 // backend). If a hash policy has the "terminal" attribute set to true, and 1511 // there is already a hash generated, the hash is returned immediately, 1512 // ignoring the rest of the hash policy list. 1513 HashPolicy []*RouteAction_HashPolicy `protobuf:"bytes,15,rep,name=hash_policy,json=hashPolicy,proto3" json:"hash_policy,omitempty"` 1514 // Indicates that the route has a CORS policy. 1515 Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"` 1516 // If present, and the request is a gRPC request, use the 1517 // `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, 1518 // or its default value (infinity) instead of 1519 // :ref:`timeout <envoy_api_field_route.RouteAction.timeout>`, but limit the applied timeout 1520 // to the maximum value specified here. If configured as 0, the maximum allowed timeout for 1521 // gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used 1522 // and gRPC requests time out like any other requests using 1523 // :ref:`timeout <envoy_api_field_route.RouteAction.timeout>` or its default. 1524 // This can be used to prevent unexpected upstream request timeouts due to potentially long 1525 // time gaps between gRPC request and response in gRPC streaming mode. 1526 // 1527 // .. note:: 1528 // 1529 // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes 1530 // precedence over `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, when 1531 // both are present. See also 1532 // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, 1533 // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the 1534 // :ref:`retry overview <arch_overview_http_routing_retry>`. 1535 MaxGrpcTimeout *duration.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` 1536 // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting 1537 // the provided duration from the header. This is useful in allowing Envoy to set its global 1538 // timeout to be less than that of the deadline imposed by the calling client, which makes it more 1539 // likely that Envoy will handle the timeout instead of having the call canceled by the client. 1540 // The offset will only be applied if the provided grpc_timeout is greater than the offset. This 1541 // ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning 1542 // infinity). 1543 GrpcTimeoutOffset *duration.Duration `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"` 1544 UpgradeConfigs []*RouteAction_UpgradeConfig `protobuf:"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty"` 1545 InternalRedirectAction RouteAction_InternalRedirectAction `protobuf:"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=envoy.api.v2.route.RouteAction_InternalRedirectAction" json:"internal_redirect_action,omitempty"` 1546 // An internal redirect is handled, iff the number of previous internal redirects that a 1547 // downstream request has encountered is lower than this value, and 1548 // :ref:`internal_redirect_action <envoy_api_field_route.RouteAction.internal_redirect_action>` 1549 // is set to :ref:`HANDLE_INTERNAL_REDIRECT 1550 // <envoy_api_enum_value_route.RouteAction.InternalRedirectAction.HANDLE_INTERNAL_REDIRECT>` 1551 // In the case where a downstream request is bounced among multiple routes by internal redirect, 1552 // the first route that hits this threshold, or has 1553 // :ref:`internal_redirect_action <envoy_api_field_route.RouteAction.internal_redirect_action>` 1554 // set to 1555 // :ref:`PASS_THROUGH_INTERNAL_REDIRECT 1556 // <envoy_api_enum_value_route.RouteAction.InternalRedirectAction.PASS_THROUGH_INTERNAL_REDIRECT>` 1557 // will pass the redirect back to downstream. 1558 // 1559 // If not specified, at most one redirect will be followed. 1560 MaxInternalRedirects *wrappers.UInt32Value `protobuf:"bytes,31,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` 1561 // Indicates that the route has a hedge policy. Note that if this is set, 1562 // it'll take precedence over the virtual host level hedge policy entirely 1563 // (e.g.: policies are not merged, most internal one becomes the enforced policy). 1564 HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` 1565} 1566 1567func (x *RouteAction) Reset() { 1568 *x = RouteAction{} 1569 if protoimpl.UnsafeEnabled { 1570 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[6] 1571 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1572 ms.StoreMessageInfo(mi) 1573 } 1574} 1575 1576func (x *RouteAction) String() string { 1577 return protoimpl.X.MessageStringOf(x) 1578} 1579 1580func (*RouteAction) ProtoMessage() {} 1581 1582func (x *RouteAction) ProtoReflect() protoreflect.Message { 1583 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[6] 1584 if protoimpl.UnsafeEnabled && x != nil { 1585 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1586 if ms.LoadMessageInfo() == nil { 1587 ms.StoreMessageInfo(mi) 1588 } 1589 return ms 1590 } 1591 return mi.MessageOf(x) 1592} 1593 1594// Deprecated: Use RouteAction.ProtoReflect.Descriptor instead. 1595func (*RouteAction) Descriptor() ([]byte, []int) { 1596 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6} 1597} 1598 1599func (m *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier { 1600 if m != nil { 1601 return m.ClusterSpecifier 1602 } 1603 return nil 1604} 1605 1606func (x *RouteAction) GetCluster() string { 1607 if x, ok := x.GetClusterSpecifier().(*RouteAction_Cluster); ok { 1608 return x.Cluster 1609 } 1610 return "" 1611} 1612 1613func (x *RouteAction) GetClusterHeader() string { 1614 if x, ok := x.GetClusterSpecifier().(*RouteAction_ClusterHeader); ok { 1615 return x.ClusterHeader 1616 } 1617 return "" 1618} 1619 1620func (x *RouteAction) GetWeightedClusters() *WeightedCluster { 1621 if x, ok := x.GetClusterSpecifier().(*RouteAction_WeightedClusters); ok { 1622 return x.WeightedClusters 1623 } 1624 return nil 1625} 1626 1627func (x *RouteAction) GetClusterNotFoundResponseCode() RouteAction_ClusterNotFoundResponseCode { 1628 if x != nil { 1629 return x.ClusterNotFoundResponseCode 1630 } 1631 return RouteAction_SERVICE_UNAVAILABLE 1632} 1633 1634func (x *RouteAction) GetMetadataMatch() *core.Metadata { 1635 if x != nil { 1636 return x.MetadataMatch 1637 } 1638 return nil 1639} 1640 1641func (x *RouteAction) GetPrefixRewrite() string { 1642 if x != nil { 1643 return x.PrefixRewrite 1644 } 1645 return "" 1646} 1647 1648func (x *RouteAction) GetRegexRewrite() *matcher.RegexMatchAndSubstitute { 1649 if x != nil { 1650 return x.RegexRewrite 1651 } 1652 return nil 1653} 1654 1655func (m *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier { 1656 if m != nil { 1657 return m.HostRewriteSpecifier 1658 } 1659 return nil 1660} 1661 1662func (x *RouteAction) GetHostRewrite() string { 1663 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewrite); ok { 1664 return x.HostRewrite 1665 } 1666 return "" 1667} 1668 1669func (x *RouteAction) GetAutoHostRewrite() *wrappers.BoolValue { 1670 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewrite); ok { 1671 return x.AutoHostRewrite 1672 } 1673 return nil 1674} 1675 1676func (x *RouteAction) GetAutoHostRewriteHeader() string { 1677 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewriteHeader); ok { 1678 return x.AutoHostRewriteHeader 1679 } 1680 return "" 1681} 1682 1683func (x *RouteAction) GetTimeout() *duration.Duration { 1684 if x != nil { 1685 return x.Timeout 1686 } 1687 return nil 1688} 1689 1690func (x *RouteAction) GetIdleTimeout() *duration.Duration { 1691 if x != nil { 1692 return x.IdleTimeout 1693 } 1694 return nil 1695} 1696 1697func (x *RouteAction) GetRetryPolicy() *RetryPolicy { 1698 if x != nil { 1699 return x.RetryPolicy 1700 } 1701 return nil 1702} 1703 1704func (x *RouteAction) GetRetryPolicyTypedConfig() *any.Any { 1705 if x != nil { 1706 return x.RetryPolicyTypedConfig 1707 } 1708 return nil 1709} 1710 1711// Deprecated: Do not use. 1712func (x *RouteAction) GetRequestMirrorPolicy() *RouteAction_RequestMirrorPolicy { 1713 if x != nil { 1714 return x.RequestMirrorPolicy 1715 } 1716 return nil 1717} 1718 1719func (x *RouteAction) GetRequestMirrorPolicies() []*RouteAction_RequestMirrorPolicy { 1720 if x != nil { 1721 return x.RequestMirrorPolicies 1722 } 1723 return nil 1724} 1725 1726func (x *RouteAction) GetPriority() core.RoutingPriority { 1727 if x != nil { 1728 return x.Priority 1729 } 1730 return core.RoutingPriority_DEFAULT 1731} 1732 1733func (x *RouteAction) GetRateLimits() []*RateLimit { 1734 if x != nil { 1735 return x.RateLimits 1736 } 1737 return nil 1738} 1739 1740func (x *RouteAction) GetIncludeVhRateLimits() *wrappers.BoolValue { 1741 if x != nil { 1742 return x.IncludeVhRateLimits 1743 } 1744 return nil 1745} 1746 1747func (x *RouteAction) GetHashPolicy() []*RouteAction_HashPolicy { 1748 if x != nil { 1749 return x.HashPolicy 1750 } 1751 return nil 1752} 1753 1754func (x *RouteAction) GetCors() *CorsPolicy { 1755 if x != nil { 1756 return x.Cors 1757 } 1758 return nil 1759} 1760 1761func (x *RouteAction) GetMaxGrpcTimeout() *duration.Duration { 1762 if x != nil { 1763 return x.MaxGrpcTimeout 1764 } 1765 return nil 1766} 1767 1768func (x *RouteAction) GetGrpcTimeoutOffset() *duration.Duration { 1769 if x != nil { 1770 return x.GrpcTimeoutOffset 1771 } 1772 return nil 1773} 1774 1775func (x *RouteAction) GetUpgradeConfigs() []*RouteAction_UpgradeConfig { 1776 if x != nil { 1777 return x.UpgradeConfigs 1778 } 1779 return nil 1780} 1781 1782func (x *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAction { 1783 if x != nil { 1784 return x.InternalRedirectAction 1785 } 1786 return RouteAction_PASS_THROUGH_INTERNAL_REDIRECT 1787} 1788 1789func (x *RouteAction) GetMaxInternalRedirects() *wrappers.UInt32Value { 1790 if x != nil { 1791 return x.MaxInternalRedirects 1792 } 1793 return nil 1794} 1795 1796func (x *RouteAction) GetHedgePolicy() *HedgePolicy { 1797 if x != nil { 1798 return x.HedgePolicy 1799 } 1800 return nil 1801} 1802 1803type isRouteAction_ClusterSpecifier interface { 1804 isRouteAction_ClusterSpecifier() 1805} 1806 1807type RouteAction_Cluster struct { 1808 // Indicates the upstream cluster to which the request should be routed 1809 // to. 1810 Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3,oneof"` 1811} 1812 1813type RouteAction_ClusterHeader struct { 1814 // Envoy will determine the cluster to route to by reading the value of the 1815 // HTTP header named by cluster_header from the request headers. If the 1816 // header is not found or the referenced cluster does not exist, Envoy will 1817 // return a 404 response. 1818 // 1819 // .. attention:: 1820 // 1821 // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 1822 // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. 1823 // 1824 // .. note:: 1825 // 1826 // If the header appears multiple times only the first value is used. 1827 ClusterHeader string `protobuf:"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof"` 1828} 1829 1830type RouteAction_WeightedClusters struct { 1831 // Multiple upstream clusters can be specified for a given route. The 1832 // request is routed to one of the upstream clusters based on weights 1833 // assigned to each cluster. See 1834 // :ref:`traffic splitting <config_http_conn_man_route_table_traffic_splitting_split>` 1835 // for additional documentation. 1836 WeightedClusters *WeightedCluster `protobuf:"bytes,3,opt,name=weighted_clusters,json=weightedClusters,proto3,oneof"` 1837} 1838 1839func (*RouteAction_Cluster) isRouteAction_ClusterSpecifier() {} 1840 1841func (*RouteAction_ClusterHeader) isRouteAction_ClusterSpecifier() {} 1842 1843func (*RouteAction_WeightedClusters) isRouteAction_ClusterSpecifier() {} 1844 1845type isRouteAction_HostRewriteSpecifier interface { 1846 isRouteAction_HostRewriteSpecifier() 1847} 1848 1849type RouteAction_HostRewrite struct { 1850 // Indicates that during forwarding, the host header will be swapped with 1851 // this value. 1852 HostRewrite string `protobuf:"bytes,6,opt,name=host_rewrite,json=hostRewrite,proto3,oneof"` 1853} 1854 1855type RouteAction_AutoHostRewrite struct { 1856 // Indicates that during forwarding, the host header will be swapped with 1857 // the hostname of the upstream host chosen by the cluster manager. This 1858 // option is applicable only when the destination cluster for a route is of 1859 // type *strict_dns* or *logical_dns*. Setting this to true with other cluster 1860 // types has no effect. 1861 AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` 1862} 1863 1864type RouteAction_AutoHostRewriteHeader struct { 1865 // Indicates that during forwarding, the host header will be swapped with the content of given 1866 // downstream or :ref:`custom <config_http_conn_man_headers_custom_request_headers>` header. 1867 // If header value is empty, host header is left intact. 1868 // 1869 // .. attention:: 1870 // 1871 // Pay attention to the potential security implications of using this option. Provided header 1872 // must come from trusted source. 1873 // 1874 // .. note:: 1875 // 1876 // If the header appears multiple times only the first value is used. 1877 AutoHostRewriteHeader string `protobuf:"bytes,29,opt,name=auto_host_rewrite_header,json=autoHostRewriteHeader,proto3,oneof"` 1878} 1879 1880func (*RouteAction_HostRewrite) isRouteAction_HostRewriteSpecifier() {} 1881 1882func (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {} 1883 1884func (*RouteAction_AutoHostRewriteHeader) isRouteAction_HostRewriteSpecifier() {} 1885 1886// HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`. 1887// [#next-free-field: 11] 1888type RetryPolicy struct { 1889 state protoimpl.MessageState 1890 sizeCache protoimpl.SizeCache 1891 unknownFields protoimpl.UnknownFields 1892 1893 // Specifies the conditions under which retry takes place. These are the same 1894 // conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and 1895 // :ref:`config_http_filters_router_x-envoy-retry-grpc-on`. 1896 RetryOn string `protobuf:"bytes,1,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"` 1897 // Specifies the allowed number of retries. This parameter is optional and 1898 // defaults to 1. These are the same conditions documented for 1899 // :ref:`config_http_filters_router_x-envoy-max-retries`. 1900 NumRetries *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` 1901 // Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. The 1902 // same conditions documented for 1903 // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. 1904 // 1905 // .. note:: 1906 // 1907 // If left unspecified, Envoy will use the global 1908 // :ref:`route timeout <envoy_api_field_route.RouteAction.timeout>` for the request. 1909 // Consequently, when using a :ref:`5xx <config_http_filters_router_x-envoy-retry-on>` based 1910 // retry policy, a request that times out will not be retried as the total timeout budget 1911 // would have been exhausted. 1912 PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` 1913 // Specifies an implementation of a RetryPriority which is used to determine the 1914 // distribution of load across priorities used for retries. Refer to 1915 // :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more details. 1916 RetryPriority *RetryPolicy_RetryPriority `protobuf:"bytes,4,opt,name=retry_priority,json=retryPriority,proto3" json:"retry_priority,omitempty"` 1917 // Specifies a collection of RetryHostPredicates that will be consulted when selecting a host 1918 // for retries. If any of the predicates reject the host, host selection will be reattempted. 1919 // Refer to :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more 1920 // details. 1921 RetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3" json:"retry_host_predicate,omitempty"` 1922 // The maximum number of times host selection will be reattempted before giving up, at which 1923 // point the host that was last selected will be routed to. If unspecified, this will default to 1924 // retrying once. 1925 HostSelectionRetryMaxAttempts int64 `protobuf:"varint,6,opt,name=host_selection_retry_max_attempts,json=hostSelectionRetryMaxAttempts,proto3" json:"host_selection_retry_max_attempts,omitempty"` 1926 // HTTP status codes that should trigger a retry in addition to those specified by retry_on. 1927 RetriableStatusCodes []uint32 `protobuf:"varint,7,rep,packed,name=retriable_status_codes,json=retriableStatusCodes,proto3" json:"retriable_status_codes,omitempty"` 1928 // Specifies parameters that control retry back off. This parameter is optional, in which case the 1929 // default base interval is 25 milliseconds or, if set, the current value of the 1930 // `upstream.base_retry_backoff_ms` runtime parameter. The default maximum interval is 10 times 1931 // the base interval. The documentation for :ref:`config_http_filters_router_x-envoy-max-retries` 1932 // describes Envoy's back-off algorithm. 1933 RetryBackOff *RetryPolicy_RetryBackOff `protobuf:"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` 1934 // HTTP response headers that trigger a retry if present in the response. A retry will be 1935 // triggered if any of the header matches match the upstream response headers. 1936 // The field is only consulted if 'retriable-headers' retry policy is active. 1937 RetriableHeaders []*HeaderMatcher `protobuf:"bytes,9,rep,name=retriable_headers,json=retriableHeaders,proto3" json:"retriable_headers,omitempty"` 1938 // HTTP headers which must be present in the request for retries to be attempted. 1939 RetriableRequestHeaders []*HeaderMatcher `protobuf:"bytes,10,rep,name=retriable_request_headers,json=retriableRequestHeaders,proto3" json:"retriable_request_headers,omitempty"` 1940} 1941 1942func (x *RetryPolicy) Reset() { 1943 *x = RetryPolicy{} 1944 if protoimpl.UnsafeEnabled { 1945 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[7] 1946 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1947 ms.StoreMessageInfo(mi) 1948 } 1949} 1950 1951func (x *RetryPolicy) String() string { 1952 return protoimpl.X.MessageStringOf(x) 1953} 1954 1955func (*RetryPolicy) ProtoMessage() {} 1956 1957func (x *RetryPolicy) ProtoReflect() protoreflect.Message { 1958 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[7] 1959 if protoimpl.UnsafeEnabled && x != nil { 1960 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1961 if ms.LoadMessageInfo() == nil { 1962 ms.StoreMessageInfo(mi) 1963 } 1964 return ms 1965 } 1966 return mi.MessageOf(x) 1967} 1968 1969// Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. 1970func (*RetryPolicy) Descriptor() ([]byte, []int) { 1971 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7} 1972} 1973 1974func (x *RetryPolicy) GetRetryOn() string { 1975 if x != nil { 1976 return x.RetryOn 1977 } 1978 return "" 1979} 1980 1981func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value { 1982 if x != nil { 1983 return x.NumRetries 1984 } 1985 return nil 1986} 1987 1988func (x *RetryPolicy) GetPerTryTimeout() *duration.Duration { 1989 if x != nil { 1990 return x.PerTryTimeout 1991 } 1992 return nil 1993} 1994 1995func (x *RetryPolicy) GetRetryPriority() *RetryPolicy_RetryPriority { 1996 if x != nil { 1997 return x.RetryPriority 1998 } 1999 return nil 2000} 2001 2002func (x *RetryPolicy) GetRetryHostPredicate() []*RetryPolicy_RetryHostPredicate { 2003 if x != nil { 2004 return x.RetryHostPredicate 2005 } 2006 return nil 2007} 2008 2009func (x *RetryPolicy) GetHostSelectionRetryMaxAttempts() int64 { 2010 if x != nil { 2011 return x.HostSelectionRetryMaxAttempts 2012 } 2013 return 0 2014} 2015 2016func (x *RetryPolicy) GetRetriableStatusCodes() []uint32 { 2017 if x != nil { 2018 return x.RetriableStatusCodes 2019 } 2020 return nil 2021} 2022 2023func (x *RetryPolicy) GetRetryBackOff() *RetryPolicy_RetryBackOff { 2024 if x != nil { 2025 return x.RetryBackOff 2026 } 2027 return nil 2028} 2029 2030func (x *RetryPolicy) GetRetriableHeaders() []*HeaderMatcher { 2031 if x != nil { 2032 return x.RetriableHeaders 2033 } 2034 return nil 2035} 2036 2037func (x *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher { 2038 if x != nil { 2039 return x.RetriableRequestHeaders 2040 } 2041 return nil 2042} 2043 2044// HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`. 2045type HedgePolicy struct { 2046 state protoimpl.MessageState 2047 sizeCache protoimpl.SizeCache 2048 unknownFields protoimpl.UnknownFields 2049 2050 // Specifies the number of initial requests that should be sent upstream. 2051 // Must be at least 1. 2052 // Defaults to 1. 2053 // [#not-implemented-hide:] 2054 InitialRequests *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"` 2055 // Specifies a probability that an additional upstream request should be sent 2056 // on top of what is specified by initial_requests. 2057 // Defaults to 0. 2058 // [#not-implemented-hide:] 2059 AdditionalRequestChance *_type.FractionalPercent `protobuf:"bytes,2,opt,name=additional_request_chance,json=additionalRequestChance,proto3" json:"additional_request_chance,omitempty"` 2060 // Indicates that a hedged request should be sent when the per-try timeout is hit. 2061 // This means that a retry will be issued without resetting the original request, leaving multiple upstream requests in flight. 2062 // The first request to complete successfully will be the one returned to the caller. 2063 // 2064 // * At any time, a successful response (i.e. not triggering any of the retry-on conditions) would be returned to the client. 2065 // * Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned ot the client 2066 // if there are no more retries left. 2067 // * After per-try timeout, an error response would be discarded, as a retry in the form of a hedged request is already in progress. 2068 // 2069 // Note: For this to have effect, you must have a :ref:`RetryPolicy <envoy_api_msg_route.RetryPolicy>` that retries at least 2070 // one error code and specifies a maximum number of retries. 2071 // 2072 // Defaults to false. 2073 HedgeOnPerTryTimeout bool `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"` 2074} 2075 2076func (x *HedgePolicy) Reset() { 2077 *x = HedgePolicy{} 2078 if protoimpl.UnsafeEnabled { 2079 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[8] 2080 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2081 ms.StoreMessageInfo(mi) 2082 } 2083} 2084 2085func (x *HedgePolicy) String() string { 2086 return protoimpl.X.MessageStringOf(x) 2087} 2088 2089func (*HedgePolicy) ProtoMessage() {} 2090 2091func (x *HedgePolicy) ProtoReflect() protoreflect.Message { 2092 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[8] 2093 if protoimpl.UnsafeEnabled && x != nil { 2094 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2095 if ms.LoadMessageInfo() == nil { 2096 ms.StoreMessageInfo(mi) 2097 } 2098 return ms 2099 } 2100 return mi.MessageOf(x) 2101} 2102 2103// Deprecated: Use HedgePolicy.ProtoReflect.Descriptor instead. 2104func (*HedgePolicy) Descriptor() ([]byte, []int) { 2105 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{8} 2106} 2107 2108func (x *HedgePolicy) GetInitialRequests() *wrappers.UInt32Value { 2109 if x != nil { 2110 return x.InitialRequests 2111 } 2112 return nil 2113} 2114 2115func (x *HedgePolicy) GetAdditionalRequestChance() *_type.FractionalPercent { 2116 if x != nil { 2117 return x.AdditionalRequestChance 2118 } 2119 return nil 2120} 2121 2122func (x *HedgePolicy) GetHedgeOnPerTryTimeout() bool { 2123 if x != nil { 2124 return x.HedgeOnPerTryTimeout 2125 } 2126 return false 2127} 2128 2129// [#next-free-field: 9] 2130type RedirectAction struct { 2131 state protoimpl.MessageState 2132 sizeCache protoimpl.SizeCache 2133 unknownFields protoimpl.UnknownFields 2134 2135 // When the scheme redirection take place, the following rules apply: 2136 // 1. If the source URI scheme is `http` and the port is explicitly 2137 // set to `:80`, the port will be removed after the redirection 2138 // 2. If the source URI scheme is `https` and the port is explicitly 2139 // set to `:443`, the port will be removed after the redirection 2140 // 2141 // Types that are assignable to SchemeRewriteSpecifier: 2142 // *RedirectAction_HttpsRedirect 2143 // *RedirectAction_SchemeRedirect 2144 SchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:"scheme_rewrite_specifier"` 2145 // The host portion of the URL will be swapped with this value. 2146 HostRedirect string `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"` 2147 // The port value of the URL will be swapped with this value. 2148 PortRedirect uint32 `protobuf:"varint,8,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"` 2149 // Types that are assignable to PathRewriteSpecifier: 2150 // *RedirectAction_PathRedirect 2151 // *RedirectAction_PrefixRewrite 2152 PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"` 2153 // The HTTP status code to use in the redirect response. The default response 2154 // code is MOVED_PERMANENTLY (301). 2155 ResponseCode RedirectAction_RedirectResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=envoy.api.v2.route.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"` 2156 // Indicates that during redirection, the query portion of the URL will 2157 // be removed. Default value is false. 2158 StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` 2159} 2160 2161func (x *RedirectAction) Reset() { 2162 *x = RedirectAction{} 2163 if protoimpl.UnsafeEnabled { 2164 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[9] 2165 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2166 ms.StoreMessageInfo(mi) 2167 } 2168} 2169 2170func (x *RedirectAction) String() string { 2171 return protoimpl.X.MessageStringOf(x) 2172} 2173 2174func (*RedirectAction) ProtoMessage() {} 2175 2176func (x *RedirectAction) ProtoReflect() protoreflect.Message { 2177 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[9] 2178 if protoimpl.UnsafeEnabled && x != nil { 2179 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2180 if ms.LoadMessageInfo() == nil { 2181 ms.StoreMessageInfo(mi) 2182 } 2183 return ms 2184 } 2185 return mi.MessageOf(x) 2186} 2187 2188// Deprecated: Use RedirectAction.ProtoReflect.Descriptor instead. 2189func (*RedirectAction) Descriptor() ([]byte, []int) { 2190 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{9} 2191} 2192 2193func (m *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier { 2194 if m != nil { 2195 return m.SchemeRewriteSpecifier 2196 } 2197 return nil 2198} 2199 2200func (x *RedirectAction) GetHttpsRedirect() bool { 2201 if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_HttpsRedirect); ok { 2202 return x.HttpsRedirect 2203 } 2204 return false 2205} 2206 2207func (x *RedirectAction) GetSchemeRedirect() string { 2208 if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_SchemeRedirect); ok { 2209 return x.SchemeRedirect 2210 } 2211 return "" 2212} 2213 2214func (x *RedirectAction) GetHostRedirect() string { 2215 if x != nil { 2216 return x.HostRedirect 2217 } 2218 return "" 2219} 2220 2221func (x *RedirectAction) GetPortRedirect() uint32 { 2222 if x != nil { 2223 return x.PortRedirect 2224 } 2225 return 0 2226} 2227 2228func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { 2229 if m != nil { 2230 return m.PathRewriteSpecifier 2231 } 2232 return nil 2233} 2234 2235func (x *RedirectAction) GetPathRedirect() string { 2236 if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok { 2237 return x.PathRedirect 2238 } 2239 return "" 2240} 2241 2242func (x *RedirectAction) GetPrefixRewrite() string { 2243 if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok { 2244 return x.PrefixRewrite 2245 } 2246 return "" 2247} 2248 2249func (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode { 2250 if x != nil { 2251 return x.ResponseCode 2252 } 2253 return RedirectAction_MOVED_PERMANENTLY 2254} 2255 2256func (x *RedirectAction) GetStripQuery() bool { 2257 if x != nil { 2258 return x.StripQuery 2259 } 2260 return false 2261} 2262 2263type isRedirectAction_SchemeRewriteSpecifier interface { 2264 isRedirectAction_SchemeRewriteSpecifier() 2265} 2266 2267type RedirectAction_HttpsRedirect struct { 2268 // The scheme portion of the URL will be swapped with "https". 2269 HttpsRedirect bool `protobuf:"varint,4,opt,name=https_redirect,json=httpsRedirect,proto3,oneof"` 2270} 2271 2272type RedirectAction_SchemeRedirect struct { 2273 // The scheme portion of the URL will be swapped with this value. 2274 SchemeRedirect string `protobuf:"bytes,7,opt,name=scheme_redirect,json=schemeRedirect,proto3,oneof"` 2275} 2276 2277func (*RedirectAction_HttpsRedirect) isRedirectAction_SchemeRewriteSpecifier() {} 2278 2279func (*RedirectAction_SchemeRedirect) isRedirectAction_SchemeRewriteSpecifier() {} 2280 2281type isRedirectAction_PathRewriteSpecifier interface { 2282 isRedirectAction_PathRewriteSpecifier() 2283} 2284 2285type RedirectAction_PathRedirect struct { 2286 // The path portion of the URL will be swapped with this value. 2287 // Please note that query string in path_redirect will override the 2288 // request's query string and will not be stripped. 2289 // 2290 // For example, let's say we have the following routes: 2291 // 2292 // - match: { path: "/old-path-1" } 2293 // redirect: { path_redirect: "/new-path-1" } 2294 // - match: { path: "/old-path-2" } 2295 // redirect: { path_redirect: "/new-path-2", strip-query: "true" } 2296 // - match: { path: "/old-path-3" } 2297 // redirect: { path_redirect: "/new-path-3?foo=1", strip_query: "true" } 2298 // 2299 // 1. if request uri is "/old-path-1?bar=1", users will be redirected to "/new-path-1?bar=1" 2300 // 2. if request uri is "/old-path-2?bar=1", users will be redirected to "/new-path-2" 2301 // 3. if request uri is "/old-path-3?bar=1", users will be redirected to "/new-path-3?foo=1" 2302 PathRedirect string `protobuf:"bytes,2,opt,name=path_redirect,json=pathRedirect,proto3,oneof"` 2303} 2304 2305type RedirectAction_PrefixRewrite struct { 2306 // Indicates that during redirection, the matched prefix (or path) 2307 // should be swapped with this value. This option allows redirect URLs be dynamically created 2308 // based on the request. 2309 // 2310 // .. attention:: 2311 // 2312 // Pay attention to the use of trailing slashes as mentioned in 2313 // :ref:`RouteAction's prefix_rewrite <envoy_api_field_route.RouteAction.prefix_rewrite>`. 2314 PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"` 2315} 2316 2317func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {} 2318 2319func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {} 2320 2321type DirectResponseAction struct { 2322 state protoimpl.MessageState 2323 sizeCache protoimpl.SizeCache 2324 unknownFields protoimpl.UnknownFields 2325 2326 // Specifies the HTTP response status to be returned. 2327 Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` 2328 // Specifies the content of the response body. If this setting is omitted, 2329 // no body is included in the generated response. 2330 // 2331 // .. note:: 2332 // 2333 // Headers can be specified using *response_headers_to_add* in the enclosing 2334 // :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_RouteConfiguration` or 2335 // :ref:`envoy_api_msg_route.VirtualHost`. 2336 Body *core.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` 2337} 2338 2339func (x *DirectResponseAction) Reset() { 2340 *x = DirectResponseAction{} 2341 if protoimpl.UnsafeEnabled { 2342 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[10] 2343 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2344 ms.StoreMessageInfo(mi) 2345 } 2346} 2347 2348func (x *DirectResponseAction) String() string { 2349 return protoimpl.X.MessageStringOf(x) 2350} 2351 2352func (*DirectResponseAction) ProtoMessage() {} 2353 2354func (x *DirectResponseAction) ProtoReflect() protoreflect.Message { 2355 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[10] 2356 if protoimpl.UnsafeEnabled && x != nil { 2357 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2358 if ms.LoadMessageInfo() == nil { 2359 ms.StoreMessageInfo(mi) 2360 } 2361 return ms 2362 } 2363 return mi.MessageOf(x) 2364} 2365 2366// Deprecated: Use DirectResponseAction.ProtoReflect.Descriptor instead. 2367func (*DirectResponseAction) Descriptor() ([]byte, []int) { 2368 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{10} 2369} 2370 2371func (x *DirectResponseAction) GetStatus() uint32 { 2372 if x != nil { 2373 return x.Status 2374 } 2375 return 0 2376} 2377 2378func (x *DirectResponseAction) GetBody() *core.DataSource { 2379 if x != nil { 2380 return x.Body 2381 } 2382 return nil 2383} 2384 2385type Decorator struct { 2386 state protoimpl.MessageState 2387 sizeCache protoimpl.SizeCache 2388 unknownFields protoimpl.UnknownFields 2389 2390 // The operation name associated with the request matched to this route. If tracing is 2391 // enabled, this information will be used as the span name reported for this request. 2392 // 2393 // .. note:: 2394 // 2395 // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden 2396 // by the :ref:`x-envoy-decorator-operation 2397 // <config_http_filters_router_x-envoy-decorator-operation>` header. 2398 Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` 2399 // Whether the decorated details should be propagated to the other party. The default is true. 2400 Propagate *wrappers.BoolValue `protobuf:"bytes,2,opt,name=propagate,proto3" json:"propagate,omitempty"` 2401} 2402 2403func (x *Decorator) Reset() { 2404 *x = Decorator{} 2405 if protoimpl.UnsafeEnabled { 2406 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[11] 2407 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2408 ms.StoreMessageInfo(mi) 2409 } 2410} 2411 2412func (x *Decorator) String() string { 2413 return protoimpl.X.MessageStringOf(x) 2414} 2415 2416func (*Decorator) ProtoMessage() {} 2417 2418func (x *Decorator) ProtoReflect() protoreflect.Message { 2419 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[11] 2420 if protoimpl.UnsafeEnabled && x != nil { 2421 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2422 if ms.LoadMessageInfo() == nil { 2423 ms.StoreMessageInfo(mi) 2424 } 2425 return ms 2426 } 2427 return mi.MessageOf(x) 2428} 2429 2430// Deprecated: Use Decorator.ProtoReflect.Descriptor instead. 2431func (*Decorator) Descriptor() ([]byte, []int) { 2432 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{11} 2433} 2434 2435func (x *Decorator) GetOperation() string { 2436 if x != nil { 2437 return x.Operation 2438 } 2439 return "" 2440} 2441 2442func (x *Decorator) GetPropagate() *wrappers.BoolValue { 2443 if x != nil { 2444 return x.Propagate 2445 } 2446 return nil 2447} 2448 2449type Tracing struct { 2450 state protoimpl.MessageState 2451 sizeCache protoimpl.SizeCache 2452 unknownFields protoimpl.UnknownFields 2453 2454 // Target percentage of requests managed by this HTTP connection manager that will be force 2455 // traced if the :ref:`x-client-trace-id <config_http_conn_man_headers_x-client-trace-id>` 2456 // header is set. This field is a direct analog for the runtime variable 2457 // 'tracing.client_sampling' in the :ref:`HTTP Connection Manager 2458 // <config_http_conn_man_runtime>`. 2459 // Default: 100% 2460 ClientSampling *_type.FractionalPercent `protobuf:"bytes,1,opt,name=client_sampling,json=clientSampling,proto3" json:"client_sampling,omitempty"` 2461 // Target percentage of requests managed by this HTTP connection manager that will be randomly 2462 // selected for trace generation, if not requested by the client or not forced. This field is 2463 // a direct analog for the runtime variable 'tracing.random_sampling' in the 2464 // :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`. 2465 // Default: 100% 2466 RandomSampling *_type.FractionalPercent `protobuf:"bytes,2,opt,name=random_sampling,json=randomSampling,proto3" json:"random_sampling,omitempty"` 2467 // Target percentage of requests managed by this HTTP connection manager that will be traced 2468 // after all other sampling checks have been applied (client-directed, force tracing, random 2469 // sampling). This field functions as an upper limit on the total configured sampling rate. For 2470 // instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1% 2471 // of client requests with the appropriate headers to be force traced. This field is a direct 2472 // analog for the runtime variable 'tracing.global_enabled' in the 2473 // :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`. 2474 // Default: 100% 2475 OverallSampling *_type.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"` 2476 // A list of custom tags with unique tag name to create tags for the active span. 2477 // It will take effect after merging with the :ref:`corresponding configuration 2478 // <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing.custom_tags>` 2479 // configured in the HTTP connection manager. If two tags with the same name are configured 2480 // each in the HTTP connection manager and the route level, the one configured here takes 2481 // priority. 2482 CustomTags []*v2.CustomTag `protobuf:"bytes,4,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty"` 2483} 2484 2485func (x *Tracing) Reset() { 2486 *x = Tracing{} 2487 if protoimpl.UnsafeEnabled { 2488 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[12] 2489 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2490 ms.StoreMessageInfo(mi) 2491 } 2492} 2493 2494func (x *Tracing) String() string { 2495 return protoimpl.X.MessageStringOf(x) 2496} 2497 2498func (*Tracing) ProtoMessage() {} 2499 2500func (x *Tracing) ProtoReflect() protoreflect.Message { 2501 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[12] 2502 if protoimpl.UnsafeEnabled && x != nil { 2503 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2504 if ms.LoadMessageInfo() == nil { 2505 ms.StoreMessageInfo(mi) 2506 } 2507 return ms 2508 } 2509 return mi.MessageOf(x) 2510} 2511 2512// Deprecated: Use Tracing.ProtoReflect.Descriptor instead. 2513func (*Tracing) Descriptor() ([]byte, []int) { 2514 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{12} 2515} 2516 2517func (x *Tracing) GetClientSampling() *_type.FractionalPercent { 2518 if x != nil { 2519 return x.ClientSampling 2520 } 2521 return nil 2522} 2523 2524func (x *Tracing) GetRandomSampling() *_type.FractionalPercent { 2525 if x != nil { 2526 return x.RandomSampling 2527 } 2528 return nil 2529} 2530 2531func (x *Tracing) GetOverallSampling() *_type.FractionalPercent { 2532 if x != nil { 2533 return x.OverallSampling 2534 } 2535 return nil 2536} 2537 2538func (x *Tracing) GetCustomTags() []*v2.CustomTag { 2539 if x != nil { 2540 return x.CustomTags 2541 } 2542 return nil 2543} 2544 2545// A virtual cluster is a way of specifying a regex matching rule against 2546// certain important endpoints such that statistics are generated explicitly for 2547// the matched requests. The reason this is useful is that when doing 2548// prefix/path matching Envoy does not always know what the application 2549// considers to be an endpoint. Thus, it’s impossible for Envoy to generically 2550// emit per endpoint statistics. However, often systems have highly critical 2551// endpoints that they wish to get “perfect” statistics on. Virtual cluster 2552// statistics are perfect in the sense that they are emitted on the downstream 2553// side such that they include network level failures. 2554// 2555// Documentation for :ref:`virtual cluster statistics <config_http_filters_router_vcluster_stats>`. 2556// 2557// .. note:: 2558// 2559// Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for 2560// every application endpoint. This is both not easily maintainable and as well the matching and 2561// statistics output are not free. 2562type VirtualCluster struct { 2563 state protoimpl.MessageState 2564 sizeCache protoimpl.SizeCache 2565 unknownFields protoimpl.UnknownFields 2566 2567 // Specifies a regex pattern to use for matching requests. The entire path of the request 2568 // must match the regex. The regex grammar used is defined `here 2569 // <https://en.cppreference.com/w/cpp/regex/ecmascript>`_. 2570 // 2571 // Examples: 2572 // 2573 // * The regex ``/rides/\d+`` matches the path */rides/0* 2574 // * The regex ``/rides/\d+`` matches the path */rides/123* 2575 // * The regex ``/rides/\d+`` does not match the path */rides/123/456* 2576 // 2577 // .. attention:: 2578 // This field has been deprecated in favor of `headers` as it is not safe for use with 2579 // untrusted input in all cases. 2580 // 2581 // Deprecated: Do not use. 2582 Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"` 2583 // Specifies a list of header matchers to use for matching requests. Each specified header must 2584 // match. The pseudo-headers `:path` and `:method` can be used to match the request path and 2585 // method, respectively. 2586 Headers []*HeaderMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"` 2587 // Specifies the name of the virtual cluster. The virtual cluster name as well 2588 // as the virtual host name are used when emitting statistics. The statistics are emitted by the 2589 // router filter and are documented :ref:`here <config_http_filters_router_stats>`. 2590 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` 2591 // Optionally specifies the HTTP method to match on. For example GET, PUT, 2592 // etc. 2593 // 2594 // .. attention:: 2595 // This field has been deprecated in favor of `headers`. 2596 // 2597 // Deprecated: Do not use. 2598 Method core.RequestMethod `protobuf:"varint,3,opt,name=method,proto3,enum=envoy.api.v2.core.RequestMethod" json:"method,omitempty"` 2599} 2600 2601func (x *VirtualCluster) Reset() { 2602 *x = VirtualCluster{} 2603 if protoimpl.UnsafeEnabled { 2604 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[13] 2605 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2606 ms.StoreMessageInfo(mi) 2607 } 2608} 2609 2610func (x *VirtualCluster) String() string { 2611 return protoimpl.X.MessageStringOf(x) 2612} 2613 2614func (*VirtualCluster) ProtoMessage() {} 2615 2616func (x *VirtualCluster) ProtoReflect() protoreflect.Message { 2617 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[13] 2618 if protoimpl.UnsafeEnabled && x != nil { 2619 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2620 if ms.LoadMessageInfo() == nil { 2621 ms.StoreMessageInfo(mi) 2622 } 2623 return ms 2624 } 2625 return mi.MessageOf(x) 2626} 2627 2628// Deprecated: Use VirtualCluster.ProtoReflect.Descriptor instead. 2629func (*VirtualCluster) Descriptor() ([]byte, []int) { 2630 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{13} 2631} 2632 2633// Deprecated: Do not use. 2634func (x *VirtualCluster) GetPattern() string { 2635 if x != nil { 2636 return x.Pattern 2637 } 2638 return "" 2639} 2640 2641func (x *VirtualCluster) GetHeaders() []*HeaderMatcher { 2642 if x != nil { 2643 return x.Headers 2644 } 2645 return nil 2646} 2647 2648func (x *VirtualCluster) GetName() string { 2649 if x != nil { 2650 return x.Name 2651 } 2652 return "" 2653} 2654 2655// Deprecated: Do not use. 2656func (x *VirtualCluster) GetMethod() core.RequestMethod { 2657 if x != nil { 2658 return x.Method 2659 } 2660 return core.RequestMethod_METHOD_UNSPECIFIED 2661} 2662 2663// Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`. 2664type RateLimit struct { 2665 state protoimpl.MessageState 2666 sizeCache protoimpl.SizeCache 2667 unknownFields protoimpl.UnknownFields 2668 2669 // Refers to the stage set in the filter. The rate limit configuration only 2670 // applies to filters with the same stage number. The default stage number is 2671 // 0. 2672 // 2673 // .. note:: 2674 // 2675 // The filter supports a range of 0 - 10 inclusively for stage numbers. 2676 Stage *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` 2677 // The key to be set in runtime to disable this rate limit configuration. 2678 DisableKey string `protobuf:"bytes,2,opt,name=disable_key,json=disableKey,proto3" json:"disable_key,omitempty"` 2679 // A list of actions that are to be applied for this rate limit configuration. 2680 // Order matters as the actions are processed sequentially and the descriptor 2681 // is composed by appending descriptor entries in that sequence. If an action 2682 // cannot append a descriptor entry, no descriptor is generated for the 2683 // configuration. See :ref:`composing actions 2684 // <config_http_filters_rate_limit_composing_actions>` for additional documentation. 2685 Actions []*RateLimit_Action `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` 2686} 2687 2688func (x *RateLimit) Reset() { 2689 *x = RateLimit{} 2690 if protoimpl.UnsafeEnabled { 2691 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[14] 2692 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2693 ms.StoreMessageInfo(mi) 2694 } 2695} 2696 2697func (x *RateLimit) String() string { 2698 return protoimpl.X.MessageStringOf(x) 2699} 2700 2701func (*RateLimit) ProtoMessage() {} 2702 2703func (x *RateLimit) ProtoReflect() protoreflect.Message { 2704 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[14] 2705 if protoimpl.UnsafeEnabled && x != nil { 2706 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2707 if ms.LoadMessageInfo() == nil { 2708 ms.StoreMessageInfo(mi) 2709 } 2710 return ms 2711 } 2712 return mi.MessageOf(x) 2713} 2714 2715// Deprecated: Use RateLimit.ProtoReflect.Descriptor instead. 2716func (*RateLimit) Descriptor() ([]byte, []int) { 2717 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14} 2718} 2719 2720func (x *RateLimit) GetStage() *wrappers.UInt32Value { 2721 if x != nil { 2722 return x.Stage 2723 } 2724 return nil 2725} 2726 2727func (x *RateLimit) GetDisableKey() string { 2728 if x != nil { 2729 return x.DisableKey 2730 } 2731 return "" 2732} 2733 2734func (x *RateLimit) GetActions() []*RateLimit_Action { 2735 if x != nil { 2736 return x.Actions 2737 } 2738 return nil 2739} 2740 2741// .. attention:: 2742// 2743// Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* 2744// header. Thus, if attempting to match on *Host*, match on *:authority* instead. 2745// 2746// .. attention:: 2747// 2748// To route on HTTP method, use the special HTTP/2 *:method* header. This works for both 2749// HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., 2750// 2751// .. code-block:: json 2752// 2753// { 2754// "name": ":method", 2755// "exact_match": "POST" 2756// } 2757// 2758// .. attention:: 2759// In the absence of any header match specifier, match will default to :ref:`present_match 2760// <envoy_api_field_route.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name 2761// <envoy_api_field_route.HeaderMatcher.name>` header will match, regardless of the header's 2762// value. 2763// 2764// [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.] 2765// [#next-free-field: 12] 2766type HeaderMatcher struct { 2767 state protoimpl.MessageState 2768 sizeCache protoimpl.SizeCache 2769 unknownFields protoimpl.UnknownFields 2770 2771 // Specifies the name of the header in the request. 2772 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 2773 // Specifies how the header match will be performed to route the request. 2774 // 2775 // Types that are assignable to HeaderMatchSpecifier: 2776 // *HeaderMatcher_ExactMatch 2777 // *HeaderMatcher_RegexMatch 2778 // *HeaderMatcher_SafeRegexMatch 2779 // *HeaderMatcher_RangeMatch 2780 // *HeaderMatcher_PresentMatch 2781 // *HeaderMatcher_PrefixMatch 2782 // *HeaderMatcher_SuffixMatch 2783 HeaderMatchSpecifier isHeaderMatcher_HeaderMatchSpecifier `protobuf_oneof:"header_match_specifier"` 2784 // If specified, the match result will be inverted before checking. Defaults to false. 2785 // 2786 // Examples: 2787 // 2788 // * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted. 2789 // * The range [-10,0) will match the value -1, so it will not match when inverted. 2790 InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` 2791} 2792 2793func (x *HeaderMatcher) Reset() { 2794 *x = HeaderMatcher{} 2795 if protoimpl.UnsafeEnabled { 2796 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[15] 2797 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2798 ms.StoreMessageInfo(mi) 2799 } 2800} 2801 2802func (x *HeaderMatcher) String() string { 2803 return protoimpl.X.MessageStringOf(x) 2804} 2805 2806func (*HeaderMatcher) ProtoMessage() {} 2807 2808func (x *HeaderMatcher) ProtoReflect() protoreflect.Message { 2809 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[15] 2810 if protoimpl.UnsafeEnabled && x != nil { 2811 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2812 if ms.LoadMessageInfo() == nil { 2813 ms.StoreMessageInfo(mi) 2814 } 2815 return ms 2816 } 2817 return mi.MessageOf(x) 2818} 2819 2820// Deprecated: Use HeaderMatcher.ProtoReflect.Descriptor instead. 2821func (*HeaderMatcher) Descriptor() ([]byte, []int) { 2822 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{15} 2823} 2824 2825func (x *HeaderMatcher) GetName() string { 2826 if x != nil { 2827 return x.Name 2828 } 2829 return "" 2830} 2831 2832func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier { 2833 if m != nil { 2834 return m.HeaderMatchSpecifier 2835 } 2836 return nil 2837} 2838 2839func (x *HeaderMatcher) GetExactMatch() string { 2840 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_ExactMatch); ok { 2841 return x.ExactMatch 2842 } 2843 return "" 2844} 2845 2846// Deprecated: Do not use. 2847func (x *HeaderMatcher) GetRegexMatch() string { 2848 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RegexMatch); ok { 2849 return x.RegexMatch 2850 } 2851 return "" 2852} 2853 2854func (x *HeaderMatcher) GetSafeRegexMatch() *matcher.RegexMatcher { 2855 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SafeRegexMatch); ok { 2856 return x.SafeRegexMatch 2857 } 2858 return nil 2859} 2860 2861func (x *HeaderMatcher) GetRangeMatch() *_type.Int64Range { 2862 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RangeMatch); ok { 2863 return x.RangeMatch 2864 } 2865 return nil 2866} 2867 2868func (x *HeaderMatcher) GetPresentMatch() bool { 2869 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PresentMatch); ok { 2870 return x.PresentMatch 2871 } 2872 return false 2873} 2874 2875func (x *HeaderMatcher) GetPrefixMatch() string { 2876 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PrefixMatch); ok { 2877 return x.PrefixMatch 2878 } 2879 return "" 2880} 2881 2882func (x *HeaderMatcher) GetSuffixMatch() string { 2883 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SuffixMatch); ok { 2884 return x.SuffixMatch 2885 } 2886 return "" 2887} 2888 2889func (x *HeaderMatcher) GetInvertMatch() bool { 2890 if x != nil { 2891 return x.InvertMatch 2892 } 2893 return false 2894} 2895 2896type isHeaderMatcher_HeaderMatchSpecifier interface { 2897 isHeaderMatcher_HeaderMatchSpecifier() 2898} 2899 2900type HeaderMatcher_ExactMatch struct { 2901 // If specified, header match will be performed based on the value of the header. 2902 ExactMatch string `protobuf:"bytes,4,opt,name=exact_match,json=exactMatch,proto3,oneof"` 2903} 2904 2905type HeaderMatcher_RegexMatch struct { 2906 // If specified, this regex string is a regular expression rule which implies the entire request 2907 // header value must match the regex. The rule will not match if only a subsequence of the 2908 // request header value matches the regex. The regex grammar used in the value field is defined 2909 // `here <https://en.cppreference.com/w/cpp/regex/ecmascript>`_. 2910 // 2911 // Examples: 2912 // 2913 // * The regex ``\d{3}`` matches the value *123* 2914 // * The regex ``\d{3}`` does not match the value *1234* 2915 // * The regex ``\d{3}`` does not match the value *123.456* 2916 // 2917 // .. attention:: 2918 // This field has been deprecated in favor of `safe_regex_match` as it is not safe for use 2919 // with untrusted input in all cases. 2920 // 2921 // Deprecated: Do not use. 2922 RegexMatch string `protobuf:"bytes,5,opt,name=regex_match,json=regexMatch,proto3,oneof"` 2923} 2924 2925type HeaderMatcher_SafeRegexMatch struct { 2926 // If specified, this regex string is a regular expression rule which implies the entire request 2927 // header value must match the regex. The rule will not match if only a subsequence of the 2928 // request header value matches the regex. 2929 SafeRegexMatch *matcher.RegexMatcher `protobuf:"bytes,11,opt,name=safe_regex_match,json=safeRegexMatch,proto3,oneof"` 2930} 2931 2932type HeaderMatcher_RangeMatch struct { 2933 // If specified, header match will be performed based on range. 2934 // The rule will match if the request header value is within this range. 2935 // The entire request header value must represent an integer in base 10 notation: consisting of 2936 // an optional plus or minus sign followed by a sequence of digits. The rule will not match if 2937 // the header value does not represent an integer. Match will fail for empty values, floating 2938 // point numbers or if only a subsequence of the header value is an integer. 2939 // 2940 // Examples: 2941 // 2942 // * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, 2943 // "-1somestring" 2944 RangeMatch *_type.Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"` 2945} 2946 2947type HeaderMatcher_PresentMatch struct { 2948 // If specified, header match will be performed based on whether the header is in the 2949 // request. 2950 PresentMatch bool `protobuf:"varint,7,opt,name=present_match,json=presentMatch,proto3,oneof"` 2951} 2952 2953type HeaderMatcher_PrefixMatch struct { 2954 // If specified, header match will be performed based on the prefix of the header value. 2955 // Note: empty prefix is not allowed, please use present_match instead. 2956 // 2957 // Examples: 2958 // 2959 // * The prefix *abcd* matches the value *abcdxyz*, but not for *abcxyz*. 2960 PrefixMatch string `protobuf:"bytes,9,opt,name=prefix_match,json=prefixMatch,proto3,oneof"` 2961} 2962 2963type HeaderMatcher_SuffixMatch struct { 2964 // If specified, header match will be performed based on the suffix of the header value. 2965 // Note: empty suffix is not allowed, please use present_match instead. 2966 // 2967 // Examples: 2968 // 2969 // * The suffix *abcd* matches the value *xyzabcd*, but not for *xyzbcd*. 2970 SuffixMatch string `protobuf:"bytes,10,opt,name=suffix_match,json=suffixMatch,proto3,oneof"` 2971} 2972 2973func (*HeaderMatcher_ExactMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2974 2975func (*HeaderMatcher_RegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2976 2977func (*HeaderMatcher_SafeRegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2978 2979func (*HeaderMatcher_RangeMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2980 2981func (*HeaderMatcher_PresentMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2982 2983func (*HeaderMatcher_PrefixMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2984 2985func (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 2986 2987// Query parameter matching treats the query string of a request's :path header 2988// as an ampersand-separated list of keys and/or key=value elements. 2989// [#next-free-field: 7] 2990type QueryParameterMatcher struct { 2991 state protoimpl.MessageState 2992 sizeCache protoimpl.SizeCache 2993 unknownFields protoimpl.UnknownFields 2994 2995 // Specifies the name of a key that must be present in the requested 2996 // *path*'s query string. 2997 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 2998 // Specifies the value of the key. If the value is absent, a request 2999 // that contains the key in its query string will match, whether the 3000 // key appears with a value (e.g., "?debug=true") or not (e.g., "?debug") 3001 // 3002 // ..attention:: 3003 // This field is deprecated. Use an `exact` match inside the `string_match` field. 3004 // 3005 // Deprecated: Do not use. 3006 Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` 3007 // Specifies whether the query parameter value is a regular expression. 3008 // Defaults to false. The entire query parameter value (i.e., the part to 3009 // the right of the equals sign in "key=value") must match the regex. 3010 // E.g., the regex ``\d+$`` will match *123* but not *a123* or *123a*. 3011 // 3012 // ..attention:: 3013 // This field is deprecated. Use a `safe_regex` match inside the `string_match` field. 3014 // 3015 // Deprecated: Do not use. 3016 Regex *wrappers.BoolValue `protobuf:"bytes,4,opt,name=regex,proto3" json:"regex,omitempty"` 3017 // Types that are assignable to QueryParameterMatchSpecifier: 3018 // *QueryParameterMatcher_StringMatch 3019 // *QueryParameterMatcher_PresentMatch 3020 QueryParameterMatchSpecifier isQueryParameterMatcher_QueryParameterMatchSpecifier `protobuf_oneof:"query_parameter_match_specifier"` 3021} 3022 3023func (x *QueryParameterMatcher) Reset() { 3024 *x = QueryParameterMatcher{} 3025 if protoimpl.UnsafeEnabled { 3026 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[16] 3027 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3028 ms.StoreMessageInfo(mi) 3029 } 3030} 3031 3032func (x *QueryParameterMatcher) String() string { 3033 return protoimpl.X.MessageStringOf(x) 3034} 3035 3036func (*QueryParameterMatcher) ProtoMessage() {} 3037 3038func (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message { 3039 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[16] 3040 if protoimpl.UnsafeEnabled && x != nil { 3041 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3042 if ms.LoadMessageInfo() == nil { 3043 ms.StoreMessageInfo(mi) 3044 } 3045 return ms 3046 } 3047 return mi.MessageOf(x) 3048} 3049 3050// Deprecated: Use QueryParameterMatcher.ProtoReflect.Descriptor instead. 3051func (*QueryParameterMatcher) Descriptor() ([]byte, []int) { 3052 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{16} 3053} 3054 3055func (x *QueryParameterMatcher) GetName() string { 3056 if x != nil { 3057 return x.Name 3058 } 3059 return "" 3060} 3061 3062// Deprecated: Do not use. 3063func (x *QueryParameterMatcher) GetValue() string { 3064 if x != nil { 3065 return x.Value 3066 } 3067 return "" 3068} 3069 3070// Deprecated: Do not use. 3071func (x *QueryParameterMatcher) GetRegex() *wrappers.BoolValue { 3072 if x != nil { 3073 return x.Regex 3074 } 3075 return nil 3076} 3077 3078func (m *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier { 3079 if m != nil { 3080 return m.QueryParameterMatchSpecifier 3081 } 3082 return nil 3083} 3084 3085func (x *QueryParameterMatcher) GetStringMatch() *matcher.StringMatcher { 3086 if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_StringMatch); ok { 3087 return x.StringMatch 3088 } 3089 return nil 3090} 3091 3092func (x *QueryParameterMatcher) GetPresentMatch() bool { 3093 if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_PresentMatch); ok { 3094 return x.PresentMatch 3095 } 3096 return false 3097} 3098 3099type isQueryParameterMatcher_QueryParameterMatchSpecifier interface { 3100 isQueryParameterMatcher_QueryParameterMatchSpecifier() 3101} 3102 3103type QueryParameterMatcher_StringMatch struct { 3104 // Specifies whether a query parameter value should match against a string. 3105 StringMatch *matcher.StringMatcher `protobuf:"bytes,5,opt,name=string_match,json=stringMatch,proto3,oneof"` 3106} 3107 3108type QueryParameterMatcher_PresentMatch struct { 3109 // Specifies whether a query parameter should be present. 3110 PresentMatch bool `protobuf:"varint,6,opt,name=present_match,json=presentMatch,proto3,oneof"` 3111} 3112 3113func (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {} 3114 3115func (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {} 3116 3117// [#next-free-field: 11] 3118type WeightedCluster_ClusterWeight struct { 3119 state protoimpl.MessageState 3120 sizeCache protoimpl.SizeCache 3121 unknownFields protoimpl.UnknownFields 3122 3123 // Name of the upstream cluster. The cluster must exist in the 3124 // :ref:`cluster manager configuration <config_cluster_manager>`. 3125 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3126 // An integer between 0 and :ref:`total_weight 3127 // <envoy_api_field_route.WeightedCluster.total_weight>`. When a request matches the route, 3128 // the choice of an upstream cluster is determined by its weight. The sum of weights across all 3129 // entries in the clusters array must add up to the total_weight, which defaults to 100. 3130 Weight *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` 3131 // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in 3132 // the upstream cluster with metadata matching what is set in this field will be considered for 3133 // load balancing. Note that this will be merged with what's provided in 3134 // :ref:`RouteAction.metadata_match <envoy_api_field_route.RouteAction.metadata_match>`, with 3135 // values here taking precedence. The filter name should be specified as *envoy.lb*. 3136 MetadataMatch *core.Metadata `protobuf:"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` 3137 // Specifies a list of headers to be added to requests when this cluster is selected 3138 // through the enclosing :ref:`envoy_api_msg_route.RouteAction`. 3139 // Headers specified at this level are applied before headers from the enclosing 3140 // :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_route.VirtualHost`, and 3141 // :ref:`envoy_api_msg_RouteConfiguration`. For more information, including details on 3142 // header value syntax, see the documentation on :ref:`custom request headers 3143 // <config_http_conn_man_headers_custom_request_headers>`. 3144 RequestHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,4,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` 3145 // Specifies a list of HTTP headers that should be removed from each request when 3146 // this cluster is selected through the enclosing :ref:`envoy_api_msg_route.RouteAction`. 3147 RequestHeadersToRemove []string `protobuf:"bytes,9,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` 3148 // Specifies a list of headers to be added to responses when this cluster is selected 3149 // through the enclosing :ref:`envoy_api_msg_route.RouteAction`. 3150 // Headers specified at this level are applied before headers from the enclosing 3151 // :ref:`envoy_api_msg_route.Route`, :ref:`envoy_api_msg_route.VirtualHost`, and 3152 // :ref:`envoy_api_msg_RouteConfiguration`. For more information, including details on 3153 // header value syntax, see the documentation on :ref:`custom request headers 3154 // <config_http_conn_man_headers_custom_request_headers>`. 3155 ResponseHeadersToAdd []*core.HeaderValueOption `protobuf:"bytes,5,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` 3156 // Specifies a list of headers to be removed from responses when this cluster is selected 3157 // through the enclosing :ref:`envoy_api_msg_route.RouteAction`. 3158 ResponseHeadersToRemove []string `protobuf:"bytes,6,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` 3159 // The per_filter_config field can be used to provide weighted cluster-specific 3160 // configurations for filters. The key should match the filter name, such as 3161 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 3162 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` 3163 // for if and how it is utilized. 3164 // 3165 // Deprecated: Do not use. 3166 PerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=per_filter_config,json=perFilterConfig,proto3" json:"per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 3167 // The per_filter_config field can be used to provide weighted cluster-specific 3168 // configurations for filters. The key should match the filter name, such as 3169 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 3170 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` 3171 // for if and how it is utilized. 3172 TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 3173} 3174 3175func (x *WeightedCluster_ClusterWeight) Reset() { 3176 *x = WeightedCluster_ClusterWeight{} 3177 if protoimpl.UnsafeEnabled { 3178 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[21] 3179 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3180 ms.StoreMessageInfo(mi) 3181 } 3182} 3183 3184func (x *WeightedCluster_ClusterWeight) String() string { 3185 return protoimpl.X.MessageStringOf(x) 3186} 3187 3188func (*WeightedCluster_ClusterWeight) ProtoMessage() {} 3189 3190func (x *WeightedCluster_ClusterWeight) ProtoReflect() protoreflect.Message { 3191 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[21] 3192 if protoimpl.UnsafeEnabled && x != nil { 3193 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3194 if ms.LoadMessageInfo() == nil { 3195 ms.StoreMessageInfo(mi) 3196 } 3197 return ms 3198 } 3199 return mi.MessageOf(x) 3200} 3201 3202// Deprecated: Use WeightedCluster_ClusterWeight.ProtoReflect.Descriptor instead. 3203func (*WeightedCluster_ClusterWeight) Descriptor() ([]byte, []int) { 3204 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{3, 0} 3205} 3206 3207func (x *WeightedCluster_ClusterWeight) GetName() string { 3208 if x != nil { 3209 return x.Name 3210 } 3211 return "" 3212} 3213 3214func (x *WeightedCluster_ClusterWeight) GetWeight() *wrappers.UInt32Value { 3215 if x != nil { 3216 return x.Weight 3217 } 3218 return nil 3219} 3220 3221func (x *WeightedCluster_ClusterWeight) GetMetadataMatch() *core.Metadata { 3222 if x != nil { 3223 return x.MetadataMatch 3224 } 3225 return nil 3226} 3227 3228func (x *WeightedCluster_ClusterWeight) GetRequestHeadersToAdd() []*core.HeaderValueOption { 3229 if x != nil { 3230 return x.RequestHeadersToAdd 3231 } 3232 return nil 3233} 3234 3235func (x *WeightedCluster_ClusterWeight) GetRequestHeadersToRemove() []string { 3236 if x != nil { 3237 return x.RequestHeadersToRemove 3238 } 3239 return nil 3240} 3241 3242func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToAdd() []*core.HeaderValueOption { 3243 if x != nil { 3244 return x.ResponseHeadersToAdd 3245 } 3246 return nil 3247} 3248 3249func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string { 3250 if x != nil { 3251 return x.ResponseHeadersToRemove 3252 } 3253 return nil 3254} 3255 3256// Deprecated: Do not use. 3257func (x *WeightedCluster_ClusterWeight) GetPerFilterConfig() map[string]*_struct.Struct { 3258 if x != nil { 3259 return x.PerFilterConfig 3260 } 3261 return nil 3262} 3263 3264func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*any.Any { 3265 if x != nil { 3266 return x.TypedPerFilterConfig 3267 } 3268 return nil 3269} 3270 3271type RouteMatch_GrpcRouteMatchOptions struct { 3272 state protoimpl.MessageState 3273 sizeCache protoimpl.SizeCache 3274 unknownFields protoimpl.UnknownFields 3275} 3276 3277func (x *RouteMatch_GrpcRouteMatchOptions) Reset() { 3278 *x = RouteMatch_GrpcRouteMatchOptions{} 3279 if protoimpl.UnsafeEnabled { 3280 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[24] 3281 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3282 ms.StoreMessageInfo(mi) 3283 } 3284} 3285 3286func (x *RouteMatch_GrpcRouteMatchOptions) String() string { 3287 return protoimpl.X.MessageStringOf(x) 3288} 3289 3290func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {} 3291 3292func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message { 3293 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[24] 3294 if protoimpl.UnsafeEnabled && x != nil { 3295 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3296 if ms.LoadMessageInfo() == nil { 3297 ms.StoreMessageInfo(mi) 3298 } 3299 return ms 3300 } 3301 return mi.MessageOf(x) 3302} 3303 3304// Deprecated: Use RouteMatch_GrpcRouteMatchOptions.ProtoReflect.Descriptor instead. 3305func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) { 3306 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{4, 0} 3307} 3308 3309type RouteMatch_TlsContextMatchOptions struct { 3310 state protoimpl.MessageState 3311 sizeCache protoimpl.SizeCache 3312 unknownFields protoimpl.UnknownFields 3313 3314 // If specified, the route will match against whether or not a certificate is presented. 3315 // If not specified, certificate presentation status (true or false) will not be considered when route matching. 3316 Presented *wrappers.BoolValue `protobuf:"bytes,1,opt,name=presented,proto3" json:"presented,omitempty"` 3317 // If specified, the route will match against whether or not a certificate is validated. 3318 // If not specified, certificate validation status (true or false) will not be considered when route matching. 3319 Validated *wrappers.BoolValue `protobuf:"bytes,2,opt,name=validated,proto3" json:"validated,omitempty"` 3320} 3321 3322func (x *RouteMatch_TlsContextMatchOptions) Reset() { 3323 *x = RouteMatch_TlsContextMatchOptions{} 3324 if protoimpl.UnsafeEnabled { 3325 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[25] 3326 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3327 ms.StoreMessageInfo(mi) 3328 } 3329} 3330 3331func (x *RouteMatch_TlsContextMatchOptions) String() string { 3332 return protoimpl.X.MessageStringOf(x) 3333} 3334 3335func (*RouteMatch_TlsContextMatchOptions) ProtoMessage() {} 3336 3337func (x *RouteMatch_TlsContextMatchOptions) ProtoReflect() protoreflect.Message { 3338 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[25] 3339 if protoimpl.UnsafeEnabled && x != nil { 3340 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3341 if ms.LoadMessageInfo() == nil { 3342 ms.StoreMessageInfo(mi) 3343 } 3344 return ms 3345 } 3346 return mi.MessageOf(x) 3347} 3348 3349// Deprecated: Use RouteMatch_TlsContextMatchOptions.ProtoReflect.Descriptor instead. 3350func (*RouteMatch_TlsContextMatchOptions) Descriptor() ([]byte, []int) { 3351 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{4, 1} 3352} 3353 3354func (x *RouteMatch_TlsContextMatchOptions) GetPresented() *wrappers.BoolValue { 3355 if x != nil { 3356 return x.Presented 3357 } 3358 return nil 3359} 3360 3361func (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrappers.BoolValue { 3362 if x != nil { 3363 return x.Validated 3364 } 3365 return nil 3366} 3367 3368// The router is capable of shadowing traffic from one cluster to another. The current 3369// implementation is "fire and forget," meaning Envoy will not wait for the shadow cluster to 3370// respond before returning the response from the primary cluster. All normal statistics are 3371// collected for the shadow cluster making this feature useful for testing. 3372// 3373// During shadowing, the host/authority header is altered such that *-shadow* is appended. This is 3374// useful for logging. For example, *cluster1* becomes *cluster1-shadow*. 3375// 3376// .. note:: 3377// 3378// Shadowing will not be triggered if the primary cluster does not exist. 3379type RouteAction_RequestMirrorPolicy struct { 3380 state protoimpl.MessageState 3381 sizeCache protoimpl.SizeCache 3382 unknownFields protoimpl.UnknownFields 3383 3384 // Specifies the cluster that requests will be mirrored to. The cluster must 3385 // exist in the cluster manager configuration. 3386 Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` 3387 // If not specified, all requests to the target cluster will be mirrored. If 3388 // specified, Envoy will lookup the runtime key to get the % of requests to 3389 // mirror. Valid values are from 0 to 10000, allowing for increments of 3390 // 0.01% of requests to be mirrored. If the runtime key is specified in the 3391 // configuration but not present in runtime, 0 is the default and thus 0% of 3392 // requests will be mirrored. 3393 // 3394 // .. attention:: 3395 // 3396 // **This field is deprecated**. Set the 3397 // :ref:`runtime_fraction 3398 // <envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_fraction>` 3399 // field instead. Mirroring occurs if both this and 3400 // <envoy_api_field_route.RouteAction.RequestMirrorPolicy.runtime_fraction>` 3401 // are not set. 3402 // 3403 // Deprecated: Do not use. 3404 RuntimeKey string `protobuf:"bytes,2,opt,name=runtime_key,json=runtimeKey,proto3" json:"runtime_key,omitempty"` 3405 // If not specified, all requests to the target cluster will be mirrored. 3406 // 3407 // If specified, this field takes precedence over the `runtime_key` field and requests must also 3408 // fall under the percentage of matches indicated by this field. 3409 // 3410 // For some fraction N/D, a random number in the range [0,D) is selected. If the 3411 // number is <= the value of the numerator N, or if the key is not present, the default 3412 // value, the request will be mirrored. 3413 RuntimeFraction *core.RuntimeFractionalPercent `protobuf:"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` 3414 // Determines if the trace span should be sampled. Defaults to true. 3415 TraceSampled *wrappers.BoolValue `protobuf:"bytes,4,opt,name=trace_sampled,json=traceSampled,proto3" json:"trace_sampled,omitempty"` 3416} 3417 3418func (x *RouteAction_RequestMirrorPolicy) Reset() { 3419 *x = RouteAction_RequestMirrorPolicy{} 3420 if protoimpl.UnsafeEnabled { 3421 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[26] 3422 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3423 ms.StoreMessageInfo(mi) 3424 } 3425} 3426 3427func (x *RouteAction_RequestMirrorPolicy) String() string { 3428 return protoimpl.X.MessageStringOf(x) 3429} 3430 3431func (*RouteAction_RequestMirrorPolicy) ProtoMessage() {} 3432 3433func (x *RouteAction_RequestMirrorPolicy) ProtoReflect() protoreflect.Message { 3434 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[26] 3435 if protoimpl.UnsafeEnabled && x != nil { 3436 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3437 if ms.LoadMessageInfo() == nil { 3438 ms.StoreMessageInfo(mi) 3439 } 3440 return ms 3441 } 3442 return mi.MessageOf(x) 3443} 3444 3445// Deprecated: Use RouteAction_RequestMirrorPolicy.ProtoReflect.Descriptor instead. 3446func (*RouteAction_RequestMirrorPolicy) Descriptor() ([]byte, []int) { 3447 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 0} 3448} 3449 3450func (x *RouteAction_RequestMirrorPolicy) GetCluster() string { 3451 if x != nil { 3452 return x.Cluster 3453 } 3454 return "" 3455} 3456 3457// Deprecated: Do not use. 3458func (x *RouteAction_RequestMirrorPolicy) GetRuntimeKey() string { 3459 if x != nil { 3460 return x.RuntimeKey 3461 } 3462 return "" 3463} 3464 3465func (x *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *core.RuntimeFractionalPercent { 3466 if x != nil { 3467 return x.RuntimeFraction 3468 } 3469 return nil 3470} 3471 3472func (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrappers.BoolValue { 3473 if x != nil { 3474 return x.TraceSampled 3475 } 3476 return nil 3477} 3478 3479// Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer 3480// <arch_overview_load_balancing_types>`. 3481// [#next-free-field: 7] 3482type RouteAction_HashPolicy struct { 3483 state protoimpl.MessageState 3484 sizeCache protoimpl.SizeCache 3485 unknownFields protoimpl.UnknownFields 3486 3487 // Types that are assignable to PolicySpecifier: 3488 // *RouteAction_HashPolicy_Header_ 3489 // *RouteAction_HashPolicy_Cookie_ 3490 // *RouteAction_HashPolicy_ConnectionProperties_ 3491 // *RouteAction_HashPolicy_QueryParameter_ 3492 // *RouteAction_HashPolicy_FilterState_ 3493 PolicySpecifier isRouteAction_HashPolicy_PolicySpecifier `protobuf_oneof:"policy_specifier"` 3494 // The flag that short-circuits the hash computing. This field provides a 3495 // 'fallback' style of configuration: "if a terminal policy doesn't work, 3496 // fallback to rest of the policy list", it saves time when the terminal 3497 // policy works. 3498 // 3499 // If true, and there is already a hash computed, ignore rest of the 3500 // list of hash polices. 3501 // For example, if the following hash methods are configured: 3502 // 3503 // ========= ======== 3504 // specifier terminal 3505 // ========= ======== 3506 // Header A true 3507 // Header B false 3508 // Header C false 3509 // ========= ======== 3510 // 3511 // The generateHash process ends if policy "header A" generates a hash, as 3512 // it's a terminal policy. 3513 Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` 3514} 3515 3516func (x *RouteAction_HashPolicy) Reset() { 3517 *x = RouteAction_HashPolicy{} 3518 if protoimpl.UnsafeEnabled { 3519 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[27] 3520 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3521 ms.StoreMessageInfo(mi) 3522 } 3523} 3524 3525func (x *RouteAction_HashPolicy) String() string { 3526 return protoimpl.X.MessageStringOf(x) 3527} 3528 3529func (*RouteAction_HashPolicy) ProtoMessage() {} 3530 3531func (x *RouteAction_HashPolicy) ProtoReflect() protoreflect.Message { 3532 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[27] 3533 if protoimpl.UnsafeEnabled && x != nil { 3534 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3535 if ms.LoadMessageInfo() == nil { 3536 ms.StoreMessageInfo(mi) 3537 } 3538 return ms 3539 } 3540 return mi.MessageOf(x) 3541} 3542 3543// Deprecated: Use RouteAction_HashPolicy.ProtoReflect.Descriptor instead. 3544func (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) { 3545 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1} 3546} 3547 3548func (m *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier { 3549 if m != nil { 3550 return m.PolicySpecifier 3551 } 3552 return nil 3553} 3554 3555func (x *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header { 3556 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Header_); ok { 3557 return x.Header 3558 } 3559 return nil 3560} 3561 3562func (x *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie { 3563 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Cookie_); ok { 3564 return x.Cookie 3565 } 3566 return nil 3567} 3568 3569func (x *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties { 3570 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_ConnectionProperties_); ok { 3571 return x.ConnectionProperties 3572 } 3573 return nil 3574} 3575 3576func (x *RouteAction_HashPolicy) GetQueryParameter() *RouteAction_HashPolicy_QueryParameter { 3577 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_QueryParameter_); ok { 3578 return x.QueryParameter 3579 } 3580 return nil 3581} 3582 3583func (x *RouteAction_HashPolicy) GetFilterState() *RouteAction_HashPolicy_FilterState { 3584 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_FilterState_); ok { 3585 return x.FilterState 3586 } 3587 return nil 3588} 3589 3590func (x *RouteAction_HashPolicy) GetTerminal() bool { 3591 if x != nil { 3592 return x.Terminal 3593 } 3594 return false 3595} 3596 3597type isRouteAction_HashPolicy_PolicySpecifier interface { 3598 isRouteAction_HashPolicy_PolicySpecifier() 3599} 3600 3601type RouteAction_HashPolicy_Header_ struct { 3602 // Header hash policy. 3603 Header *RouteAction_HashPolicy_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` 3604} 3605 3606type RouteAction_HashPolicy_Cookie_ struct { 3607 // Cookie hash policy. 3608 Cookie *RouteAction_HashPolicy_Cookie `protobuf:"bytes,2,opt,name=cookie,proto3,oneof"` 3609} 3610 3611type RouteAction_HashPolicy_ConnectionProperties_ struct { 3612 // Connection properties hash policy. 3613 ConnectionProperties *RouteAction_HashPolicy_ConnectionProperties `protobuf:"bytes,3,opt,name=connection_properties,json=connectionProperties,proto3,oneof"` 3614} 3615 3616type RouteAction_HashPolicy_QueryParameter_ struct { 3617 // Query parameter hash policy. 3618 QueryParameter *RouteAction_HashPolicy_QueryParameter `protobuf:"bytes,5,opt,name=query_parameter,json=queryParameter,proto3,oneof"` 3619} 3620 3621type RouteAction_HashPolicy_FilterState_ struct { 3622 // Filter state hash policy. 3623 FilterState *RouteAction_HashPolicy_FilterState `protobuf:"bytes,6,opt,name=filter_state,json=filterState,proto3,oneof"` 3624} 3625 3626func (*RouteAction_HashPolicy_Header_) isRouteAction_HashPolicy_PolicySpecifier() {} 3627 3628func (*RouteAction_HashPolicy_Cookie_) isRouteAction_HashPolicy_PolicySpecifier() {} 3629 3630func (*RouteAction_HashPolicy_ConnectionProperties_) isRouteAction_HashPolicy_PolicySpecifier() {} 3631 3632func (*RouteAction_HashPolicy_QueryParameter_) isRouteAction_HashPolicy_PolicySpecifier() {} 3633 3634func (*RouteAction_HashPolicy_FilterState_) isRouteAction_HashPolicy_PolicySpecifier() {} 3635 3636// Allows enabling and disabling upgrades on a per-route basis. 3637// This overrides any enabled/disabled upgrade filter chain specified in the 3638// HttpConnectionManager 3639// :ref:`upgrade_configs 3640// <envoy_api_field_config.filter.network.http_connection_manager.v2.HttpConnectionManager.upgrade_configs>` 3641// but does not affect any custom filter chain specified there. 3642type RouteAction_UpgradeConfig struct { 3643 state protoimpl.MessageState 3644 sizeCache protoimpl.SizeCache 3645 unknownFields protoimpl.UnknownFields 3646 3647 // The case-insensitive name of this upgrade, e.g. "websocket". 3648 // For each upgrade type present in upgrade_configs, requests with 3649 // Upgrade: [upgrade_type] will be proxied upstream. 3650 UpgradeType string `protobuf:"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3" json:"upgrade_type,omitempty"` 3651 // Determines if upgrades are available on this route. Defaults to true. 3652 Enabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` 3653} 3654 3655func (x *RouteAction_UpgradeConfig) Reset() { 3656 *x = RouteAction_UpgradeConfig{} 3657 if protoimpl.UnsafeEnabled { 3658 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[28] 3659 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3660 ms.StoreMessageInfo(mi) 3661 } 3662} 3663 3664func (x *RouteAction_UpgradeConfig) String() string { 3665 return protoimpl.X.MessageStringOf(x) 3666} 3667 3668func (*RouteAction_UpgradeConfig) ProtoMessage() {} 3669 3670func (x *RouteAction_UpgradeConfig) ProtoReflect() protoreflect.Message { 3671 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[28] 3672 if protoimpl.UnsafeEnabled && x != nil { 3673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3674 if ms.LoadMessageInfo() == nil { 3675 ms.StoreMessageInfo(mi) 3676 } 3677 return ms 3678 } 3679 return mi.MessageOf(x) 3680} 3681 3682// Deprecated: Use RouteAction_UpgradeConfig.ProtoReflect.Descriptor instead. 3683func (*RouteAction_UpgradeConfig) Descriptor() ([]byte, []int) { 3684 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 2} 3685} 3686 3687func (x *RouteAction_UpgradeConfig) GetUpgradeType() string { 3688 if x != nil { 3689 return x.UpgradeType 3690 } 3691 return "" 3692} 3693 3694func (x *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue { 3695 if x != nil { 3696 return x.Enabled 3697 } 3698 return nil 3699} 3700 3701type RouteAction_HashPolicy_Header struct { 3702 state protoimpl.MessageState 3703 sizeCache protoimpl.SizeCache 3704 unknownFields protoimpl.UnknownFields 3705 3706 // The name of the request header that will be used to obtain the hash 3707 // key. If the request header is not present, no hash will be produced. 3708 HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` 3709} 3710 3711func (x *RouteAction_HashPolicy_Header) Reset() { 3712 *x = RouteAction_HashPolicy_Header{} 3713 if protoimpl.UnsafeEnabled { 3714 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[29] 3715 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3716 ms.StoreMessageInfo(mi) 3717 } 3718} 3719 3720func (x *RouteAction_HashPolicy_Header) String() string { 3721 return protoimpl.X.MessageStringOf(x) 3722} 3723 3724func (*RouteAction_HashPolicy_Header) ProtoMessage() {} 3725 3726func (x *RouteAction_HashPolicy_Header) ProtoReflect() protoreflect.Message { 3727 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[29] 3728 if protoimpl.UnsafeEnabled && x != nil { 3729 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3730 if ms.LoadMessageInfo() == nil { 3731 ms.StoreMessageInfo(mi) 3732 } 3733 return ms 3734 } 3735 return mi.MessageOf(x) 3736} 3737 3738// Deprecated: Use RouteAction_HashPolicy_Header.ProtoReflect.Descriptor instead. 3739func (*RouteAction_HashPolicy_Header) Descriptor() ([]byte, []int) { 3740 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 0} 3741} 3742 3743func (x *RouteAction_HashPolicy_Header) GetHeaderName() string { 3744 if x != nil { 3745 return x.HeaderName 3746 } 3747 return "" 3748} 3749 3750// Envoy supports two types of cookie affinity: 3751// 3752// 1. Passive. Envoy takes a cookie that's present in the cookies header and 3753// hashes on its value. 3754// 3755// 2. Generated. Envoy generates and sets a cookie with an expiration (TTL) 3756// on the first request from the client in its response to the client, 3757// based on the endpoint the request gets sent to. The client then 3758// presents this on the next and all subsequent requests. The hash of 3759// this is sufficient to ensure these requests get sent to the same 3760// endpoint. The cookie is generated by hashing the source and 3761// destination ports and addresses so that multiple independent HTTP2 3762// streams on the same connection will independently receive the same 3763// cookie, even if they arrive at the Envoy simultaneously. 3764type RouteAction_HashPolicy_Cookie struct { 3765 state protoimpl.MessageState 3766 sizeCache protoimpl.SizeCache 3767 unknownFields protoimpl.UnknownFields 3768 3769 // The name of the cookie that will be used to obtain the hash key. If the 3770 // cookie is not present and ttl below is not set, no hash will be 3771 // produced. 3772 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3773 // If specified, a cookie with the TTL will be generated if the cookie is 3774 // not present. If the TTL is present and zero, the generated cookie will 3775 // be a session cookie. 3776 Ttl *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` 3777 // The name of the path for the cookie. If no path is specified here, no path 3778 // will be set for the cookie. 3779 Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` 3780} 3781 3782func (x *RouteAction_HashPolicy_Cookie) Reset() { 3783 *x = RouteAction_HashPolicy_Cookie{} 3784 if protoimpl.UnsafeEnabled { 3785 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[30] 3786 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3787 ms.StoreMessageInfo(mi) 3788 } 3789} 3790 3791func (x *RouteAction_HashPolicy_Cookie) String() string { 3792 return protoimpl.X.MessageStringOf(x) 3793} 3794 3795func (*RouteAction_HashPolicy_Cookie) ProtoMessage() {} 3796 3797func (x *RouteAction_HashPolicy_Cookie) ProtoReflect() protoreflect.Message { 3798 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[30] 3799 if protoimpl.UnsafeEnabled && x != nil { 3800 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3801 if ms.LoadMessageInfo() == nil { 3802 ms.StoreMessageInfo(mi) 3803 } 3804 return ms 3805 } 3806 return mi.MessageOf(x) 3807} 3808 3809// Deprecated: Use RouteAction_HashPolicy_Cookie.ProtoReflect.Descriptor instead. 3810func (*RouteAction_HashPolicy_Cookie) Descriptor() ([]byte, []int) { 3811 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 1} 3812} 3813 3814func (x *RouteAction_HashPolicy_Cookie) GetName() string { 3815 if x != nil { 3816 return x.Name 3817 } 3818 return "" 3819} 3820 3821func (x *RouteAction_HashPolicy_Cookie) GetTtl() *duration.Duration { 3822 if x != nil { 3823 return x.Ttl 3824 } 3825 return nil 3826} 3827 3828func (x *RouteAction_HashPolicy_Cookie) GetPath() string { 3829 if x != nil { 3830 return x.Path 3831 } 3832 return "" 3833} 3834 3835type RouteAction_HashPolicy_ConnectionProperties struct { 3836 state protoimpl.MessageState 3837 sizeCache protoimpl.SizeCache 3838 unknownFields protoimpl.UnknownFields 3839 3840 // Hash on source IP address. 3841 SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"` 3842} 3843 3844func (x *RouteAction_HashPolicy_ConnectionProperties) Reset() { 3845 *x = RouteAction_HashPolicy_ConnectionProperties{} 3846 if protoimpl.UnsafeEnabled { 3847 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[31] 3848 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3849 ms.StoreMessageInfo(mi) 3850 } 3851} 3852 3853func (x *RouteAction_HashPolicy_ConnectionProperties) String() string { 3854 return protoimpl.X.MessageStringOf(x) 3855} 3856 3857func (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {} 3858 3859func (x *RouteAction_HashPolicy_ConnectionProperties) ProtoReflect() protoreflect.Message { 3860 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[31] 3861 if protoimpl.UnsafeEnabled && x != nil { 3862 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3863 if ms.LoadMessageInfo() == nil { 3864 ms.StoreMessageInfo(mi) 3865 } 3866 return ms 3867 } 3868 return mi.MessageOf(x) 3869} 3870 3871// Deprecated: Use RouteAction_HashPolicy_ConnectionProperties.ProtoReflect.Descriptor instead. 3872func (*RouteAction_HashPolicy_ConnectionProperties) Descriptor() ([]byte, []int) { 3873 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 2} 3874} 3875 3876func (x *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool { 3877 if x != nil { 3878 return x.SourceIp 3879 } 3880 return false 3881} 3882 3883type RouteAction_HashPolicy_QueryParameter struct { 3884 state protoimpl.MessageState 3885 sizeCache protoimpl.SizeCache 3886 unknownFields protoimpl.UnknownFields 3887 3888 // The name of the URL query parameter that will be used to obtain the hash 3889 // key. If the parameter is not present, no hash will be produced. Query 3890 // parameter names are case-sensitive. 3891 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3892} 3893 3894func (x *RouteAction_HashPolicy_QueryParameter) Reset() { 3895 *x = RouteAction_HashPolicy_QueryParameter{} 3896 if protoimpl.UnsafeEnabled { 3897 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[32] 3898 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3899 ms.StoreMessageInfo(mi) 3900 } 3901} 3902 3903func (x *RouteAction_HashPolicy_QueryParameter) String() string { 3904 return protoimpl.X.MessageStringOf(x) 3905} 3906 3907func (*RouteAction_HashPolicy_QueryParameter) ProtoMessage() {} 3908 3909func (x *RouteAction_HashPolicy_QueryParameter) ProtoReflect() protoreflect.Message { 3910 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[32] 3911 if protoimpl.UnsafeEnabled && x != nil { 3912 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3913 if ms.LoadMessageInfo() == nil { 3914 ms.StoreMessageInfo(mi) 3915 } 3916 return ms 3917 } 3918 return mi.MessageOf(x) 3919} 3920 3921// Deprecated: Use RouteAction_HashPolicy_QueryParameter.ProtoReflect.Descriptor instead. 3922func (*RouteAction_HashPolicy_QueryParameter) Descriptor() ([]byte, []int) { 3923 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 3} 3924} 3925 3926func (x *RouteAction_HashPolicy_QueryParameter) GetName() string { 3927 if x != nil { 3928 return x.Name 3929 } 3930 return "" 3931} 3932 3933type RouteAction_HashPolicy_FilterState struct { 3934 state protoimpl.MessageState 3935 sizeCache protoimpl.SizeCache 3936 unknownFields protoimpl.UnknownFields 3937 3938 // The name of the Object in the per-request filterState, which is an 3939 // Envoy::Hashable object. If there is no data associated with the key, 3940 // or the stored object is not Envoy::Hashable, no hash will be produced. 3941 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 3942} 3943 3944func (x *RouteAction_HashPolicy_FilterState) Reset() { 3945 *x = RouteAction_HashPolicy_FilterState{} 3946 if protoimpl.UnsafeEnabled { 3947 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[33] 3948 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3949 ms.StoreMessageInfo(mi) 3950 } 3951} 3952 3953func (x *RouteAction_HashPolicy_FilterState) String() string { 3954 return protoimpl.X.MessageStringOf(x) 3955} 3956 3957func (*RouteAction_HashPolicy_FilterState) ProtoMessage() {} 3958 3959func (x *RouteAction_HashPolicy_FilterState) ProtoReflect() protoreflect.Message { 3960 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[33] 3961 if protoimpl.UnsafeEnabled && x != nil { 3962 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3963 if ms.LoadMessageInfo() == nil { 3964 ms.StoreMessageInfo(mi) 3965 } 3966 return ms 3967 } 3968 return mi.MessageOf(x) 3969} 3970 3971// Deprecated: Use RouteAction_HashPolicy_FilterState.ProtoReflect.Descriptor instead. 3972func (*RouteAction_HashPolicy_FilterState) Descriptor() ([]byte, []int) { 3973 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{6, 1, 4} 3974} 3975 3976func (x *RouteAction_HashPolicy_FilterState) GetKey() string { 3977 if x != nil { 3978 return x.Key 3979 } 3980 return "" 3981} 3982 3983type RetryPolicy_RetryPriority struct { 3984 state protoimpl.MessageState 3985 sizeCache protoimpl.SizeCache 3986 unknownFields protoimpl.UnknownFields 3987 3988 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3989 // Types that are assignable to ConfigType: 3990 // *RetryPolicy_RetryPriority_Config 3991 // *RetryPolicy_RetryPriority_TypedConfig 3992 ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"` 3993} 3994 3995func (x *RetryPolicy_RetryPriority) Reset() { 3996 *x = RetryPolicy_RetryPriority{} 3997 if protoimpl.UnsafeEnabled { 3998 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[34] 3999 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4000 ms.StoreMessageInfo(mi) 4001 } 4002} 4003 4004func (x *RetryPolicy_RetryPriority) String() string { 4005 return protoimpl.X.MessageStringOf(x) 4006} 4007 4008func (*RetryPolicy_RetryPriority) ProtoMessage() {} 4009 4010func (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message { 4011 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[34] 4012 if protoimpl.UnsafeEnabled && x != nil { 4013 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4014 if ms.LoadMessageInfo() == nil { 4015 ms.StoreMessageInfo(mi) 4016 } 4017 return ms 4018 } 4019 return mi.MessageOf(x) 4020} 4021 4022// Deprecated: Use RetryPolicy_RetryPriority.ProtoReflect.Descriptor instead. 4023func (*RetryPolicy_RetryPriority) Descriptor() ([]byte, []int) { 4024 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7, 0} 4025} 4026 4027func (x *RetryPolicy_RetryPriority) GetName() string { 4028 if x != nil { 4029 return x.Name 4030 } 4031 return "" 4032} 4033 4034func (m *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType { 4035 if m != nil { 4036 return m.ConfigType 4037 } 4038 return nil 4039} 4040 4041// Deprecated: Do not use. 4042func (x *RetryPolicy_RetryPriority) GetConfig() *_struct.Struct { 4043 if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_Config); ok { 4044 return x.Config 4045 } 4046 return nil 4047} 4048 4049func (x *RetryPolicy_RetryPriority) GetTypedConfig() *any.Any { 4050 if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_TypedConfig); ok { 4051 return x.TypedConfig 4052 } 4053 return nil 4054} 4055 4056type isRetryPolicy_RetryPriority_ConfigType interface { 4057 isRetryPolicy_RetryPriority_ConfigType() 4058} 4059 4060type RetryPolicy_RetryPriority_Config struct { 4061 // Deprecated: Do not use. 4062 Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` 4063} 4064 4065type RetryPolicy_RetryPriority_TypedConfig struct { 4066 TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` 4067} 4068 4069func (*RetryPolicy_RetryPriority_Config) isRetryPolicy_RetryPriority_ConfigType() {} 4070 4071func (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {} 4072 4073type RetryPolicy_RetryHostPredicate struct { 4074 state protoimpl.MessageState 4075 sizeCache protoimpl.SizeCache 4076 unknownFields protoimpl.UnknownFields 4077 4078 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 4079 // Types that are assignable to ConfigType: 4080 // *RetryPolicy_RetryHostPredicate_Config 4081 // *RetryPolicy_RetryHostPredicate_TypedConfig 4082 ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"` 4083} 4084 4085func (x *RetryPolicy_RetryHostPredicate) Reset() { 4086 *x = RetryPolicy_RetryHostPredicate{} 4087 if protoimpl.UnsafeEnabled { 4088 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[35] 4089 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4090 ms.StoreMessageInfo(mi) 4091 } 4092} 4093 4094func (x *RetryPolicy_RetryHostPredicate) String() string { 4095 return protoimpl.X.MessageStringOf(x) 4096} 4097 4098func (*RetryPolicy_RetryHostPredicate) ProtoMessage() {} 4099 4100func (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message { 4101 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[35] 4102 if protoimpl.UnsafeEnabled && x != nil { 4103 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4104 if ms.LoadMessageInfo() == nil { 4105 ms.StoreMessageInfo(mi) 4106 } 4107 return ms 4108 } 4109 return mi.MessageOf(x) 4110} 4111 4112// Deprecated: Use RetryPolicy_RetryHostPredicate.ProtoReflect.Descriptor instead. 4113func (*RetryPolicy_RetryHostPredicate) Descriptor() ([]byte, []int) { 4114 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7, 1} 4115} 4116 4117func (x *RetryPolicy_RetryHostPredicate) GetName() string { 4118 if x != nil { 4119 return x.Name 4120 } 4121 return "" 4122} 4123 4124func (m *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType { 4125 if m != nil { 4126 return m.ConfigType 4127 } 4128 return nil 4129} 4130 4131// Deprecated: Do not use. 4132func (x *RetryPolicy_RetryHostPredicate) GetConfig() *_struct.Struct { 4133 if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_Config); ok { 4134 return x.Config 4135 } 4136 return nil 4137} 4138 4139func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *any.Any { 4140 if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_TypedConfig); ok { 4141 return x.TypedConfig 4142 } 4143 return nil 4144} 4145 4146type isRetryPolicy_RetryHostPredicate_ConfigType interface { 4147 isRetryPolicy_RetryHostPredicate_ConfigType() 4148} 4149 4150type RetryPolicy_RetryHostPredicate_Config struct { 4151 // Deprecated: Do not use. 4152 Config *_struct.Struct `protobuf:"bytes,2,opt,name=config,proto3,oneof"` 4153} 4154 4155type RetryPolicy_RetryHostPredicate_TypedConfig struct { 4156 TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` 4157} 4158 4159func (*RetryPolicy_RetryHostPredicate_Config) isRetryPolicy_RetryHostPredicate_ConfigType() {} 4160 4161func (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {} 4162 4163type RetryPolicy_RetryBackOff struct { 4164 state protoimpl.MessageState 4165 sizeCache protoimpl.SizeCache 4166 unknownFields protoimpl.UnknownFields 4167 4168 // Specifies the base interval between retries. This parameter is required and must be greater 4169 // than zero. Values less than 1 ms are rounded up to 1 ms. 4170 // See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's 4171 // back-off algorithm. 4172 BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` 4173 // Specifies the maximum interval between retries. This parameter is optional, but must be 4174 // greater than or equal to the `base_interval` if set. The default is 10 times the 4175 // `base_interval`. See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion 4176 // of Envoy's back-off algorithm. 4177 MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` 4178} 4179 4180func (x *RetryPolicy_RetryBackOff) Reset() { 4181 *x = RetryPolicy_RetryBackOff{} 4182 if protoimpl.UnsafeEnabled { 4183 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[36] 4184 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4185 ms.StoreMessageInfo(mi) 4186 } 4187} 4188 4189func (x *RetryPolicy_RetryBackOff) String() string { 4190 return protoimpl.X.MessageStringOf(x) 4191} 4192 4193func (*RetryPolicy_RetryBackOff) ProtoMessage() {} 4194 4195func (x *RetryPolicy_RetryBackOff) ProtoReflect() protoreflect.Message { 4196 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[36] 4197 if protoimpl.UnsafeEnabled && x != nil { 4198 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4199 if ms.LoadMessageInfo() == nil { 4200 ms.StoreMessageInfo(mi) 4201 } 4202 return ms 4203 } 4204 return mi.MessageOf(x) 4205} 4206 4207// Deprecated: Use RetryPolicy_RetryBackOff.ProtoReflect.Descriptor instead. 4208func (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) { 4209 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{7, 2} 4210} 4211 4212func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *duration.Duration { 4213 if x != nil { 4214 return x.BaseInterval 4215 } 4216 return nil 4217} 4218 4219func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration { 4220 if x != nil { 4221 return x.MaxInterval 4222 } 4223 return nil 4224} 4225 4226// [#next-free-field: 7] 4227type RateLimit_Action struct { 4228 state protoimpl.MessageState 4229 sizeCache protoimpl.SizeCache 4230 unknownFields protoimpl.UnknownFields 4231 4232 // Types that are assignable to ActionSpecifier: 4233 // *RateLimit_Action_SourceCluster_ 4234 // *RateLimit_Action_DestinationCluster_ 4235 // *RateLimit_Action_RequestHeaders_ 4236 // *RateLimit_Action_RemoteAddress_ 4237 // *RateLimit_Action_GenericKey_ 4238 // *RateLimit_Action_HeaderValueMatch_ 4239 ActionSpecifier isRateLimit_Action_ActionSpecifier `protobuf_oneof:"action_specifier"` 4240} 4241 4242func (x *RateLimit_Action) Reset() { 4243 *x = RateLimit_Action{} 4244 if protoimpl.UnsafeEnabled { 4245 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[37] 4246 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4247 ms.StoreMessageInfo(mi) 4248 } 4249} 4250 4251func (x *RateLimit_Action) String() string { 4252 return protoimpl.X.MessageStringOf(x) 4253} 4254 4255func (*RateLimit_Action) ProtoMessage() {} 4256 4257func (x *RateLimit_Action) ProtoReflect() protoreflect.Message { 4258 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[37] 4259 if protoimpl.UnsafeEnabled && x != nil { 4260 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4261 if ms.LoadMessageInfo() == nil { 4262 ms.StoreMessageInfo(mi) 4263 } 4264 return ms 4265 } 4266 return mi.MessageOf(x) 4267} 4268 4269// Deprecated: Use RateLimit_Action.ProtoReflect.Descriptor instead. 4270func (*RateLimit_Action) Descriptor() ([]byte, []int) { 4271 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0} 4272} 4273 4274func (m *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier { 4275 if m != nil { 4276 return m.ActionSpecifier 4277 } 4278 return nil 4279} 4280 4281func (x *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster { 4282 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_SourceCluster_); ok { 4283 return x.SourceCluster 4284 } 4285 return nil 4286} 4287 4288func (x *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster { 4289 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DestinationCluster_); ok { 4290 return x.DestinationCluster 4291 } 4292 return nil 4293} 4294 4295func (x *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders { 4296 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RequestHeaders_); ok { 4297 return x.RequestHeaders 4298 } 4299 return nil 4300} 4301 4302func (x *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress { 4303 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RemoteAddress_); ok { 4304 return x.RemoteAddress 4305 } 4306 return nil 4307} 4308 4309func (x *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey { 4310 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_GenericKey_); ok { 4311 return x.GenericKey 4312 } 4313 return nil 4314} 4315 4316func (x *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch { 4317 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_HeaderValueMatch_); ok { 4318 return x.HeaderValueMatch 4319 } 4320 return nil 4321} 4322 4323type isRateLimit_Action_ActionSpecifier interface { 4324 isRateLimit_Action_ActionSpecifier() 4325} 4326 4327type RateLimit_Action_SourceCluster_ struct { 4328 // Rate limit on source cluster. 4329 SourceCluster *RateLimit_Action_SourceCluster `protobuf:"bytes,1,opt,name=source_cluster,json=sourceCluster,proto3,oneof"` 4330} 4331 4332type RateLimit_Action_DestinationCluster_ struct { 4333 // Rate limit on destination cluster. 4334 DestinationCluster *RateLimit_Action_DestinationCluster `protobuf:"bytes,2,opt,name=destination_cluster,json=destinationCluster,proto3,oneof"` 4335} 4336 4337type RateLimit_Action_RequestHeaders_ struct { 4338 // Rate limit on request headers. 4339 RequestHeaders *RateLimit_Action_RequestHeaders `protobuf:"bytes,3,opt,name=request_headers,json=requestHeaders,proto3,oneof"` 4340} 4341 4342type RateLimit_Action_RemoteAddress_ struct { 4343 // Rate limit on remote address. 4344 RemoteAddress *RateLimit_Action_RemoteAddress `protobuf:"bytes,4,opt,name=remote_address,json=remoteAddress,proto3,oneof"` 4345} 4346 4347type RateLimit_Action_GenericKey_ struct { 4348 // Rate limit on a generic key. 4349 GenericKey *RateLimit_Action_GenericKey `protobuf:"bytes,5,opt,name=generic_key,json=genericKey,proto3,oneof"` 4350} 4351 4352type RateLimit_Action_HeaderValueMatch_ struct { 4353 // Rate limit on the existence of request headers. 4354 HeaderValueMatch *RateLimit_Action_HeaderValueMatch `protobuf:"bytes,6,opt,name=header_value_match,json=headerValueMatch,proto3,oneof"` 4355} 4356 4357func (*RateLimit_Action_SourceCluster_) isRateLimit_Action_ActionSpecifier() {} 4358 4359func (*RateLimit_Action_DestinationCluster_) isRateLimit_Action_ActionSpecifier() {} 4360 4361func (*RateLimit_Action_RequestHeaders_) isRateLimit_Action_ActionSpecifier() {} 4362 4363func (*RateLimit_Action_RemoteAddress_) isRateLimit_Action_ActionSpecifier() {} 4364 4365func (*RateLimit_Action_GenericKey_) isRateLimit_Action_ActionSpecifier() {} 4366 4367func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() {} 4368 4369// The following descriptor entry is appended to the descriptor: 4370// 4371// .. code-block:: cpp 4372// 4373// ("source_cluster", "<local service cluster>") 4374// 4375// <local service cluster> is derived from the :option:`--service-cluster` option. 4376type RateLimit_Action_SourceCluster struct { 4377 state protoimpl.MessageState 4378 sizeCache protoimpl.SizeCache 4379 unknownFields protoimpl.UnknownFields 4380} 4381 4382func (x *RateLimit_Action_SourceCluster) Reset() { 4383 *x = RateLimit_Action_SourceCluster{} 4384 if protoimpl.UnsafeEnabled { 4385 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[38] 4386 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4387 ms.StoreMessageInfo(mi) 4388 } 4389} 4390 4391func (x *RateLimit_Action_SourceCluster) String() string { 4392 return protoimpl.X.MessageStringOf(x) 4393} 4394 4395func (*RateLimit_Action_SourceCluster) ProtoMessage() {} 4396 4397func (x *RateLimit_Action_SourceCluster) ProtoReflect() protoreflect.Message { 4398 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[38] 4399 if protoimpl.UnsafeEnabled && x != nil { 4400 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4401 if ms.LoadMessageInfo() == nil { 4402 ms.StoreMessageInfo(mi) 4403 } 4404 return ms 4405 } 4406 return mi.MessageOf(x) 4407} 4408 4409// Deprecated: Use RateLimit_Action_SourceCluster.ProtoReflect.Descriptor instead. 4410func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) { 4411 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 0} 4412} 4413 4414// The following descriptor entry is appended to the descriptor: 4415// 4416// .. code-block:: cpp 4417// 4418// ("destination_cluster", "<routed target cluster>") 4419// 4420// Once a request matches against a route table rule, a routed cluster is determined by one of 4421// the following :ref:`route table configuration <envoy_api_msg_RouteConfiguration>` 4422// settings: 4423// 4424// * :ref:`cluster <envoy_api_field_route.RouteAction.cluster>` indicates the upstream cluster 4425// to route to. 4426// * :ref:`weighted_clusters <envoy_api_field_route.RouteAction.weighted_clusters>` 4427// chooses a cluster randomly from a set of clusters with attributed weight. 4428// * :ref:`cluster_header <envoy_api_field_route.RouteAction.cluster_header>` indicates which 4429// header in the request contains the target cluster. 4430type RateLimit_Action_DestinationCluster struct { 4431 state protoimpl.MessageState 4432 sizeCache protoimpl.SizeCache 4433 unknownFields protoimpl.UnknownFields 4434} 4435 4436func (x *RateLimit_Action_DestinationCluster) Reset() { 4437 *x = RateLimit_Action_DestinationCluster{} 4438 if protoimpl.UnsafeEnabled { 4439 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[39] 4440 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4441 ms.StoreMessageInfo(mi) 4442 } 4443} 4444 4445func (x *RateLimit_Action_DestinationCluster) String() string { 4446 return protoimpl.X.MessageStringOf(x) 4447} 4448 4449func (*RateLimit_Action_DestinationCluster) ProtoMessage() {} 4450 4451func (x *RateLimit_Action_DestinationCluster) ProtoReflect() protoreflect.Message { 4452 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[39] 4453 if protoimpl.UnsafeEnabled && x != nil { 4454 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4455 if ms.LoadMessageInfo() == nil { 4456 ms.StoreMessageInfo(mi) 4457 } 4458 return ms 4459 } 4460 return mi.MessageOf(x) 4461} 4462 4463// Deprecated: Use RateLimit_Action_DestinationCluster.ProtoReflect.Descriptor instead. 4464func (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) { 4465 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 1} 4466} 4467 4468// The following descriptor entry is appended when a header contains a key that matches the 4469// *header_name*: 4470// 4471// .. code-block:: cpp 4472// 4473// ("<descriptor_key>", "<header_value_queried_from_header>") 4474type RateLimit_Action_RequestHeaders struct { 4475 state protoimpl.MessageState 4476 sizeCache protoimpl.SizeCache 4477 unknownFields protoimpl.UnknownFields 4478 4479 // The header name to be queried from the request headers. The header’s 4480 // value is used to populate the value of the descriptor entry for the 4481 // descriptor_key. 4482 HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` 4483 // The key to use in the descriptor entry. 4484 DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` 4485} 4486 4487func (x *RateLimit_Action_RequestHeaders) Reset() { 4488 *x = RateLimit_Action_RequestHeaders{} 4489 if protoimpl.UnsafeEnabled { 4490 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[40] 4491 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4492 ms.StoreMessageInfo(mi) 4493 } 4494} 4495 4496func (x *RateLimit_Action_RequestHeaders) String() string { 4497 return protoimpl.X.MessageStringOf(x) 4498} 4499 4500func (*RateLimit_Action_RequestHeaders) ProtoMessage() {} 4501 4502func (x *RateLimit_Action_RequestHeaders) ProtoReflect() protoreflect.Message { 4503 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[40] 4504 if protoimpl.UnsafeEnabled && x != nil { 4505 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4506 if ms.LoadMessageInfo() == nil { 4507 ms.StoreMessageInfo(mi) 4508 } 4509 return ms 4510 } 4511 return mi.MessageOf(x) 4512} 4513 4514// Deprecated: Use RateLimit_Action_RequestHeaders.ProtoReflect.Descriptor instead. 4515func (*RateLimit_Action_RequestHeaders) Descriptor() ([]byte, []int) { 4516 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 2} 4517} 4518 4519func (x *RateLimit_Action_RequestHeaders) GetHeaderName() string { 4520 if x != nil { 4521 return x.HeaderName 4522 } 4523 return "" 4524} 4525 4526func (x *RateLimit_Action_RequestHeaders) GetDescriptorKey() string { 4527 if x != nil { 4528 return x.DescriptorKey 4529 } 4530 return "" 4531} 4532 4533// The following descriptor entry is appended to the descriptor and is populated using the 4534// trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`: 4535// 4536// .. code-block:: cpp 4537// 4538// ("remote_address", "<trusted address from x-forwarded-for>") 4539type RateLimit_Action_RemoteAddress struct { 4540 state protoimpl.MessageState 4541 sizeCache protoimpl.SizeCache 4542 unknownFields protoimpl.UnknownFields 4543} 4544 4545func (x *RateLimit_Action_RemoteAddress) Reset() { 4546 *x = RateLimit_Action_RemoteAddress{} 4547 if protoimpl.UnsafeEnabled { 4548 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[41] 4549 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4550 ms.StoreMessageInfo(mi) 4551 } 4552} 4553 4554func (x *RateLimit_Action_RemoteAddress) String() string { 4555 return protoimpl.X.MessageStringOf(x) 4556} 4557 4558func (*RateLimit_Action_RemoteAddress) ProtoMessage() {} 4559 4560func (x *RateLimit_Action_RemoteAddress) ProtoReflect() protoreflect.Message { 4561 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[41] 4562 if protoimpl.UnsafeEnabled && x != nil { 4563 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4564 if ms.LoadMessageInfo() == nil { 4565 ms.StoreMessageInfo(mi) 4566 } 4567 return ms 4568 } 4569 return mi.MessageOf(x) 4570} 4571 4572// Deprecated: Use RateLimit_Action_RemoteAddress.ProtoReflect.Descriptor instead. 4573func (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) { 4574 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 3} 4575} 4576 4577// The following descriptor entry is appended to the descriptor: 4578// 4579// .. code-block:: cpp 4580// 4581// ("generic_key", "<descriptor_value>") 4582type RateLimit_Action_GenericKey struct { 4583 state protoimpl.MessageState 4584 sizeCache protoimpl.SizeCache 4585 unknownFields protoimpl.UnknownFields 4586 4587 // The value to use in the descriptor entry. 4588 DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` 4589} 4590 4591func (x *RateLimit_Action_GenericKey) Reset() { 4592 *x = RateLimit_Action_GenericKey{} 4593 if protoimpl.UnsafeEnabled { 4594 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[42] 4595 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4596 ms.StoreMessageInfo(mi) 4597 } 4598} 4599 4600func (x *RateLimit_Action_GenericKey) String() string { 4601 return protoimpl.X.MessageStringOf(x) 4602} 4603 4604func (*RateLimit_Action_GenericKey) ProtoMessage() {} 4605 4606func (x *RateLimit_Action_GenericKey) ProtoReflect() protoreflect.Message { 4607 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[42] 4608 if protoimpl.UnsafeEnabled && x != nil { 4609 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4610 if ms.LoadMessageInfo() == nil { 4611 ms.StoreMessageInfo(mi) 4612 } 4613 return ms 4614 } 4615 return mi.MessageOf(x) 4616} 4617 4618// Deprecated: Use RateLimit_Action_GenericKey.ProtoReflect.Descriptor instead. 4619func (*RateLimit_Action_GenericKey) Descriptor() ([]byte, []int) { 4620 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 4} 4621} 4622 4623func (x *RateLimit_Action_GenericKey) GetDescriptorValue() string { 4624 if x != nil { 4625 return x.DescriptorValue 4626 } 4627 return "" 4628} 4629 4630// The following descriptor entry is appended to the descriptor: 4631// 4632// .. code-block:: cpp 4633// 4634// ("header_match", "<descriptor_value>") 4635type RateLimit_Action_HeaderValueMatch struct { 4636 state protoimpl.MessageState 4637 sizeCache protoimpl.SizeCache 4638 unknownFields protoimpl.UnknownFields 4639 4640 // The value to use in the descriptor entry. 4641 DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` 4642 // If set to true, the action will append a descriptor entry when the 4643 // request matches the headers. If set to false, the action will append a 4644 // descriptor entry when the request does not match the headers. The 4645 // default value is true. 4646 ExpectMatch *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` 4647 // Specifies a set of headers that the rate limit action should match 4648 // on. The action will check the request’s headers against all the 4649 // specified headers in the config. A match will happen if all the 4650 // headers in the config are present in the request with the same values 4651 // (or based on presence if the value field is not in the config). 4652 Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` 4653} 4654 4655func (x *RateLimit_Action_HeaderValueMatch) Reset() { 4656 *x = RateLimit_Action_HeaderValueMatch{} 4657 if protoimpl.UnsafeEnabled { 4658 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[43] 4659 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4660 ms.StoreMessageInfo(mi) 4661 } 4662} 4663 4664func (x *RateLimit_Action_HeaderValueMatch) String() string { 4665 return protoimpl.X.MessageStringOf(x) 4666} 4667 4668func (*RateLimit_Action_HeaderValueMatch) ProtoMessage() {} 4669 4670func (x *RateLimit_Action_HeaderValueMatch) ProtoReflect() protoreflect.Message { 4671 mi := &file_envoy_api_v2_route_route_components_proto_msgTypes[43] 4672 if protoimpl.UnsafeEnabled && x != nil { 4673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4674 if ms.LoadMessageInfo() == nil { 4675 ms.StoreMessageInfo(mi) 4676 } 4677 return ms 4678 } 4679 return mi.MessageOf(x) 4680} 4681 4682// Deprecated: Use RateLimit_Action_HeaderValueMatch.ProtoReflect.Descriptor instead. 4683func (*RateLimit_Action_HeaderValueMatch) Descriptor() ([]byte, []int) { 4684 return file_envoy_api_v2_route_route_components_proto_rawDescGZIP(), []int{14, 0, 5} 4685} 4686 4687func (x *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string { 4688 if x != nil { 4689 return x.DescriptorValue 4690 } 4691 return "" 4692} 4693 4694func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue { 4695 if x != nil { 4696 return x.ExpectMatch 4697 } 4698 return nil 4699} 4700 4701func (x *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher { 4702 if x != nil { 4703 return x.Headers 4704 } 4705 return nil 4706} 4707 4708var File_envoy_api_v2_route_route_components_proto protoreflect.FileDescriptor 4709 4710var file_envoy_api_v2_route_route_components_proto_rawDesc = []byte{ 4711 0x0a, 0x29, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x72, 4712 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 4713 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x65, 0x6e, 0x76, 4714 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x1a, 4715 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x6f, 4716 0x72, 0x65, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x65, 4717 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 4718 0x72, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x65, 4719 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 4720 0x72, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 4721 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x65, 4722 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 4723 0x74, 0x79, 0x70, 0x65, 0x2f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 4724 0x1a, 0x26, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x72, 0x61, 4725 0x63, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 4726 0x61, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4727 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 4728 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 4729 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 4730 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 4731 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 4732 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 4733 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 4734 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 4735 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 4736 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 4737 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 4738 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 4739 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 4740 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 4741 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 4742 0x0d, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1b, 4743 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 4744 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x64, 4745 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 4746 0x0f, 0x92, 0x01, 0x0c, 0x08, 0x01, 0x22, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 4747 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x72, 0x6f, 0x75, 4748 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 4749 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 4750 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x0b, 4751 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 4752 0x0e, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 4753 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 4754 0x73, 0x74, 0x2e, 0x54, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 4755 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 4756 0x0a, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x54, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x76, 4757 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 4758 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 4759 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 4760 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 4761 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x61, 4762 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 4763 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 4764 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, 4765 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x65, 4766 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 4767 0x5f, 0x61, 0x64, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 4768 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 4769 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 4770 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 4771 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 4772 0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 4773 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0d, 0x20, 4774 0x03, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 4775 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x72, 4776 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 4777 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 4778 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 4779 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 4780 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 4781 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 4782 0x41, 0x64, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 4783 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 4784 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 4785 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 4786 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 4787 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 4788 0x75, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x04, 4789 0x63, 0x6f, 0x72, 0x73, 0x12, 0x64, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 4790 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 4791 0x34, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 4792 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 4793 0x2e, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 4794 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x46, 0x69, 4795 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x70, 0x0a, 0x17, 0x74, 0x79, 4796 0x70, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 4797 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e, 4798 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 4799 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 4800 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 4801 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 4802 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x1d, 4803 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 4804 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 4805 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 4806 0x65, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 4807 0x48, 0x0a, 0x21, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 4808 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 4809 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 4810 0x75, 0x64, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 4811 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x72, 0x65, 0x74, 4812 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 4813 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 4814 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 4815 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4f, 0x0a, 4816 0x19, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x74, 0x79, 4817 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 4818 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 4819 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 4820 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 4821 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x11, 4822 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 4823 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 4824 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 4825 0x63, 0x79, 0x12, 0x60, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 4826 0x74, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 4827 0x79, 0x74, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 4828 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 4829 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x65, 0x72, 0x52, 0x65, 0x71, 4830 0x75, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 4831 0x79, 0x74, 0x65, 0x73, 0x1a, 0x5b, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 4832 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 4833 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 4834 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 4835 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 4836 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 4837 0x01, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 4838 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 4839 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 4840 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 4841 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 4842 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 4843 0x22, 0x3a, 0x0a, 0x12, 0x54, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 4844 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 4845 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x4e, 0x4c, 4846 0x59, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x09, 4847 0x10, 0x0a, 0x22, 0x3c, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 4848 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 4849 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 4850 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 4851 0x22, 0xe6, 0x0a, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 4852 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 4853 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 4854 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 4855 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x08, 0xfa, 4856 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37, 4857 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 4858 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 4859 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 4860 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 4861 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 4862 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 4863 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 4864 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x69, 0x72, 4865 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 4866 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 4867 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 4868 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 4869 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 4870 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 4871 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 4872 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 4873 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 4874 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 4875 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 4876 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4d, 0x65, 4877 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 4878 0x12, 0x3b, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 4879 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 4880 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 4881 0x6f, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 4882 0x11, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 4883 0x69, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 4884 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 4885 0x75, 0x74, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 4886 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x70, 0x65, 4887 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a, 4888 0x17, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 4889 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 4890 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 4891 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 4892 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 4893 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 4894 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x65, 0x71, 4895 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 4896 0x61, 0x64, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 4897 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 4898 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 4899 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 4900 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 4901 0x39, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 4902 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x03, 4903 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 4904 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x72, 0x65, 4905 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 4906 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 4907 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 4908 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 4909 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 0x65, 4910 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 4911 0x64, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 4912 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 4913 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 4914 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 4915 0x35, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 4916 0x32, 0x1b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 4917 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x74, 4918 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x60, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 4919 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 4920 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 4921 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 4922 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x65, 4923 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 4924 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x1a, 0x5b, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x46, 4925 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 4926 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 4927 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 4928 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 4929 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 4930 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 4931 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 4932 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 4933 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 4934 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 4935 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 4936 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x03, 4937 0xf8, 0x42, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x90, 0x09, 0x0a, 0x0f, 0x57, 0x65, 4938 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x57, 0x0a, 4939 0x08, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 4940 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 4941 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 4942 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 4943 0x68, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 0x63, 0x6c, 4944 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 4945 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 4946 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 4947 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 4948 0x02, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 4949 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 4950 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x75, 4951 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0xab, 4952 0x07, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 4953 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 4954 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 4955 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 4956 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 4957 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 0x69, 4958 0x67, 0x68, 0x74, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 4959 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e, 4960 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 4961 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 4962 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x64, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 4963 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 4964 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 4965 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 4966 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 4967 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 4968 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x39, 0x0a, 4969 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 4970 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 4971 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 4972 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x66, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 4973 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 4974 0x61, 0x64, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 4975 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x48, 0x65, 4976 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 4977 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 0x65, 0x73, 0x70, 4978 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 4979 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 4980 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x06, 4981 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 4982 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x76, 0x0a, 4983 0x11, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 4984 0x69, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 4985 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 4986 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 4987 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x46, 4988 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 4989 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x70, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 4990 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x82, 0x01, 0x0a, 0x17, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 4991 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 4992 0x67, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 4993 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 0x69, 4994 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 4995 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 4996 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 4997 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 4998 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5b, 0x0a, 0x14, 0x50, 0x65, 4999 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 5000 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 5001 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 5002 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 5003 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 5004 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 5005 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 5006 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 5007 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 5008 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 5009 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 5010 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x22, 0xc8, 0x06, 0x0a, 5011 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x06, 0x70, 5012 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 5013 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 5014 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x05, 0x72, 5015 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xfa, 0x42, 5016 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x05, 5017 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x4b, 0x0a, 0x0a, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65, 5018 0x67, 0x65, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 5019 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x52, 5020 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 5021 0x8a, 0x01, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x09, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x67, 5022 0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 5023 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 5024 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 5025 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73, 5026 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x56, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 5027 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 5028 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 5029 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 5030 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75, 5031 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 5032 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 5033 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 5034 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 5035 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x10, 0x71, 0x75, 5036 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 5037 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 5038 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 5039 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 5040 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 5041 0x12, 0x48, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 5042 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 5043 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x47, 5044 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 5045 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 0x12, 0x56, 0x0a, 0x0b, 0x74, 0x6c, 5046 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 5047 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 5048 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 5049 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 5050 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 5051 0x78, 0x74, 0x1a, 0x17, 0x0a, 0x15, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 5052 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x8c, 0x01, 0x0a, 0x16, 5053 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 5054 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 5055 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 5056 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 5057 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 5058 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 5059 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 5060 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 5061 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x64, 0x42, 0x15, 0x0a, 0x0e, 0x70, 0x61, 5062 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 5063 0x01, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0xaa, 0x05, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, 5064 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 5065 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0x18, 0x01, 5066 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 5067 0x67, 0x69, 0x6e, 0x12, 0x3d, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 5068 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 5069 0x0f, 0x18, 0x01, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 5070 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x67, 5071 0x65, 0x78, 0x12, 0x5c, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 5072 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 5073 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 5074 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 5075 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x16, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 5076 0x72, 0x69, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 5077 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 5078 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x65, 5079 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x68, 5080 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 5081 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x78, 5082 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 5083 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 5084 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 5085 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x61, 0x6c, 5086 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 5087 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 5088 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 5089 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 5090 0x61, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 5091 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 5092 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 5093 0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 5094 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 5095 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 5096 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 5097 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 5098 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x69, 5099 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x52, 0x0a, 0x0e, 0x73, 5100 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 5101 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 5102 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 5103 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 5104 0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 5105 0x13, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 5106 0x66, 0x69, 0x65, 0x72, 0x22, 0xfb, 0x1b, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 5107 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 5108 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x48, 0x00, 5109 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 5110 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 5111 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 5112 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 5113 0x72, 0x12, 0x52, 0x0a, 0x11, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 5114 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 5115 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 5116 0x65, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 5117 0x72, 0x48, 0x00, 0x52, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 5118 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x1f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 5119 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 5120 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 5121 0x3b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 5122 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5123 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 5124 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 5125 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 5126 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 5127 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 5128 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x65, 0x6e, 5129 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 5130 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 5131 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 5132 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 5133 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0d, 0x70, 0x72, 5134 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x72, 5135 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x20, 0x20, 0x01, 5136 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 5137 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 5138 0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x52, 5139 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x4c, 0x0a, 5140 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 5141 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 5142 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x16, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 5143 0x72, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, 0x01, 0x52, 0x0b, 5144 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x61, 5145 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 5146 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 5147 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 5148 0x75, 0x65, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 5149 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 5150 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 5151 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 5152 0x01, 0xc8, 0x01, 0x00, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x15, 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 5153 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 5154 0x01, 0x52, 0x15, 0x61, 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 5155 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 5156 0x6f, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 5157 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 5158 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 5159 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x18, 0x20, 5160 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 5161 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 5162 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x0c, 0x72, 5163 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 5164 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 5165 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 5166 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 5167 0x4f, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 5168 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x21, 0x20, 0x01, 5169 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 5170 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 5171 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 5172 0x12, 0x6b, 0x0a, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 0x72, 5173 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 5174 0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 5175 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5176 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 5177 0x6c, 0x69, 0x63, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 5178 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x6b, 0x0a, 5179 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 5180 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 5181 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 5182 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 5183 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 5184 0x69, 0x63, 0x79, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 5185 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x72, 5186 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x65, 5187 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 5188 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 5189 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 5190 0x72, 0x69, 0x74, 0x79, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 5191 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 5192 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 5193 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 5194 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 5195 0x76, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0e, 5196 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 5197 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 5198 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x56, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 5199 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x6f, 5200 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 5201 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 5202 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 5203 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 5204 0x63, 0x79, 0x12, 0x32, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 5205 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 5206 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 5207 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x43, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 5208 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 5209 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 5210 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x6d, 0x61, 0x78, 5211 0x47, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x49, 0x0a, 0x13, 0x67, 5212 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 5213 0x65, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5214 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 5215 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 5216 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x56, 0x0a, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 5217 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 5218 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 5219 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5220 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 5221 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x70, 5222 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 5223 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 5224 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 5225 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 5226 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 5227 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 5228 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5229 0x12, 0x52, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 5230 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 5231 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 5232 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 5233 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 5234 0x65, 0x63, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 5235 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x76, 5236 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 5237 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 5238 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0xfc, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x71, 5239 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 5240 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 5241 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x07, 0x63, 0x6c, 0x75, 0x73, 5242 0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 5243 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 5244 0x05, 0x01, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x56, 5245 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 5246 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 5247 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x52, 0x75, 0x6e, 5248 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 5249 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 5250 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 5251 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 5252 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 5253 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, 5254 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x1a, 0xc6, 0x06, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68, 5255 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4b, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 5256 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 5257 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 5258 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 5259 0x63, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 5260 0x64, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 5261 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 5262 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 5263 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 5264 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 5265 0x12, 0x76, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 5266 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 5267 0x3f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 5268 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5269 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 5270 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 5271 0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 5272 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x0f, 0x71, 0x75, 0x65, 0x72, 5273 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 5274 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 5275 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 5276 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x51, 0x75, 5277 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 5278 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x5b, 5279 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 5280 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 5281 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 5282 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 5283 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 5284 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 5285 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 5286 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0x38, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 5287 0x72, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 5288 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 5289 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 5290 0x65, 0x1a, 0x66, 0x0a, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 5291 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 5292 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 5293 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 5294 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 5295 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 5296 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x33, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 5297 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 5298 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01, 5299 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x1a, 0x2d, 5300 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 5301 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 5302 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x28, 0x0a, 5303 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x03, 5304 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 5305 0x20, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x42, 0x17, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63, 5306 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 5307 0x1a, 0x75, 0x0a, 0x0d, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 5308 0x67, 0x12, 0x2e, 0x0a, 0x0c, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 5309 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 5310 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, 5311 0x65, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 5312 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 5313 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 5314 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x45, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 0x73, 0x74, 5315 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 5316 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 5317 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 5318 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x22, 0x5a, 5319 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 5320 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x41, 0x53, 0x53, 5321 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 5322 0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 5323 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 5324 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x42, 0x18, 0x0a, 0x11, 0x63, 0x6c, 5325 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 5326 0x03, 0xf8, 0x42, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 5327 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 5328 0x08, 0x0c, 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 5329 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x16, 0x10, 0x17, 0x4a, 0x04, 0x08, 0x15, 5330 0x10, 0x16, 0x22, 0xf3, 0x09, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 5331 0x63, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 5332 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x3d, 0x0a, 5333 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 5334 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 5335 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 5336 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0f, 5337 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 5338 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 5339 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 5340 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 5341 0x54, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 5342 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 5343 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 5344 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 5345 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 5346 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x64, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x68, 5347 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 5348 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 5349 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 5350 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 5351 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x12, 0x72, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 5352 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x21, 0x68, 5353 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 5354 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 5355 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 0x68, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 5356 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x41, 0x74, 0x74, 5357 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 5358 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 5359 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 5360 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x72, 5361 0x65, 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 5362 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 5363 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 5364 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 5365 0x66, 0x52, 0x0c, 0x72, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 5366 0x4e, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x65, 0x61, 5367 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 5368 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 5369 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x10, 0x72, 5370 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 5371 0x5d, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 5372 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 5373 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 5374 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 5375 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x17, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 5376 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0xad, 5377 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 5378 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 5379 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 5380 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 5381 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 5382 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 5383 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 5384 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 5385 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 5386 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 5387 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xb2, 5388 0x01, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 5389 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 5390 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 5391 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 5392 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 5393 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x02, 0x18, 0x01, 0x48, 5394 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 5395 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 5396 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 5397 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 5398 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 5399 0x79, 0x70, 0x65, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 5400 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x74, 5401 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 5402 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 5403 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0xaa, 0x01, 0x04, 0x08, 0x01, 5404 0x2a, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 5405 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 5406 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 5407 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 5408 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 5409 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x48, 0x65, 0x64, 5410 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 5411 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 5412 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 5413 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 5414 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 5415 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x19, 0x61, 0x64, 5416 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 5417 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 5418 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 5419 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x61, 0x64, 5420 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 5421 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x18, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6f, 5422 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 5423 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 5424 0x50, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x22, 0xdd, 0x04, 5425 0x0a, 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5426 0x12, 0x27, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 5427 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 5428 0x73, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x63, 0x68, 5429 0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 5430 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69, 5431 0x72, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64, 5432 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 5433 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 5434 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 5435 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 5436 0x6f, 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x0d, 0x70, 5437 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 5438 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48, 5439 0x01, 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 5440 0x34, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 5441 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 5442 0x02, 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 5443 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x66, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 5444 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x65, 5445 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 5446 0x65, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 5447 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 5448 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 5449 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 5450 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 5451 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x77, 5452 0x0a, 0x14, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 5453 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f, 5454 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 5455 0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f, 5456 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f, 5457 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 5458 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44, 5459 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x04, 0x42, 0x1a, 0x0a, 0x18, 0x73, 0x63, 0x68, 0x65, 0x6d, 5460 0x65, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 5461 0x69, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x77, 0x72, 5462 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0x6d, 0x0a, 5463 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 5464 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 5465 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 0x10, 0xd8, 0x04, 0x28, 5466 0x64, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x62, 0x6f, 0x64, 5467 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 5468 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 5469 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0x6c, 0x0a, 0x09, 5470 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6f, 0x70, 0x65, 5471 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 5472 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 5473 0x12, 0x38, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 5474 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 5475 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 5476 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x22, 0xa6, 0x02, 0x0a, 0x07, 0x54, 5477 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 5478 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 5479 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 5480 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, 5481 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x46, 5482 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 5483 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 5484 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 5485 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 5486 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x48, 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 5487 0x6c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 5488 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x72, 5489 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 5490 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 5491 0x12, 0x41, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 5492 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 5493 0x70, 0x65, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x75, 5494 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 5495 0x61, 0x67, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x43, 5496 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 5497 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x72, 0x03, 5498 0x28, 0x80, 0x08, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 5499 0x72, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 5500 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 5501 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 5502 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 5503 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 5504 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x06, 5505 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x65, 5506 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x63, 0x6f, 0x72, 0x65, 5507 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x08, 5508 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 5509 0x22, 0xd3, 0x09, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 5510 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 5511 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 5512 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 5513 0x2a, 0x02, 0x18, 0x0a, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 5514 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 5515 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x07, 5516 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 5517 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 5518 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 5519 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x61, 5520 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x9d, 0x08, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 5521 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 5522 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 5523 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 5524 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 5525 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 5526 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x6a, 5527 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 5528 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x6e, 5529 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 5530 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 5531 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 5532 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 5533 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x0f, 0x72, 0x65, 5534 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 5535 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 5536 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 5537 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 5538 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 5539 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5b, 0x0a, 0x0e, 0x72, 0x65, 5540 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 5541 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 5542 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 5543 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 5544 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 5545 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 5546 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 5547 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 5548 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 5549 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 5550 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x65, 0x0a, 0x12, 0x68, 5551 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 5552 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 5553 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 5554 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 5555 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 5556 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 5557 0x63, 0x68, 0x1a, 0x0f, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 5558 0x74, 0x65, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 5559 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x70, 0x0a, 0x0e, 0x52, 0x65, 0x71, 5560 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 5561 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 5562 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 5563 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 0x64, 5564 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 5565 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0d, 0x64, 0x65, 5566 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x1a, 0x0f, 0x0a, 0x0d, 0x52, 5567 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x40, 0x0a, 0x0a, 5568 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 5569 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 5570 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64, 5571 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xcc, 5572 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 5573 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 5574 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 5575 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 5576 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 5577 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 5578 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 5579 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63, 5580 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 5581 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 5582 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 5583 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 5584 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x42, 0x17, 0x0a, 5585 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 5586 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x22, 0xdf, 0x03, 0x0a, 0x0d, 0x48, 0x65, 0x61, 0x64, 0x65, 5587 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 5588 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x20, 0x01, 0xc0, 5589 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x65, 5590 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 5591 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x33, 5592 0x0a, 0x0b, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 5593 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0xb8, 5594 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 5595 0x74, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x10, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 5596 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 5597 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 5598 0x65, 0x72, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, 5599 0x00, 0x52, 0x0e, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 5600 0x68, 0x12, 0x39, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 5601 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 5602 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 5603 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, 5604 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 5605 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 5606 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 5607 0x74, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 5608 0x20, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 5609 0x68, 0x12, 0x2c, 0x0a, 0x0c, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 5610 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x20, 0x01, 5611 0x48, 0x00, 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 5612 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 5613 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74, 5614 0x63, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 5615 0x63, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 5616 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xaf, 0x02, 0x0a, 0x15, 0x51, 0x75, 0x65, 5617 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 5618 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 5619 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x08, 0x52, 0x04, 0x6e, 0x61, 5620 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 5621 0x09, 0x42, 0x08, 0x18, 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 5622 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 5623 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 5624 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x18, 5625 0x01, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x12, 0x50, 5626 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 5627 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 5628 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 5629 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 5630 0x01, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 5631 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 5632 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 5633 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x21, 0x0a, 0x1f, 0x71, 0x75, 0x65, 0x72, 0x79, 5634 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 5635 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x5f, 0x0a, 0x20, 0x69, 0x6f, 5636 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 5637 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x42, 0x14, 5638 0x52, 0x6f, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x50, 5639 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x17, 0x12, 0x15, 0x65, 0x6e, 5640 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 5641 0x2e, 0x76, 0x33, 0xba, 0x80, 0xc8, 0xd1, 0x06, 0x02, 0x10, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 5642 0x74, 0x6f, 0x33, 5643} 5644 5645var ( 5646 file_envoy_api_v2_route_route_components_proto_rawDescOnce sync.Once 5647 file_envoy_api_v2_route_route_components_proto_rawDescData = file_envoy_api_v2_route_route_components_proto_rawDesc 5648) 5649 5650func file_envoy_api_v2_route_route_components_proto_rawDescGZIP() []byte { 5651 file_envoy_api_v2_route_route_components_proto_rawDescOnce.Do(func() { 5652 file_envoy_api_v2_route_route_components_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_api_v2_route_route_components_proto_rawDescData) 5653 }) 5654 return file_envoy_api_v2_route_route_components_proto_rawDescData 5655} 5656 5657var file_envoy_api_v2_route_route_components_proto_enumTypes = make([]protoimpl.EnumInfo, 4) 5658var file_envoy_api_v2_route_route_components_proto_msgTypes = make([]protoimpl.MessageInfo, 44) 5659var file_envoy_api_v2_route_route_components_proto_goTypes = []interface{}{ 5660 (VirtualHost_TlsRequirementType)(0), // 0: envoy.api.v2.route.VirtualHost.TlsRequirementType 5661 (RouteAction_ClusterNotFoundResponseCode)(0), // 1: envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode 5662 (RouteAction_InternalRedirectAction)(0), // 2: envoy.api.v2.route.RouteAction.InternalRedirectAction 5663 (RedirectAction_RedirectResponseCode)(0), // 3: envoy.api.v2.route.RedirectAction.RedirectResponseCode 5664 (*VirtualHost)(nil), // 4: envoy.api.v2.route.VirtualHost 5665 (*FilterAction)(nil), // 5: envoy.api.v2.route.FilterAction 5666 (*Route)(nil), // 6: envoy.api.v2.route.Route 5667 (*WeightedCluster)(nil), // 7: envoy.api.v2.route.WeightedCluster 5668 (*RouteMatch)(nil), // 8: envoy.api.v2.route.RouteMatch 5669 (*CorsPolicy)(nil), // 9: envoy.api.v2.route.CorsPolicy 5670 (*RouteAction)(nil), // 10: envoy.api.v2.route.RouteAction 5671 (*RetryPolicy)(nil), // 11: envoy.api.v2.route.RetryPolicy 5672 (*HedgePolicy)(nil), // 12: envoy.api.v2.route.HedgePolicy 5673 (*RedirectAction)(nil), // 13: envoy.api.v2.route.RedirectAction 5674 (*DirectResponseAction)(nil), // 14: envoy.api.v2.route.DirectResponseAction 5675 (*Decorator)(nil), // 15: envoy.api.v2.route.Decorator 5676 (*Tracing)(nil), // 16: envoy.api.v2.route.Tracing 5677 (*VirtualCluster)(nil), // 17: envoy.api.v2.route.VirtualCluster 5678 (*RateLimit)(nil), // 18: envoy.api.v2.route.RateLimit 5679 (*HeaderMatcher)(nil), // 19: envoy.api.v2.route.HeaderMatcher 5680 (*QueryParameterMatcher)(nil), // 20: envoy.api.v2.route.QueryParameterMatcher 5681 nil, // 21: envoy.api.v2.route.VirtualHost.PerFilterConfigEntry 5682 nil, // 22: envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry 5683 nil, // 23: envoy.api.v2.route.Route.PerFilterConfigEntry 5684 nil, // 24: envoy.api.v2.route.Route.TypedPerFilterConfigEntry 5685 (*WeightedCluster_ClusterWeight)(nil), // 25: envoy.api.v2.route.WeightedCluster.ClusterWeight 5686 nil, // 26: envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry 5687 nil, // 27: envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry 5688 (*RouteMatch_GrpcRouteMatchOptions)(nil), // 28: envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions 5689 (*RouteMatch_TlsContextMatchOptions)(nil), // 29: envoy.api.v2.route.RouteMatch.TlsContextMatchOptions 5690 (*RouteAction_RequestMirrorPolicy)(nil), // 30: envoy.api.v2.route.RouteAction.RequestMirrorPolicy 5691 (*RouteAction_HashPolicy)(nil), // 31: envoy.api.v2.route.RouteAction.HashPolicy 5692 (*RouteAction_UpgradeConfig)(nil), // 32: envoy.api.v2.route.RouteAction.UpgradeConfig 5693 (*RouteAction_HashPolicy_Header)(nil), // 33: envoy.api.v2.route.RouteAction.HashPolicy.Header 5694 (*RouteAction_HashPolicy_Cookie)(nil), // 34: envoy.api.v2.route.RouteAction.HashPolicy.Cookie 5695 (*RouteAction_HashPolicy_ConnectionProperties)(nil), // 35: envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties 5696 (*RouteAction_HashPolicy_QueryParameter)(nil), // 36: envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter 5697 (*RouteAction_HashPolicy_FilterState)(nil), // 37: envoy.api.v2.route.RouteAction.HashPolicy.FilterState 5698 (*RetryPolicy_RetryPriority)(nil), // 38: envoy.api.v2.route.RetryPolicy.RetryPriority 5699 (*RetryPolicy_RetryHostPredicate)(nil), // 39: envoy.api.v2.route.RetryPolicy.RetryHostPredicate 5700 (*RetryPolicy_RetryBackOff)(nil), // 40: envoy.api.v2.route.RetryPolicy.RetryBackOff 5701 (*RateLimit_Action)(nil), // 41: envoy.api.v2.route.RateLimit.Action 5702 (*RateLimit_Action_SourceCluster)(nil), // 42: envoy.api.v2.route.RateLimit.Action.SourceCluster 5703 (*RateLimit_Action_DestinationCluster)(nil), // 43: envoy.api.v2.route.RateLimit.Action.DestinationCluster 5704 (*RateLimit_Action_RequestHeaders)(nil), // 44: envoy.api.v2.route.RateLimit.Action.RequestHeaders 5705 (*RateLimit_Action_RemoteAddress)(nil), // 45: envoy.api.v2.route.RateLimit.Action.RemoteAddress 5706 (*RateLimit_Action_GenericKey)(nil), // 46: envoy.api.v2.route.RateLimit.Action.GenericKey 5707 (*RateLimit_Action_HeaderValueMatch)(nil), // 47: envoy.api.v2.route.RateLimit.Action.HeaderValueMatch 5708 (*core.HeaderValueOption)(nil), // 48: envoy.api.v2.core.HeaderValueOption 5709 (*any.Any)(nil), // 49: google.protobuf.Any 5710 (*wrappers.UInt32Value)(nil), // 50: google.protobuf.UInt32Value 5711 (*core.Metadata)(nil), // 51: envoy.api.v2.core.Metadata 5712 (*matcher.RegexMatcher)(nil), // 52: envoy.type.matcher.RegexMatcher 5713 (*wrappers.BoolValue)(nil), // 53: google.protobuf.BoolValue 5714 (*core.RuntimeFractionalPercent)(nil), // 54: envoy.api.v2.core.RuntimeFractionalPercent 5715 (*matcher.StringMatcher)(nil), // 55: envoy.type.matcher.StringMatcher 5716 (*matcher.RegexMatchAndSubstitute)(nil), // 56: envoy.type.matcher.RegexMatchAndSubstitute 5717 (*duration.Duration)(nil), // 57: google.protobuf.Duration 5718 (core.RoutingPriority)(0), // 58: envoy.api.v2.core.RoutingPriority 5719 (*_type.FractionalPercent)(nil), // 59: envoy.type.FractionalPercent 5720 (*core.DataSource)(nil), // 60: envoy.api.v2.core.DataSource 5721 (*v2.CustomTag)(nil), // 61: envoy.type.tracing.v2.CustomTag 5722 (core.RequestMethod)(0), // 62: envoy.api.v2.core.RequestMethod 5723 (*_type.Int64Range)(nil), // 63: envoy.type.Int64Range 5724 (*_struct.Struct)(nil), // 64: google.protobuf.Struct 5725} 5726var file_envoy_api_v2_route_route_components_proto_depIdxs = []int32{ 5727 6, // 0: envoy.api.v2.route.VirtualHost.routes:type_name -> envoy.api.v2.route.Route 5728 0, // 1: envoy.api.v2.route.VirtualHost.require_tls:type_name -> envoy.api.v2.route.VirtualHost.TlsRequirementType 5729 17, // 2: envoy.api.v2.route.VirtualHost.virtual_clusters:type_name -> envoy.api.v2.route.VirtualCluster 5730 18, // 3: envoy.api.v2.route.VirtualHost.rate_limits:type_name -> envoy.api.v2.route.RateLimit 5731 48, // 4: envoy.api.v2.route.VirtualHost.request_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption 5732 48, // 5: envoy.api.v2.route.VirtualHost.response_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption 5733 9, // 6: envoy.api.v2.route.VirtualHost.cors:type_name -> envoy.api.v2.route.CorsPolicy 5734 21, // 7: envoy.api.v2.route.VirtualHost.per_filter_config:type_name -> envoy.api.v2.route.VirtualHost.PerFilterConfigEntry 5735 22, // 8: envoy.api.v2.route.VirtualHost.typed_per_filter_config:type_name -> envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry 5736 11, // 9: envoy.api.v2.route.VirtualHost.retry_policy:type_name -> envoy.api.v2.route.RetryPolicy 5737 49, // 10: envoy.api.v2.route.VirtualHost.retry_policy_typed_config:type_name -> google.protobuf.Any 5738 12, // 11: envoy.api.v2.route.VirtualHost.hedge_policy:type_name -> envoy.api.v2.route.HedgePolicy 5739 50, // 12: envoy.api.v2.route.VirtualHost.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value 5740 49, // 13: envoy.api.v2.route.FilterAction.action:type_name -> google.protobuf.Any 5741 8, // 14: envoy.api.v2.route.Route.match:type_name -> envoy.api.v2.route.RouteMatch 5742 10, // 15: envoy.api.v2.route.Route.route:type_name -> envoy.api.v2.route.RouteAction 5743 13, // 16: envoy.api.v2.route.Route.redirect:type_name -> envoy.api.v2.route.RedirectAction 5744 14, // 17: envoy.api.v2.route.Route.direct_response:type_name -> envoy.api.v2.route.DirectResponseAction 5745 5, // 18: envoy.api.v2.route.Route.filter_action:type_name -> envoy.api.v2.route.FilterAction 5746 51, // 19: envoy.api.v2.route.Route.metadata:type_name -> envoy.api.v2.core.Metadata 5747 15, // 20: envoy.api.v2.route.Route.decorator:type_name -> envoy.api.v2.route.Decorator 5748 23, // 21: envoy.api.v2.route.Route.per_filter_config:type_name -> envoy.api.v2.route.Route.PerFilterConfigEntry 5749 24, // 22: envoy.api.v2.route.Route.typed_per_filter_config:type_name -> envoy.api.v2.route.Route.TypedPerFilterConfigEntry 5750 48, // 23: envoy.api.v2.route.Route.request_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption 5751 48, // 24: envoy.api.v2.route.Route.response_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption 5752 16, // 25: envoy.api.v2.route.Route.tracing:type_name -> envoy.api.v2.route.Tracing 5753 50, // 26: envoy.api.v2.route.Route.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value 5754 25, // 27: envoy.api.v2.route.WeightedCluster.clusters:type_name -> envoy.api.v2.route.WeightedCluster.ClusterWeight 5755 50, // 28: envoy.api.v2.route.WeightedCluster.total_weight:type_name -> google.protobuf.UInt32Value 5756 52, // 29: envoy.api.v2.route.RouteMatch.safe_regex:type_name -> envoy.type.matcher.RegexMatcher 5757 53, // 30: envoy.api.v2.route.RouteMatch.case_sensitive:type_name -> google.protobuf.BoolValue 5758 54, // 31: envoy.api.v2.route.RouteMatch.runtime_fraction:type_name -> envoy.api.v2.core.RuntimeFractionalPercent 5759 19, // 32: envoy.api.v2.route.RouteMatch.headers:type_name -> envoy.api.v2.route.HeaderMatcher 5760 20, // 33: envoy.api.v2.route.RouteMatch.query_parameters:type_name -> envoy.api.v2.route.QueryParameterMatcher 5761 28, // 34: envoy.api.v2.route.RouteMatch.grpc:type_name -> envoy.api.v2.route.RouteMatch.GrpcRouteMatchOptions 5762 29, // 35: envoy.api.v2.route.RouteMatch.tls_context:type_name -> envoy.api.v2.route.RouteMatch.TlsContextMatchOptions 5763 55, // 36: envoy.api.v2.route.CorsPolicy.allow_origin_string_match:type_name -> envoy.type.matcher.StringMatcher 5764 53, // 37: envoy.api.v2.route.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue 5765 53, // 38: envoy.api.v2.route.CorsPolicy.enabled:type_name -> google.protobuf.BoolValue 5766 54, // 39: envoy.api.v2.route.CorsPolicy.filter_enabled:type_name -> envoy.api.v2.core.RuntimeFractionalPercent 5767 54, // 40: envoy.api.v2.route.CorsPolicy.shadow_enabled:type_name -> envoy.api.v2.core.RuntimeFractionalPercent 5768 7, // 41: envoy.api.v2.route.RouteAction.weighted_clusters:type_name -> envoy.api.v2.route.WeightedCluster 5769 1, // 42: envoy.api.v2.route.RouteAction.cluster_not_found_response_code:type_name -> envoy.api.v2.route.RouteAction.ClusterNotFoundResponseCode 5770 51, // 43: envoy.api.v2.route.RouteAction.metadata_match:type_name -> envoy.api.v2.core.Metadata 5771 56, // 44: envoy.api.v2.route.RouteAction.regex_rewrite:type_name -> envoy.type.matcher.RegexMatchAndSubstitute 5772 53, // 45: envoy.api.v2.route.RouteAction.auto_host_rewrite:type_name -> google.protobuf.BoolValue 5773 57, // 46: envoy.api.v2.route.RouteAction.timeout:type_name -> google.protobuf.Duration 5774 57, // 47: envoy.api.v2.route.RouteAction.idle_timeout:type_name -> google.protobuf.Duration 5775 11, // 48: envoy.api.v2.route.RouteAction.retry_policy:type_name -> envoy.api.v2.route.RetryPolicy 5776 49, // 49: envoy.api.v2.route.RouteAction.retry_policy_typed_config:type_name -> google.protobuf.Any 5777 30, // 50: envoy.api.v2.route.RouteAction.request_mirror_policy:type_name -> envoy.api.v2.route.RouteAction.RequestMirrorPolicy 5778 30, // 51: envoy.api.v2.route.RouteAction.request_mirror_policies:type_name -> envoy.api.v2.route.RouteAction.RequestMirrorPolicy 5779 58, // 52: envoy.api.v2.route.RouteAction.priority:type_name -> envoy.api.v2.core.RoutingPriority 5780 18, // 53: envoy.api.v2.route.RouteAction.rate_limits:type_name -> envoy.api.v2.route.RateLimit 5781 53, // 54: envoy.api.v2.route.RouteAction.include_vh_rate_limits:type_name -> google.protobuf.BoolValue 5782 31, // 55: envoy.api.v2.route.RouteAction.hash_policy:type_name -> envoy.api.v2.route.RouteAction.HashPolicy 5783 9, // 56: envoy.api.v2.route.RouteAction.cors:type_name -> envoy.api.v2.route.CorsPolicy 5784 57, // 57: envoy.api.v2.route.RouteAction.max_grpc_timeout:type_name -> google.protobuf.Duration 5785 57, // 58: envoy.api.v2.route.RouteAction.grpc_timeout_offset:type_name -> google.protobuf.Duration 5786 32, // 59: envoy.api.v2.route.RouteAction.upgrade_configs:type_name -> envoy.api.v2.route.RouteAction.UpgradeConfig 5787 2, // 60: envoy.api.v2.route.RouteAction.internal_redirect_action:type_name -> envoy.api.v2.route.RouteAction.InternalRedirectAction 5788 50, // 61: envoy.api.v2.route.RouteAction.max_internal_redirects:type_name -> google.protobuf.UInt32Value 5789 12, // 62: envoy.api.v2.route.RouteAction.hedge_policy:type_name -> envoy.api.v2.route.HedgePolicy 5790 50, // 63: envoy.api.v2.route.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value 5791 57, // 64: envoy.api.v2.route.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration 5792 38, // 65: envoy.api.v2.route.RetryPolicy.retry_priority:type_name -> envoy.api.v2.route.RetryPolicy.RetryPriority 5793 39, // 66: envoy.api.v2.route.RetryPolicy.retry_host_predicate:type_name -> envoy.api.v2.route.RetryPolicy.RetryHostPredicate 5794 40, // 67: envoy.api.v2.route.RetryPolicy.retry_back_off:type_name -> envoy.api.v2.route.RetryPolicy.RetryBackOff 5795 19, // 68: envoy.api.v2.route.RetryPolicy.retriable_headers:type_name -> envoy.api.v2.route.HeaderMatcher 5796 19, // 69: envoy.api.v2.route.RetryPolicy.retriable_request_headers:type_name -> envoy.api.v2.route.HeaderMatcher 5797 50, // 70: envoy.api.v2.route.HedgePolicy.initial_requests:type_name -> google.protobuf.UInt32Value 5798 59, // 71: envoy.api.v2.route.HedgePolicy.additional_request_chance:type_name -> envoy.type.FractionalPercent 5799 3, // 72: envoy.api.v2.route.RedirectAction.response_code:type_name -> envoy.api.v2.route.RedirectAction.RedirectResponseCode 5800 60, // 73: envoy.api.v2.route.DirectResponseAction.body:type_name -> envoy.api.v2.core.DataSource 5801 53, // 74: envoy.api.v2.route.Decorator.propagate:type_name -> google.protobuf.BoolValue 5802 59, // 75: envoy.api.v2.route.Tracing.client_sampling:type_name -> envoy.type.FractionalPercent 5803 59, // 76: envoy.api.v2.route.Tracing.random_sampling:type_name -> envoy.type.FractionalPercent 5804 59, // 77: envoy.api.v2.route.Tracing.overall_sampling:type_name -> envoy.type.FractionalPercent 5805 61, // 78: envoy.api.v2.route.Tracing.custom_tags:type_name -> envoy.type.tracing.v2.CustomTag 5806 19, // 79: envoy.api.v2.route.VirtualCluster.headers:type_name -> envoy.api.v2.route.HeaderMatcher 5807 62, // 80: envoy.api.v2.route.VirtualCluster.method:type_name -> envoy.api.v2.core.RequestMethod 5808 50, // 81: envoy.api.v2.route.RateLimit.stage:type_name -> google.protobuf.UInt32Value 5809 41, // 82: envoy.api.v2.route.RateLimit.actions:type_name -> envoy.api.v2.route.RateLimit.Action 5810 52, // 83: envoy.api.v2.route.HeaderMatcher.safe_regex_match:type_name -> envoy.type.matcher.RegexMatcher 5811 63, // 84: envoy.api.v2.route.HeaderMatcher.range_match:type_name -> envoy.type.Int64Range 5812 53, // 85: envoy.api.v2.route.QueryParameterMatcher.regex:type_name -> google.protobuf.BoolValue 5813 55, // 86: envoy.api.v2.route.QueryParameterMatcher.string_match:type_name -> envoy.type.matcher.StringMatcher 5814 64, // 87: envoy.api.v2.route.VirtualHost.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct 5815 49, // 88: envoy.api.v2.route.VirtualHost.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any 5816 64, // 89: envoy.api.v2.route.Route.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct 5817 49, // 90: envoy.api.v2.route.Route.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any 5818 50, // 91: envoy.api.v2.route.WeightedCluster.ClusterWeight.weight:type_name -> google.protobuf.UInt32Value 5819 51, // 92: envoy.api.v2.route.WeightedCluster.ClusterWeight.metadata_match:type_name -> envoy.api.v2.core.Metadata 5820 48, // 93: envoy.api.v2.route.WeightedCluster.ClusterWeight.request_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption 5821 48, // 94: envoy.api.v2.route.WeightedCluster.ClusterWeight.response_headers_to_add:type_name -> envoy.api.v2.core.HeaderValueOption 5822 26, // 95: envoy.api.v2.route.WeightedCluster.ClusterWeight.per_filter_config:type_name -> envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry 5823 27, // 96: envoy.api.v2.route.WeightedCluster.ClusterWeight.typed_per_filter_config:type_name -> envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry 5824 64, // 97: envoy.api.v2.route.WeightedCluster.ClusterWeight.PerFilterConfigEntry.value:type_name -> google.protobuf.Struct 5825 49, // 98: envoy.api.v2.route.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any 5826 53, // 99: envoy.api.v2.route.RouteMatch.TlsContextMatchOptions.presented:type_name -> google.protobuf.BoolValue 5827 53, // 100: envoy.api.v2.route.RouteMatch.TlsContextMatchOptions.validated:type_name -> google.protobuf.BoolValue 5828 54, // 101: envoy.api.v2.route.RouteAction.RequestMirrorPolicy.runtime_fraction:type_name -> envoy.api.v2.core.RuntimeFractionalPercent 5829 53, // 102: envoy.api.v2.route.RouteAction.RequestMirrorPolicy.trace_sampled:type_name -> google.protobuf.BoolValue 5830 33, // 103: envoy.api.v2.route.RouteAction.HashPolicy.header:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.Header 5831 34, // 104: envoy.api.v2.route.RouteAction.HashPolicy.cookie:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.Cookie 5832 35, // 105: envoy.api.v2.route.RouteAction.HashPolicy.connection_properties:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.ConnectionProperties 5833 36, // 106: envoy.api.v2.route.RouteAction.HashPolicy.query_parameter:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.QueryParameter 5834 37, // 107: envoy.api.v2.route.RouteAction.HashPolicy.filter_state:type_name -> envoy.api.v2.route.RouteAction.HashPolicy.FilterState 5835 53, // 108: envoy.api.v2.route.RouteAction.UpgradeConfig.enabled:type_name -> google.protobuf.BoolValue 5836 57, // 109: envoy.api.v2.route.RouteAction.HashPolicy.Cookie.ttl:type_name -> google.protobuf.Duration 5837 64, // 110: envoy.api.v2.route.RetryPolicy.RetryPriority.config:type_name -> google.protobuf.Struct 5838 49, // 111: envoy.api.v2.route.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any 5839 64, // 112: envoy.api.v2.route.RetryPolicy.RetryHostPredicate.config:type_name -> google.protobuf.Struct 5840 49, // 113: envoy.api.v2.route.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any 5841 57, // 114: envoy.api.v2.route.RetryPolicy.RetryBackOff.base_interval:type_name -> google.protobuf.Duration 5842 57, // 115: envoy.api.v2.route.RetryPolicy.RetryBackOff.max_interval:type_name -> google.protobuf.Duration 5843 42, // 116: envoy.api.v2.route.RateLimit.Action.source_cluster:type_name -> envoy.api.v2.route.RateLimit.Action.SourceCluster 5844 43, // 117: envoy.api.v2.route.RateLimit.Action.destination_cluster:type_name -> envoy.api.v2.route.RateLimit.Action.DestinationCluster 5845 44, // 118: envoy.api.v2.route.RateLimit.Action.request_headers:type_name -> envoy.api.v2.route.RateLimit.Action.RequestHeaders 5846 45, // 119: envoy.api.v2.route.RateLimit.Action.remote_address:type_name -> envoy.api.v2.route.RateLimit.Action.RemoteAddress 5847 46, // 120: envoy.api.v2.route.RateLimit.Action.generic_key:type_name -> envoy.api.v2.route.RateLimit.Action.GenericKey 5848 47, // 121: envoy.api.v2.route.RateLimit.Action.header_value_match:type_name -> envoy.api.v2.route.RateLimit.Action.HeaderValueMatch 5849 53, // 122: envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue 5850 19, // 123: envoy.api.v2.route.RateLimit.Action.HeaderValueMatch.headers:type_name -> envoy.api.v2.route.HeaderMatcher 5851 124, // [124:124] is the sub-list for method output_type 5852 124, // [124:124] is the sub-list for method input_type 5853 124, // [124:124] is the sub-list for extension type_name 5854 124, // [124:124] is the sub-list for extension extendee 5855 0, // [0:124] is the sub-list for field type_name 5856} 5857 5858func init() { file_envoy_api_v2_route_route_components_proto_init() } 5859func file_envoy_api_v2_route_route_components_proto_init() { 5860 if File_envoy_api_v2_route_route_components_proto != nil { 5861 return 5862 } 5863 if !protoimpl.UnsafeEnabled { 5864 file_envoy_api_v2_route_route_components_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 5865 switch v := v.(*VirtualHost); i { 5866 case 0: 5867 return &v.state 5868 case 1: 5869 return &v.sizeCache 5870 case 2: 5871 return &v.unknownFields 5872 default: 5873 return nil 5874 } 5875 } 5876 file_envoy_api_v2_route_route_components_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 5877 switch v := v.(*FilterAction); i { 5878 case 0: 5879 return &v.state 5880 case 1: 5881 return &v.sizeCache 5882 case 2: 5883 return &v.unknownFields 5884 default: 5885 return nil 5886 } 5887 } 5888 file_envoy_api_v2_route_route_components_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 5889 switch v := v.(*Route); i { 5890 case 0: 5891 return &v.state 5892 case 1: 5893 return &v.sizeCache 5894 case 2: 5895 return &v.unknownFields 5896 default: 5897 return nil 5898 } 5899 } 5900 file_envoy_api_v2_route_route_components_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 5901 switch v := v.(*WeightedCluster); i { 5902 case 0: 5903 return &v.state 5904 case 1: 5905 return &v.sizeCache 5906 case 2: 5907 return &v.unknownFields 5908 default: 5909 return nil 5910 } 5911 } 5912 file_envoy_api_v2_route_route_components_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 5913 switch v := v.(*RouteMatch); i { 5914 case 0: 5915 return &v.state 5916 case 1: 5917 return &v.sizeCache 5918 case 2: 5919 return &v.unknownFields 5920 default: 5921 return nil 5922 } 5923 } 5924 file_envoy_api_v2_route_route_components_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 5925 switch v := v.(*CorsPolicy); i { 5926 case 0: 5927 return &v.state 5928 case 1: 5929 return &v.sizeCache 5930 case 2: 5931 return &v.unknownFields 5932 default: 5933 return nil 5934 } 5935 } 5936 file_envoy_api_v2_route_route_components_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 5937 switch v := v.(*RouteAction); i { 5938 case 0: 5939 return &v.state 5940 case 1: 5941 return &v.sizeCache 5942 case 2: 5943 return &v.unknownFields 5944 default: 5945 return nil 5946 } 5947 } 5948 file_envoy_api_v2_route_route_components_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 5949 switch v := v.(*RetryPolicy); i { 5950 case 0: 5951 return &v.state 5952 case 1: 5953 return &v.sizeCache 5954 case 2: 5955 return &v.unknownFields 5956 default: 5957 return nil 5958 } 5959 } 5960 file_envoy_api_v2_route_route_components_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 5961 switch v := v.(*HedgePolicy); i { 5962 case 0: 5963 return &v.state 5964 case 1: 5965 return &v.sizeCache 5966 case 2: 5967 return &v.unknownFields 5968 default: 5969 return nil 5970 } 5971 } 5972 file_envoy_api_v2_route_route_components_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 5973 switch v := v.(*RedirectAction); i { 5974 case 0: 5975 return &v.state 5976 case 1: 5977 return &v.sizeCache 5978 case 2: 5979 return &v.unknownFields 5980 default: 5981 return nil 5982 } 5983 } 5984 file_envoy_api_v2_route_route_components_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 5985 switch v := v.(*DirectResponseAction); i { 5986 case 0: 5987 return &v.state 5988 case 1: 5989 return &v.sizeCache 5990 case 2: 5991 return &v.unknownFields 5992 default: 5993 return nil 5994 } 5995 } 5996 file_envoy_api_v2_route_route_components_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 5997 switch v := v.(*Decorator); i { 5998 case 0: 5999 return &v.state 6000 case 1: 6001 return &v.sizeCache 6002 case 2: 6003 return &v.unknownFields 6004 default: 6005 return nil 6006 } 6007 } 6008 file_envoy_api_v2_route_route_components_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 6009 switch v := v.(*Tracing); i { 6010 case 0: 6011 return &v.state 6012 case 1: 6013 return &v.sizeCache 6014 case 2: 6015 return &v.unknownFields 6016 default: 6017 return nil 6018 } 6019 } 6020 file_envoy_api_v2_route_route_components_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 6021 switch v := v.(*VirtualCluster); i { 6022 case 0: 6023 return &v.state 6024 case 1: 6025 return &v.sizeCache 6026 case 2: 6027 return &v.unknownFields 6028 default: 6029 return nil 6030 } 6031 } 6032 file_envoy_api_v2_route_route_components_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 6033 switch v := v.(*RateLimit); i { 6034 case 0: 6035 return &v.state 6036 case 1: 6037 return &v.sizeCache 6038 case 2: 6039 return &v.unknownFields 6040 default: 6041 return nil 6042 } 6043 } 6044 file_envoy_api_v2_route_route_components_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 6045 switch v := v.(*HeaderMatcher); i { 6046 case 0: 6047 return &v.state 6048 case 1: 6049 return &v.sizeCache 6050 case 2: 6051 return &v.unknownFields 6052 default: 6053 return nil 6054 } 6055 } 6056 file_envoy_api_v2_route_route_components_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 6057 switch v := v.(*QueryParameterMatcher); i { 6058 case 0: 6059 return &v.state 6060 case 1: 6061 return &v.sizeCache 6062 case 2: 6063 return &v.unknownFields 6064 default: 6065 return nil 6066 } 6067 } 6068 file_envoy_api_v2_route_route_components_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 6069 switch v := v.(*WeightedCluster_ClusterWeight); i { 6070 case 0: 6071 return &v.state 6072 case 1: 6073 return &v.sizeCache 6074 case 2: 6075 return &v.unknownFields 6076 default: 6077 return nil 6078 } 6079 } 6080 file_envoy_api_v2_route_route_components_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 6081 switch v := v.(*RouteMatch_GrpcRouteMatchOptions); i { 6082 case 0: 6083 return &v.state 6084 case 1: 6085 return &v.sizeCache 6086 case 2: 6087 return &v.unknownFields 6088 default: 6089 return nil 6090 } 6091 } 6092 file_envoy_api_v2_route_route_components_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { 6093 switch v := v.(*RouteMatch_TlsContextMatchOptions); i { 6094 case 0: 6095 return &v.state 6096 case 1: 6097 return &v.sizeCache 6098 case 2: 6099 return &v.unknownFields 6100 default: 6101 return nil 6102 } 6103 } 6104 file_envoy_api_v2_route_route_components_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { 6105 switch v := v.(*RouteAction_RequestMirrorPolicy); i { 6106 case 0: 6107 return &v.state 6108 case 1: 6109 return &v.sizeCache 6110 case 2: 6111 return &v.unknownFields 6112 default: 6113 return nil 6114 } 6115 } 6116 file_envoy_api_v2_route_route_components_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 6117 switch v := v.(*RouteAction_HashPolicy); i { 6118 case 0: 6119 return &v.state 6120 case 1: 6121 return &v.sizeCache 6122 case 2: 6123 return &v.unknownFields 6124 default: 6125 return nil 6126 } 6127 } 6128 file_envoy_api_v2_route_route_components_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 6129 switch v := v.(*RouteAction_UpgradeConfig); i { 6130 case 0: 6131 return &v.state 6132 case 1: 6133 return &v.sizeCache 6134 case 2: 6135 return &v.unknownFields 6136 default: 6137 return nil 6138 } 6139 } 6140 file_envoy_api_v2_route_route_components_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { 6141 switch v := v.(*RouteAction_HashPolicy_Header); i { 6142 case 0: 6143 return &v.state 6144 case 1: 6145 return &v.sizeCache 6146 case 2: 6147 return &v.unknownFields 6148 default: 6149 return nil 6150 } 6151 } 6152 file_envoy_api_v2_route_route_components_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { 6153 switch v := v.(*RouteAction_HashPolicy_Cookie); i { 6154 case 0: 6155 return &v.state 6156 case 1: 6157 return &v.sizeCache 6158 case 2: 6159 return &v.unknownFields 6160 default: 6161 return nil 6162 } 6163 } 6164 file_envoy_api_v2_route_route_components_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { 6165 switch v := v.(*RouteAction_HashPolicy_ConnectionProperties); i { 6166 case 0: 6167 return &v.state 6168 case 1: 6169 return &v.sizeCache 6170 case 2: 6171 return &v.unknownFields 6172 default: 6173 return nil 6174 } 6175 } 6176 file_envoy_api_v2_route_route_components_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { 6177 switch v := v.(*RouteAction_HashPolicy_QueryParameter); i { 6178 case 0: 6179 return &v.state 6180 case 1: 6181 return &v.sizeCache 6182 case 2: 6183 return &v.unknownFields 6184 default: 6185 return nil 6186 } 6187 } 6188 file_envoy_api_v2_route_route_components_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { 6189 switch v := v.(*RouteAction_HashPolicy_FilterState); i { 6190 case 0: 6191 return &v.state 6192 case 1: 6193 return &v.sizeCache 6194 case 2: 6195 return &v.unknownFields 6196 default: 6197 return nil 6198 } 6199 } 6200 file_envoy_api_v2_route_route_components_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { 6201 switch v := v.(*RetryPolicy_RetryPriority); i { 6202 case 0: 6203 return &v.state 6204 case 1: 6205 return &v.sizeCache 6206 case 2: 6207 return &v.unknownFields 6208 default: 6209 return nil 6210 } 6211 } 6212 file_envoy_api_v2_route_route_components_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { 6213 switch v := v.(*RetryPolicy_RetryHostPredicate); i { 6214 case 0: 6215 return &v.state 6216 case 1: 6217 return &v.sizeCache 6218 case 2: 6219 return &v.unknownFields 6220 default: 6221 return nil 6222 } 6223 } 6224 file_envoy_api_v2_route_route_components_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { 6225 switch v := v.(*RetryPolicy_RetryBackOff); i { 6226 case 0: 6227 return &v.state 6228 case 1: 6229 return &v.sizeCache 6230 case 2: 6231 return &v.unknownFields 6232 default: 6233 return nil 6234 } 6235 } 6236 file_envoy_api_v2_route_route_components_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { 6237 switch v := v.(*RateLimit_Action); i { 6238 case 0: 6239 return &v.state 6240 case 1: 6241 return &v.sizeCache 6242 case 2: 6243 return &v.unknownFields 6244 default: 6245 return nil 6246 } 6247 } 6248 file_envoy_api_v2_route_route_components_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { 6249 switch v := v.(*RateLimit_Action_SourceCluster); i { 6250 case 0: 6251 return &v.state 6252 case 1: 6253 return &v.sizeCache 6254 case 2: 6255 return &v.unknownFields 6256 default: 6257 return nil 6258 } 6259 } 6260 file_envoy_api_v2_route_route_components_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { 6261 switch v := v.(*RateLimit_Action_DestinationCluster); i { 6262 case 0: 6263 return &v.state 6264 case 1: 6265 return &v.sizeCache 6266 case 2: 6267 return &v.unknownFields 6268 default: 6269 return nil 6270 } 6271 } 6272 file_envoy_api_v2_route_route_components_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { 6273 switch v := v.(*RateLimit_Action_RequestHeaders); i { 6274 case 0: 6275 return &v.state 6276 case 1: 6277 return &v.sizeCache 6278 case 2: 6279 return &v.unknownFields 6280 default: 6281 return nil 6282 } 6283 } 6284 file_envoy_api_v2_route_route_components_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { 6285 switch v := v.(*RateLimit_Action_RemoteAddress); i { 6286 case 0: 6287 return &v.state 6288 case 1: 6289 return &v.sizeCache 6290 case 2: 6291 return &v.unknownFields 6292 default: 6293 return nil 6294 } 6295 } 6296 file_envoy_api_v2_route_route_components_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { 6297 switch v := v.(*RateLimit_Action_GenericKey); i { 6298 case 0: 6299 return &v.state 6300 case 1: 6301 return &v.sizeCache 6302 case 2: 6303 return &v.unknownFields 6304 default: 6305 return nil 6306 } 6307 } 6308 file_envoy_api_v2_route_route_components_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { 6309 switch v := v.(*RateLimit_Action_HeaderValueMatch); i { 6310 case 0: 6311 return &v.state 6312 case 1: 6313 return &v.sizeCache 6314 case 2: 6315 return &v.unknownFields 6316 default: 6317 return nil 6318 } 6319 } 6320 } 6321 file_envoy_api_v2_route_route_components_proto_msgTypes[2].OneofWrappers = []interface{}{ 6322 (*Route_Route)(nil), 6323 (*Route_Redirect)(nil), 6324 (*Route_DirectResponse)(nil), 6325 (*Route_FilterAction)(nil), 6326 } 6327 file_envoy_api_v2_route_route_components_proto_msgTypes[4].OneofWrappers = []interface{}{ 6328 (*RouteMatch_Prefix)(nil), 6329 (*RouteMatch_Path)(nil), 6330 (*RouteMatch_Regex)(nil), 6331 (*RouteMatch_SafeRegex)(nil), 6332 } 6333 file_envoy_api_v2_route_route_components_proto_msgTypes[5].OneofWrappers = []interface{}{ 6334 (*CorsPolicy_Enabled)(nil), 6335 (*CorsPolicy_FilterEnabled)(nil), 6336 } 6337 file_envoy_api_v2_route_route_components_proto_msgTypes[6].OneofWrappers = []interface{}{ 6338 (*RouteAction_Cluster)(nil), 6339 (*RouteAction_ClusterHeader)(nil), 6340 (*RouteAction_WeightedClusters)(nil), 6341 (*RouteAction_HostRewrite)(nil), 6342 (*RouteAction_AutoHostRewrite)(nil), 6343 (*RouteAction_AutoHostRewriteHeader)(nil), 6344 } 6345 file_envoy_api_v2_route_route_components_proto_msgTypes[9].OneofWrappers = []interface{}{ 6346 (*RedirectAction_HttpsRedirect)(nil), 6347 (*RedirectAction_SchemeRedirect)(nil), 6348 (*RedirectAction_PathRedirect)(nil), 6349 (*RedirectAction_PrefixRewrite)(nil), 6350 } 6351 file_envoy_api_v2_route_route_components_proto_msgTypes[15].OneofWrappers = []interface{}{ 6352 (*HeaderMatcher_ExactMatch)(nil), 6353 (*HeaderMatcher_RegexMatch)(nil), 6354 (*HeaderMatcher_SafeRegexMatch)(nil), 6355 (*HeaderMatcher_RangeMatch)(nil), 6356 (*HeaderMatcher_PresentMatch)(nil), 6357 (*HeaderMatcher_PrefixMatch)(nil), 6358 (*HeaderMatcher_SuffixMatch)(nil), 6359 } 6360 file_envoy_api_v2_route_route_components_proto_msgTypes[16].OneofWrappers = []interface{}{ 6361 (*QueryParameterMatcher_StringMatch)(nil), 6362 (*QueryParameterMatcher_PresentMatch)(nil), 6363 } 6364 file_envoy_api_v2_route_route_components_proto_msgTypes[27].OneofWrappers = []interface{}{ 6365 (*RouteAction_HashPolicy_Header_)(nil), 6366 (*RouteAction_HashPolicy_Cookie_)(nil), 6367 (*RouteAction_HashPolicy_ConnectionProperties_)(nil), 6368 (*RouteAction_HashPolicy_QueryParameter_)(nil), 6369 (*RouteAction_HashPolicy_FilterState_)(nil), 6370 } 6371 file_envoy_api_v2_route_route_components_proto_msgTypes[34].OneofWrappers = []interface{}{ 6372 (*RetryPolicy_RetryPriority_Config)(nil), 6373 (*RetryPolicy_RetryPriority_TypedConfig)(nil), 6374 } 6375 file_envoy_api_v2_route_route_components_proto_msgTypes[35].OneofWrappers = []interface{}{ 6376 (*RetryPolicy_RetryHostPredicate_Config)(nil), 6377 (*RetryPolicy_RetryHostPredicate_TypedConfig)(nil), 6378 } 6379 file_envoy_api_v2_route_route_components_proto_msgTypes[37].OneofWrappers = []interface{}{ 6380 (*RateLimit_Action_SourceCluster_)(nil), 6381 (*RateLimit_Action_DestinationCluster_)(nil), 6382 (*RateLimit_Action_RequestHeaders_)(nil), 6383 (*RateLimit_Action_RemoteAddress_)(nil), 6384 (*RateLimit_Action_GenericKey_)(nil), 6385 (*RateLimit_Action_HeaderValueMatch_)(nil), 6386 } 6387 type x struct{} 6388 out := protoimpl.TypeBuilder{ 6389 File: protoimpl.DescBuilder{ 6390 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 6391 RawDescriptor: file_envoy_api_v2_route_route_components_proto_rawDesc, 6392 NumEnums: 4, 6393 NumMessages: 44, 6394 NumExtensions: 0, 6395 NumServices: 0, 6396 }, 6397 GoTypes: file_envoy_api_v2_route_route_components_proto_goTypes, 6398 DependencyIndexes: file_envoy_api_v2_route_route_components_proto_depIdxs, 6399 EnumInfos: file_envoy_api_v2_route_route_components_proto_enumTypes, 6400 MessageInfos: file_envoy_api_v2_route_route_components_proto_msgTypes, 6401 }.Build() 6402 File_envoy_api_v2_route_route_components_proto = out.File 6403 file_envoy_api_v2_route_route_components_proto_rawDesc = nil 6404 file_envoy_api_v2_route_route_components_proto_goTypes = nil 6405 file_envoy_api_v2_route_route_components_proto_depIdxs = nil 6406} 6407