Remove tap from public API and associated test infrastructure (#3240)

### Summary

After the addition of the tap APIServer, all the logic related to tap in the public API no longer needs to be there. The servers and clients that are created but not used, as well as all the old testing infrastrucure related to tap can be removed.

This deprecates TapByResource and therefore required an update to the protobuf files with `bin/protoc-go.sh`. While the change to deprecate this method was extremely small, a lot of protobuf fils were updated in the process. These changes to the code and protobuf files should probably remain coupled since `TapByResource` is officially deprecated in the public API, but a majority of the additions/deletions are related to those files.

This draft passes `go test` as well as a local run of the integration tests.

Signed-off-by: Kevin Leimkuhler <kleimkuhler@icloud.com>
This commit is contained in:
Kevin Leimkuhler 2019-08-14 17:27:37 -04:00 committed by GitHub
parent 8ef4104c95
commit cc3c53fa73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 252 additions and 403 deletions

View File

@ -80,7 +80,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.{{.Namespace}}.svc.{{.ClusterDomain}}:9090
- -tap-addr=linkerd-tap.{{.Namespace}}.svc.{{.ClusterDomain}}:8088
- -controller-namespace={{.Namespace}}
- -log-level={{.ControllerLogLevel}}
image: {{.ControllerImage}}:{{default .LinkerdVersion .ControllerImageVersion}}

View File

@ -318,7 +318,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:install-control-plane-version

View File

@ -999,7 +999,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:install-control-plane-version

View File

@ -1051,7 +1051,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:install-control-plane-version

View File

@ -1051,7 +1051,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:install-control-plane-version

View File

@ -963,7 +963,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:install-control-plane-version

View File

@ -997,7 +997,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.Namespace.svc.cluster.local:9090
- -tap-addr=linkerd-tap.Namespace.svc.cluster.local:8088
- -controller-namespace=Namespace
- -log-level=ControllerLogLevel
image: ControllerImage:ControllerImageVersion

View File

@ -1000,7 +1000,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:UPGRADE-CONTROL-PLANE-VERSION

View File

@ -1052,7 +1052,6 @@ spec:
- args:
- public-api
- -prometheus-url=http://linkerd-prometheus.linkerd.svc.cluster.local:9090
- -tap-addr=linkerd-tap.linkerd.svc.cluster.local:8088
- -controller-namespace=linkerd
- -log-level=info
image: gcr.io/linkerd-io/controller:UPGRADE-CONTROL-PLANE-VERSION

View File

@ -97,22 +97,11 @@ func (c *grpcOverHTTPClient) ListServices(ctx context.Context, req *pb.ListServi
}
func (c *grpcOverHTTPClient) Tap(ctx context.Context, req *pb.TapRequest, _ ...grpc.CallOption) (pb.Api_TapClient, error) {
return nil, status.Error(codes.Unimplemented, "Tap is deprecated, use TapByResource")
return nil, status.Error(codes.Unimplemented, "Tap is deprecated in public API, use tap APIServer")
}
func (c *grpcOverHTTPClient) TapByResource(ctx context.Context, req *pb.TapByResourceRequest, _ ...grpc.CallOption) (pb.Api_TapByResourceClient, error) {
url := c.endpointNameToPublicAPIURL("TapByResource")
httpRsp, err := c.post(ctx, url, req)
if err != nil {
return nil, err
}
client, err := getStreamClient(ctx, httpRsp)
if err != nil {
return nil, err
}
return &tapClient{client}, nil
return nil, status.Error(codes.Unimplemented, "Tap is deprecated in public API, use tap APIServer")
}
func (c *grpcOverHTTPClient) Get(ctx context.Context, req *destinationPb.GetDestination, _ ...grpc.CallOption) (destinationPb.Destination_GetClient, error) {
@ -189,16 +178,6 @@ func (c *grpcOverHTTPClient) endpointNameToPublicAPIURL(endpoint string) *url.UR
return c.serverURL.ResolveReference(&url.URL{Path: endpoint})
}
type tapClient struct {
streamClient
}
func (c tapClient) Recv() (*pb.TapEvent, error) {
var msg pb.TapEvent
err := protohttp.FromByteStreamToProtocolBuffers(c.reader, &msg)
return &msg, err
}
type destinationClient struct {
streamClient
}

View File

@ -13,7 +13,6 @@ import (
healthcheckPb "github.com/linkerd/linkerd2/controller/gen/common/healthcheck"
configPb "github.com/linkerd/linkerd2/controller/gen/config"
discoveryPb "github.com/linkerd/linkerd2/controller/gen/controller/discovery"
tapPb "github.com/linkerd/linkerd2/controller/gen/controller/tap"
pb "github.com/linkerd/linkerd2/controller/gen/public"
"github.com/linkerd/linkerd2/controller/k8s"
"github.com/linkerd/linkerd2/pkg/config"
@ -37,7 +36,6 @@ type APIServer interface {
type grpcServer struct {
prometheusAPI promv1.API
tapClient tapPb.TapClient
discoveryClient discoveryPb.DiscoveryClient
destinationClient destinationPb.DestinationClient
k8sAPI *k8s.API
@ -62,7 +60,6 @@ const (
func newGrpcServer(
promAPI promv1.API,
tapClient tapPb.TapClient,
discoveryClient discoveryPb.DiscoveryClient,
destinationClient destinationPb.DestinationClient,
k8sAPI *k8s.API,
@ -72,7 +69,6 @@ func newGrpcServer(
grpcServer := &grpcServer{
prometheusAPI: promAPI,
tapClient: tapClient,
discoveryClient: discoveryClient,
destinationClient: destinationClient,
k8sAPI: k8sAPI,
@ -244,29 +240,11 @@ func (s *grpcServer) Config(ctx context.Context, req *pb.Empty) (*configPb.All,
}
func (s *grpcServer) Tap(req *pb.TapRequest, stream pb.Api_TapServer) error {
return status.Error(codes.Unimplemented, "Tap is deprecated, use TapByResource")
return status.Error(codes.Unimplemented, "Tap is deprecated in public API, use tap APIServer")
}
// Pass through to tap service
func (s *grpcServer) TapByResource(req *pb.TapByResourceRequest, stream pb.Api_TapByResourceServer) error {
tapStream := stream.(tapServer)
tapClient, err := s.tapClient.TapByResource(tapStream.Context(), req)
if err != nil {
log.Errorf("Unexpected error tapping [%v]: %v", req, err)
return err
}
for {
select {
case <-tapStream.Context().Done():
return nil
default:
event, err := tapClient.Recv()
if err != nil {
return err
}
tapStream.Send(event)
}
}
return status.Error(codes.Unimplemented, "Tap is deprecated in public API, use tap APIServer")
}
// Pass through to Destination service

View File

@ -400,7 +400,6 @@ status:
&mProm,
nil,
nil,
nil,
k8sAPI,
"linkerd",
[]string{},
@ -503,7 +502,6 @@ metadata:
&MockProm{},
nil,
nil,
nil,
k8sAPI,
"linkerd",
[]string{},
@ -534,7 +532,6 @@ func TestConfig(t *testing.T) {
&MockProm{},
nil,
nil,
nil,
k8sAPI,
"linkerd",
[]string{},

View File

@ -9,7 +9,6 @@ import (
destinationPb "github.com/linkerd/linkerd2-proxy-api/go/destination"
healthcheckPb "github.com/linkerd/linkerd2/controller/gen/common/healthcheck"
discoveryPb "github.com/linkerd/linkerd2/controller/gen/controller/discovery"
tapPb "github.com/linkerd/linkerd2/controller/gen/controller/tap"
pb "github.com/linkerd/linkerd2/controller/gen/public"
"github.com/linkerd/linkerd2/controller/k8s"
"github.com/linkerd/linkerd2/pkg/prometheus"
@ -21,17 +20,16 @@ import (
)
var (
statSummaryPath = fullURLPathFor("StatSummary")
topRoutesPath = fullURLPathFor("TopRoutes")
versionPath = fullURLPathFor("Version")
listPodsPath = fullURLPathFor("ListPods")
listServicesPath = fullURLPathFor("ListServices")
tapByResourcePath = fullURLPathFor("TapByResource")
selfCheckPath = fullURLPathFor("SelfCheck")
endpointsPath = fullURLPathFor("Endpoints")
edgesPath = fullURLPathFor("Edges")
destGetPath = fullURLPathFor("DestinationGet")
configPath = fullURLPathFor("Config")
statSummaryPath = fullURLPathFor("StatSummary")
topRoutesPath = fullURLPathFor("TopRoutes")
versionPath = fullURLPathFor("Version")
listPodsPath = fullURLPathFor("ListPods")
listServicesPath = fullURLPathFor("ListServices")
selfCheckPath = fullURLPathFor("SelfCheck")
endpointsPath = fullURLPathFor("Endpoints")
edgesPath = fullURLPathFor("Edges")
destGetPath = fullURLPathFor("DestinationGet")
configPath = fullURLPathFor("Config")
)
type handler struct {
@ -60,8 +58,6 @@ func (h *handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
h.handleListPods(w, req)
case listServicesPath:
h.handleListServices(w, req)
case tapByResourcePath:
h.handleTapByResource(w, req)
case selfCheckPath:
h.handleSelfCheck(w, req)
case endpointsPath:
@ -226,28 +222,6 @@ func (h *handler) handleListServices(w http.ResponseWriter, req *http.Request) {
}
}
func (h *handler) handleTapByResource(w http.ResponseWriter, req *http.Request) {
flushableWriter, err := protohttp.NewStreamingWriter(w)
if err != nil {
protohttp.WriteErrorToHTTPResponse(w, err)
return
}
var protoRequest pb.TapByResourceRequest
err = protohttp.HTTPRequestToProto(req, &protoRequest)
if err != nil {
protohttp.WriteErrorToHTTPResponse(w, err)
return
}
server := tapServer{streamServer{w: flushableWriter, req: req}}
err = h.grpcServer.TapByResource(&protoRequest, server)
if err != nil {
protohttp.WriteErrorToHTTPResponse(w, err)
return
}
}
func (h *handler) handleDestGet(w http.ResponseWriter, req *http.Request) {
flushableWriter, err := protohttp.NewStreamingWriter(w)
if err != nil {
@ -315,14 +289,6 @@ func (s streamServer) Send(msg proto.Message) error {
return nil
}
type tapServer struct {
streamServer
}
func (s tapServer) Send(msg *pb.TapEvent) error {
return s.streamServer.Send(msg)
}
type destinationServer struct {
streamServer
}
@ -352,7 +318,6 @@ func (h *handler) handleEndpoints(w http.ResponseWriter, req *http.Request) {
func NewServer(
addr string,
prometheusClient promApi.Client,
tapClient tapPb.TapClient,
discoveryClient discoveryPb.DiscoveryClient,
destinationClient destinationPb.DestinationClient,
k8sAPI *k8s.API,
@ -362,7 +327,6 @@ func NewServer(
baseHandler := &handler{
grpcServer: newGrpcServer(
promv1.NewAPI(prometheusClient),
tapClient,
discoveryClient,
destinationClient,
k8sAPI,

View File

@ -18,14 +18,12 @@ import (
type mockServer struct {
LastRequestReceived proto.Message
ResponseToReturn proto.Message
TapStreamsToReturn []*pb.TapEvent
DestinationStreamsToReturn []*destinationPb.Update
ErrorToReturn error
}
type mockGrpcServer struct {
mockServer
TapStreamsToReturn []*pb.TapEvent
DestinationStreamsToReturn []*destinationPb.Update
}
@ -71,10 +69,9 @@ func (m *mockGrpcServer) Config(ctx context.Context, req *pb.Empty) (*configPb.A
func (m *mockGrpcServer) Tap(req *pb.TapRequest, tapServer pb.Api_TapServer) error {
m.LastRequestReceived = req
if m.ErrorToReturn == nil {
for _, msg := range m.TapStreamsToReturn {
tapServer.Send(msg)
}
if m.ErrorToReturn != nil {
// Not implemented in public API. Instead, use tap APIServer.
return errors.New("Not implemented")
}
return m.ErrorToReturn
@ -82,10 +79,9 @@ func (m *mockGrpcServer) Tap(req *pb.TapRequest, tapServer pb.Api_TapServer) err
func (m *mockGrpcServer) TapByResource(req *pb.TapByResourceRequest, tapServer pb.Api_TapByResourceServer) error {
m.LastRequestReceived = req
if m.ErrorToReturn == nil {
for _, msg := range m.TapStreamsToReturn {
tapServer.Send(msg)
}
if m.ErrorToReturn != nil {
// Not implemented in public API. Instead, use tap APIServer.
return errors.New("Not implemented")
}
return m.ErrorToReturn
@ -164,46 +160,6 @@ func TestServer(t *testing.T) {
}
})
t.Run("Delegates all streaming tap RPC messages to the underlying grpc server", func(t *testing.T) {
mockGrpcServer, client := getServerClient(t)
expectedTapResponses := []*pb.TapEvent{
{
Destination: &pb.TcpAddress{
Port: 9999,
},
Source: &pb.TcpAddress{
Port: 6666,
},
}, {
Destination: &pb.TcpAddress{
Port: 2102,
},
Source: &pb.TcpAddress{
Port: 1983,
},
},
}
mockGrpcServer.TapStreamsToReturn = expectedTapResponses
mockGrpcServer.ErrorToReturn = nil
tapClient, err := client.TapByResource(context.TODO(), &pb.TapByResourceRequest{})
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
for _, expectedTapEvent := range expectedTapResponses {
actualTapEvent, err := tapClient.Recv()
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
if !proto.Equal(actualTapEvent, expectedTapEvent) {
t.Fatalf("Expecting tap event to be [%v], but was [%v]", expectedTapEvent, actualTapEvent)
}
}
})
t.Run("Delegates all streaming Destination RPC messages to the underlying grpc server", func(t *testing.T) {
mockGrpcServer, client := getServerClient(t)
@ -263,7 +219,7 @@ func TestServer(t *testing.T) {
}
})
t.Run("Handles errors before opening keep-alive response", func(t *testing.T) {
t.Run("Handles Tap route errors before opening keep-alive response", func(t *testing.T) {
mockGrpcServer, client := getServerClient(t)
mockGrpcServer.ErrorToReturn = errors.New("expected error")
@ -273,6 +229,18 @@ func TestServer(t *testing.T) {
t.Fatalf("Expecting error, got nothing")
}
})
t.Run("Handles TapByResource route errors before opening keep-alive response", func(t *testing.T) {
mockGrpcServer, client := getServerClient(t)
mockGrpcServer.ErrorToReturn = errors.New("expected error")
_, err := client.TapByResource(context.TODO(), &pb.TapByResourceRequest{})
if err == nil {
t.Fatalf("Expecting error, got nothing")
}
})
}
func getServerClient(t *testing.T) (*mockGrpcServer, APIClient) {

View File

@ -1303,7 +1303,6 @@ status:
&MockProm{Res: exp.mockPromResponse},
nil,
nil,
nil,
k8sAPI,
"linkerd",
[]string{},
@ -1329,7 +1328,6 @@ status:
&MockProm{Res: model.Vector{}},
nil,
nil,
nil,
k8sAPI,
"linkerd",
[]string{},

View File

@ -100,30 +100,6 @@ func (c *MockAPIClient) Config(ctx context.Context, in *pb.Empty, _ ...grpc.Call
return c.ConfigResponseToReturn, c.ErrorToReturn
}
// MockAPITapByResourceClient satisfies the TapByResourceClient gRPC interface.
type MockAPITapByResourceClient struct {
TapEventsToReturn []pb.TapEvent
ErrorsToReturn []error
grpc.ClientStream
}
// Recv satisfies the TapByResourceClient.Recv() gRPC method.
func (a *MockAPITapByResourceClient) Recv() (*pb.TapEvent, error) {
var eventPopped pb.TapEvent
var errorPopped error
if len(a.TapEventsToReturn) == 0 && len(a.ErrorsToReturn) == 0 {
return nil, io.EOF
}
if len(a.TapEventsToReturn) != 0 {
eventPopped, a.TapEventsToReturn = a.TapEventsToReturn[0], a.TapEventsToReturn[1:]
}
if len(a.ErrorsToReturn) != 0 {
errorPopped, a.ErrorsToReturn = a.ErrorsToReturn[0], a.ErrorsToReturn[1:]
}
return &eventPopped, errorPopped
}
// MockDestinationGetClient satisfies the Destination_GetClient gRPC interface.
type MockDestinationGetClient struct {
UpdatesToReturn []destinationPb.Update
@ -497,7 +473,6 @@ func newMockGrpcServer(exp expectedStatRPC) (*MockProm, *grpcServer, error) {
mockProm,
nil,
nil,
nil,
k8sAPI,
"linkerd",
[]string{},

View File

@ -12,7 +12,6 @@ import (
"github.com/linkerd/linkerd2/controller/api/discovery"
"github.com/linkerd/linkerd2/controller/api/public"
"github.com/linkerd/linkerd2/controller/k8s"
"github.com/linkerd/linkerd2/controller/tap"
"github.com/linkerd/linkerd2/pkg/admin"
"github.com/linkerd/linkerd2/pkg/flags"
promApi "github.com/prometheus/client_golang/api"
@ -25,7 +24,6 @@ func main() {
prometheusURL := flag.String("prometheus-url", "http://127.0.0.1:9090", "prometheus url")
metricsAddr := flag.String("metrics-addr", ":9995", "address to serve scrapable metrics on")
destinationAPIAddr := flag.String("destination-addr", "127.0.0.1:8086", "address of destination service")
tapAddr := flag.String("tap-addr", "127.0.0.1:8088", "address of tap service")
controllerNamespace := flag.String("controller-namespace", "linkerd", "namespace in which Linkerd is installed")
ignoredNamespaces := flag.String("ignore-namespaces", "kube-system", "comma separated list of namespaces to not list pods from")
flags.ConfigureAndParse()
@ -33,12 +31,6 @@ func main() {
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
tapClient, tapConn, err := tap.NewClient(*tapAddr)
if err != nil {
log.Fatal(err.Error())
}
defer tapConn.Close()
discoveryClient, discoveryConn, err := discovery.NewClient(*destinationAPIAddr)
if err != nil {
log.Fatal(err.Error())
@ -67,7 +59,6 @@ func main() {
server := public.NewServer(
*addr,
prometheusClient,
tapClient,
discoveryClient,
destinationClient,
k8sAPI,

View File

@ -26,19 +26,19 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("controller/tap.proto", fileDescriptor_d1a304d4ff6ff27b) }
var fileDescriptor_d1a304d4ff6ff27b = []byte{
// 180 bytes of a gzipped FileDescriptorProto
// 177 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x49, 0xce, 0xcf, 0x2b,
0x29, 0xca, 0xcf, 0xc9, 0x49, 0x2d, 0xd2, 0x2f, 0x49, 0x2c, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9,
0x17, 0x12, 0xcf, 0xc9, 0xcc, 0xcb, 0x4e, 0x2d, 0x4a, 0x31, 0xd2, 0x43, 0x48, 0xeb, 0x95, 0x24,
0x16, 0x48, 0xf1, 0x14, 0x94, 0x26, 0xe5, 0x64, 0x26, 0x43, 0x94, 0x19, 0x2d, 0x62, 0xe4, 0x62,
0x16, 0x48, 0xf1, 0x14, 0x94, 0x26, 0xe5, 0x64, 0x26, 0x43, 0x94, 0x19, 0x2d, 0x65, 0xe4, 0x62,
0x0e, 0x49, 0x2c, 0x10, 0x72, 0x81, 0x50, 0xd2, 0x7a, 0x70, 0x6d, 0x50, 0x65, 0x21, 0x89, 0x05,
0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, 0x25, 0x52, 0x92, 0xd8, 0x24, 0x5d, 0xcb, 0x52, 0xf3, 0x4a,
0x94, 0x98, 0x3b, 0x98, 0x18, 0x0d, 0x18, 0x85, 0x42, 0xb9, 0x78, 0x43, 0x12, 0x0b, 0x9c, 0x2a,
0x83, 0x52, 0x8b, 0xf3, 0x4b, 0x8b, 0x92, 0x53, 0x85, 0x54, 0xb1, 0x69, 0x41, 0xc8, 0x13, 0x61,
0x32, 0x83, 0x01, 0xa3, 0x93, 0x75, 0x94, 0x65, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72,
0x7e, 0xae, 0x3e, 0x54, 0x29, 0x8c, 0x36, 0xd2, 0x47, 0xf2, 0x7f, 0x7a, 0x6a, 0x9e, 0x3e, 0x6a,
0x70, 0x24, 0xb1, 0x81, 0x3d, 0x6a, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x4e, 0xdc, 0xd1,
0x27, 0x01, 0x00, 0x00,
0x94, 0x98, 0x3b, 0x98, 0x18, 0x0d, 0x18, 0x85, 0x22, 0xb8, 0x78, 0x43, 0x12, 0x0b, 0x9c, 0x2a,
0x83, 0x52, 0x8b, 0xf3, 0x4b, 0x8b, 0x92, 0x53, 0x85, 0x54, 0xb1, 0x69, 0x41, 0xc8, 0x13, 0x6d,
0xb2, 0x93, 0x75, 0x94, 0x65, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e,
0x54, 0x35, 0x8c, 0x36, 0xd2, 0x47, 0x0a, 0x82, 0xf4, 0xd4, 0x3c, 0x7d, 0xd4, 0x10, 0x49, 0x62,
0x03, 0xfb, 0xd5, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x28, 0x0a, 0x8e, 0x2a, 0x01, 0x00,
0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -98,6 +98,7 @@ func (x *tapTapClient) Recv() (*public.TapEvent, error) {
return m, nil
}
// Deprecated: Do not use.
func (c *tapClient) TapByResource(ctx context.Context, in *public.TapByResourceRequest, opts ...grpc.CallOption) (Tap_TapByResourceClient, error) {
stream, err := c.cc.NewStream(ctx, &_Tap_serviceDesc.Streams[1], "/linkerd2.controller.tap.Tap/TapByResource", opts...)
if err != nil {

View File

@ -805,6 +805,8 @@ func (*TapRequest) XXX_OneofWrappers() []interface{} {
}
// A tap request over kubernetes resources.
//
// This is used only by the tap APIServer.
type TapByResourceRequest struct {
// Describes the kubernetes pods that should be tapped.
Target *ResourceSelection `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
@ -1551,6 +1553,7 @@ func (*Eos) XXX_OneofWrappers() []interface{} {
}
}
// This is used only by the tap APIServer.
type TapEvent struct {
Source *TcpAddress `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
SourceMeta *TapEvent_EndpointMeta `protobuf:"bytes,5,opt,name=source_meta,json=sourceMeta,proto3" json:"source_meta,omitempty"`
@ -3739,204 +3742,204 @@ func init() {
func init() { proto.RegisterFile("public.proto", fileDescriptor_413a91106d7bcce8) }
var fileDescriptor_413a91106d7bcce8 = []byte{
// 3146 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcd, 0x73, 0x1b, 0xc7,
0xb1, 0xc7, 0xe2, 0x1b, 0x0d, 0x90, 0x84, 0x46, 0xb4, 0x1e, 0x0c, 0xdb, 0xb2, 0xb4, 0xfa, 0x30,
0x9f, 0xf4, 0x1e, 0x48, 0x51, 0x96, 0x2c, 0x59, 0xf6, 0x7b, 0x21, 0x48, 0x58, 0x64, 0x22, 0x91,
0xf0, 0x00, 0x8a, 0xab, 0x5c, 0x4e, 0xa1, 0x96, 0xd8, 0x21, 0xb8, 0xe1, 0x62, 0x67, 0xb5, 0x3b,
0x10, 0x8d, 0xff, 0x20, 0x55, 0xa9, 0x54, 0x4e, 0x39, 0xe7, 0x90, 0x53, 0x52, 0xb9, 0xe4, 0x92,
0x8b, 0x6f, 0xb9, 0xe6, 0x9c, 0x4a, 0xe5, 0x92, 0xdc, 0x72, 0x71, 0xe5, 0x96, 0x53, 0x0e, 0xae,
0xd4, 0x7c, 0x2d, 0x76, 0x09, 0x80, 0x1f, 0x72, 0x0e, 0xc9, 0x09, 0xd3, 0x3d, 0xbf, 0xee, 0xe9,
0x99, 0xe9, 0xe9, 0xee, 0x19, 0x2c, 0x54, 0xfc, 0xd1, 0xbe, 0xeb, 0xf4, 0x1b, 0x7e, 0x40, 0x19,
0x45, 0x4b, 0xae, 0xe3, 0x1d, 0x91, 0xc0, 0x5e, 0x6f, 0x48, 0x76, 0xfd, 0xea, 0x80, 0xd2, 0x81,
0x4b, 0x56, 0x45, 0xf7, 0xfe, 0xe8, 0x60, 0xd5, 0x1e, 0x05, 0x16, 0x73, 0xa8, 0x27, 0x05, 0xea,
0xb5, 0x3e, 0x1d, 0x0e, 0xa9, 0xb7, 0x7a, 0x48, 0x2c, 0x97, 0x1d, 0xf6, 0x0f, 0x49, 0xff, 0x48,
0xf5, 0x5c, 0xee, 0x53, 0xef, 0xc0, 0x19, 0xac, 0xca, 0x1f, 0xc9, 0x34, 0x0b, 0x90, 0x6b, 0x0d,
0x7d, 0x36, 0x36, 0x5f, 0x42, 0xf9, 0xfb, 0x24, 0x08, 0x1d, 0xea, 0xed, 0x78, 0x07, 0x14, 0xbd,
0x0d, 0xa5, 0x01, 0x55, 0x8c, 0x9a, 0x71, 0xcd, 0x58, 0x29, 0xe1, 0x09, 0x83, 0xf7, 0xee, 0x8f,
0x1c, 0xd7, 0xde, 0xb2, 0x18, 0xa9, 0xa5, 0x65, 0x6f, 0xc4, 0x40, 0xb7, 0x61, 0x31, 0x20, 0x2e,
0xb1, 0x42, 0xa2, 0x15, 0x64, 0x04, 0xe4, 0x04, 0xd7, 0xbc, 0x0f, 0x97, 0x9f, 0x39, 0x21, 0xeb,
0x90, 0xe0, 0x95, 0xd3, 0x27, 0x21, 0x26, 0x2f, 0x47, 0x24, 0x64, 0x5c, 0xb9, 0x67, 0x0d, 0x49,
0xe8, 0x5b, 0x7d, 0xa2, 0x87, 0x8e, 0x18, 0xe6, 0x33, 0x58, 0x4e, 0x0a, 0x85, 0x3e, 0xf5, 0x42,
0x82, 0xde, 0x87, 0x62, 0xa8, 0x78, 0x35, 0xe3, 0x5a, 0x66, 0xa5, 0xbc, 0x5e, 0x6b, 0x9c, 0x58,
0xbb, 0x86, 0x12, 0xc2, 0x11, 0xd2, 0x7c, 0x02, 0x05, 0xc5, 0x44, 0x08, 0xb2, 0x7c, 0x14, 0x35,
0xa2, 0x68, 0x27, 0x4d, 0x49, 0x9f, 0x34, 0x25, 0x84, 0x25, 0x6e, 0x4a, 0x9b, 0xda, 0x91, 0xed,
0xd7, 0xa6, 0x6c, 0x6f, 0xa6, 0x6b, 0x46, 0x4c, 0x08, 0xfd, 0x1f, 0xb7, 0xd3, 0x25, 0x7d, 0x46,
0x03, 0xa1, 0xb1, 0xbc, 0x6e, 0x4e, 0xd9, 0x89, 0x49, 0x48, 0x47, 0x41, 0x9f, 0x74, 0x04, 0xd0,
0xa1, 0x1e, 0x8e, 0x64, 0xcc, 0x8f, 0xa0, 0x3a, 0x19, 0x54, 0xcd, 0x7d, 0x05, 0xb2, 0x3e, 0xb5,
0xf5, 0xbc, 0x97, 0xa7, 0xf4, 0xb5, 0xa9, 0x8d, 0x05, 0xc2, 0xfc, 0x47, 0x16, 0x32, 0x6d, 0x6a,
0xcf, 0x9c, 0xec, 0x32, 0xe4, 0x7c, 0x6a, 0xef, 0xb4, 0xd5, 0x44, 0x25, 0x81, 0xae, 0x01, 0xd8,
0xc4, 0x77, 0xe9, 0x78, 0x48, 0x3c, 0x26, 0x37, 0x72, 0x3b, 0x85, 0x63, 0x3c, 0x74, 0x1d, 0xca,
0x01, 0xf1, 0x5d, 0xa7, 0x6f, 0xf5, 0x42, 0xc2, 0x6a, 0xa0, 0x21, 0x8a, 0xd9, 0x21, 0x0c, 0x7d,
0x00, 0x57, 0x14, 0xc5, 0x67, 0xd3, 0xeb, 0x53, 0x8f, 0x05, 0xd4, 0x75, 0x49, 0x50, 0x2b, 0x2b,
0xf4, 0x1b, 0xb1, 0xfe, 0xcd, 0xa8, 0x1b, 0xdd, 0x80, 0x4a, 0xc8, 0x2c, 0x46, 0x0e, 0x46, 0xae,
0x50, 0x5e, 0x51, 0xf0, 0xb2, 0xe6, 0x72, 0xed, 0xef, 0x02, 0xd8, 0x16, 0x19, 0x52, 0x4f, 0x40,
0x16, 0x14, 0xa4, 0x24, 0x79, 0x1c, 0x80, 0x20, 0xf3, 0x43, 0xba, 0x5f, 0x5b, 0x54, 0x3d, 0x9c,
0x40, 0x57, 0x20, 0xcf, 0x75, 0x8c, 0xc2, 0x5a, 0x56, 0x4c, 0x57, 0x51, 0x7c, 0x15, 0x2c, 0xdb,
0x26, 0x76, 0x2d, 0x77, 0xcd, 0x58, 0x29, 0x62, 0x49, 0xa0, 0x4d, 0x58, 0x0a, 0x1d, 0xaf, 0x4f,
0x9e, 0x59, 0x21, 0xc3, 0xc4, 0xa7, 0x01, 0xab, 0xe5, 0xc5, 0xe6, 0xbd, 0xd9, 0x90, 0xe7, 0xb1,
0xa1, 0xcf, 0x63, 0x63, 0x4b, 0x9d, 0x47, 0x7c, 0x52, 0x02, 0xad, 0xc1, 0xe5, 0xc9, 0xcc, 0x77,
0x23, 0x37, 0x29, 0x88, 0xf1, 0x67, 0x75, 0x21, 0x13, 0x2a, 0x8a, 0xdd, 0x76, 0x2d, 0x8f, 0xd4,
0x8a, 0xc2, 0xa6, 0x04, 0x0f, 0xdd, 0x83, 0xfc, 0xc8, 0x67, 0xce, 0x90, 0xd4, 0x4a, 0x67, 0x59,
0xa4, 0x80, 0xe8, 0x2a, 0x80, 0x1f, 0xd0, 0x2f, 0xc7, 0x98, 0x58, 0xf6, 0xb8, 0xb6, 0x24, 0x94,
0xc6, 0x38, 0x7c, 0x58, 0x41, 0xe9, 0xe3, 0x5b, 0x15, 0x16, 0x26, 0x78, 0x68, 0x05, 0x96, 0x02,
0xe5, 0xa6, 0x1a, 0x76, 0x49, 0xc0, 0x4e, 0xb2, 0x9b, 0x05, 0xc8, 0xd1, 0x63, 0x8f, 0x04, 0xe6,
0xaf, 0xd2, 0x00, 0x5d, 0xcb, 0xd7, 0x67, 0x05, 0x41, 0xc6, 0xa7, 0xb6, 0x74, 0x41, 0xbe, 0x2b,
0x3e, 0xb5, 0x4f, 0x78, 0x5b, 0x7a, 0x86, 0xb7, 0x5d, 0x81, 0xfc, 0xd0, 0xfa, 0x12, 0xfb, 0xa1,
0xf0, 0xc5, 0x34, 0x56, 0x14, 0xe7, 0x33, 0xda, 0xe6, 0x1b, 0xc3, 0xf7, 0x73, 0x01, 0x2b, 0x8a,
0x7b, 0x3a, 0xa3, 0x3b, 0x6d, 0xb1, 0x9d, 0x25, 0x2c, 0xda, 0xa8, 0x0e, 0xc5, 0x83, 0x80, 0x0e,
0xdb, 0x7a, 0x1b, 0x17, 0x70, 0x44, 0x73, 0x3d, 0xbc, 0xbd, 0xd3, 0x56, 0xfb, 0xa2, 0x28, 0xe1,
0x2f, 0xfd, 0x43, 0x32, 0x94, 0x9b, 0xc0, 0xfd, 0x45, 0x50, 0xc2, 0x1e, 0xc2, 0x0e, 0xa9, 0x2d,
0x96, 0xbf, 0x84, 0x15, 0xc5, 0x43, 0x87, 0x35, 0x62, 0x87, 0x34, 0x70, 0xd8, 0x58, 0x9e, 0x09,
0x3c, 0x61, 0x70, 0xab, 0x7c, 0x8b, 0x1d, 0x4a, 0xf7, 0xc7, 0xa2, 0xfd, 0x61, 0xba, 0x66, 0x34,
0x8b, 0x90, 0x67, 0x56, 0x30, 0x20, 0xcc, 0xfc, 0x6b, 0x0e, 0x96, 0xbb, 0x96, 0xdf, 0x1c, 0xeb,
0x60, 0xa0, 0x97, 0xed, 0x43, 0x0d, 0x11, 0x2b, 0x77, 0xbe, 0xf0, 0xa1, 0x24, 0xd0, 0x06, 0xe4,
0x86, 0x16, 0xeb, 0x1f, 0xaa, 0xc8, 0x73, 0x77, 0x4a, 0x74, 0xd6, 0x88, 0x8d, 0xe7, 0x5c, 0x04,
0x4b, 0xc9, 0x79, 0xeb, 0x5f, 0xff, 0x6d, 0x16, 0x72, 0x02, 0x88, 0x36, 0x21, 0x63, 0xb9, 0xae,
0xb2, 0x6e, 0xf5, 0x02, 0x43, 0x34, 0x3a, 0xe4, 0x25, 0x77, 0x04, 0xcb, 0x75, 0x85, 0x12, 0x6f,
0xac, 0xec, 0x7c, 0x2d, 0x25, 0xde, 0x18, 0xfd, 0x3f, 0x64, 0x3c, 0x2a, 0x83, 0xd6, 0xc5, 0x26,
0xcb, 0x15, 0x78, 0x94, 0xa1, 0x6d, 0xa8, 0xd8, 0x24, 0x64, 0x8e, 0x27, 0xce, 0x8f, 0x0c, 0x15,
0xe7, 0x5a, 0xf1, 0xed, 0x14, 0x4e, 0x48, 0xa2, 0x4f, 0x20, 0x7b, 0xc8, 0x98, 0x2f, 0xdc, 0xb0,
0xbc, 0xbe, 0x76, 0x91, 0x09, 0x6d, 0x33, 0xe6, 0x6f, 0xa7, 0xb0, 0x90, 0xaf, 0x3f, 0x83, 0x4c,
0x87, 0xbc, 0x44, 0x2d, 0x28, 0x88, 0xed, 0x88, 0x92, 0xdd, 0x85, 0xb6, 0x52, 0xcb, 0xd6, 0xc7,
0x90, 0xe5, 0xda, 0x51, 0x2d, 0x72, 0x6e, 0x7d, 0x1a, 0xb5, 0x7b, 0xd7, 0x22, 0xf7, 0xd6, 0x87,
0x51, 0x3b, 0xf8, 0xd5, 0xb8, 0x83, 0xeb, 0xbc, 0x10, 0x73, 0xf1, 0x65, 0xe5, 0xe2, 0x59, 0xd5,
0x25, 0x28, 0x1e, 0x0c, 0xc4, 0xe0, 0x51, 0xc3, 0xfc, 0xbb, 0x01, 0xc0, 0x8d, 0x78, 0x2e, 0xd5,
0x6e, 0x03, 0x04, 0x64, 0xe0, 0x84, 0x8c, 0x04, 0x44, 0x06, 0x87, 0xc5, 0xf5, 0xdb, 0x53, 0x93,
0x9b, 0x08, 0x34, 0x70, 0x84, 0x96, 0x49, 0x47, 0x53, 0xe8, 0x26, 0x54, 0x46, 0x5e, 0x4c, 0x97,
0x9e, 0x40, 0x82, 0x6b, 0x7a, 0x00, 0x13, 0x0d, 0xa8, 0x00, 0x99, 0xa7, 0xad, 0x6e, 0x35, 0x85,
0x8a, 0x90, 0x6d, 0xef, 0x75, 0xba, 0x55, 0x83, 0xb3, 0xda, 0x2f, 0xba, 0xd5, 0x34, 0x02, 0xc8,
0x6f, 0xb5, 0x9e, 0xb5, 0xba, 0xad, 0x6a, 0x06, 0x95, 0x20, 0xd7, 0xde, 0xe8, 0x6e, 0x6e, 0x57,
0xb3, 0xa8, 0x0c, 0x85, 0xbd, 0x76, 0x77, 0x67, 0x6f, 0xb7, 0x53, 0xcd, 0x71, 0x62, 0x73, 0x6f,
0x77, 0xb7, 0xb5, 0xd9, 0xad, 0xe6, 0xb9, 0x8e, 0xed, 0xd6, 0xc6, 0x56, 0xb5, 0xc0, 0xe1, 0x5d,
0xbc, 0xb1, 0xd9, 0xaa, 0x16, 0x9b, 0x79, 0xc8, 0xb2, 0xb1, 0x4f, 0xcc, 0x9f, 0x1b, 0x90, 0xef,
0xc8, 0x35, 0xde, 0x9a, 0x31, 0xe5, 0x69, 0x1f, 0x93, 0xe0, 0x6f, 0x3b, 0xdd, 0xeb, 0x89, 0xe9,
0x72, 0x0b, 0xbb, 0xdd, 0x76, 0x35, 0xc5, 0x2d, 0xe4, 0xad, 0x4e, 0xd5, 0x88, 0x2c, 0xec, 0x42,
0x69, 0xa7, 0xbd, 0x61, 0xdb, 0x01, 0x09, 0x79, 0x5a, 0xcc, 0x3a, 0xfe, 0xab, 0xf7, 0x85, 0x75,
0x05, 0xbe, 0x9b, 0x9c, 0x42, 0x77, 0x05, 0xf7, 0xa1, 0x3a, 0xa6, 0x6f, 0x4c, 0xd9, 0xbc, 0xd3,
0x7e, 0xf5, 0x50, 0x81, 0x1f, 0x36, 0xb3, 0x90, 0x76, 0x7c, 0x73, 0x0d, 0xb2, 0x9c, 0xcb, 0xf3,
0xec, 0x81, 0x13, 0x84, 0x32, 0x8a, 0xe5, 0xb1, 0x24, 0x78, 0x5c, 0x74, 0xad, 0x50, 0x46, 0xfe,
0x3c, 0x16, 0x6d, 0xf3, 0x19, 0x40, 0xb7, 0xef, 0x6b, 0x43, 0xee, 0x70, 0x2d, 0x2a, 0xb8, 0xd4,
0x67, 0x0c, 0xa8, 0x70, 0x38, 0xed, 0xf8, 0x22, 0xca, 0xf2, 0x18, 0x9f, 0x16, 0x31, 0x5e, 0xb4,
0x4d, 0x1b, 0x32, 0x2d, 0xca, 0xd5, 0x54, 0x07, 0x81, 0xdf, 0xef, 0xc9, 0xac, 0xdf, 0xeb, 0x53,
0x5b, 0xfa, 0xfe, 0xc2, 0x76, 0x0a, 0x2f, 0xf2, 0x9e, 0x8e, 0xe8, 0xd8, 0xa4, 0x36, 0xe1, 0xd8,
0x80, 0x84, 0x84, 0xf5, 0x48, 0x10, 0xd0, 0x40, 0x62, 0xd3, 0x1a, 0x2b, 0x7a, 0x5a, 0xbc, 0x83,
0x63, 0x9b, 0x39, 0xc8, 0x10, 0xcf, 0x36, 0xff, 0xb0, 0x08, 0xc5, 0xae, 0xe5, 0xb7, 0x5e, 0xf1,
0x94, 0x75, 0x1f, 0xf2, 0xf2, 0x14, 0x2a, 0xb3, 0xdf, 0x9a, 0x3e, 0xab, 0xd1, 0xfc, 0xb0, 0x82,
0xa2, 0xa7, 0x50, 0x96, 0xad, 0xde, 0x90, 0x30, 0x4b, 0xc5, 0x8d, 0xdb, 0xb3, 0x4e, 0xb9, 0x18,
0xa4, 0xd1, 0xf2, 0x6c, 0x9f, 0x3a, 0x1e, 0x7b, 0x4e, 0x98, 0x85, 0x41, 0x8a, 0xf2, 0x36, 0xfa,
0x18, 0xca, 0xb1, 0x48, 0xa4, 0xb6, 0xea, 0x54, 0x13, 0xe2, 0x78, 0xf4, 0x29, 0x54, 0x63, 0xa4,
0x34, 0x26, 0x7b, 0x21, 0x63, 0x96, 0x62, 0xf2, 0xc2, 0xa2, 0x26, 0x40, 0x40, 0x47, 0x4c, 0xcd,
0xac, 0x20, 0x94, 0xdd, 0x98, 0xaf, 0x0c, 0x73, 0xac, 0xd0, 0x54, 0x0a, 0x74, 0x13, 0x7d, 0x0a,
0x4b, 0xa2, 0x1c, 0xe9, 0xd9, 0x4e, 0x20, 0x43, 0xae, 0xc8, 0xe4, 0x8b, 0xeb, 0x2b, 0xf3, 0x15,
0xb5, 0xb9, 0xc0, 0x96, 0xc6, 0xe3, 0x45, 0x3f, 0x41, 0xa3, 0xf7, 0x55, 0x88, 0x96, 0xe9, 0xe2,
0xea, 0x7c, 0x3d, 0x89, 0x80, 0xfc, 0x33, 0x03, 0x2a, 0xf1, 0xe9, 0xa2, 0xef, 0x42, 0xde, 0xb5,
0xf6, 0x89, 0xab, 0x23, 0xf3, 0xfa, 0xf9, 0x96, 0xa9, 0xf1, 0x4c, 0x08, 0xb5, 0x3c, 0x16, 0x8c,
0xb1, 0xd2, 0x50, 0x7f, 0x0c, 0xe5, 0x18, 0x1b, 0x55, 0x21, 0x73, 0x44, 0xc6, 0xaa, 0x68, 0xe7,
0x4d, 0x7e, 0x8a, 0x5e, 0x59, 0xee, 0x48, 0x5f, 0x4e, 0x24, 0xf1, 0x61, 0xfa, 0x91, 0x51, 0xff,
0xa9, 0x01, 0xa5, 0x68, 0xe5, 0xd0, 0xd3, 0x13, 0x46, 0xad, 0x9e, 0x63, 0xb9, 0xff, 0xd5, 0x16,
0x7d, 0x53, 0x50, 0xd9, 0x66, 0x0f, 0x2a, 0x81, 0xcc, 0x47, 0x3d, 0xc7, 0x73, 0x74, 0x1d, 0x73,
0xe7, 0xf4, 0x05, 0x6f, 0xa8, 0x14, 0xb6, 0xe3, 0x39, 0x8c, 0x5f, 0x00, 0x82, 0x09, 0x89, 0x30,
0x2c, 0x04, 0xea, 0x2e, 0x24, 0x35, 0x9e, 0x52, 0xde, 0x24, 0x34, 0x4a, 0x19, 0xa5, 0xb2, 0x12,
0xc4, 0x68, 0x69, 0xa4, 0xd2, 0x49, 0x3c, 0x5b, 0x79, 0xc5, 0x9d, 0x73, 0xaa, 0x6c, 0x79, 0xb6,
0x34, 0x32, 0x22, 0xeb, 0x0f, 0xa1, 0xd8, 0x61, 0x01, 0xb1, 0x86, 0x3b, 0xe2, 0xfa, 0xb5, 0x6f,
0x85, 0x2a, 0xe2, 0x60, 0xd1, 0x96, 0x17, 0x12, 0xde, 0x2f, 0xac, 0xcf, 0x62, 0x45, 0xd5, 0xff,
0x6c, 0x40, 0x39, 0x36, 0x77, 0xf4, 0x01, 0xa4, 0x1d, 0x5b, 0xad, 0xd9, 0x7b, 0x67, 0x98, 0xa3,
0x07, 0xc4, 0x69, 0xc7, 0xe6, 0x61, 0x28, 0x96, 0xca, 0x67, 0xc5, 0x80, 0x49, 0x56, 0x8d, 0xb2,
0xfc, 0x6a, 0x54, 0x19, 0xc8, 0x05, 0xf8, 0xaf, 0x39, 0x79, 0x29, 0x2a, 0x18, 0x12, 0x75, 0x6f,
0x76, 0x5e, 0xdd, 0x9b, 0x9b, 0xd4, 0xbd, 0xf5, 0xdf, 0x18, 0x50, 0x89, 0x6f, 0xc5, 0xeb, 0xcf,
0xf0, 0x29, 0x20, 0x71, 0xe7, 0xea, 0x25, 0xdc, 0x2b, 0x7d, 0xd6, 0xb5, 0xa8, 0x2a, 0x84, 0xe2,
0x6b, 0xfc, 0x2e, 0x94, 0xf9, 0xe1, 0x56, 0xd9, 0x41, 0x4c, 0x7d, 0x01, 0x03, 0x67, 0xc9, 0xb4,
0x50, 0xff, 0x65, 0x9a, 0x6f, 0x4a, 0xb4, 0xb9, 0xff, 0x06, 0x26, 0xef, 0xc0, 0x65, 0xad, 0x28,
0x7e, 0x12, 0x32, 0x67, 0x69, 0xba, 0xa4, 0x34, 0xc5, 0xd6, 0xff, 0x16, 0x2c, 0x46, 0x4a, 0xf6,
0xc7, 0x8c, 0xc8, 0xba, 0x37, 0x8b, 0xa3, 0x43, 0xd6, 0xe4, 0x4c, 0x74, 0x1b, 0x32, 0x84, 0x86,
0x2a, 0x33, 0x4d, 0x3f, 0x3a, 0xb4, 0x68, 0x88, 0x39, 0x80, 0x57, 0x7a, 0x84, 0xcf, 0xde, 0x7c,
0x04, 0x8b, 0xc9, 0x10, 0xcc, 0xcb, 0xa5, 0x17, 0xbb, 0xdf, 0xdb, 0xdd, 0xfb, 0x6c, 0xb7, 0x9a,
0xe2, 0xc4, 0xce, 0x6e, 0x73, 0xef, 0xc5, 0xee, 0x56, 0xd5, 0x40, 0x15, 0x28, 0xee, 0xbd, 0xe8,
0x4a, 0x2a, 0x3d, 0x51, 0x71, 0x0d, 0x8a, 0x1b, 0xbe, 0x23, 0xd2, 0x2d, 0x8f, 0x34, 0x22, 0x21,
0xab, 0xe8, 0x23, 0x09, 0x7e, 0xc9, 0x2c, 0xb5, 0xa9, 0x2d, 0x20, 0x21, 0x7a, 0x02, 0x79, 0xc1,
0xd6, 0x71, 0xef, 0xc6, 0xac, 0xb7, 0x11, 0x89, 0x8d, 0x5a, 0x58, 0x89, 0xd4, 0xff, 0x62, 0x40,
0x51, 0x33, 0x11, 0x86, 0x12, 0xbf, 0x76, 0x5b, 0x8e, 0x47, 0x02, 0xb5, 0xd1, 0xeb, 0xe7, 0x50,
0xd6, 0xd8, 0xd4, 0x42, 0x82, 0xe4, 0x25, 0x72, 0xa4, 0xa6, 0xfe, 0x0a, 0x16, 0x93, 0xdd, 0xa8,
0x06, 0x85, 0x21, 0x09, 0x43, 0x6b, 0xa0, 0x9f, 0x66, 0x34, 0xc9, 0xcf, 0xd5, 0x64, 0x7c, 0xf5,
0x14, 0x15, 0x31, 0xf8, 0x5a, 0x38, 0x43, 0x2e, 0x25, 0x5f, 0xda, 0x24, 0xc1, 0x43, 0x4a, 0x40,
0xac, 0x90, 0x7a, 0xfa, 0x8d, 0x43, 0x52, 0x62, 0x39, 0xc5, 0x62, 0xb5, 0xa1, 0xa8, 0x6f, 0x08,
0xa7, 0x3f, 0xbb, 0x89, 0x6b, 0xf4, 0xd8, 0xd7, 0x51, 0x5d, 0xb4, 0xa3, 0x47, 0xa4, 0xcc, 0xe4,
0x11, 0xc9, 0x7c, 0x09, 0x97, 0xa6, 0x2e, 0x43, 0xe8, 0x01, 0x14, 0xf5, 0xa3, 0x80, 0x5a, 0xba,
0x37, 0xe7, 0x5e, 0xa1, 0x70, 0x04, 0xe5, 0x7e, 0x28, 0xb2, 0x4e, 0x2f, 0xf1, 0x60, 0x56, 0xc2,
0x0b, 0x82, 0xdb, 0xd1, 0x2f, 0x62, 0x5f, 0xc0, 0x82, 0x16, 0x96, 0x8b, 0xf8, 0x9a, 0xc3, 0x45,
0xfe, 0x94, 0x8e, 0xfb, 0xd3, 0xd7, 0x69, 0x40, 0xfc, 0xd0, 0x77, 0x46, 0xc3, 0xa1, 0x15, 0x8c,
0xf5, 0x2d, 0x3c, 0xfe, 0x8c, 0x67, 0x5c, 0xfc, 0x19, 0x8f, 0x47, 0x18, 0xe6, 0x0c, 0x49, 0xef,
0xd8, 0xf1, 0x6c, 0x7a, 0xac, 0x86, 0x04, 0xce, 0xfa, 0x4c, 0x70, 0xd0, 0xff, 0x40, 0xd6, 0xa3,
0x9e, 0x0e, 0xbb, 0x57, 0xa6, 0x8f, 0xd7, 0xd0, 0x67, 0x63, 0x5e, 0x85, 0x70, 0x14, 0xfa, 0x08,
0xca, 0x8c, 0xf6, 0xa2, 0x59, 0x67, 0xcf, 0x98, 0x35, 0xbf, 0x3a, 0x30, 0x1a, 0x6d, 0xfd, 0x77,
0x60, 0xe1, 0x20, 0xa0, 0xc3, 0x89, 0x7c, 0xee, 0x6c, 0xf9, 0x0a, 0x97, 0x88, 0x34, 0xbc, 0x03,
0x10, 0x1e, 0x39, 0x32, 0x60, 0x86, 0xa2, 0x12, 0x2b, 0xe2, 0x12, 0xe7, 0xf0, 0xa5, 0x0b, 0xd1,
0x5b, 0x50, 0x62, 0x7d, 0xdd, 0x5b, 0x10, 0xbd, 0x45, 0xd6, 0x97, 0x9d, 0x4d, 0x80, 0x22, 0x1d,
0xb1, 0x7d, 0x3a, 0xf2, 0x6c, 0xf3, 0x8f, 0x06, 0x5c, 0x4e, 0xac, 0xb6, 0x7a, 0xe1, 0x7c, 0x0c,
0x69, 0x7a, 0x34, 0x37, 0xbe, 0xce, 0x90, 0x68, 0xec, 0x1d, 0x6d, 0xa7, 0x70, 0x9a, 0x1e, 0xa1,
0x87, 0xf1, 0x6d, 0x9d, 0x55, 0xd7, 0x25, 0x9c, 0x67, 0x3b, 0xa5, 0x36, 0xbe, 0xbe, 0x01, 0xe9,
0xbd, 0x23, 0xf4, 0x04, 0xc4, 0x53, 0x63, 0x8f, 0x59, 0xfb, 0x6e, 0x74, 0xd9, 0xae, 0xcf, 0xb4,
0xa0, 0xcb, 0x21, 0x18, 0x42, 0xdd, 0x14, 0x33, 0xd3, 0x21, 0xd3, 0xfc, 0x75, 0x1a, 0xa0, 0x69,
0x85, 0x4e, 0x5f, 0xae, 0xc8, 0x0d, 0x58, 0x08, 0x47, 0xfd, 0x3e, 0x09, 0xf9, 0xdd, 0x63, 0xe4,
0xc9, 0x22, 0x28, 0x8b, 0x2b, 0x8a, 0xb9, 0xc9, 0x79, 0x1c, 0x74, 0x60, 0x39, 0xee, 0x28, 0x20,
0x0a, 0x24, 0x2b, 0x83, 0x8a, 0x62, 0x4a, 0xd0, 0x4d, 0x7e, 0x4a, 0x18, 0xf1, 0xfa, 0xe3, 0xde,
0x30, 0xec, 0xf9, 0x0f, 0xd6, 0x84, 0xcb, 0x64, 0x71, 0x45, 0x71, 0x9f, 0x87, 0xed, 0x07, 0x6b,
0x27, 0x51, 0x8f, 0x1f, 0xa8, 0x98, 0x1e, 0x43, 0x3d, 0x7e, 0x30, 0x85, 0x7a, 0x2c, 0x3c, 0x21,
0x89, 0x7a, 0x8c, 0xd6, 0x60, 0xd9, 0xea, 0xb3, 0x91, 0xe5, 0xf6, 0x92, 0x53, 0xc8, 0x0b, 0x2c,
0x92, 0x7d, 0x9d, 0xf8, 0x44, 0x26, 0x12, 0xc9, 0xf9, 0x14, 0xe2, 0x12, 0x9f, 0xc4, 0x66, 0x65,
0xfe, 0xd8, 0x80, 0x62, 0x57, 0x79, 0x08, 0xfa, 0x6f, 0xa8, 0x52, 0x9f, 0x88, 0x77, 0x63, 0x4f,
0x9e, 0xa4, 0x50, 0xad, 0xd7, 0x12, 0xe7, 0x6f, 0x4e, 0xd8, 0x68, 0x85, 0xdf, 0xd5, 0x2c, 0x5b,
0xe6, 0xad, 0x1e, 0xa3, 0xcc, 0x72, 0xd5, 0xaa, 0x2d, 0x72, 0xbe, 0xc8, 0x5c, 0x5d, 0xce, 0x45,
0x77, 0xe0, 0xd2, 0x71, 0xe0, 0x30, 0x92, 0x80, 0xca, 0xa5, 0x5b, 0x12, 0x1d, 0x13, 0xac, 0xd9,
0x81, 0x4b, 0xdd, 0xc0, 0x3a, 0x38, 0x70, 0xfa, 0x1d, 0xdf, 0x75, 0x98, 0xb4, 0x0a, 0x41, 0xd6,
0xf2, 0xc9, 0x97, 0x3a, 0x24, 0xf2, 0xb6, 0xb8, 0xbf, 0x12, 0xeb, 0x40, 0x87, 0x44, 0xde, 0xe6,
0x51, 0xf8, 0x98, 0x38, 0x83, 0x43, 0xa6, 0xa3, 0xb0, 0xa4, 0xcc, 0x6f, 0x72, 0x50, 0x8a, 0xfc,
0x06, 0x35, 0xa1, 0xe4, 0x53, 0xbb, 0x37, 0x08, 0xe8, 0x48, 0x5f, 0x6f, 0x6f, 0xcc, 0x77, 0x33,
0x9e, 0x5f, 0x9e, 0x72, 0xe8, 0x76, 0x0a, 0x17, 0x7d, 0xd5, 0xae, 0xff, 0x22, 0x27, 0x12, 0x96,
0x20, 0xd0, 0x13, 0xc8, 0x06, 0xf4, 0x58, 0xbb, 0xec, 0x7b, 0xe7, 0xd0, 0xd5, 0xc0, 0xf4, 0x18,
0x0b, 0xa1, 0xfa, 0x9f, 0xb2, 0x90, 0xc1, 0xf4, 0xf8, 0x75, 0x43, 0xe9, 0x99, 0xd1, 0x6d, 0xf2,
0xfa, 0x5e, 0x4a, 0xbc, 0xbe, 0xaf, 0x40, 0x75, 0x48, 0xc2, 0x43, 0x62, 0xf7, 0xf8, 0x62, 0x48,
0x27, 0x91, 0x7b, 0xb2, 0x28, 0xf9, 0x6d, 0x6a, 0x4b, 0x97, 0xba, 0x03, 0x97, 0x82, 0x91, 0xe7,
0x39, 0xde, 0x20, 0x06, 0x95, 0x3e, 0xbd, 0xa4, 0x3a, 0x22, 0xec, 0x0a, 0x54, 0xb9, 0xdf, 0x25,
0xb4, 0x4a, 0x67, 0x5d, 0x94, 0xfc, 0x08, 0x79, 0x0f, 0x72, 0x32, 0x48, 0xe5, 0xe6, 0x94, 0xc8,
0x93, 0x23, 0x8c, 0x25, 0x12, 0x3d, 0x8c, 0xc7, 0xb6, 0xe2, 0x9c, 0x35, 0xd2, 0xae, 0x3c, 0x09,
0x7b, 0xe8, 0x63, 0x28, 0xb2, 0x50, 0x89, 0xc1, 0x9c, 0x0c, 0x32, 0xe5, 0x74, 0xb8, 0xc0, 0x42,
0x29, 0xfe, 0x05, 0x2c, 0xc8, 0x32, 0xa5, 0xb7, 0x3f, 0xe6, 0xd3, 0xaa, 0x15, 0xc4, 0x3e, 0x3f,
0x3a, 0xe7, 0x3e, 0x37, 0x64, 0x9d, 0xd2, 0x1c, 0xf3, 0x42, 0x45, 0xdc, 0xf0, 0xca, 0x64, 0xc2,
0xa9, 0x7f, 0x0e, 0xd5, 0x93, 0x80, 0x19, 0x77, 0xbd, 0xb5, 0xf8, 0x5d, 0x6f, 0x56, 0x58, 0x8c,
0xea, 0xa1, 0xd8, 0x3d, 0x90, 0x57, 0x1f, 0x22, 0x9a, 0x9a, 0xbb, 0x50, 0x69, 0xd9, 0x83, 0xc9,
0x1f, 0x7f, 0xdf, 0x32, 0xa7, 0x9a, 0x5f, 0x19, 0xb0, 0xa0, 0x14, 0xaa, 0xb4, 0x71, 0x3f, 0x96,
0x36, 0xae, 0x4f, 0xa7, 0xd0, 0x38, 0xf6, 0xdb, 0x27, 0x8c, 0x7b, 0x22, 0x61, 0xdc, 0x85, 0x1c,
0xe1, 0x7a, 0xd5, 0xb9, 0x7b, 0x63, 0xe6, 0xa8, 0x58, 0x62, 0x12, 0x09, 0xe2, 0x77, 0x06, 0x64,
0x79, 0x1f, 0xba, 0x0b, 0x99, 0x30, 0xe8, 0x9f, 0x7d, 0xdc, 0x38, 0x8a, 0x83, 0xed, 0x70, 0x72,
0x61, 0x98, 0x0f, 0xb6, 0x43, 0xc6, 0xd3, 0x70, 0xdf, 0x75, 0x88, 0xc7, 0x7a, 0x8e, 0xad, 0x42,
0x54, 0x51, 0x32, 0x76, 0x6c, 0xde, 0x19, 0x92, 0xe0, 0x15, 0x09, 0x78, 0xa7, 0x8c, 0x54, 0x45,
0xc9, 0xd8, 0xb1, 0xd1, 0x6d, 0x58, 0xf2, 0x68, 0xcf, 0xb1, 0x89, 0xc7, 0x1c, 0xc6, 0x93, 0xc3,
0x40, 0x5d, 0xe1, 0x16, 0x3c, 0xba, 0xa3, 0xb8, 0xcf, 0xc3, 0x81, 0xf9, 0xb5, 0x01, 0xd5, 0x2e,
0xf5, 0xc5, 0x1b, 0x42, 0xf8, 0x9f, 0x51, 0x2b, 0x15, 0x2e, 0x54, 0x2b, 0x25, 0xaa, 0x95, 0xdf,
0x1b, 0x70, 0x29, 0x36, 0x5b, 0xe5, 0x74, 0xaf, 0xe9, 0x3f, 0xfc, 0x0e, 0x49, 0x8f, 0xd4, 0x1c,
0x6e, 0x4d, 0x87, 0x82, 0x93, 0xe3, 0x44, 0x0e, 0x5b, 0x7f, 0x2c, 0x1c, 0xef, 0x3e, 0xe4, 0xc5,
0xf3, 0x98, 0xf6, 0xbc, 0xe9, 0xd8, 0x25, 0xe4, 0x65, 0x95, 0xa2, 0xa0, 0x09, 0x07, 0xfc, 0x9b,
0x01, 0x30, 0x81, 0xa0, 0xfb, 0x89, 0xfc, 0xf1, 0xee, 0x29, 0xda, 0x26, 0x79, 0x03, 0xd5, 0x63,
0xf9, 0x42, 0xee, 0x53, 0x44, 0xd7, 0x7f, 0x62, 0xc8, 0x9c, 0xb2, 0x0c, 0x39, 0x31, 0xba, 0xbe,
0xb7, 0x09, 0xe2, 0xec, 0x4d, 0x4e, 0x3c, 0x2c, 0xe4, 0x4f, 0x3e, 0x2c, 0x5c, 0x3c, 0x70, 0xaf,
0x7f, 0x95, 0x87, 0xcc, 0x86, 0xef, 0xa0, 0xcf, 0xa1, 0x1c, 0x2b, 0x20, 0xd1, 0x8d, 0xd3, 0xcb,
0x4b, 0xe1, 0xd2, 0xf5, 0x9b, 0xe7, 0xa9, 0x41, 0xcd, 0x14, 0xda, 0x86, 0x9c, 0x88, 0x32, 0xe8,
0x9d, 0x79, 0xd1, 0x47, 0xea, 0xbb, 0x7a, 0x7a, 0x70, 0x32, 0x53, 0xa8, 0x0b, 0xa5, 0xc8, 0x05,
0xd0, 0xf5, 0xd3, 0xdc, 0x43, 0x6a, 0x34, 0xcf, 0xf6, 0x20, 0x33, 0x85, 0x3e, 0x85, 0xa2, 0xfe,
0x9a, 0x00, 0x5d, 0x9b, 0x92, 0x38, 0xf1, 0x75, 0x43, 0xfd, 0xfa, 0x29, 0x88, 0x48, 0xe5, 0x0f,
0xa0, 0x12, 0xff, 0x40, 0x03, 0xdd, 0x9c, 0x29, 0x74, 0xe2, 0xa3, 0x8f, 0xfa, 0xad, 0x33, 0x50,
0x91, 0xfa, 0x2d, 0xc8, 0x74, 0x2d, 0x1f, 0xbd, 0x35, 0xeb, 0x91, 0x45, 0x2b, 0x7b, 0x73, 0xee,
0x0b, 0x8c, 0x99, 0xf9, 0x51, 0xda, 0x58, 0x33, 0xd0, 0x0b, 0x58, 0x48, 0xfc, 0x3f, 0x86, 0x6e,
0x9d, 0xeb, 0xff, 0xb3, 0xd3, 0x34, 0xa7, 0xd6, 0x0c, 0xb4, 0x01, 0x05, 0xfd, 0xff, 0xf8, 0x9c,
0x28, 0x54, 0x7f, 0x7b, 0x8a, 0x1f, 0xfb, 0xec, 0xc6, 0x4c, 0x21, 0x17, 0x4a, 0x1d, 0xe2, 0x1e,
0x6c, 0x1e, 0x92, 0xfe, 0x11, 0xfa, 0xdf, 0x09, 0x58, 0x7e, 0xd6, 0xd3, 0x88, 0x7f, 0xd6, 0x13,
0xe1, 0xb4, 0x75, 0x8d, 0xf3, 0xc2, 0xa3, 0xd5, 0x7c, 0x04, 0xf9, 0x4d, 0xf1, 0x39, 0xd0, 0x5c,
0x7b, 0x97, 0xe3, 0x3a, 0xc5, 0x87, 0x43, 0x1b, 0xae, 0x6b, 0xa6, 0x9a, 0xf7, 0x3f, 0xbf, 0x37,
0x70, 0xd8, 0xe1, 0x68, 0x9f, 0x0f, 0xb5, 0xaa, 0x30, 0xfa, 0x77, 0x7d, 0x75, 0xf2, 0x35, 0xc3,
0xea, 0x80, 0x78, 0xab, 0x52, 0xe5, 0x7e, 0x5e, 0xbc, 0x3f, 0xdd, 0xff, 0x67, 0x00, 0x00, 0x00,
0xff, 0xff, 0x19, 0x79, 0xb2, 0x41, 0xe4, 0x24, 0x00, 0x00,
// 3141 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcd, 0x73, 0x1b, 0x49,
0x15, 0xd7, 0xf7, 0xc7, 0x93, 0x6c, 0x2b, 0x1d, 0x6f, 0xd0, 0x6a, 0x77, 0xb3, 0xc9, 0xe4, 0x63,
0x4d, 0x02, 0xb2, 0xe3, 0x6c, 0xb2, 0xc9, 0x66, 0x17, 0xb0, 0x6c, 0x6d, 0x2c, 0x48, 0x6c, 0x6d,
0x4b, 0x61, 0xa9, 0xad, 0xa5, 0x54, 0x63, 0x4d, 0x5b, 0x1e, 0x3c, 0x9a, 0x9e, 0xcc, 0xb4, 0xec,
0xd5, 0x7f, 0x40, 0x15, 0x45, 0x71, 0xe2, 0xcc, 0x81, 0x13, 0x14, 0x17, 0x2e, 0x5c, 0xa8, 0xe2,
0xc0, 0x95, 0x33, 0x45, 0x71, 0x81, 0x1b, 0x97, 0x2d, 0x6e, 0x9c, 0x38, 0x6c, 0x51, 0xfd, 0x35,
0x9a, 0xb1, 0x24, 0x7f, 0x64, 0x39, 0xc0, 0x49, 0xfd, 0x5e, 0xff, 0xde, 0xeb, 0xd7, 0xdd, 0xaf,
0xdf, 0x7b, 0xdd, 0x1a, 0x28, 0x7b, 0xa3, 0x3d, 0xc7, 0xee, 0xd7, 0x3d, 0x9f, 0x32, 0x8a, 0x96,
0x1c, 0xdb, 0x3d, 0x24, 0xbe, 0xb5, 0x5e, 0x97, 0xec, 0xda, 0xd5, 0x01, 0xa5, 0x03, 0x87, 0xac,
0x8a, 0xee, 0xbd, 0xd1, 0xfe, 0xaa, 0x35, 0xf2, 0x4d, 0x66, 0x53, 0x57, 0x0a, 0xd4, 0xaa, 0x7d,
0x3a, 0x1c, 0x52, 0x77, 0xf5, 0x80, 0x98, 0x0e, 0x3b, 0xe8, 0x1f, 0x90, 0xfe, 0xa1, 0xea, 0xb9,
0xdc, 0xa7, 0xee, 0xbe, 0x3d, 0x58, 0x95, 0x3f, 0x92, 0x69, 0xe4, 0x21, 0xdb, 0x1c, 0x7a, 0x6c,
0x6c, 0xbc, 0x84, 0xd2, 0xf7, 0x89, 0x1f, 0xd8, 0xd4, 0x6d, 0xb9, 0xfb, 0x14, 0xbd, 0x09, 0xc5,
0x01, 0x55, 0x8c, 0x6a, 0xf2, 0x5a, 0x72, 0xa5, 0x88, 0x27, 0x0c, 0xde, 0xbb, 0x37, 0xb2, 0x1d,
0x6b, 0xcb, 0x64, 0xa4, 0x9a, 0x92, 0xbd, 0x21, 0x03, 0xdd, 0x86, 0x45, 0x9f, 0x38, 0xc4, 0x0c,
0x88, 0x56, 0x90, 0x16, 0x90, 0x13, 0x5c, 0xe3, 0x3e, 0x5c, 0x7e, 0x66, 0x07, 0xac, 0x43, 0xfc,
0x23, 0xbb, 0x4f, 0x02, 0x4c, 0x5e, 0x8e, 0x48, 0xc0, 0xb8, 0x72, 0xd7, 0x1c, 0x92, 0xc0, 0x33,
0xfb, 0x44, 0x0f, 0x1d, 0x32, 0x8c, 0x67, 0xb0, 0x1c, 0x17, 0x0a, 0x3c, 0xea, 0x06, 0x04, 0xbd,
0x0b, 0x85, 0x40, 0xf1, 0xaa, 0xc9, 0x6b, 0xe9, 0x95, 0xd2, 0x7a, 0xb5, 0x7e, 0x62, 0xed, 0xea,
0x4a, 0x08, 0x87, 0x48, 0xe3, 0x09, 0xe4, 0x15, 0x13, 0x21, 0xc8, 0xf0, 0x51, 0xd4, 0x88, 0xa2,
0x1d, 0x37, 0x25, 0x75, 0xd2, 0x94, 0x00, 0x96, 0xb8, 0x29, 0x6d, 0x6a, 0x85, 0xb6, 0x5f, 0x9b,
0xb2, 0xbd, 0x91, 0xaa, 0x26, 0x23, 0x42, 0xe8, 0x5b, 0xdc, 0x4e, 0x87, 0xf4, 0x19, 0xf5, 0x85,
0xc6, 0xd2, 0xba, 0x31, 0x65, 0x27, 0x26, 0x01, 0x1d, 0xf9, 0x7d, 0xd2, 0x11, 0x40, 0x9b, 0xba,
0x38, 0x94, 0x31, 0x3e, 0x80, 0xca, 0x64, 0x50, 0x35, 0xf7, 0x15, 0xc8, 0x78, 0xd4, 0xd2, 0xf3,
0x5e, 0x9e, 0xd2, 0xd7, 0xa6, 0x16, 0x16, 0x08, 0xe3, 0xdf, 0x19, 0x48, 0xb7, 0xa9, 0x35, 0x73,
0xb2, 0xcb, 0x90, 0xf5, 0xa8, 0xd5, 0x6a, 0xab, 0x89, 0x4a, 0x02, 0x5d, 0x03, 0xb0, 0x88, 0xe7,
0xd0, 0xf1, 0x90, 0xb8, 0x4c, 0x6e, 0xe4, 0x76, 0x02, 0x47, 0x78, 0xe8, 0x3a, 0x94, 0x7c, 0xe2,
0x39, 0x76, 0xdf, 0xec, 0x05, 0x84, 0x55, 0x41, 0x43, 0x14, 0xb3, 0x43, 0x18, 0x7a, 0x0f, 0xae,
0x28, 0x8a, 0xcf, 0xa6, 0xd7, 0xa7, 0x2e, 0xf3, 0xa9, 0xe3, 0x10, 0xbf, 0x5a, 0x52, 0xe8, 0xd7,
0x22, 0xfd, 0x9b, 0x61, 0x37, 0xba, 0x01, 0xe5, 0x80, 0x99, 0x8c, 0xec, 0x8f, 0x1c, 0xa1, 0xbc,
0xac, 0xe0, 0x25, 0xcd, 0xe5, 0xda, 0xdf, 0x06, 0xb0, 0x4c, 0x32, 0xa4, 0xae, 0x80, 0x2c, 0x28,
0x48, 0x51, 0xf2, 0x38, 0x00, 0x41, 0xfa, 0x47, 0x74, 0xaf, 0xba, 0xa8, 0x7a, 0x38, 0x81, 0xae,
0x40, 0x8e, 0xeb, 0x18, 0x05, 0xd5, 0x8c, 0x98, 0xae, 0xa2, 0xf8, 0x2a, 0x98, 0x96, 0x45, 0xac,
0x6a, 0xf6, 0x5a, 0x72, 0xa5, 0x80, 0x25, 0x81, 0x36, 0x61, 0x29, 0xb0, 0xdd, 0x3e, 0x79, 0x66,
0x06, 0x0c, 0x13, 0x8f, 0xfa, 0xac, 0x9a, 0x13, 0x9b, 0xf7, 0x7a, 0x5d, 0x9e, 0xc7, 0xba, 0x3e,
0x8f, 0xf5, 0x2d, 0x75, 0x1e, 0xf1, 0x49, 0x09, 0xb4, 0x06, 0x97, 0x27, 0x33, 0xdf, 0x09, 0xdd,
0x24, 0x2f, 0xc6, 0x9f, 0xd5, 0x85, 0x0c, 0x28, 0x2b, 0x76, 0xdb, 0x31, 0x5d, 0x52, 0x2d, 0x08,
0x9b, 0x62, 0x3c, 0x74, 0x0f, 0x72, 0x23, 0x8f, 0xd9, 0x43, 0x52, 0x2d, 0x9e, 0x65, 0x91, 0x02,
0xa2, 0xab, 0x00, 0x9e, 0x4f, 0x3f, 0x1f, 0x63, 0x62, 0x5a, 0xe3, 0xea, 0x92, 0x50, 0x1a, 0xe1,
0xf0, 0x61, 0x05, 0xa5, 0x8f, 0x6f, 0x45, 0x58, 0x18, 0xe3, 0xa1, 0x15, 0x58, 0xf2, 0x95, 0x9b,
0x6a, 0xd8, 0x25, 0x01, 0x3b, 0xc9, 0x6e, 0xe4, 0x21, 0x4b, 0x8f, 0x5d, 0xe2, 0x1b, 0xbf, 0x4e,
0x01, 0x74, 0x4d, 0x4f, 0x9f, 0x15, 0x04, 0x69, 0x8f, 0x5a, 0xd2, 0x05, 0xf9, 0xae, 0x78, 0xd4,
0x3a, 0xe1, 0x6d, 0xa9, 0x19, 0xde, 0x76, 0x05, 0x72, 0x43, 0xf3, 0x73, 0xec, 0x05, 0xc2, 0x17,
0x53, 0x58, 0x51, 0x9c, 0xcf, 0x68, 0x9b, 0x6f, 0x0c, 0xdf, 0xcf, 0x05, 0xac, 0x28, 0xee, 0xe9,
0x8c, 0xb6, 0xda, 0x62, 0x3b, 0x8b, 0x58, 0xb4, 0x51, 0x0d, 0x0a, 0xfb, 0x3e, 0x1d, 0xb6, 0xf5,
0x36, 0x2e, 0xe0, 0x90, 0xe6, 0x7a, 0x78, 0xbb, 0xd5, 0x56, 0xfb, 0xa2, 0x28, 0xe1, 0x2f, 0xfd,
0x03, 0x32, 0x94, 0x9b, 0xc0, 0xfd, 0x45, 0x50, 0xc2, 0x1e, 0xc2, 0x0e, 0xa8, 0x25, 0x96, 0xbf,
0x88, 0x15, 0xc5, 0x43, 0x87, 0x39, 0x62, 0x07, 0xd4, 0xb7, 0xd9, 0x58, 0x9e, 0x09, 0x3c, 0x61,
0x70, 0xab, 0x3c, 0x93, 0x1d, 0x48, 0xf7, 0xc7, 0xa2, 0xfd, 0x7e, 0xaa, 0x9a, 0x6c, 0x14, 0x20,
0xc7, 0x4c, 0x7f, 0x40, 0x98, 0xf1, 0x8f, 0x2c, 0x2c, 0x77, 0x4d, 0xaf, 0x31, 0xd6, 0xc1, 0x40,
0x2f, 0xdb, 0xfb, 0x1a, 0x22, 0x56, 0xee, 0x7c, 0xe1, 0x43, 0x49, 0xa0, 0x0d, 0xc8, 0x0e, 0x4d,
0xd6, 0x3f, 0x50, 0x91, 0xe7, 0xee, 0x94, 0xe8, 0xac, 0x11, 0xeb, 0xcf, 0xb9, 0x08, 0x96, 0x92,
0xf3, 0xd6, 0xbf, 0xf6, 0xbb, 0x0c, 0x64, 0x05, 0x10, 0x6d, 0x42, 0xda, 0x74, 0x1c, 0x65, 0xdd,
0xea, 0x05, 0x86, 0xa8, 0x77, 0xc8, 0x4b, 0xee, 0x08, 0xa6, 0xe3, 0x08, 0x25, 0xee, 0x58, 0xd9,
0xf9, 0x4a, 0x4a, 0xdc, 0x31, 0xfa, 0x36, 0xa4, 0x5d, 0x2a, 0x83, 0xd6, 0xc5, 0x26, 0xcb, 0x15,
0xb8, 0x94, 0xa1, 0x6d, 0x28, 0x5b, 0x24, 0x60, 0xb6, 0x2b, 0xce, 0x8f, 0x0c, 0x15, 0xe7, 0x5a,
0xf1, 0xed, 0x04, 0x8e, 0x49, 0xa2, 0x8f, 0x20, 0x73, 0xc0, 0x98, 0x27, 0xdc, 0xb0, 0xb4, 0xbe,
0x76, 0x91, 0x09, 0x6d, 0x33, 0xe6, 0x6d, 0x27, 0xb0, 0x90, 0xaf, 0x3d, 0x83, 0x74, 0x87, 0xbc,
0x44, 0x4d, 0xc8, 0x8b, 0xed, 0x08, 0x93, 0xdd, 0x85, 0xb6, 0x52, 0xcb, 0xd6, 0xc6, 0x90, 0xe1,
0xda, 0x51, 0x35, 0x74, 0x6e, 0x7d, 0x1a, 0xb5, 0x7b, 0x57, 0x43, 0xf7, 0xd6, 0x87, 0x51, 0x3b,
0xf8, 0xd5, 0xa8, 0x83, 0xeb, 0xbc, 0x10, 0x71, 0xf1, 0x65, 0xe5, 0xe2, 0x19, 0xd5, 0x25, 0x28,
0x1e, 0x0c, 0xc4, 0xe0, 0x61, 0xc3, 0xf8, 0x57, 0x12, 0x80, 0x1b, 0xf1, 0x5c, 0xaa, 0xdd, 0x06,
0xf0, 0xc9, 0xc0, 0x0e, 0x18, 0xf1, 0x89, 0x0c, 0x0e, 0x8b, 0xeb, 0xb7, 0xa7, 0x26, 0x37, 0x11,
0xa8, 0xe3, 0x10, 0x2d, 0x93, 0x8e, 0xa6, 0xd0, 0x4d, 0x28, 0x8f, 0xdc, 0x88, 0x2e, 0x3d, 0x81,
0x18, 0xd7, 0x70, 0x01, 0x26, 0x1a, 0x50, 0x1e, 0xd2, 0x4f, 0x9b, 0xdd, 0x4a, 0x02, 0x15, 0x20,
0xd3, 0xde, 0xed, 0x74, 0x2b, 0x49, 0xce, 0x6a, 0xbf, 0xe8, 0x56, 0x52, 0x08, 0x20, 0xb7, 0xd5,
0x7c, 0xd6, 0xec, 0x36, 0x2b, 0x69, 0x54, 0x84, 0x6c, 0x7b, 0xa3, 0xbb, 0xb9, 0x5d, 0xc9, 0xa0,
0x12, 0xe4, 0x77, 0xdb, 0xdd, 0xd6, 0xee, 0x4e, 0xa7, 0x92, 0xe5, 0xc4, 0xe6, 0xee, 0xce, 0x4e,
0x73, 0xb3, 0x5b, 0xc9, 0x71, 0x1d, 0xdb, 0xcd, 0x8d, 0xad, 0x4a, 0x9e, 0xc3, 0xbb, 0x78, 0x63,
0xb3, 0x59, 0x29, 0x34, 0x72, 0x90, 0x61, 0x63, 0x8f, 0x18, 0xbf, 0x48, 0x42, 0xae, 0x23, 0xd7,
0x78, 0x6b, 0xc6, 0x94, 0xa7, 0x7d, 0x4c, 0x82, 0xbf, 0xea, 0x74, 0xaf, 0xc7, 0xa6, 0xcb, 0x2d,
0xec, 0x76, 0xdb, 0x95, 0x04, 0xb7, 0x90, 0xb7, 0x3a, 0x95, 0x64, 0x68, 0x61, 0x17, 0x8a, 0xad,
0xf6, 0x86, 0x65, 0xf9, 0x24, 0xe0, 0x69, 0x31, 0x63, 0x7b, 0x47, 0xef, 0x0a, 0xeb, 0xf2, 0x7c,
0x37, 0x39, 0x85, 0xee, 0x0a, 0xee, 0x43, 0x75, 0x4c, 0x5f, 0x9b, 0xb2, 0xb9, 0xd5, 0x3e, 0x7a,
0xa8, 0xc0, 0x0f, 0x1b, 0x19, 0x48, 0xd9, 0x9e, 0xb1, 0x06, 0x19, 0xce, 0xe5, 0x79, 0x76, 0xdf,
0xf6, 0x03, 0x19, 0xc5, 0x72, 0x58, 0x12, 0x3c, 0x2e, 0x3a, 0x66, 0x20, 0x23, 0x7f, 0x0e, 0x8b,
0xb6, 0xf1, 0x0c, 0xa0, 0xdb, 0xf7, 0xb4, 0x21, 0x77, 0xb8, 0x16, 0x15, 0x5c, 0x6a, 0x33, 0x06,
0x54, 0x38, 0x9c, 0xb2, 0x3d, 0x11, 0x65, 0x79, 0x8c, 0x4f, 0x89, 0x18, 0x2f, 0xda, 0x86, 0x05,
0xe9, 0x26, 0xe5, 0x6a, 0x2a, 0x03, 0xdf, 0xeb, 0xf7, 0x64, 0xd6, 0xef, 0xf5, 0xa9, 0x25, 0x7d,
0x7f, 0x61, 0x3b, 0x81, 0x17, 0x79, 0x4f, 0x47, 0x74, 0x6c, 0x52, 0x8b, 0x70, 0xac, 0x4f, 0x02,
0xc2, 0x7a, 0xc4, 0xf7, 0xa9, 0x2f, 0xb1, 0x29, 0x8d, 0x15, 0x3d, 0x4d, 0xde, 0xc1, 0xb1, 0x8d,
0x2c, 0xa4, 0x89, 0x6b, 0x19, 0x7f, 0x5e, 0x84, 0x42, 0xd7, 0xf4, 0x9a, 0x47, 0x3c, 0x65, 0xdd,
0x87, 0x9c, 0x3c, 0x85, 0xca, 0xec, 0x37, 0xa6, 0xcf, 0x6a, 0x38, 0x3f, 0xac, 0xa0, 0xe8, 0x29,
0x94, 0x64, 0xab, 0x37, 0x24, 0xcc, 0x54, 0x71, 0xe3, 0xf6, 0xac, 0x53, 0x2e, 0x06, 0xa9, 0x37,
0x5d, 0xcb, 0xa3, 0xb6, 0xcb, 0x9e, 0x13, 0x66, 0x62, 0x90, 0xa2, 0xbc, 0x8d, 0x3e, 0x84, 0x52,
0x24, 0x12, 0xa9, 0xad, 0x3a, 0xd5, 0x84, 0x28, 0x1e, 0x7d, 0x0c, 0x95, 0x08, 0x29, 0x8d, 0xc9,
0x5c, 0xc8, 0x98, 0xa5, 0x88, 0xbc, 0xb0, 0xa8, 0x01, 0xe0, 0xd3, 0x11, 0x53, 0x33, 0xcb, 0x0b,
0x65, 0x37, 0xe6, 0x2b, 0xc3, 0x1c, 0x2b, 0x34, 0x15, 0x7d, 0xdd, 0x44, 0x1f, 0xc3, 0x92, 0x28,
0x47, 0x7a, 0x96, 0xed, 0xcb, 0x90, 0x2b, 0x32, 0xf9, 0xe2, 0xfa, 0xca, 0x7c, 0x45, 0x6d, 0x2e,
0xb0, 0xa5, 0xf1, 0x78, 0xd1, 0x8b, 0xd1, 0xe8, 0x5d, 0x15, 0xa2, 0x65, 0xba, 0xb8, 0x3a, 0x5f,
0x4f, 0x2c, 0x20, 0xff, 0x3c, 0x09, 0xe5, 0xe8, 0x74, 0xd1, 0x77, 0x21, 0xe7, 0x98, 0x7b, 0xc4,
0xd1, 0x91, 0x79, 0xfd, 0x7c, 0xcb, 0x54, 0x7f, 0x26, 0x84, 0x9a, 0x2e, 0xf3, 0xc7, 0x58, 0x69,
0xa8, 0x3d, 0x86, 0x52, 0x84, 0x8d, 0x2a, 0x90, 0x3e, 0x24, 0x63, 0x55, 0xb4, 0xf3, 0x26, 0x3f,
0x45, 0x47, 0xa6, 0x33, 0xd2, 0x97, 0x13, 0x49, 0xbc, 0x9f, 0x7a, 0x94, 0xac, 0xfd, 0x2c, 0x09,
0xc5, 0x70, 0xe5, 0xd0, 0xd3, 0x13, 0x46, 0xad, 0x9e, 0x63, 0xb9, 0xff, 0xdb, 0x16, 0x7d, 0x99,
0x57, 0xd9, 0x66, 0x17, 0xca, 0xbe, 0xcc, 0x47, 0x3d, 0xdb, 0xb5, 0x75, 0x1d, 0x73, 0xe7, 0xf4,
0x05, 0xaf, 0xab, 0x14, 0xd6, 0x72, 0x6d, 0xc6, 0x2f, 0x00, 0xfe, 0x84, 0x44, 0x18, 0x16, 0x7c,
0x75, 0x17, 0x92, 0x1a, 0x4f, 0x29, 0x6f, 0x62, 0x1a, 0xa5, 0x8c, 0x52, 0x59, 0xf6, 0x23, 0xb4,
0x34, 0x52, 0xe9, 0x24, 0xae, 0xa5, 0xbc, 0xe2, 0xce, 0x39, 0x55, 0x36, 0x5d, 0x4b, 0x1a, 0x19,
0x92, 0xb5, 0x87, 0x50, 0xe8, 0x30, 0x9f, 0x98, 0xc3, 0x96, 0xb8, 0x7e, 0xed, 0x99, 0x81, 0x8a,
0x38, 0x58, 0xb4, 0xe5, 0x85, 0x84, 0xf7, 0x0b, 0xeb, 0x33, 0x58, 0x51, 0xb5, 0xbf, 0x25, 0xa1,
0x14, 0x99, 0x3b, 0x7a, 0x0f, 0x52, 0xb6, 0xa5, 0xd6, 0xec, 0x9d, 0x33, 0xcc, 0xd1, 0x03, 0xe2,
0x94, 0x6d, 0xf1, 0x30, 0x14, 0x49, 0xe5, 0xb3, 0x62, 0xc0, 0x24, 0xab, 0x86, 0x59, 0x7e, 0x35,
0xac, 0x0c, 0xe4, 0x02, 0x7c, 0x6d, 0x4e, 0x5e, 0x0a, 0x0b, 0x86, 0x58, 0xdd, 0x9b, 0x99, 0x57,
0xf7, 0x66, 0x27, 0x75, 0x6f, 0xed, 0xb7, 0x49, 0x28, 0x47, 0xb7, 0xe2, 0xd5, 0x67, 0xf8, 0x14,
0x90, 0xb8, 0x73, 0xf5, 0x62, 0xee, 0x95, 0x3a, 0xeb, 0x5a, 0x54, 0x11, 0x42, 0xd1, 0x35, 0x7e,
0x1b, 0x4a, 0xfc, 0x70, 0xab, 0xec, 0x20, 0xa6, 0xbe, 0x80, 0x81, 0xb3, 0x64, 0x5a, 0xa8, 0xfd,
0x2a, 0xc5, 0x37, 0x25, 0xdc, 0xdc, 0xff, 0x01, 0x93, 0x5b, 0x70, 0x59, 0x2b, 0x8a, 0x9e, 0x84,
0xf4, 0x59, 0x9a, 0x2e, 0x29, 0x4d, 0x91, 0xf5, 0xbf, 0x05, 0x8b, 0xa1, 0x92, 0xbd, 0x31, 0x23,
0xb2, 0xee, 0xcd, 0xe0, 0xf0, 0x90, 0x35, 0x38, 0x13, 0xdd, 0x86, 0x34, 0xa1, 0x81, 0xca, 0x4c,
0xd3, 0x8f, 0x0e, 0x4d, 0x1a, 0x60, 0x0e, 0xe0, 0x95, 0x1e, 0xe1, 0xb3, 0x37, 0x1e, 0xc1, 0x62,
0x3c, 0x04, 0xf3, 0x72, 0xe9, 0xc5, 0xce, 0xf7, 0x76, 0x76, 0x3f, 0xd9, 0xa9, 0x24, 0x38, 0xd1,
0xda, 0x69, 0xec, 0xbe, 0xd8, 0xd9, 0xaa, 0x24, 0x51, 0x19, 0x0a, 0xbb, 0x2f, 0xba, 0x92, 0x4a,
0x4d, 0x54, 0x5c, 0x83, 0xc2, 0x86, 0x67, 0x8b, 0x74, 0xcb, 0x23, 0x8d, 0x48, 0xc8, 0x2a, 0xfa,
0x48, 0x82, 0x5f, 0x32, 0x8b, 0x6d, 0x6a, 0x09, 0x48, 0x80, 0x9e, 0x40, 0x4e, 0xb0, 0x75, 0xdc,
0xbb, 0x31, 0xeb, 0x6d, 0x44, 0x62, 0xc3, 0x16, 0x56, 0x22, 0xb5, 0xbf, 0x27, 0xa1, 0xa0, 0x99,
0x08, 0x43, 0x91, 0x5f, 0xbb, 0x4d, 0xdb, 0x25, 0xbe, 0xda, 0xe8, 0xf5, 0x73, 0x28, 0xab, 0x6f,
0x6a, 0x21, 0x41, 0xf2, 0x12, 0x39, 0x54, 0x53, 0x3b, 0x82, 0xc5, 0x78, 0x37, 0xaa, 0x42, 0x7e,
0x48, 0x82, 0xc0, 0x1c, 0xe8, 0xa7, 0x19, 0x4d, 0xf2, 0x73, 0x35, 0x19, 0x5f, 0x3d, 0x45, 0x85,
0x0c, 0xbe, 0x16, 0xf6, 0x90, 0x4b, 0xc9, 0x97, 0x36, 0x49, 0xf0, 0x90, 0xe2, 0x13, 0x33, 0xa0,
0xae, 0x7e, 0xe3, 0x90, 0x94, 0x58, 0x4e, 0xb1, 0x58, 0x6d, 0x28, 0xe8, 0x1b, 0xc2, 0xe9, 0xcf,
0x6e, 0xe2, 0x1a, 0x3d, 0xf6, 0x74, 0x54, 0x17, 0xed, 0xf0, 0x11, 0x29, 0x3d, 0x79, 0x44, 0x32,
0x5e, 0xc2, 0xa5, 0xa9, 0xcb, 0x10, 0x7a, 0x00, 0x05, 0xfd, 0x28, 0xa0, 0x96, 0xee, 0xf5, 0xb9,
0x57, 0x28, 0x1c, 0x42, 0xb9, 0x1f, 0x8a, 0xac, 0xd3, 0x8b, 0x3d, 0x98, 0x15, 0xf1, 0x82, 0xe0,
0x76, 0xf4, 0x8b, 0xd8, 0x67, 0xb0, 0xa0, 0x85, 0xe5, 0x22, 0xbe, 0xe2, 0x70, 0xa1, 0x3f, 0xa5,
0xa2, 0xfe, 0xf4, 0x45, 0x0a, 0x10, 0x3f, 0xf4, 0x9d, 0xd1, 0x70, 0x68, 0xfa, 0x63, 0x7d, 0x0b,
0x8f, 0x3e, 0xe3, 0x25, 0x2f, 0xfe, 0x8c, 0xc7, 0x23, 0x0c, 0xb3, 0x87, 0xa4, 0x77, 0x6c, 0xbb,
0x16, 0x3d, 0x56, 0x43, 0x02, 0x67, 0x7d, 0x22, 0x38, 0xe8, 0x1b, 0x90, 0x71, 0xa9, 0xab, 0xc3,
0xee, 0x95, 0xe9, 0xe3, 0x35, 0xf4, 0xd8, 0x98, 0x57, 0x21, 0x1c, 0x85, 0x3e, 0x80, 0x12, 0xa3,
0xbd, 0x70, 0xd6, 0x99, 0x33, 0x66, 0xcd, 0xaf, 0x0e, 0x8c, 0x86, 0x5b, 0xff, 0x1d, 0x58, 0xd8,
0xf7, 0xe9, 0x70, 0x22, 0x9f, 0x3d, 0x5b, 0xbe, 0xcc, 0x25, 0x42, 0x0d, 0x6f, 0x01, 0x04, 0x87,
0xb6, 0x0c, 0x98, 0x81, 0xa8, 0xc4, 0x0a, 0xb8, 0xc8, 0x39, 0x7c, 0xe9, 0x02, 0xf4, 0x06, 0x14,
0x59, 0x5f, 0xf7, 0xe6, 0x45, 0x6f, 0x81, 0xf5, 0x65, 0x67, 0x03, 0xa0, 0x40, 0x47, 0x6c, 0x8f,
0x8e, 0x5c, 0xcb, 0xf8, 0x4b, 0x12, 0x2e, 0xc7, 0x56, 0x5b, 0xbd, 0x70, 0x3e, 0x86, 0x14, 0x3d,
0x9c, 0x1b, 0x5f, 0x67, 0x48, 0xd4, 0x77, 0x0f, 0xb7, 0x13, 0x38, 0x45, 0x0f, 0xd1, 0xc3, 0xe8,
0xb6, 0xce, 0xaa, 0xeb, 0x62, 0xce, 0xb3, 0x9d, 0x50, 0x1b, 0x5f, 0xdb, 0x80, 0xd4, 0xee, 0x21,
0x7a, 0x02, 0xe2, 0xa9, 0xb1, 0xc7, 0xcc, 0x3d, 0x27, 0xbc, 0x6c, 0xd7, 0x66, 0x5a, 0xd0, 0xe5,
0x10, 0x0c, 0x81, 0x6e, 0x8a, 0x99, 0xe9, 0x90, 0x69, 0xfc, 0x26, 0x05, 0xd0, 0x30, 0x03, 0xbb,
0x2f, 0x57, 0xe4, 0x06, 0x2c, 0x04, 0xa3, 0x7e, 0x9f, 0x04, 0xfc, 0xee, 0x31, 0x72, 0x65, 0x11,
0x94, 0xc1, 0x65, 0xc5, 0xdc, 0xe4, 0x3c, 0x0e, 0xda, 0x37, 0x6d, 0x67, 0xe4, 0x13, 0x05, 0x92,
0x95, 0x41, 0x59, 0x31, 0x25, 0xe8, 0x26, 0x3f, 0x25, 0x8c, 0xb8, 0xfd, 0x71, 0x6f, 0x18, 0xf4,
0xbc, 0x07, 0x6b, 0xc2, 0x65, 0x32, 0xb8, 0xac, 0xb8, 0xcf, 0x83, 0xf6, 0x83, 0xb5, 0x93, 0xa8,
0xc7, 0x0f, 0x54, 0x4c, 0x8f, 0xa0, 0x1e, 0x3f, 0x98, 0x42, 0x3d, 0x16, 0x9e, 0x10, 0x47, 0x3d,
0x46, 0x6b, 0xb0, 0x6c, 0xf6, 0xd9, 0xc8, 0x74, 0x7a, 0xf1, 0x29, 0xe4, 0x04, 0x16, 0xc9, 0xbe,
0x4e, 0x74, 0x22, 0x13, 0x89, 0xf8, 0x7c, 0xf2, 0x51, 0x89, 0x8f, 0x22, 0xb3, 0x32, 0x7e, 0x92,
0x84, 0x42, 0x57, 0x79, 0x08, 0xfa, 0x3a, 0x54, 0xa8, 0x47, 0xc4, 0xbb, 0xb1, 0x2b, 0x4f, 0x52,
0xa0, 0xd6, 0x6b, 0x89, 0xf3, 0x37, 0x27, 0x6c, 0xb4, 0xc2, 0xef, 0x6a, 0xa6, 0x25, 0xf3, 0x56,
0x8f, 0x51, 0x66, 0x3a, 0x6a, 0xd5, 0x16, 0x39, 0x5f, 0x64, 0xae, 0x2e, 0xe7, 0xa2, 0x3b, 0x70,
0xe9, 0xd8, 0xb7, 0x19, 0x89, 0x41, 0xe5, 0xd2, 0x2d, 0x89, 0x8e, 0x09, 0xd6, 0xe8, 0xc0, 0xa5,
0xae, 0x6f, 0xee, 0xef, 0xdb, 0xfd, 0x8e, 0xe7, 0xd8, 0x4c, 0x5a, 0x85, 0x20, 0x63, 0x7a, 0xe4,
0x73, 0x1d, 0x12, 0x79, 0x5b, 0xdc, 0x5f, 0x89, 0xb9, 0xaf, 0x43, 0x22, 0x6f, 0xf3, 0x28, 0x7c,
0x4c, 0xec, 0xc1, 0x01, 0xd3, 0x51, 0x58, 0x52, 0xc6, 0x97, 0x59, 0x28, 0x86, 0x7e, 0x83, 0x1a,
0x50, 0xf4, 0xa8, 0xd5, 0x1b, 0xf8, 0x74, 0xa4, 0xaf, 0xb7, 0x37, 0xe6, 0xbb, 0x19, 0xcf, 0x2f,
0x4f, 0x39, 0x74, 0x3b, 0x81, 0x0b, 0x9e, 0x6a, 0xd7, 0x7e, 0x99, 0x15, 0x09, 0x4b, 0x10, 0xe8,
0x09, 0x64, 0x7c, 0x7a, 0xac, 0x5d, 0xf6, 0x9d, 0x73, 0xe8, 0xaa, 0x63, 0x7a, 0x8c, 0x85, 0x50,
0xed, 0xaf, 0x19, 0x48, 0x63, 0x7a, 0xfc, 0xaa, 0xa1, 0xf4, 0xcc, 0xe8, 0x36, 0x79, 0x7d, 0x2f,
0xc6, 0x5e, 0xdf, 0x57, 0xa0, 0x32, 0x24, 0xc1, 0x01, 0xb1, 0x7a, 0x7c, 0x31, 0xa4, 0x93, 0xc8,
0x3d, 0x59, 0x94, 0xfc, 0x36, 0xb5, 0xa4, 0x4b, 0xdd, 0x81, 0x4b, 0xfe, 0xc8, 0x75, 0x6d, 0x77,
0x10, 0x81, 0x4a, 0x9f, 0x5e, 0x52, 0x1d, 0x21, 0x76, 0x05, 0x2a, 0xdc, 0xef, 0x62, 0x5a, 0xa5,
0xb3, 0x2e, 0x4a, 0x7e, 0x88, 0xbc, 0x07, 0x59, 0x19, 0xa4, 0xb2, 0x73, 0x4a, 0xe4, 0xc9, 0x11,
0xc6, 0x12, 0x89, 0x1e, 0x46, 0x63, 0x5b, 0x61, 0xce, 0x1a, 0x69, 0x57, 0x9e, 0x84, 0x3d, 0xf4,
0x21, 0x14, 0x58, 0xa0, 0xc4, 0x60, 0x4e, 0x06, 0x99, 0x72, 0x3a, 0x9c, 0x67, 0x81, 0x14, 0xff,
0x0c, 0x16, 0x64, 0x99, 0xd2, 0xdb, 0x1b, 0xf3, 0x69, 0x55, 0xf3, 0x62, 0x9f, 0x1f, 0x9d, 0x73,
0x9f, 0xeb, 0xb2, 0x4e, 0x69, 0x8c, 0x79, 0xa1, 0x22, 0x6e, 0x78, 0x25, 0x32, 0xe1, 0xd4, 0x3e,
0x85, 0xca, 0x49, 0xc0, 0x8c, 0xbb, 0xde, 0x5a, 0xf4, 0xae, 0x37, 0x2b, 0x2c, 0x86, 0xf5, 0x50,
0xe4, 0x1e, 0xc8, 0xab, 0x0f, 0x11, 0x4d, 0x8d, 0x1d, 0x28, 0x37, 0xad, 0xc1, 0xe4, 0x8f, 0xbf,
0xaf, 0x98, 0x53, 0x8d, 0xdf, 0x27, 0x61, 0x41, 0x29, 0x54, 0x69, 0xe3, 0x7e, 0x24, 0x6d, 0x5c,
0x9f, 0x4e, 0xa1, 0x51, 0xec, 0x57, 0x4f, 0x18, 0xf7, 0x44, 0xc2, 0xb8, 0x0b, 0x59, 0xc2, 0xf5,
0xaa, 0x73, 0xf7, 0xda, 0xcc, 0x51, 0xb1, 0xc4, 0xc4, 0x12, 0xc4, 0x1f, 0x93, 0x90, 0xe1, 0x7d,
0xe8, 0x2e, 0xa4, 0x03, 0xbf, 0x7f, 0xf6, 0x71, 0xe3, 0x28, 0x0e, 0xb6, 0x82, 0xc9, 0x85, 0x61,
0x3e, 0xd8, 0x0a, 0x18, 0x4f, 0xc3, 0x7d, 0xc7, 0x26, 0x2e, 0xeb, 0xd9, 0x96, 0x0a, 0x51, 0x05,
0xc9, 0x68, 0x59, 0xbc, 0x33, 0x20, 0xfe, 0x11, 0xf1, 0x79, 0xa7, 0x8c, 0x54, 0x05, 0xc9, 0x68,
0x59, 0xe8, 0x36, 0x2c, 0xb9, 0xb4, 0x67, 0x5b, 0xc4, 0x65, 0x36, 0xe3, 0xc9, 0x61, 0xa0, 0xae,
0x70, 0x0b, 0x2e, 0x6d, 0x29, 0xee, 0xf3, 0x60, 0x60, 0x7c, 0x91, 0x84, 0x4a, 0x97, 0x7a, 0xe2,
0x0d, 0x21, 0xf8, 0xff, 0xa8, 0x95, 0xf2, 0x17, 0xaa, 0x95, 0x62, 0xd5, 0xca, 0x9f, 0x92, 0x70,
0x29, 0x32, 0x5b, 0xe5, 0x74, 0xaf, 0xe8, 0x3f, 0xfc, 0x0e, 0x49, 0x0f, 0xd5, 0x1c, 0x6e, 0x4d,
0x87, 0x82, 0x93, 0xe3, 0x84, 0x0e, 0x5b, 0x7b, 0x2c, 0x1c, 0xef, 0x3e, 0xe4, 0xc4, 0xf3, 0x98,
0xf6, 0xbc, 0xe9, 0xd8, 0x25, 0xe4, 0x65, 0x95, 0xa2, 0xa0, 0x31, 0x07, 0xfc, 0x67, 0x12, 0x60,
0x02, 0x41, 0xf7, 0x63, 0xf9, 0xe3, 0xed, 0x53, 0xb4, 0x4d, 0xf2, 0x06, 0xaa, 0x45, 0xf2, 0x85,
0xdc, 0xa7, 0x90, 0xae, 0xfd, 0x34, 0x29, 0x73, 0xca, 0x32, 0x64, 0xc5, 0xe8, 0xfa, 0xde, 0x26,
0x88, 0xb3, 0x37, 0x39, 0xf6, 0xb0, 0x90, 0x3b, 0xf9, 0xb0, 0x70, 0xf1, 0xc0, 0xbd, 0xfe, 0x87,
0x1c, 0xa4, 0x37, 0x3c, 0x1b, 0x7d, 0x0a, 0xa5, 0x48, 0x01, 0x89, 0x6e, 0x9c, 0x5e, 0x5e, 0x0a,
0x97, 0xae, 0xdd, 0x3c, 0x4f, 0x0d, 0x6a, 0x24, 0xd0, 0x36, 0x64, 0x45, 0x94, 0x41, 0x6f, 0xcd,
0x8b, 0x3e, 0x52, 0xdf, 0xd5, 0xd3, 0x83, 0x93, 0x91, 0x40, 0x5d, 0x28, 0x86, 0x2e, 0x80, 0xae,
0x9f, 0xe6, 0x1e, 0x52, 0xa3, 0x71, 0xb6, 0x07, 0x19, 0x09, 0xf4, 0x31, 0x14, 0xf4, 0xd7, 0x04,
0xe8, 0xda, 0x94, 0xc4, 0x89, 0xaf, 0x1b, 0x6a, 0xd7, 0x4f, 0x41, 0x84, 0x2a, 0x7f, 0x08, 0xe5,
0xe8, 0x07, 0x1a, 0xe8, 0xe6, 0x4c, 0xa1, 0x13, 0x1f, 0x7d, 0xd4, 0x6e, 0x9d, 0x81, 0x0a, 0xd5,
0x6f, 0x41, 0xba, 0x6b, 0x7a, 0xe8, 0x8d, 0x59, 0x8f, 0x2c, 0x5a, 0xd9, 0xeb, 0x73, 0x5f, 0x60,
0x8c, 0xf4, 0x8f, 0x53, 0xc9, 0xb5, 0x24, 0xfa, 0x01, 0x2c, 0xc4, 0xfe, 0x1f, 0x43, 0xb7, 0xce,
0xf5, 0xff, 0xd9, 0x39, 0x34, 0x6f, 0x40, 0x5e, 0xff, 0x45, 0x3e, 0x27, 0x10, 0xd5, 0xde, 0x9c,
0xe2, 0x47, 0xbe, 0xbc, 0x31, 0x12, 0xc8, 0x81, 0x62, 0x87, 0x38, 0xfb, 0x9b, 0x07, 0xa4, 0x7f,
0x88, 0xbe, 0x39, 0x01, 0xcb, 0x2f, 0x7b, 0xea, 0xd1, 0x2f, 0x7b, 0x42, 0x9c, 0x36, 0xb0, 0x7e,
0x5e, 0x78, 0xb8, 0xa0, 0x8f, 0x20, 0xb7, 0x29, 0xbe, 0x08, 0x9a, 0x6b, 0xef, 0x72, 0x54, 0xa7,
0xf8, 0x76, 0x68, 0xc3, 0x71, 0x8c, 0x44, 0xe3, 0xfe, 0xa7, 0xf7, 0x06, 0x36, 0x3b, 0x18, 0xed,
0xf1, 0xa1, 0x56, 0x15, 0x46, 0xff, 0xae, 0xaf, 0x4e, 0x3e, 0x68, 0x58, 0x1d, 0x10, 0x77, 0x55,
0xaa, 0xdc, 0xcb, 0x89, 0x27, 0xa8, 0xfb, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xd7, 0xe9, 0x50,
0x16, 0xe7, 0x24, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3958,7 +3961,7 @@ type ApiClient interface {
ListServices(ctx context.Context, in *ListServicesRequest, opts ...grpc.CallOption) (*ListServicesResponse, error)
// Superceded by `TapByResource`.
Tap(ctx context.Context, in *TapRequest, opts ...grpc.CallOption) (Api_TapClient, error)
// Executes tapping over Kubernetes resources.
// Superceded by tap APIServer.
TapByResource(ctx context.Context, in *TapByResourceRequest, opts ...grpc.CallOption) (Api_TapByResourceClient, error)
Version(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*VersionInfo, error)
SelfCheck(ctx context.Context, in *healthcheck.SelfCheckRequest, opts ...grpc.CallOption) (*healthcheck.SelfCheckResponse, error)
@ -4051,6 +4054,7 @@ func (x *apiTapClient) Recv() (*TapEvent, error) {
return m, nil
}
// Deprecated: Do not use.
func (c *apiClient) TapByResource(ctx context.Context, in *TapByResourceRequest, opts ...grpc.CallOption) (Api_TapByResourceClient, error) {
stream, err := c.cc.NewStream(ctx, &_Api_serviceDesc.Streams[1], "/linkerd2.public.Api/TapByResource", opts...)
if err != nil {
@ -4119,7 +4123,7 @@ type ApiServer interface {
ListServices(context.Context, *ListServicesRequest) (*ListServicesResponse, error)
// Superceded by `TapByResource`.
Tap(*TapRequest, Api_TapServer) error
// Executes tapping over Kubernetes resources.
// Superceded by tap APIServer.
TapByResource(*TapByResourceRequest, Api_TapByResourceServer) error
Version(context.Context, *Empty) (*VersionInfo, error)
SelfCheck(context.Context, *healthcheck.SelfCheckRequest) (*healthcheck.SelfCheckResponse, error)

View File

@ -8,5 +8,5 @@ option go_package = "github.com/linkerd/linkerd2/controller/gen/controller/tap";
service Tap {
rpc Tap(public.TapRequest) returns (stream public.TapEvent) { option deprecated = true; }
rpc TapByResource(public.TapByResourceRequest) returns (stream public.TapEvent) {}
rpc TapByResource(public.TapByResourceRequest) returns (stream public.TapEvent) { option deprecated = true; }
}

View File

@ -79,6 +79,8 @@ message TapRequest {
}
// A tap request over kubernetes resources.
//
// This is used only by the tap APIServer.
message TapByResourceRequest {
// Describes the kubernetes pods that should be tapped.
ResourceSelection target = 1;
@ -177,6 +179,7 @@ message Eos {
}
}
// This is used only by the tap APIServer.
message TapEvent {
TcpAddress source = 1;
EndpointMeta source_meta = 5;
@ -458,8 +461,8 @@ service Api {
// Superceded by `TapByResource`.
rpc Tap(TapRequest) returns (stream TapEvent) { option deprecated = true; }
// Executes tapping over Kubernetes resources.
rpc TapByResource(TapByResourceRequest) returns (stream TapEvent) {}
// Superceded by tap APIServer.
rpc TapByResource(TapByResourceRequest) returns (stream TapEvent) { option deprecated = true; }
rpc Version(Empty) returns (VersionInfo) {}
rpc SelfCheck(common.healthcheck.SelfCheckRequest) returns (common.healthcheck.SelfCheckResponse) {}