Repository: open-telemetry/opamp-go
Pull request #82 (2022-05-20 17:42:43)

Split connection settings by types
This changes splits connection settings by the type of the connection so that
each type has a corresponding message that records the appropriate data.

Implements spec change https://github.com/open-telemetry/opamp-spec/pull/87

codecov[bot]: # [Codecov](https://codecov.io/gh/open-telemetry/opamp-go/pull/82?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) Report
> Merging [#82](https://codecov.io/gh/open-telemetry/opamp-go/pull/82?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) (1b9daa2) into [main](https://codecov.io/gh/open-telemetry/opamp-go/commit/a3c38e0eded79144008dd66fa47be8224f087b09?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) (a3c38e0) will **not change** coverage.
> The diff coverage is `100.00%`.

```diff
@@           Coverage Diff           @@
##             main      #82   +/-   ##
=======================================
  Coverage   78.44%   78.44%           
=======================================
  Files          20       20           
  Lines        1322     1322           
=======================================
  Hits         1037     1037           
  Misses        215      215           
  Partials       70       70           
```


| [Impacted Files](https://codecov.io/gh/open-telemetry/opamp-go/pull/82?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry) | Coverage Δ | |
|---|---|---|
| [client/internal/receivedprocessor.go](https://codecov.io/gh/open-telemetry/opamp-go/pull/82/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry#diff-Y2xpZW50L2ludGVybmFsL3JlY2VpdmVkcHJvY2Vzc29yLmdv) | `83.90% <ø> (ø)` | |
| [client/types/callbacks.go](https://codecov.io/gh/open-telemetry/opamp-go/pull/82/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry#diff-Y2xpZW50L3R5cGVzL2NhbGxiYWNrcy5nbw==) | `65.00% <100.00%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/open-telemetry/opamp-go/pull/82?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/open-telemetry/opamp-go/pull/82?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry). Last update [a3c38e0...1b9daa2](https://codecov.io/gh/open-telemetry/opamp-go/pull/82?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=open-telemetry).


Patch:
diff --git a/client/internal/receivedprocessor.go b/client/internal/receivedprocessor.go
index 5373cc6..fedaaf2 100644
--- a/client/internal/receivedprocessor.go
+++ b/client/internal/receivedprocessor.go
@@ -222,9 +222,9 @@ func (r *receivedProcessor) rcvConnectionSettings(ctx context.Context, settings
 
 func (r *receivedProcessor) rcvOwnTelemetryConnectionSettings(
 	ctx context.Context,
-	settings *protobufs.ConnectionSettings,
+	settings *protobufs.TelemetryConnectionSettings,
 	telemetryType types.OwnTelemetryType,
-	callback func(ctx context.Context, telemetryType types.OwnTelemetryType, settings *protobufs.ConnectionSettings) error,
+	callback func(ctx context.Context, telemetryType types.OwnTelemetryType, settings *protobufs.TelemetryConnectionSettings) error,
 ) {
 	if settings != nil {
 		callback(ctx, telemetryType, settings)
@@ -233,9 +233,9 @@ func (r *receivedProcessor) rcvOwnTelemetryConnectionSettings(
 
 func (r *receivedProcessor) rcvOtherConnectionSettings(
 	ctx context.Context,
-	settings *protobufs.ConnectionSettings,
+	settings *protobufs.OtherConnectionSettings,
 	name string,
-	callback func(ctx context.Context, name string, settings *protobufs.ConnectionSettings) error,
+	callback func(ctx context.Context, name string, settings *protobufs.OtherConnectionSettings) error,
 ) {
 	if settings != nil {
 		callback(ctx, name, settings)
diff --git a/client/types/callbacks.go b/client/types/callbacks.go
index 2f876f7..3e1303e 100644
--- a/client/types/callbacks.go
+++ b/client/types/callbacks.go
@@ -91,7 +91,7 @@ type Callbacks interface {
 	// See OnRemoteConfig for the behavior.
 	OnOpampConnectionSettings(
 		ctx context.Context,
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.OpAMPConnectionSettings,
 	) error
 
 	// OnOpampConnectionSettingsAccepted will be called after the settings are
@@ -99,7 +99,7 @@ type Callbacks interface {
 	// new settings succeeds). The Agent should store the settings and use them
 	// in the future. Old connection settings should be forgotten.
 	OnOpampConnectionSettingsAccepted(
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.OpAMPConnectionSettings,
 	)
 
 	// OnOwnTelemetryConnectionSettings is called when the Agent receives a
@@ -116,7 +116,7 @@ type Callbacks interface {
 	OnOwnTelemetryConnectionSettings(
 		ctx context.Context,
 		telemetryType OwnTelemetryType,
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.TelemetryConnectionSettings,
 	) error
 
 	// OnOtherConnectionSettings is called when the Agent receives a
@@ -131,7 +131,7 @@ type Callbacks interface {
 	OnOtherConnectionSettings(
 		ctx context.Context,
 		name string,
-		certificate *protobufs.ConnectionSettings,
+		certificate *protobufs.OtherConnectionSettings,
 	) error
 
 	// OnPackagesAvailable is called when the Server has packages available which are
@@ -169,22 +169,22 @@ type CallbacksStruct struct {
 
 	OnOpampConnectionSettingsFunc func(
 		ctx context.Context,
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.OpAMPConnectionSettings,
 	) error
 	OnOpampConnectionSettingsAcceptedFunc func(
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.OpAMPConnectionSettings,
 	)
 
 	OnOwnTelemetryConnectionSettingsFunc func(
 		ctx context.Context,
 		telemetryType OwnTelemetryType,
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.TelemetryConnectionSettings,
 	) error
 
 	OnOtherConnectionSettingsFunc func(
 		ctx context.Context,
 		name string,
-		settings *protobufs.ConnectionSettings,
+		settings *protobufs.OtherConnectionSettings,
 	) error
 
 	OnPackagesAvailableFunc   func(ctx context.Context, packages *protobufs.PackagesAvailable, syncer PackagesSyncer) error
@@ -237,7 +237,7 @@ func (c CallbacksStruct) GetEffectiveConfig(ctx context.Context) (*protobufs.Eff
 }
 
 func (c CallbacksStruct) OnOpampConnectionSettings(
-	ctx context.Context, settings *protobufs.ConnectionSettings,
+	ctx context.Context, settings *protobufs.OpAMPConnectionSettings,
 ) error {
 	if c.OnOpampConnectionSettingsFunc != nil {
 		return c.OnOpampConnectionSettingsFunc(ctx, settings)
@@ -245,7 +245,7 @@ func (c CallbacksStruct) OnOpampConnectionSettings(
 	return nil
 }
 
-func (c CallbacksStruct) OnOpampConnectionSettingsAccepted(settings *protobufs.ConnectionSettings) {
+func (c CallbacksStruct) OnOpampConnectionSettingsAccepted(settings *protobufs.OpAMPConnectionSettings) {
 	if c.OnOpampConnectionSettingsAcceptedFunc != nil {
 		c.OnOpampConnectionSettingsAcceptedFunc(settings)
 	}
@@ -253,7 +253,7 @@ func (c CallbacksStruct) OnOpampConnectionSettingsAccepted(settings *protobufs.C
 
 func (c CallbacksStruct) OnOwnTelemetryConnectionSettings(
 	ctx context.Context, telemetryType OwnTelemetryType,
-	settings *protobufs.ConnectionSettings,
+	settings *protobufs.TelemetryConnectionSettings,
 ) error {
 	if c.OnOwnTelemetryConnectionSettingsFunc != nil {
 		return c.OnOwnTelemetryConnectionSettingsFunc(ctx, telemetryType, settings)
@@ -262,7 +262,7 @@ func (c CallbacksStruct) OnOwnTelemetryConnectionSettings(
 }
 
 func (c CallbacksStruct) OnOtherConnectionSettings(
-	ctx context.Context, name string, settings *protobufs.ConnectionSettings,
+	ctx context.Context, name string, settings *protobufs.OtherConnectionSettings,
 ) error {
 	if c.OnOtherConnectionSettingsFunc != nil {
 		return c.OnOtherConnectionSettingsFunc(ctx, name, settings)
diff --git a/internal/examples/agent/agent/agent.go b/internal/examples/agent/agent/agent.go
index 70625ba..fb0e9b5 100644
--- a/internal/examples/agent/agent/agent.go
+++ b/internal/examples/agent/agent/agent.go
@@ -221,7 +221,7 @@ func (agent *Agent) onRemoteConfig(
 func (agent *Agent) onOwnTelemetryConnectionSettings(
 	_ context.Context,
 	telemetryType types.OwnTelemetryType,
-	settings *protobufs.ConnectionSettings,
+	settings *protobufs.TelemetryConnectionSettings,
 ) error {
 	switch telemetryType {
 	case types.OwnMetrics:
@@ -243,7 +243,7 @@ func (agent *Agent) onAgentIdentificationFunc(
 	return nil
 }
 
-func (agent *Agent) initMeter(settings *protobufs.ConnectionSettings) {
+func (agent *Agent) initMeter(settings *protobufs.TelemetryConnectionSettings) {
 	reporter, err := NewMetricReporter(agent.logger, settings, agent.agentType, agent.agentVersion, agent.instanceId)
 	if err != nil {
 		agent.logger.Errorf("Cannot collect metrics: %v", err)
diff --git a/internal/examples/agent/agent/metricreporter.go b/internal/examples/agent/agent/metricreporter.go
index 7af41d0..524e8dc 100644
--- a/internal/examples/agent/agent/metricreporter.go
+++ b/internal/examples/agent/agent/metricreporter.go
@@ -46,7 +46,7 @@ type MetricReporter struct {
 
 func NewMetricReporter(
 	logger types.Logger,
-	dest *protobufs.ConnectionSettings,
+	dest *protobufs.TelemetryConnectionSettings,
 	agentType string,
 	agentVersion string,
 	instanceId ulid.ULID,
diff --git a/internal/examples/server/data/agent.go b/internal/examples/server/data/agent.go
index 35ae4e2..d7356c7 100644
--- a/internal/examples/server/data/agent.go
+++ b/internal/examples/server/data/agent.go
@@ -333,7 +333,7 @@ func (agent *Agent) calcConnectionSettings(response *protobufs.ServerToAgent) {
 	response.ConnectionSettings = &protobufs.ConnectionSettingsOffers{
 		Hash:  nil, // TODO: calc has from settings.
 		Opamp: nil,
-		OwnMetrics: &protobufs.ConnectionSettings{
+		OwnMetrics: &protobufs.TelemetryConnectionSettings{
 			// We just hard-code this to a port on a localhost on which we can
 			// run an Otel Collector for demo purposes. With real production
 			// servers this should likely point to an OTLP backend.
diff --git a/internal/examples/supervisor/supervisor/supervisor.go b/internal/examples/supervisor/supervisor/supervisor.go
index 45af87c..cba2540 100644
--- a/internal/examples/supervisor/supervisor/supervisor.go
+++ b/internal/examples/supervisor/supervisor/supervisor.go
@@ -268,7 +268,7 @@ func (s *Supervisor) onRemoteConfig(
 func (s *Supervisor) onOwnTelemetryConnectionSettings(
 	ctx context.Context,
 	telemetryType types.OwnTelemetryType,
-	settings *protobufs.ConnectionSettings,
+	settings *protobufs.TelemetryConnectionSettings,
 ) error {
 	switch telemetryType {
 	case types.OwnMetrics:
@@ -298,7 +298,7 @@ func (s *Supervisor) onAgentIdentificationFunc(
 	return nil
 }
 
-func (s *Supervisor) setupOwnMetrics(ctx context.Context, settings *protobufs.ConnectionSettings) {
+func (s *Supervisor) setupOwnMetrics(ctx context.Context, settings *protobufs.TelemetryConnectionSettings) {
 	var cfg string
 	if settings.DestinationEndpoint == "" {
 		// No destination. Disable metric collection.
diff --git a/internal/proto/opamp.proto b/internal/proto/opamp.proto
index 311d626..8aa6e4c 100644
--- a/internal/proto/opamp.proto
+++ b/internal/proto/opamp.proto
@@ -174,7 +174,56 @@ enum ServerCapabilities {
     // Add new capabilities here, continuing with the least significant unused bit.
 }
 
-// The ConnectionSettings message is a collection of fields which comprise an
+// The OpAMPConnectionSettings message is a collection of fields which comprise an
+// offer from the Server to the Agent to use the specified settings for OpAMP
+// connection.
+message OpAMPConnectionSettings {
+    // OpAMP Server URL This MUST be a WebSocket or HTTP URL and MUST be non-empty, for
+    // example: "wss://example.com:4318/v1/opamp"
+    string destination_endpoint = 1;
+
+    // Optional headers to use when connecting. Typically used to set access tokens or
+    // other authorization headers. For HTTP-based protocols the Agent should
+    // set these in the request headers.
+    // For example:
+    // key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
+    Headers headers = 2;
+
+    // The Agent should use the offered certificate to connect to the destination
+    // from now on. If the Agent is able to validate and connect using the offered
+    // certificate the Agent SHOULD forget any previous client certificates
+    // for this connection.
+    // This field is optional: if omitted the client SHOULD NOT use a client-side certificate.
+    // This field can be used to perform a client certificate revocation/rotation.
+    TLSCertificate certificate = 3;
+}
+
+// The TelemetryConnectionSettings message is a collection of fields which comprise an
+// offer from the Server to the Agent to use the specified settings for a network
+// connection to report own telemetry.
+message TelemetryConnectionSettings {
+    // The value MUST be a full URL an OTLP/HTTP/Protobuf receiver with path. Schema
+    // SHOULD begin with "https://", for example "https://example.com:4318/v1/metrics"
+    // The Agent MAY refuse to send the telemetry if the URL begins with "http://".
+    string destination_endpoint = 1;
+
+    // Optional headers to use when connecting. Typically used to set access tokens or
+    // other authorization headers. For HTTP-based protocols the Agent should
+    // set these in the request headers.
+    // For example:
+    // key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
+    Headers headers = 2;
+
+    // The Agent should use the offered certificate to connect to the destination
+    // from now on. If the Agent is able to validate and connect using the offered
+    // certificate the Agent SHOULD forget any previous client certificates
+    // for this connection.
+    // This field is optional: if omitted the client SHOULD NOT use a client-side certificate.
+    // This field can be used to perform a client certificate revocation/rotation.
+    TLSCertificate certificate = 3;
+}
+
+// The OtherConnectionSettings message is a collection of fields which comprise an
 // offer from the Server to the Agent to use the specified settings for a network
 // connection. It is not required that all fields in this message are specified.
 // The Server may specify only some of the fields, in which case it means that
@@ -194,66 +243,28 @@ enum ServerCapabilities {
 // field is not set (this is done to overcome the limitation of old protoc
 // compilers don't generate methods that allow to check for the presence of
 // the field.
-message ConnectionSettings {
+message OtherConnectionSettings {
     // A URL, host:port or some other destination specifier.
-    //
-    // For OpAMP destination this MUST be a WebSocket URL and MUST be non-empty, for
-    // example: "wss://example.com:4318/v1/opamp"
-    //
-    // For own telemetry destination this MUST be the full HTTP URL to an
-    // OTLP/HTTP/Protobuf receiver. The value MUST be a full URL with path and schema
-    // and SHOULD begin with "https://", for example "https://example.com:4318/v1/metrics"
-    // The Agent MAY refuse to send the telemetry if the URL begins with "http://".
-    // The field is considered unset if (flags & DestinationEndpointSet)==0.
     string destination_endpoint = 1;
 
-    // Headers to use when connecting. Typically used to set access tokens or
+    // Optional headers to use when connecting. Typically used to set access tokens or
     // other authorization headers. For HTTP-based protocols the Agent should
     // set these in the request headers.
     // For example:
     // key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
-    // if the field is unset then the Agent SHOULD continue using the headers
-    // that it currently has (if any).
     Headers headers = 2;
 
-    // A URL, host:port or some other specifier of an intermediary proxy.
-    // Empty if no proxy is used.
-    //
-    // Example use case: if OpAMP proxy is also an OTLP intermediary Collector then
-    // the OpAMP proxy can direct the Agents that connect to it to also send Agents's
-    // OTLP metrics through its OTLP metrics pipeline.
-    // Can be used for example by Otel Helm chart with 2 stage-collection when Agents
-    // on K8s nodes are proxied through a standalone Collector.
-    //
-    // For example: "https://proxy.example.com:5678"
-    // The field is considered unset if (flags & ProxyEndpointSet)==0.
-    string proxy_endpoint = 3;
-
-    // Headers to use when connecting to a proxy.  For HTTP-based protocols
-    // the Agent should set these in the request headers.
-    // If no proxy is used the Headers field must be present and must contain no headers.
-    // For example:
-    // key="Proxy-Authorization", value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
-    // if the field is unset then the Agent SHOULD continue using the proxy headers
-    // that it currently has (if any).
-    Headers proxy_headers = 4;
-
     // The Agent should use the offered certificate to connect to the destination
     // from now on. If the Agent is able to validate and connect using the offered
     // certificate the Agent SHOULD forget any previous client certificates
     // for this connection.
-    // This field is used to perform a client certificate revocation/rotation.
-    // if the field is unset then the Agent SHOULD continue using the certificate
-    // that it currently has (if any).
-    TLSCertificate certificate = 5;
-
-enum Flags {
-    _ = 0;
-    DestinationEndpointSet = 0x01;
-    ProxyEndpointSet = 0x02;
-}
-    // Bitfield of Flags.
-    Flags flags = 6;
+    // This field is optional: if omitted the client SHOULD NOT use a client-side certificate.
+    // This field can be used to perform a client certificate revocation/rotation.
+    TLSCertificate certificate = 3;
+
+    // Other connection settings. These are Agent-specific and are up to the Agent
+    // interpret.
+    map<string, string> other_settings = 4;
 }
 
 message Headers {
@@ -307,7 +318,7 @@ message ConnectionSettingsOffers {
     // The Agent MUST verify the offered connection settings by actually connecting
     // before accepting the setting to ensure it does not loose access to the OpAMP
     // Server due to invalid settings.
-    ConnectionSettings opamp = 2;
+    OpAMPConnectionSettings opamp = 2;
 
     // Settings to connect to an OTLP metrics backend to send Agent's own metrics to.
     // If this field is not set then the Agent should assume that the settings
@@ -326,20 +337,20 @@ message ConnectionSettingsOffers {
     //
     // Process metrics MUST follow the conventions for processes:
     // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/semantic_conventions/process-metrics.md
-    ConnectionSettings own_metrics = 3;
+    TelemetryConnectionSettings own_metrics = 3;
 
     // Similar to own_metrics, but for traces.
-    ConnectionSettings own_traces = 4;
+    TelemetryConnectionSettings own_traces = 4;
 
     // Similar to own_metrics, but for logs.
-    ConnectionSettings own_logs = 5;
+    TelemetryConnectionSettings own_logs = 5;
 
     // Another set of connection settings, with a string name associated with each.
     // How the Agent uses these is Agent-specific. Typically the name represents
     // the name of the destination to connect to (as it is known to the Agent).
     // If this field is not set then the Agent should assume that the other_connections
     // settings are unchanged.
-    map<string,ConnectionSettings> other_connections = 6;
+    map<string,OtherConnectionSettings> other_connections = 6;
 }
 
 // List of packages that the Server offers to the Agent.
diff --git a/protobufs/opamp.pb.go b/protobufs/opamp.pb.go
index ecc2b5a..e5625e6 100644
--- a/protobufs/opamp.pb.go
+++ b/protobufs/opamp.pb.go
@@ -312,55 +312,6 @@ func (ServerToAgent_Flags) EnumDescriptor() ([]byte, []int) {
 	return file_opamp_proto_rawDescGZIP(), []int{2, 0}
 }
 
-type ConnectionSettings_Flags int32
-
-const (
-	ConnectionSettings__                      ConnectionSettings_Flags = 0
-	ConnectionSettings_DestinationEndpointSet ConnectionSettings_Flags = 1
-	ConnectionSettings_ProxyEndpointSet       ConnectionSettings_Flags = 2
-)
-
-// Enum value maps for ConnectionSettings_Flags.
-var (
-	ConnectionSettings_Flags_name = map[int32]string{
-		0: "_",
-		1: "DestinationEndpointSet",
-		2: "ProxyEndpointSet",
-	}
-	ConnectionSettings_Flags_value = map[string]int32{
-		"_":                      0,
-		"DestinationEndpointSet": 1,
-		"ProxyEndpointSet":       2,
-	}
-)
-
-func (x ConnectionSettings_Flags) Enum() *ConnectionSettings_Flags {
-	p := new(ConnectionSettings_Flags)
-	*p = x
-	return p
-}
-
-func (x ConnectionSettings_Flags) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ConnectionSettings_Flags) Descriptor() protoreflect.EnumDescriptor {
-	return file_opamp_proto_enumTypes[4].Descriptor()
-}
-
-func (ConnectionSettings_Flags) Type() protoreflect.EnumType {
-	return &file_opamp_proto_enumTypes[4]
-}
-
-func (x ConnectionSettings_Flags) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ConnectionSettings_Flags.Descriptor instead.
-func (ConnectionSettings_Flags) EnumDescriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{3, 0}
-}
-
 // The type of the package, either an addon or a top-level package.
 type PackageAvailable_PackageType int32
 
@@ -392,11 +343,11 @@ func (x PackageAvailable_PackageType) String() string {
 }
 
 func (PackageAvailable_PackageType) Descriptor() protoreflect.EnumDescriptor {
-	return file_opamp_proto_enumTypes[5].Descriptor()
+	return file_opamp_proto_enumTypes[4].Descriptor()
 }
 
 func (PackageAvailable_PackageType) Type() protoreflect.EnumType {
-	return &file_opamp_proto_enumTypes[5]
+	return &file_opamp_proto_enumTypes[4]
 }
 
 func (x PackageAvailable_PackageType) Number() protoreflect.EnumNumber {
@@ -405,7 +356,7 @@ func (x PackageAvailable_PackageType) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use PackageAvailable_PackageType.Descriptor instead.
 func (PackageAvailable_PackageType) EnumDescriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{9, 0}
+	return file_opamp_proto_rawDescGZIP(), []int{11, 0}
 }
 
 type ServerErrorResponse_Type int32
@@ -449,11 +400,11 @@ func (x ServerErrorResponse_Type) String() string {
 }
 
 func (ServerErrorResponse_Type) Descriptor() protoreflect.EnumDescriptor {
-	return file_opamp_proto_enumTypes[6].Descriptor()
+	return file_opamp_proto_enumTypes[5].Descriptor()
 }
 
 func (ServerErrorResponse_Type) Type() protoreflect.EnumType {
-	return &file_opamp_proto_enumTypes[6]
+	return &file_opamp_proto_enumTypes[5]
 }
 
 func (x ServerErrorResponse_Type) Number() protoreflect.EnumNumber {
@@ -462,7 +413,7 @@ func (x ServerErrorResponse_Type) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use ServerErrorResponse_Type.Descriptor instead.
 func (ServerErrorResponse_Type) EnumDescriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{11, 0}
+	return file_opamp_proto_rawDescGZIP(), []int{13, 0}
 }
 
 type ServerToAgentCommand_CommandType int32
@@ -494,11 +445,11 @@ func (x ServerToAgentCommand_CommandType) String() string {
 }
 
 func (ServerToAgentCommand_CommandType) Descriptor() protoreflect.EnumDescriptor {
-	return file_opamp_proto_enumTypes[7].Descriptor()
+	return file_opamp_proto_enumTypes[6].Descriptor()
 }
 
 func (ServerToAgentCommand_CommandType) Type() protoreflect.EnumType {
-	return &file_opamp_proto_enumTypes[7]
+	return &file_opamp_proto_enumTypes[6]
 }
 
 func (x ServerToAgentCommand_CommandType) Number() protoreflect.EnumNumber {
@@ -507,7 +458,7 @@ func (x ServerToAgentCommand_CommandType) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use ServerToAgentCommand_CommandType.Descriptor instead.
 func (ServerToAgentCommand_CommandType) EnumDescriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{13, 0}
+	return file_opamp_proto_rawDescGZIP(), []int{15, 0}
 }
 
 type RemoteConfigStatus_Status int32
@@ -551,11 +502,11 @@ func (x RemoteConfigStatus_Status) String() string {
 }
 
 func (RemoteConfigStatus_Status) Descriptor() protoreflect.EnumDescriptor {
-	return file_opamp_proto_enumTypes[8].Descriptor()
+	return file_opamp_proto_enumTypes[7].Descriptor()
 }
 
 func (RemoteConfigStatus_Status) Type() protoreflect.EnumType {
-	return &file_opamp_proto_enumTypes[8]
+	return &file_opamp_proto_enumTypes[7]
 }
 
 func (x RemoteConfigStatus_Status) Number() protoreflect.EnumNumber {
@@ -564,7 +515,7 @@ func (x RemoteConfigStatus_Status) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use RemoteConfigStatus_Status.Descriptor instead.
 func (RemoteConfigStatus_Status) EnumDescriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{16, 0}
+	return file_opamp_proto_rawDescGZIP(), []int{18, 0}
 }
 
 // The status of this package.
@@ -614,11 +565,11 @@ func (x PackageStatus_Status) String() string {
 }
 
 func (PackageStatus_Status) Descriptor() protoreflect.EnumDescriptor {
-	return file_opamp_proto_enumTypes[9].Descriptor()
+	return file_opamp_proto_enumTypes[8].Descriptor()
 }
 
 func (PackageStatus_Status) Type() protoreflect.EnumType {
-	return &file_opamp_proto_enumTypes[9]
+	return &file_opamp_proto_enumTypes[8]
 }
 
 func (x PackageStatus_Status) Number() protoreflect.EnumNumber {
@@ -627,7 +578,7 @@ func (x PackageStatus_Status) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use PackageStatus_Status.Descriptor instead.
 func (PackageStatus_Status) EnumDescriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{18, 0}
+	return file_opamp_proto_rawDescGZIP(), []int{20, 0}
 }
 
 type AgentToServer struct {
@@ -940,7 +891,166 @@ func (x *ServerToAgent) GetCommand() *ServerToAgentCommand {
 	return nil
 }
 
-// The ConnectionSettings message is a collection of fields which comprise an
+// The OpAMPConnectionSettings message is a collection of fields which comprise an
+// offer from the Server to the Agent to use the specified settings for OpAMP
+// connection.
+type OpAMPConnectionSettings struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// OpAMP Server URL This MUST be a WebSocket or HTTP URL and MUST be non-empty, for
+	// example: "wss://example.com:4318/v1/opamp"
+	DestinationEndpoint string `protobuf:"bytes,1,opt,name=destination_endpoint,json=destinationEndpoint,proto3" json:"destination_endpoint,omitempty"`
+	// Optional headers to use when connecting. Typically used to set access tokens or
+	// other authorization headers. For HTTP-based protocols the Agent should
+	// set these in the request headers.
+	// For example:
+	// key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
+	Headers *Headers `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"`
+	// The Agent should use the offered certificate to connect to the destination
+	// from now on. If the Agent is able to validate and connect using the offered
+	// certificate the Agent SHOULD forget any previous client certificates
+	// for this connection.
+	// This field is optional: if omitted the client SHOULD NOT use a client-side certificate.
+	// This field can be used to perform a client certificate revocation/rotation.
+	Certificate *TLSCertificate `protobuf:"bytes,3,opt,name=certificate,proto3" json:"certificate,omitempty"`
+}
+
+func (x *OpAMPConnectionSettings) Reset() {
+	*x = OpAMPConnectionSettings{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_opamp_proto_msgTypes[3]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *OpAMPConnectionSettings) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OpAMPConnectionSettings) ProtoMessage() {}
+
+func (x *OpAMPConnectionSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_opamp_proto_msgTypes[3]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use OpAMPConnectionSettings.ProtoReflect.Descriptor instead.
+func (*OpAMPConnectionSettings) Descriptor() ([]byte, []int) {
+	return file_opamp_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *OpAMPConnectionSettings) GetDestinationEndpoint() string {
+	if x != nil {
+		return x.DestinationEndpoint
+	}
+	return ""
+}
+
+func (x *OpAMPConnectionSettings) GetHeaders() *Headers {
+	if x != nil {
+		return x.Headers
+	}
+	return nil
+}
+
+func (x *OpAMPConnectionSettings) GetCertificate() *TLSCertificate {
+	if x != nil {
+		return x.Certificate
+	}
+	return nil
+}
+
+// The TelemetryConnectionSettings message is a collection of fields which comprise an
+// offer from the Server to the Agent to use the specified settings for a network
+// connection to report own telemetry.
+type TelemetryConnectionSettings struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	// The value MUST be a full URL an OTLP/HTTP/Protobuf receiver with path. Schema
+	// SHOULD begin with "https://", for example "https://example.com:4318/v1/metrics"
+	// The Agent MAY refuse to send the telemetry if the URL begins with "http://".
+	DestinationEndpoint string `protobuf:"bytes,1,opt,name=destination_endpoint,json=destinationEndpoint,proto3" json:"destination_endpoint,omitempty"`
+	// Optional headers to use when connecting. Typically used to set access tokens or
+	// other authorization headers. For HTTP-based protocols the Agent should
+	// set these in the request headers.
+	// For example:
+	// key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
+	Headers *Headers `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"`
+	// The Agent should use the offered certificate to connect to the destination
+	// from now on. If the Agent is able to validate and connect using the offered
+	// certificate the Agent SHOULD forget any previous client certificates
+	// for this connection.
+	// This field is optional: if omitted the client SHOULD NOT use a client-side certificate.
+	// This field can be used to perform a client certificate revocation/rotation.
+	Certificate *TLSCertificate `protobuf:"bytes,3,opt,name=certificate,proto3" json:"certificate,omitempty"`
+}
+
+func (x *TelemetryConnectionSettings) Reset() {
+	*x = TelemetryConnectionSettings{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_opamp_proto_msgTypes[4]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *TelemetryConnectionSettings) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TelemetryConnectionSettings) ProtoMessage() {}
+
+func (x *TelemetryConnectionSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_opamp_proto_msgTypes[4]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use TelemetryConnectionSettings.ProtoReflect.Descriptor instead.
+func (*TelemetryConnectionSettings) Descriptor() ([]byte, []int) {
+	return file_opamp_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *TelemetryConnectionSettings) GetDestinationEndpoint() string {
+	if x != nil {
+		return x.DestinationEndpoint
+	}
+	return ""
+}
+
+func (x *TelemetryConnectionSettings) GetHeaders() *Headers {
+	if x != nil {
+		return x.Headers
+	}
+	return nil
+}
+
+func (x *TelemetryConnectionSettings) GetCertificate() *TLSCertificate {
+	if x != nil {
+		return x.Certificate
+	}
+	return nil
+}
+
+// The OtherConnectionSettings message is a collection of fields which comprise an
 // offer from the Server to the Agent to use the specified settings for a network
 // connection. It is not required that all fields in this message are specified.
 // The Server may specify only some of the fields, in which case it means that
@@ -960,79 +1070,48 @@ func (x *ServerToAgent) GetCommand() *ServerToAgentCommand {
 // field is not set (this is done to overcome the limitation of old protoc
 // compilers don't generate methods that allow to check for the presence of
 // the field.
-type ConnectionSettings struct {
+type OtherConnectionSettings struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
 	// A URL, host:port or some other destination specifier.
-	//
-	// For OpAMP destination this MUST be a WebSocket URL and MUST be non-empty, for
-	// example: "wss://example.com:4318/v1/opamp"
-	//
-	// For own telemetry destination this MUST be the full HTTP URL to an
-	// OTLP/HTTP/Protobuf receiver. The value MUST be a full URL with path and schema
-	// and SHOULD begin with "https://", for example "https://example.com:4318/v1/metrics"
-	// The Agent MAY refuse to send the telemetry if the URL begins with "http://".
-	// The field is considered unset if (flags & DestinationEndpointSet)==0.
 	DestinationEndpoint string `protobuf:"bytes,1,opt,name=destination_endpoint,json=destinationEndpoint,proto3" json:"destination_endpoint,omitempty"`
-	// Headers to use when connecting. Typically used to set access tokens or
+	// Optional headers to use when connecting. Typically used to set access tokens or
 	// other authorization headers. For HTTP-based protocols the Agent should
 	// set these in the request headers.
 	// For example:
 	// key="Authorization", Value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
-	// if the field is unset then the Agent SHOULD continue using the headers
-	// that it currently has (if any).
 	Headers *Headers `protobuf:"bytes,2,opt,name=headers,proto3" json:"headers,omitempty"`
-	// A URL, host:port or some other specifier of an intermediary proxy.
-	// Empty if no proxy is used.
-	//
-	// Example use case: if OpAMP proxy is also an OTLP intermediary Collector then
-	// the OpAMP proxy can direct the Agents that connect to it to also send Agents's
-	// OTLP metrics through its OTLP metrics pipeline.
-	// Can be used for example by Otel Helm chart with 2 stage-collection when Agents
-	// on K8s nodes are proxied through a standalone Collector.
-	//
-	// For example: "https://proxy.example.com:5678"
-	// The field is considered unset if (flags & ProxyEndpointSet)==0.
-	ProxyEndpoint string `protobuf:"bytes,3,opt,name=proxy_endpoint,json=proxyEndpoint,proto3" json:"proxy_endpoint,omitempty"`
-	// Headers to use when connecting to a proxy.  For HTTP-based protocols
-	// the Agent should set these in the request headers.
-	// If no proxy is used the Headers field must be present and must contain no headers.
-	// For example:
-	// key="Proxy-Authorization", value="Basic YWxhZGRpbjpvcGVuc2VzYW1l".
-	// if the field is unset then the Agent SHOULD continue using the proxy headers
-	// that it currently has (if any).
-	ProxyHeaders *Headers `protobuf:"bytes,4,opt,name=proxy_headers,json=proxyHeaders,proto3" json:"proxy_headers,omitempty"`
 	// The Agent should use the offered certificate to connect to the destination
 	// from now on. If the Agent is able to validate and connect using the offered
 	// certificate the Agent SHOULD forget any previous client certificates
 	// for this connection.
-	// This field is used to perform a client certificate revocation/rotation.
-	// if the field is unset then the Agent SHOULD continue using the certificate
-	// that it currently has (if any).
-	Certificate *TLSCertificate `protobuf:"bytes,5,opt,name=certificate,proto3" json:"certificate,omitempty"`
-	// Bitfield of Flags.
-	Flags ConnectionSettings_Flags `protobuf:"varint,6,opt,name=flags,proto3,enum=opamp.proto.ConnectionSettings_Flags" json:"flags,omitempty"`
+	// This field is optional: if omitted the client SHOULD NOT use a client-side certificate.
+	// This field can be used to perform a client certificate revocation/rotation.
+	Certificate *TLSCertificate `protobuf:"bytes,3,opt,name=certificate,proto3" json:"certificate,omitempty"`
+	// Other connection settings. These are Agent-specific and are up to the Agent
+	// interpret.
+	OtherSettings map[string]string `protobuf:"bytes,4,rep,name=other_settings,json=otherSettings,proto3" json:"other_settings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
-func (x *ConnectionSettings) Reset() {
-	*x = ConnectionSettings{}
+func (x *OtherConnectionSettings) Reset() {
+	*x = OtherConnectionSettings{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[3]
+		mi := &file_opamp_proto_msgTypes[5]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
 }
 
-func (x *ConnectionSettings) String() string {
+func (x *OtherConnectionSettings) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ConnectionSettings) ProtoMessage() {}
+func (*OtherConnectionSettings) ProtoMessage() {}
 
-func (x *ConnectionSettings) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[3]
+func (x *OtherConnectionSettings) ProtoReflect() protoreflect.Message {
+	mi := &file_opamp_proto_msgTypes[5]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1043,51 +1122,37 @@ func (x *ConnectionSettings) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ConnectionSettings.ProtoReflect.Descriptor instead.
-func (*ConnectionSettings) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{3}
+// Deprecated: Use OtherConnectionSettings.ProtoReflect.Descriptor instead.
+func (*OtherConnectionSettings) Descriptor() ([]byte, []int) {
+	return file_opamp_proto_rawDescGZIP(), []int{5}
 }
 
-func (x *ConnectionSettings) GetDestinationEndpoint() string {
+func (x *OtherConnectionSettings) GetDestinationEndpoint() string {
 	if x != nil {
 		return x.DestinationEndpoint
 	}
 	return ""
 }
 
-func (x *ConnectionSettings) GetHeaders() *Headers {
+func (x *OtherConnectionSettings) GetHeaders() *Headers {
 	if x != nil {
 		return x.Headers
 	}
 	return nil
 }
 
-func (x *ConnectionSettings) GetProxyEndpoint() string {
-	if x != nil {
-		return x.ProxyEndpoint
-	}
-	return ""
-}
-
-func (x *ConnectionSettings) GetProxyHeaders() *Headers {
-	if x != nil {
-		return x.ProxyHeaders
-	}
-	return nil
-}
-
-func (x *ConnectionSettings) GetCertificate() *TLSCertificate {
+func (x *OtherConnectionSettings) GetCertificate() *TLSCertificate {
 	if x != nil {
 		return x.Certificate
 	}
 	return nil
 }
 
-func (x *ConnectionSettings) GetFlags() ConnectionSettings_Flags {
+func (x *OtherConnectionSettings) GetOtherSettings() map[string]string {
 	if x != nil {
-		return x.Flags
+		return x.OtherSettings
 	}
-	return ConnectionSettings__
+	return nil
 }
 
 type Headers struct {
@@ -1101,7 +1166,7 @@ type Headers struct {
 func (x *Headers) Reset() {
 	*x = Headers{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[4]
+		mi := &file_opamp_proto_msgTypes[6]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1114,7 +1179,7 @@ func (x *Headers) String() string {
 func (*Headers) ProtoMessage() {}
 
 func (x *Headers) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[4]
+	mi := &file_opamp_proto_msgTypes[6]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1127,7 +1192,7 @@ func (x *Headers) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Headers.ProtoReflect.Descriptor instead.
 func (*Headers) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{4}
+	return file_opamp_proto_rawDescGZIP(), []int{6}
 }
 
 func (x *Headers) GetHeaders() []*Header {
@@ -1149,7 +1214,7 @@ type Header struct {
 func (x *Header) Reset() {
 	*x = Header{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[5]
+		mi := &file_opamp_proto_msgTypes[7]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1162,7 +1227,7 @@ func (x *Header) String() string {
 func (*Header) ProtoMessage() {}
 
 func (x *Header) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[5]
+	mi := &file_opamp_proto_msgTypes[7]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1175,7 +1240,7 @@ func (x *Header) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use Header.ProtoReflect.Descriptor instead.
 func (*Header) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{5}
+	return file_opamp_proto_rawDescGZIP(), []int{7}
 }
 
 func (x *Header) GetKey() string {
@@ -1213,7 +1278,7 @@ type TLSCertificate struct {
 func (x *TLSCertificate) Reset() {
 	*x = TLSCertificate{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[6]
+		mi := &file_opamp_proto_msgTypes[8]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1226,7 +1291,7 @@ func (x *TLSCertificate) String() string {
 func (*TLSCertificate) ProtoMessage() {}
 
 func (x *TLSCertificate) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[6]
+	mi := &file_opamp_proto_msgTypes[8]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1239,7 +1304,7 @@ func (x *TLSCertificate) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use TLSCertificate.ProtoReflect.Descriptor instead.
 func (*TLSCertificate) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{6}
+	return file_opamp_proto_rawDescGZIP(), []int{8}
 }
 
 func (x *TLSCertificate) GetPublicKey() []byte {
@@ -1279,7 +1344,7 @@ type ConnectionSettingsOffers struct {
 	// The Agent MUST verify the offered connection settings by actually connecting
 	// before accepting the setting to ensure it does not loose access to the OpAMP
 	// Server due to invalid settings.
-	Opamp *ConnectionSettings `protobuf:"bytes,2,opt,name=opamp,proto3" json:"opamp,omitempty"`
+	Opamp *OpAMPConnectionSettings `protobuf:"bytes,2,opt,name=opamp,proto3" json:"opamp,omitempty"`
 	// Settings to connect to an OTLP metrics backend to send Agent's own metrics to.
 	// If this field is not set then the Agent should assume that the settings
 	// are unchanged.
@@ -1297,23 +1362,23 @@ type ConnectionSettingsOffers struct {
 	//
 	// Process metrics MUST follow the conventions for processes:
 	// https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/semantic_conventions/process-metrics.md
-	OwnMetrics *ConnectionSettings `protobuf:"bytes,3,opt,name=own_metrics,json=ownMetrics,proto3" json:"own_metrics,omitempty"`
+	OwnMetrics *TelemetryConnectionSettings `protobuf:"bytes,3,opt,name=own_metrics,json=ownMetrics,proto3" json:"own_metrics,omitempty"`
 	// Similar to own_metrics, but for traces.
-	OwnTraces *ConnectionSettings `protobuf:"bytes,4,opt,name=own_traces,json=ownTraces,proto3" json:"own_traces,omitempty"`
+	OwnTraces *TelemetryConnectionSettings `protobuf:"bytes,4,opt,name=own_traces,json=ownTraces,proto3" json:"own_traces,omitempty"`
 	// Similar to own_metrics, but for logs.
-	OwnLogs *ConnectionSettings `protobuf:"bytes,5,opt,name=own_logs,json=ownLogs,proto3" json:"own_logs,omitempty"`
+	OwnLogs *TelemetryConnectionSettings `protobuf:"bytes,5,opt,name=own_logs,json=ownLogs,proto3" json:"own_logs,omitempty"`
 	// Another set of connection settings, with a string name associated with each.
 	// How the Agent uses these is Agent-specific. Typically the name represents
 	// the name of the destination to connect to (as it is known to the Agent).
 	// If this field is not set then the Agent should assume that the other_connections
 	// settings are unchanged.
-	OtherConnections map[string]*ConnectionSettings `protobuf:"bytes,6,rep,name=other_connections,json=otherConnections,proto3" json:"other_connections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	OtherConnections map[string]*OtherConnectionSettings `protobuf:"bytes,6,rep,name=other_connections,json=otherConnections,proto3" json:"other_connections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 }
 
 func (x *ConnectionSettingsOffers) Reset() {
 	*x = ConnectionSettingsOffers{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[7]
+		mi := &file_opamp_proto_msgTypes[9]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1326,7 +1391,7 @@ func (x *ConnectionSettingsOffers) String() string {
 func (*ConnectionSettingsOffers) ProtoMessage() {}
 
 func (x *ConnectionSettingsOffers) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[7]
+	mi := &file_opamp_proto_msgTypes[9]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1339,7 +1404,7 @@ func (x *ConnectionSettingsOffers) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ConnectionSettingsOffers.ProtoReflect.Descriptor instead.
 func (*ConnectionSettingsOffers) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{7}
+	return file_opamp_proto_rawDescGZIP(), []int{9}
 }
 
 func (x *ConnectionSettingsOffers) GetHash() []byte {
@@ -1349,35 +1414,35 @@ func (x *ConnectionSettingsOffers) GetHash() []byte {
 	return nil
 }
 
-func (x *ConnectionSettingsOffers) GetOpamp() *ConnectionSettings {
+func (x *ConnectionSettingsOffers) GetOpamp() *OpAMPConnectionSettings {
 	if x != nil {
 		return x.Opamp
 	}
 	return nil
 }
 
-func (x *ConnectionSettingsOffers) GetOwnMetrics() *ConnectionSettings {
+func (x *ConnectionSettingsOffers) GetOwnMetrics() *TelemetryConnectionSettings {
 	if x != nil {
 		return x.OwnMetrics
 	}
 	return nil
 }
 
-func (x *ConnectionSettingsOffers) GetOwnTraces() *ConnectionSettings {
+func (x *ConnectionSettingsOffers) GetOwnTraces() *TelemetryConnectionSettings {
 	if x != nil {
 		return x.OwnTraces
 	}
 	return nil
 }
 
-func (x *ConnectionSettingsOffers) GetOwnLogs() *ConnectionSettings {
+func (x *ConnectionSettingsOffers) GetOwnLogs() *TelemetryConnectionSettings {
 	if x != nil {
 		return x.OwnLogs
 	}
 	return nil
 }
 
-func (x *ConnectionSettingsOffers) GetOtherConnections() map[string]*ConnectionSettings {
+func (x *ConnectionSettingsOffers) GetOtherConnections() map[string]*OtherConnectionSettings {
 	if x != nil {
 		return x.OtherConnections
 	}
@@ -1407,7 +1472,7 @@ type PackagesAvailable struct {
 func (x *PackagesAvailable) Reset() {
 	*x = PackagesAvailable{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[8]
+		mi := &file_opamp_proto_msgTypes[10]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1420,7 +1485,7 @@ func (x *PackagesAvailable) String() string {
 func (*PackagesAvailable) ProtoMessage() {}
 
 func (x *PackagesAvailable) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[8]
+	mi := &file_opamp_proto_msgTypes[10]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1433,7 +1498,7 @@ func (x *PackagesAvailable) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PackagesAvailable.ProtoReflect.Descriptor instead.
 func (*PackagesAvailable) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{8}
+	return file_opamp_proto_rawDescGZIP(), []int{10}
 }
 
 func (x *PackagesAvailable) GetPackages() map[string]*PackageAvailable {
@@ -1487,7 +1552,7 @@ type PackageAvailable struct {
 func (x *PackageAvailable) Reset() {
 	*x = PackageAvailable{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[9]
+		mi := &file_opamp_proto_msgTypes[11]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1500,7 +1565,7 @@ func (x *PackageAvailable) String() string {
 func (*PackageAvailable) ProtoMessage() {}
 
 func (x *PackageAvailable) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[9]
+	mi := &file_opamp_proto_msgTypes[11]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1513,7 +1578,7 @@ func (x *PackageAvailable) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PackageAvailable.ProtoReflect.Descriptor instead.
 func (*PackageAvailable) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{9}
+	return file_opamp_proto_rawDescGZIP(), []int{11}
 }
 
 func (x *PackageAvailable) GetType() PackageAvailable_PackageType {
@@ -1568,7 +1633,7 @@ type DownloadableFile struct {
 func (x *DownloadableFile) Reset() {
 	*x = DownloadableFile{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[10]
+		mi := &file_opamp_proto_msgTypes[12]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1581,7 +1646,7 @@ func (x *DownloadableFile) String() string {
 func (*DownloadableFile) ProtoMessage() {}
 
 func (x *DownloadableFile) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[10]
+	mi := &file_opamp_proto_msgTypes[12]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1594,7 +1659,7 @@ func (x *DownloadableFile) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DownloadableFile.ProtoReflect.Descriptor instead.
 func (*DownloadableFile) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{10}
+	return file_opamp_proto_rawDescGZIP(), []int{12}
 }
 
 func (x *DownloadableFile) GetDownloadUrl() string {
@@ -1634,7 +1699,7 @@ type ServerErrorResponse struct {
 func (x *ServerErrorResponse) Reset() {
 	*x = ServerErrorResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[11]
+		mi := &file_opamp_proto_msgTypes[13]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1647,7 +1712,7 @@ func (x *ServerErrorResponse) String() string {
 func (*ServerErrorResponse) ProtoMessage() {}
 
 func (x *ServerErrorResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[11]
+	mi := &file_opamp_proto_msgTypes[13]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1660,7 +1725,7 @@ func (x *ServerErrorResponse) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ServerErrorResponse.ProtoReflect.Descriptor instead.
 func (*ServerErrorResponse) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{11}
+	return file_opamp_proto_rawDescGZIP(), []int{13}
 }
 
 func (x *ServerErrorResponse) GetType() ServerErrorResponse_Type {
@@ -1713,7 +1778,7 @@ type RetryInfo struct {
 func (x *RetryInfo) Reset() {
 	*x = RetryInfo{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[12]
+		mi := &file_opamp_proto_msgTypes[14]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1726,7 +1791,7 @@ func (x *RetryInfo) String() string {
 func (*RetryInfo) ProtoMessage() {}
 
 func (x *RetryInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[12]
+	mi := &file_opamp_proto_msgTypes[14]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1739,7 +1804,7 @@ func (x *RetryInfo) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RetryInfo.ProtoReflect.Descriptor instead.
 func (*RetryInfo) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{12}
+	return file_opamp_proto_rawDescGZIP(), []int{14}
 }
 
 func (x *RetryInfo) GetRetryAfterNanoseconds() uint64 {
@@ -1762,7 +1827,7 @@ type ServerToAgentCommand struct {
 func (x *ServerToAgentCommand) Reset() {
 	*x = ServerToAgentCommand{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[13]
+		mi := &file_opamp_proto_msgTypes[15]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1775,7 +1840,7 @@ func (x *ServerToAgentCommand) String() string {
 func (*ServerToAgentCommand) ProtoMessage() {}
 
 func (x *ServerToAgentCommand) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[13]
+	mi := &file_opamp_proto_msgTypes[15]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1788,7 +1853,7 @@ func (x *ServerToAgentCommand) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ServerToAgentCommand.ProtoReflect.Descriptor instead.
 func (*ServerToAgentCommand) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{13}
+	return file_opamp_proto_rawDescGZIP(), []int{15}
 }
 
 func (x *ServerToAgentCommand) GetType() ServerToAgentCommand_CommandType {
@@ -1843,7 +1908,7 @@ type AgentDescription struct {
 func (x *AgentDescription) Reset() {
 	*x = AgentDescription{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[14]
+		mi := &file_opamp_proto_msgTypes[16]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1856,7 +1921,7 @@ func (x *AgentDescription) String() string {
 func (*AgentDescription) ProtoMessage() {}
 
 func (x *AgentDescription) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[14]
+	mi := &file_opamp_proto_msgTypes[16]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1869,7 +1934,7 @@ func (x *AgentDescription) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AgentDescription.ProtoReflect.Descriptor instead.
 func (*AgentDescription) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{14}
+	return file_opamp_proto_rawDescGZIP(), []int{16}
 }
 
 func (x *AgentDescription) GetHash() []byte {
@@ -1917,7 +1982,7 @@ type EffectiveConfig struct {
 func (x *EffectiveConfig) Reset() {
 	*x = EffectiveConfig{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[15]
+		mi := &file_opamp_proto_msgTypes[17]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1930,7 +1995,7 @@ func (x *EffectiveConfig) String() string {
 func (*EffectiveConfig) ProtoMessage() {}
 
 func (x *EffectiveConfig) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[15]
+	mi := &file_opamp_proto_msgTypes[17]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1943,7 +2008,7 @@ func (x *EffectiveConfig) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use EffectiveConfig.ProtoReflect.Descriptor instead.
 func (*EffectiveConfig) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{15}
+	return file_opamp_proto_rawDescGZIP(), []int{17}
 }
 
 func (x *EffectiveConfig) GetHash() []byte {
@@ -1982,7 +2047,7 @@ type RemoteConfigStatus struct {
 func (x *RemoteConfigStatus) Reset() {
 	*x = RemoteConfigStatus{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[16]
+		mi := &file_opamp_proto_msgTypes[18]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1995,7 +2060,7 @@ func (x *RemoteConfigStatus) String() string {
 func (*RemoteConfigStatus) ProtoMessage() {}
 
 func (x *RemoteConfigStatus) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[16]
+	mi := &file_opamp_proto_msgTypes[18]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2008,7 +2073,7 @@ func (x *RemoteConfigStatus) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use RemoteConfigStatus.ProtoReflect.Descriptor instead.
 func (*RemoteConfigStatus) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{16}
+	return file_opamp_proto_rawDescGZIP(), []int{18}
 }
 
 func (x *RemoteConfigStatus) GetHash() []byte {
@@ -2069,7 +2134,7 @@ type PackageStatuses struct {
 func (x *PackageStatuses) Reset() {
 	*x = PackageStatuses{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[17]
+		mi := &file_opamp_proto_msgTypes[19]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2082,7 +2147,7 @@ func (x *PackageStatuses) String() string {
 func (*PackageStatuses) ProtoMessage() {}
 
 func (x *PackageStatuses) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[17]
+	mi := &file_opamp_proto_msgTypes[19]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2095,7 +2160,7 @@ func (x *PackageStatuses) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PackageStatuses.ProtoReflect.Descriptor instead.
 func (*PackageStatuses) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{17}
+	return file_opamp_proto_rawDescGZIP(), []int{19}
 }
 
 func (x *PackageStatuses) GetHash() []byte {
@@ -2179,7 +2244,7 @@ type PackageStatus struct {
 func (x *PackageStatus) Reset() {
 	*x = PackageStatus{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[18]
+		mi := &file_opamp_proto_msgTypes[20]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2192,7 +2257,7 @@ func (x *PackageStatus) String() string {
 func (*PackageStatus) ProtoMessage() {}
 
 func (x *PackageStatus) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[18]
+	mi := &file_opamp_proto_msgTypes[20]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2205,7 +2270,7 @@ func (x *PackageStatus) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use PackageStatus.ProtoReflect.Descriptor instead.
 func (*PackageStatus) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{18}
+	return file_opamp_proto_rawDescGZIP(), []int{20}
 }
 
 func (x *PackageStatus) GetName() string {
@@ -2272,7 +2337,7 @@ type AgentIdentification struct {
 func (x *AgentIdentification) Reset() {
 	*x = AgentIdentification{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[19]
+		mi := &file_opamp_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2285,7 +2350,7 @@ func (x *AgentIdentification) String() string {
 func (*AgentIdentification) ProtoMessage() {}
 
 func (x *AgentIdentification) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[19]
+	mi := &file_opamp_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2298,7 +2363,7 @@ func (x *AgentIdentification) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AgentIdentification.ProtoReflect.Descriptor instead.
 func (*AgentIdentification) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{19}
+	return file_opamp_proto_rawDescGZIP(), []int{21}
 }
 
 func (x *AgentIdentification) GetNewInstanceUid() string {
@@ -2333,7 +2398,7 @@ type AgentRemoteConfig struct {
 func (x *AgentRemoteConfig) Reset() {
 	*x = AgentRemoteConfig{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[20]
+		mi := &file_opamp_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2346,7 +2411,7 @@ func (x *AgentRemoteConfig) String() string {
 func (*AgentRemoteConfig) ProtoMessage() {}
 
 func (x *AgentRemoteConfig) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[20]
+	mi := &file_opamp_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2359,7 +2424,7 @@ func (x *AgentRemoteConfig) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AgentRemoteConfig.ProtoReflect.Descriptor instead.
 func (*AgentRemoteConfig) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{20}
+	return file_opamp_proto_rawDescGZIP(), []int{22}
 }
 
 func (x *AgentRemoteConfig) GetConfig() *AgentConfigMap {
@@ -2392,7 +2457,7 @@ type AgentConfigMap struct {
 func (x *AgentConfigMap) Reset() {
 	*x = AgentConfigMap{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[21]
+		mi := &file_opamp_proto_msgTypes[23]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2405,7 +2470,7 @@ func (x *AgentConfigMap) String() string {
 func (*AgentConfigMap) ProtoMessage() {}
 
 func (x *AgentConfigMap) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[21]
+	mi := &file_opamp_proto_msgTypes[23]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2418,7 +2483,7 @@ func (x *AgentConfigMap) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AgentConfigMap.ProtoReflect.Descriptor instead.
 func (*AgentConfigMap) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{21}
+	return file_opamp_proto_rawDescGZIP(), []int{23}
 }
 
 func (x *AgentConfigMap) GetConfigMap() map[string]*AgentConfigFile {
@@ -2444,7 +2509,7 @@ type AgentConfigFile struct {
 func (x *AgentConfigFile) Reset() {
 	*x = AgentConfigFile{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_opamp_proto_msgTypes[22]
+		mi := &file_opamp_proto_msgTypes[24]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -2457,7 +2522,7 @@ func (x *AgentConfigFile) String() string {
 func (*AgentConfigFile) ProtoMessage() {}
 
 func (x *AgentConfigFile) ProtoReflect() protoreflect.Message {
-	mi := &file_opamp_proto_msgTypes[22]
+	mi := &file_opamp_proto_msgTypes[24]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -2470,7 +2535,7 @@ func (x *AgentConfigFile) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AgentConfigFile.ProtoReflect.Descriptor instead.
 func (*AgentConfigFile) Descriptor() ([]byte, []int) {
-	return file_opamp_proto_rawDescGZIP(), []int{22}
+	return file_opamp_proto_rawDescGZIP(), []int{24}
 }
 
 func (x *AgentConfigFile) GetBody() []byte {
@@ -2582,285 +2647,308 @@ var file_opamp_proto_rawDesc = []byte{
 	0x6f, 0x72, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53,
 	0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72,
 	0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73,
-	0x10, 0x08, 0x22, 0x97, 0x03, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x64, 0x65, 0x73,
-	0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
-	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07,
-	0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e,
-	0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64,
-	0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e,
-	0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f,
-	0x69, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x68, 0x65, 0x61,
-	0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61,
-	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
-	0x52, 0x0c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d,
-	0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
-	0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a,
-	0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f,
-	0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x46, 0x6c,
-	0x61, 0x67, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x40, 0x0a, 0x05, 0x46, 0x6c,
-	0x61, 0x67, 0x73, 0x12, 0x05, 0x0a, 0x01, 0x5f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x65,
+	0x10, 0x08, 0x22, 0xbb, 0x01, 0x0a, 0x17, 0x4f, 0x70, 0x41, 0x4d, 0x50, 0x43, 0x6f, 0x6e, 0x6e,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x31,
+	0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e,
+	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65,
 	0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
-	0x74, 0x53, 0x65, 0x74, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x45,
-	0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x74, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x07,
-	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65,
-	0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68,
-	0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
-	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
-	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x54, 0x4c, 0x53, 0x43,
-	0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69,
-	0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a,
-	0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61,
-	0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0b, 0x63, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0xf3,
-	0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74,
-	0x74, 0x69, 0x6e, 0x67, 0x73, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68,
-	0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12,
-	0x35, 0x0a, 0x05, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
-	0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e,
-	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52,
-	0x05, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x12, 0x40, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x65,
-	0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70,
-	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
-	0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0a, 0x6f, 0x77,
-	0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x6f, 0x77, 0x6e, 0x5f,
-	0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f,
-	0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
-	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x09, 0x6f,
-	0x77, 0x6e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x5f,
-	0x6c, 0x6f, 0x67, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61,
-	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
-	0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x07, 0x6f, 0x77, 0x6e,
-	0x4c, 0x6f, 0x67, 0x73, 0x12, 0x68, 0x0a, 0x11, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x63, 0x6f,
-	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x3b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f,
+	0x74, 0x12, 0x2e, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
+	0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+	0x22, 0xbf, 0x01, 0x0a, 0x1b, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f,
 	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
-	0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e,
-	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6f, 0x74,
-	0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x64,
-	0x0a, 0x15, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x22, 0xe5, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
-	0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x61,
-	0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f,
-	0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61,
-	0x67, 0x65, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63,
-	0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b,
-	0x61, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b,
-	0x61, 0x67, 0x65, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x0f, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x48, 0x61, 0x73, 0x68,
-	0x1a, 0x5a, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
-	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe8, 0x01, 0x0a,
-	0x10, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
-	0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x29, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61,
-	0x63, 0x6b, 0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50,
-	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
-	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x66, 0x69,
-	0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61,
-	0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a,
-	0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73,
-	0x68, 0x22, 0x34, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x13, 0x0a, 0x0f, 0x54, 0x6f, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x63, 0x6b,
-	0x61, 0x67, 0x65, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x50, 0x61,
-	0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x01, 0x22, 0x76, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c,
-	0x6f, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64,
-	0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x21,
-	0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73,
-	0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22,
-	0xef, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79,
-	0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79,
-	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70,
-	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49,
-	0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f,
-	0x22, 0x34, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e,
-	0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c,
-	0x61, 0x62, 0x6c, 0x65, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
-	0x73, 0x22, 0x43, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36,
-	0x0a, 0x17, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61,
-	0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x15, 0x72, 0x65, 0x74, 0x72, 0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6e, 0x6f, 0x73,
-	0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x75, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
-	0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x41,
-	0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f,
-	0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
-	0x72, 0x54, 0x6f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e,
-	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70,
-	0x65, 0x22, 0x1a, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x0b, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x00, 0x22, 0xc9, 0x01,
-	0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
-	0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x4c, 0x0a, 0x16, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
-	0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x69,
-	0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
-	0x75, 0x74, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x1a, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
-	0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x18, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x41,
-	0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x0f, 0x45, 0x66, 0x66,
-	0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04,
-	0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68,
-	0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61,
-	0x70, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a,
-	0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f,
-	0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61,
-	0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65,
-	0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e,
-	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
-	0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6d,
-	0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23,
-	0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x22, 0x3a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a,
-	0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x50, 0x4c,
-	0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x49, 0x4e,
-	0x47, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x22,
-	0xb5, 0x02, 0x0a, 0x0f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
-	0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d,
-	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
+	0x12, 0x31, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13,
+	0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f,
+	0x69, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64,
+	0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
+	0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
+	0x74, 0x65, 0x22, 0xdd, 0x02, 0x0a, 0x17, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x31,
+	0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e,
+	0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65,
+	0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
+	0x74, 0x12, 0x2e, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72,
+	0x73, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
+	0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+	0x12, 0x5e, 0x0a, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
+	0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e,
+	0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4f,
+	0x74, 0x68, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+	0x1a, 0x40, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x22, 0x38, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x0a,
+	0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13,
+	0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x48, 0x65, 0x61,
+	0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x30, 0x0a, 0x06,
+	0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x74,
+	0x0a, 0x0e, 0x54, 0x4c, 0x53, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
+	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12,
+	0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79,
+	0x12, 0x22, 0x0a, 0x0d, 0x63, 0x61, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65,
+	0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69,
+	0x63, 0x4b, 0x65, 0x79, 0x22, 0x98, 0x04, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4f, 0x66, 0x66, 0x65, 0x72,
+	0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x05, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x4f, 0x70, 0x41, 0x4d, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x6f, 0x70, 0x61, 0x6d,
+	0x70, 0x12, 0x49, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f,
+	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73,
+	0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x47, 0x0a, 0x0a,
+	0x6f, 0x77, 0x6e, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x28, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54,
+	0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x09, 0x6f, 0x77, 0x6e, 0x54,
+	0x72, 0x61, 0x63, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x6f, 0x67,
+	0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x43,
+	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
+	0x73, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x68, 0x0a, 0x11, 0x6f, 0x74,
+	0x68, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
+	0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2e, 0x4f, 0x74, 0x68,
+	0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x52, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x69, 0x0a, 0x15, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e,
+	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
+	0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4f, 0x74, 0x68,
+	0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74,
+	0x69, 0x6e, 0x67, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+	0xe5, 0x01, 0x0a, 0x11, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x41, 0x76, 0x61, 0x69,
+	0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x41, 0x76,
+	0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
 	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12,
-	0x48, 0x0a, 0x21, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64,
-	0x65, 0x64, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x5f,
-	0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1d, 0x73, 0x65, 0x72, 0x76,
-	0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63,
-	0x6b, 0x61, 0x67, 0x65, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72,
+	0x2a, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x5f,
+	0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x50,
+	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x5a, 0x0a, 0x0d, 0x50,
+	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
+	0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b,
+	0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe8, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x63, 0x6b,
+	0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x04,
+	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6f, 0x70, 0x61,
+	0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+	0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+	0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69,
+	0x6c, 0x65, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x34, 0x0a, 0x0b,
+	0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54,
+	0x6f, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x00,
+	0x12, 0x10, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+	0x10, 0x01, 0x22, 0x76, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x61, 0x62,
+	0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f,
+	0x61, 0x64, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x6f,
+	0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e,
+	0x74, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09,
+	0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
+	0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xef, 0x01, 0x0a, 0x13, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x25, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a,
+	0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00,
+	0x52, 0x09, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x34, 0x0a, 0x04, 0x54,
+	0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00,
+	0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x10, 0x01,
+	0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10,
+	0x02, 0x42, 0x09, 0x0a, 0x07, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x43, 0x0a, 0x09,
+	0x52, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x74,
+	0x72, 0x79, 0x5f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63,
+	0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x72, 0x65, 0x74, 0x72,
+	0x79, 0x41, 0x66, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
+	0x73, 0x22, 0x75, 0x0a, 0x14, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67, 0x65,
+	0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70,
+	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x67,
+	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
+	0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1a, 0x0a, 0x0b,
+	0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x52,
+	0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x10, 0x00, 0x22, 0xc9, 0x01, 0x0a, 0x10, 0x41, 0x67, 0x65,
+	0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
+	0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73,
+	0x68, 0x12, 0x4c, 0x0a, 0x16, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67,
+	0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
+	0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
+	0x66, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12,
+	0x53, 0x0a, 0x1a, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69,
+	0x6e, 0x67, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x6e, 0x6f, 0x6e, 0x49,
+	0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
+	0x75, 0x74, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x0f, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76,
+	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x0a, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67,
+	0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x09, 0x63, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x22, 0x80, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f,
+	0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12,
+	0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61,
+	0x73, 0x68, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74,
+	0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0c, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x70, 0x61, 0x6d,
+	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
+	0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72,
 	0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x57,
-	0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50,
-	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8b, 0x03, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b,
-	0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a,
-	0x11, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48,
-	0x61, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x67, 0x65,
-	0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12,
-	0x34, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65,
-	0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x14, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x56, 0x65,
-	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
-	0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0c, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65,
-	0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
-	0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
-	0x0d, 0x0a, 0x09, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12,
-	0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
-	0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67,
-	0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x46, 0x61, 0x69,
-	0x6c, 0x65, 0x64, 0x10, 0x03, 0x22, 0x3f, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64,
-	0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10,
-	0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61,
-	0x6e, 0x63, 0x65, 0x55, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52,
-	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x06, 0x63,
-	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70,
-	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43,
-	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
-	0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73,
-	0x68, 0x22, 0xb7, 0x01, 0x0a, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x4d, 0x61, 0x70, 0x12, 0x49, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d,
-	0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x4d, 0x61, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x1a,
-	0x5a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x0f, 0x41,
-	0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f,
-	0x64, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79,
-	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
-	0x74, 0x54, 0x79, 0x70, 0x65, 0x2a, 0xc9, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
-	0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x1b,
-	0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65,
-	0x72, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x11, 0x0a,
-	0x0d, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01,
-	0x12, 0x16, 0x0a, 0x12, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x63, 0x63, 0x65,
-	0x70, 0x74, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x50, 0x61,
-	0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65,
-	0x70, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75,
-	0x73, 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e,
-	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10,
-	0x20, 0x2a, 0xd4, 0x02, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62,
-	0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65,
-	0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62,
-	0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72,
-	0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x63,
-	0x63, 0x65, 0x70, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x66,
+	0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a,
+	0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45,
+	0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x01,
+	0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0a,
+	0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x22, 0xb5, 0x02, 0x0a, 0x0f, 0x50,
+	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x12,
+	0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61,
+	0x73, 0x68, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+	0x65, 0x73, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
+	0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x21, 0x73, 0x65,
+	0x72, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x6c,
+	0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f,
+	0x76, 0x69, 0x64, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73,
+	0x48, 0x61, 0x73, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72,
+	0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x57, 0x0a, 0x0d, 0x50, 0x61, 0x63,
+	0x6b, 0x61, 0x67, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70,
+	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+	0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x22, 0x8b, 0x03, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x67, 0x65, 0x6e,
+	0x74, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x56, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61,
+	0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x61, 0x67,
+	0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x65,
+	0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x73, 0x65, 0x72, 0x76,
+	0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+	0x12, 0x2e, 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72,
+	0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68,
+	0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e,
+	0x32, 0x21, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50,
+	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65,
+	0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x22, 0x4e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x6e,
+	0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x73,
+	0x74, 0x61, 0x6c, 0x6c, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x0e, 0x0a,
+	0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x11, 0x0a,
+	0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03,
+	0x22, 0x3f, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
+	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x65, 0x77, 0x5f, 0x69,
+	0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x0e, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x69,
+	0x64, 0x22, 0x69, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+	0x4d, 0x61, 0x70, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x63,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
+	0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x61, 0x73, 0x68, 0x22, 0xb7, 0x01, 0x0a,
+	0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x12,
+	0x49, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70,
+	0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+	0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x1a, 0x5a, 0x0a, 0x0e, 0x43, 0x6f,
+	0x6e, 0x66, 0x69, 0x67, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
+	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x32,
+	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+	0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x6e,
+	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43,
+	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x21, 0x0a,
+	0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65,
+	0x2a, 0xc9, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61, 0x62,
+	0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x6e, 0x73, 0x70, 0x65,
+	0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x61, 0x70, 0x61,
+	0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x65,
+	0x70, 0x74, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f,
+	0x66, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
+	0x67, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x45, 0x66,
 	0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x04, 0x12,
-	0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
-	0x65, 0x73, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50,
-	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x10, 0x10,
-	0x12, 0x14, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x54, 0x72,
-	0x61, 0x63, 0x65, 0x73, 0x10, 0x20, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
-	0x73, 0x4f, 0x77, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x40, 0x12, 0x13, 0x0a,
-	0x0e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x10,
-	0x80, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x70, 0x41,
-	0x4d, 0x50, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74,
-	0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x65, 0x70,
-	0x74, 0x73, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x04, 0x12, 0x1a, 0x0a, 0x15,
-	0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f,
-	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x10, 0x80, 0x08, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68,
-	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x2d, 0x74, 0x65, 0x6c, 0x65,
-	0x6d, 0x65, 0x74, 0x72, 0x79, 0x2f, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2d, 0x67, 0x6f, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x12, 0x0a, 0x0e, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
+	0x73, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x50, 0x61,
+	0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x10, 0x12, 0x1c,
+	0x0a, 0x18, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
+	0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10, 0x20, 0x2a, 0xd4, 0x02, 0x0a,
+	0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69,
+	0x65, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65,
+	0x64, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
+	0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x53, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73,
+	0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x02, 0x12, 0x1a,
+	0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69,
+	0x76, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63,
+	0x63, 0x65, 0x70, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x10, 0x08, 0x12,
+	0x1a, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
+	0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x52,
+	0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x10,
+	0x20, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x4d,
+	0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x10, 0x40, 0x12, 0x13, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f,
+	0x72, 0x74, 0x73, 0x4f, 0x77, 0x6e, 0x4c, 0x6f, 0x67, 0x73, 0x10, 0x80, 0x01, 0x12, 0x23, 0x0a,
+	0x1e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x70, 0x41, 0x4d, 0x50, 0x43, 0x6f, 0x6e,
+	0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x10,
+	0x80, 0x02, 0x12, 0x23, 0x0a, 0x1e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x74, 0x68,
+	0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74,
+	0x69, 0x6e, 0x67, 0x73, 0x10, 0x80, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x41, 0x63, 0x63, 0x65, 0x70,
+	0x74, 0x73, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
+	0x10, 0x80, 0x08, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x2d, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
+	0x2f, 0x6f, 0x70, 0x61, 0x6d, 0x70, 0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -2875,97 +2963,102 @@ func file_opamp_proto_rawDescGZIP() []byte {
 	return file_opamp_proto_rawDescData
 }
 
-var file_opamp_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
-var file_opamp_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
+var file_opamp_proto_enumTypes = make([]protoimpl.EnumInfo, 9)
+var file_opamp_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
 var file_opamp_proto_goTypes = []interface{}{
 	(ServerCapabilities)(0),               // 0: opamp.proto.ServerCapabilities
 	(AgentCapabilities)(0),                // 1: opamp.proto.AgentCapabilities
 	(AgentToServer_AgentToServerFlags)(0), // 2: opamp.proto.AgentToServer.AgentToServerFlags
 	(ServerToAgent_Flags)(0),              // 3: opamp.proto.ServerToAgent.Flags
-	(ConnectionSettings_Flags)(0),         // 4: opamp.proto.ConnectionSettings.Flags
-	(PackageAvailable_PackageType)(0),     // 5: opamp.proto.PackageAvailable.PackageType
-	(ServerErrorResponse_Type)(0),         // 6: opamp.proto.ServerErrorResponse.Type
-	(ServerToAgentCommand_CommandType)(0), // 7: opamp.proto.ServerToAgentCommand.CommandType
-	(RemoteConfigStatus_Status)(0),        // 8: opamp.proto.RemoteConfigStatus.Status
-	(PackageStatus_Status)(0),             // 9: opamp.proto.PackageStatus.Status
-	(*AgentToServer)(nil),                 // 10: opamp.proto.AgentToServer
-	(*AgentDisconnect)(nil),               // 11: opamp.proto.AgentDisconnect
-	(*ServerToAgent)(nil),                 // 12: opamp.proto.ServerToAgent
-	(*ConnectionSettings)(nil),            // 13: opamp.proto.ConnectionSettings
-	(*Headers)(nil),                       // 14: opamp.proto.Headers
-	(*Header)(nil),                        // 15: opamp.proto.Header
-	(*TLSCertificate)(nil),                // 16: opamp.proto.TLSCertificate
-	(*ConnectionSettingsOffers)(nil),      // 17: opamp.proto.ConnectionSettingsOffers
-	(*PackagesAvailable)(nil),             // 18: opamp.proto.PackagesAvailable
-	(*PackageAvailable)(nil),              // 19: opamp.proto.PackageAvailable
-	(*DownloadableFile)(nil),              // 20: opamp.proto.DownloadableFile
-	(*ServerErrorResponse)(nil),           // 21: opamp.proto.ServerErrorResponse
-	(*RetryInfo)(nil),                     // 22: opamp.proto.RetryInfo
-	(*ServerToAgentCommand)(nil),          // 23: opamp.proto.ServerToAgentCommand
-	(*AgentDescription)(nil),              // 24: opamp.proto.AgentDescription
-	(*EffectiveConfig)(nil),               // 25: opamp.proto.EffectiveConfig
-	(*RemoteConfigStatus)(nil),            // 26: opamp.proto.RemoteConfigStatus
-	(*PackageStatuses)(nil),               // 27: opamp.proto.PackageStatuses
-	(*PackageStatus)(nil),                 // 28: opamp.proto.PackageStatus
-	(*AgentIdentification)(nil),           // 29: opamp.proto.AgentIdentification
-	(*AgentRemoteConfig)(nil),             // 30: opamp.proto.AgentRemoteConfig
-	(*AgentConfigMap)(nil),                // 31: opamp.proto.AgentConfigMap
-	(*AgentConfigFile)(nil),               // 32: opamp.proto.AgentConfigFile
-	nil,                                   // 33: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry
-	nil,                                   // 34: opamp.proto.PackagesAvailable.PackagesEntry
-	nil,                                   // 35: opamp.proto.PackageStatuses.PackagesEntry
-	nil,                                   // 36: opamp.proto.AgentConfigMap.ConfigMapEntry
-	(*KeyValue)(nil),                      // 37: opamp.proto.KeyValue
+	(PackageAvailable_PackageType)(0),     // 4: opamp.proto.PackageAvailable.PackageType
+	(ServerErrorResponse_Type)(0),         // 5: opamp.proto.ServerErrorResponse.Type
+	(ServerToAgentCommand_CommandType)(0), // 6: opamp.proto.ServerToAgentCommand.CommandType
+	(RemoteConfigStatus_Status)(0),        // 7: opamp.proto.RemoteConfigStatus.Status
+	(PackageStatus_Status)(0),             // 8: opamp.proto.PackageStatus.Status
+	(*AgentToServer)(nil),                 // 9: opamp.proto.AgentToServer
+	(*AgentDisconnect)(nil),               // 10: opamp.proto.AgentDisconnect
+	(*ServerToAgent)(nil),                 // 11: opamp.proto.ServerToAgent
+	(*OpAMPConnectionSettings)(nil),       // 12: opamp.proto.OpAMPConnectionSettings
+	(*TelemetryConnectionSettings)(nil),   // 13: opamp.proto.TelemetryConnectionSettings
+	(*OtherConnectionSettings)(nil),       // 14: opamp.proto.OtherConnectionSettings
+	(*Headers)(nil),                       // 15: opamp.proto.Headers
+	(*Header)(nil),                        // 16: opamp.proto.Header
+	(*TLSCertificate)(nil),                // 17: opamp.proto.TLSCertificate
+	(*ConnectionSettingsOffers)(nil),      // 18: opamp.proto.ConnectionSettingsOffers
+	(*PackagesAvailable)(nil),             // 19: opamp.proto.PackagesAvailable
+	(*PackageAvailable)(nil),              // 20: opamp.proto.PackageAvailable
+	(*DownloadableFile)(nil),              // 21: opamp.proto.DownloadableFile
+	(*ServerErrorResponse)(nil),           // 22: opamp.proto.ServerErrorResponse
+	(*RetryInfo)(nil),                     // 23: opamp.proto.RetryInfo
+	(*ServerToAgentCommand)(nil),          // 24: opamp.proto.ServerToAgentCommand
+	(*AgentDescription)(nil),              // 25: opamp.proto.AgentDescription
+	(*EffectiveConfig)(nil),               // 26: opamp.proto.EffectiveConfig
+	(*RemoteConfigStatus)(nil),            // 27: opamp.proto.RemoteConfigStatus
+	(*PackageStatuses)(nil),               // 28: opamp.proto.PackageStatuses
+	(*PackageStatus)(nil),                 // 29: opamp.proto.PackageStatus
+	(*AgentIdentification)(nil),           // 30: opamp.proto.AgentIdentification
+	(*AgentRemoteConfig)(nil),             // 31: opamp.proto.AgentRemoteConfig
+	(*AgentConfigMap)(nil),                // 32: opamp.proto.AgentConfigMap
+	(*AgentConfigFile)(nil),               // 33: opamp.proto.AgentConfigFile
+	nil,                                   // 34: opamp.proto.OtherConnectionSettings.OtherSettingsEntry
+	nil,                                   // 35: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry
+	nil,                                   // 36: opamp.proto.PackagesAvailable.PackagesEntry
+	nil,                                   // 37: opamp.proto.PackageStatuses.PackagesEntry
+	nil,                                   // 38: opamp.proto.AgentConfigMap.ConfigMapEntry
+	(*KeyValue)(nil),                      // 39: opamp.proto.KeyValue
 }
 var file_opamp_proto_depIdxs = []int32{
-	24, // 0: opamp.proto.AgentToServer.agent_description:type_name -> opamp.proto.AgentDescription
+	25, // 0: opamp.proto.AgentToServer.agent_description:type_name -> opamp.proto.AgentDescription
 	1,  // 1: opamp.proto.AgentToServer.capabilities:type_name -> opamp.proto.AgentCapabilities
-	25, // 2: opamp.proto.AgentToServer.effective_config:type_name -> opamp.proto.EffectiveConfig
-	26, // 3: opamp.proto.AgentToServer.remote_config_status:type_name -> opamp.proto.RemoteConfigStatus
-	27, // 4: opamp.proto.AgentToServer.package_statuses:type_name -> opamp.proto.PackageStatuses
-	11, // 5: opamp.proto.AgentToServer.agent_disconnect:type_name -> opamp.proto.AgentDisconnect
+	26, // 2: opamp.proto.AgentToServer.effective_config:type_name -> opamp.proto.EffectiveConfig
+	27, // 3: opamp.proto.AgentToServer.remote_config_status:type_name -> opamp.proto.RemoteConfigStatus
+	28, // 4: opamp.proto.AgentToServer.package_statuses:type_name -> opamp.proto.PackageStatuses
+	10, // 5: opamp.proto.AgentToServer.agent_disconnect:type_name -> opamp.proto.AgentDisconnect
 	2,  // 6: opamp.proto.AgentToServer.flags:type_name -> opamp.proto.AgentToServer.AgentToServerFlags
-	21, // 7: opamp.proto.ServerToAgent.error_response:type_name -> opamp.proto.ServerErrorResponse
-	30, // 8: opamp.proto.ServerToAgent.remote_config:type_name -> opamp.proto.AgentRemoteConfig
-	17, // 9: opamp.proto.ServerToAgent.connection_settings:type_name -> opamp.proto.ConnectionSettingsOffers
-	18, // 10: opamp.proto.ServerToAgent.packages_available:type_name -> opamp.proto.PackagesAvailable
+	22, // 7: opamp.proto.ServerToAgent.error_response:type_name -> opamp.proto.ServerErrorResponse
+	31, // 8: opamp.proto.ServerToAgent.remote_config:type_name -> opamp.proto.AgentRemoteConfig
+	18, // 9: opamp.proto.ServerToAgent.connection_settings:type_name -> opamp.proto.ConnectionSettingsOffers
+	19, // 10: opamp.proto.ServerToAgent.packages_available:type_name -> opamp.proto.PackagesAvailable
 	3,  // 11: opamp.proto.ServerToAgent.flags:type_name -> opamp.proto.ServerToAgent.Flags
 	0,  // 12: opamp.proto.ServerToAgent.capabilities:type_name -> opamp.proto.ServerCapabilities
-	29, // 13: opamp.proto.ServerToAgent.agent_identification:type_name -> opamp.proto.AgentIdentification
-	23, // 14: opamp.proto.ServerToAgent.command:type_name -> opamp.proto.ServerToAgentCommand
-	14, // 15: opamp.proto.ConnectionSettings.headers:type_name -> opamp.proto.Headers
-	14, // 16: opamp.proto.ConnectionSettings.proxy_headers:type_name -> opamp.proto.Headers
-	16, // 17: opamp.proto.ConnectionSettings.certificate:type_name -> opamp.proto.TLSCertificate
-	4,  // 18: opamp.proto.ConnectionSettings.flags:type_name -> opamp.proto.ConnectionSettings.Flags
-	15, // 19: opamp.proto.Headers.headers:type_name -> opamp.proto.Header
-	13, // 20: opamp.proto.ConnectionSettingsOffers.opamp:type_name -> opamp.proto.ConnectionSettings
-	13, // 21: opamp.proto.ConnectionSettingsOffers.own_metrics:type_name -> opamp.proto.ConnectionSettings
-	13, // 22: opamp.proto.ConnectionSettingsOffers.own_traces:type_name -> opamp.proto.ConnectionSettings
-	13, // 23: opamp.proto.ConnectionSettingsOffers.own_logs:type_name -> opamp.proto.ConnectionSettings
-	33, // 24: opamp.proto.ConnectionSettingsOffers.other_connections:type_name -> opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry
-	34, // 25: opamp.proto.PackagesAvailable.packages:type_name -> opamp.proto.PackagesAvailable.PackagesEntry
-	5,  // 26: opamp.proto.PackageAvailable.type:type_name -> opamp.proto.PackageAvailable.PackageType
-	20, // 27: opamp.proto.PackageAvailable.file:type_name -> opamp.proto.DownloadableFile
-	6,  // 28: opamp.proto.ServerErrorResponse.type:type_name -> opamp.proto.ServerErrorResponse.Type
-	22, // 29: opamp.proto.ServerErrorResponse.retry_info:type_name -> opamp.proto.RetryInfo
-	7,  // 30: opamp.proto.ServerToAgentCommand.type:type_name -> opamp.proto.ServerToAgentCommand.CommandType
-	37, // 31: opamp.proto.AgentDescription.identifying_attributes:type_name -> opamp.proto.KeyValue
-	37, // 32: opamp.proto.AgentDescription.non_identifying_attributes:type_name -> opamp.proto.KeyValue
-	31, // 33: opamp.proto.EffectiveConfig.config_map:type_name -> opamp.proto.AgentConfigMap
-	8,  // 34: opamp.proto.RemoteConfigStatus.status:type_name -> opamp.proto.RemoteConfigStatus.Status
-	35, // 35: opamp.proto.PackageStatuses.packages:type_name -> opamp.proto.PackageStatuses.PackagesEntry
-	9,  // 36: opamp.proto.PackageStatus.status:type_name -> opamp.proto.PackageStatus.Status
-	31, // 37: opamp.proto.AgentRemoteConfig.config:type_name -> opamp.proto.AgentConfigMap
-	36, // 38: opamp.proto.AgentConfigMap.config_map:type_name -> opamp.proto.AgentConfigMap.ConfigMapEntry
-	13, // 39: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry.value:type_name -> opamp.proto.ConnectionSettings
-	19, // 40: opamp.proto.PackagesAvailable.PackagesEntry.value:type_name -> opamp.proto.PackageAvailable
-	28, // 41: opamp.proto.PackageStatuses.PackagesEntry.value:type_name -> opamp.proto.PackageStatus
-	32, // 42: opamp.proto.AgentConfigMap.ConfigMapEntry.value:type_name -> opamp.proto.AgentConfigFile
-	43, // [43:43] is the sub-list for method output_type
-	43, // [43:43] is the sub-list for method input_type
-	43, // [43:43] is the sub-list for extension type_name
-	43, // [43:43] is the sub-list for extension extendee
-	0,  // [0:43] is the sub-list for field type_name
+	30, // 13: opamp.proto.ServerToAgent.agent_identification:type_name -> opamp.proto.AgentIdentification
+	24, // 14: opamp.proto.ServerToAgent.command:type_name -> opamp.proto.ServerToAgentCommand
+	15, // 15: opamp.proto.OpAMPConnectionSettings.headers:type_name -> opamp.proto.Headers
+	17, // 16: opamp.proto.OpAMPConnectionSettings.certificate:type_name -> opamp.proto.TLSCertificate
+	15, // 17: opamp.proto.TelemetryConnectionSettings.headers:type_name -> opamp.proto.Headers
+	17, // 18: opamp.proto.TelemetryConnectionSettings.certificate:type_name -> opamp.proto.TLSCertificate
+	15, // 19: opamp.proto.OtherConnectionSettings.headers:type_name -> opamp.proto.Headers
+	17, // 20: opamp.proto.OtherConnectionSettings.certificate:type_name -> opamp.proto.TLSCertificate
+	34, // 21: opamp.proto.OtherConnectionSettings.other_settings:type_name -> opamp.proto.OtherConnectionSettings.OtherSettingsEntry
+	16, // 22: opamp.proto.Headers.headers:type_name -> opamp.proto.Header
+	12, // 23: opamp.proto.ConnectionSettingsOffers.opamp:type_name -> opamp.proto.OpAMPConnectionSettings
+	13, // 24: opamp.proto.ConnectionSettingsOffers.own_metrics:type_name -> opamp.proto.TelemetryConnectionSettings
+	13, // 25: opamp.proto.ConnectionSettingsOffers.own_traces:type_name -> opamp.proto.TelemetryConnectionSettings
+	13, // 26: opamp.proto.ConnectionSettingsOffers.own_logs:type_name -> opamp.proto.TelemetryConnectionSettings
+	35, // 27: opamp.proto.ConnectionSettingsOffers.other_connections:type_name -> opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry
+	36, // 28: opamp.proto.PackagesAvailable.packages:type_name -> opamp.proto.PackagesAvailable.PackagesEntry
+	4,  // 29: opamp.proto.PackageAvailable.type:type_name -> opamp.proto.PackageAvailable.PackageType
+	21, // 30: opamp.proto.PackageAvailable.file:type_name -> opamp.proto.DownloadableFile
+	5,  // 31: opamp.proto.ServerErrorResponse.type:type_name -> opamp.proto.ServerErrorResponse.Type
+	23, // 32: opamp.proto.ServerErrorResponse.retry_info:type_name -> opamp.proto.RetryInfo
+	6,  // 33: opamp.proto.ServerToAgentCommand.type:type_name -> opamp.proto.ServerToAgentCommand.CommandType
+	39, // 34: opamp.proto.AgentDescription.identifying_attributes:type_name -> opamp.proto.KeyValue
+	39, // 35: opamp.proto.AgentDescription.non_identifying_attributes:type_name -> opamp.proto.KeyValue
+	32, // 36: opamp.proto.EffectiveConfig.config_map:type_name -> opamp.proto.AgentConfigMap
+	7,  // 37: opamp.proto.RemoteConfigStatus.status:type_name -> opamp.proto.RemoteConfigStatus.Status
+	37, // 38: opamp.proto.PackageStatuses.packages:type_name -> opamp.proto.PackageStatuses.PackagesEntry
+	8,  // 39: opamp.proto.PackageStatus.status:type_name -> opamp.proto.PackageStatus.Status
+	32, // 40: opamp.proto.AgentRemoteConfig.config:type_name -> opamp.proto.AgentConfigMap
+	38, // 41: opamp.proto.AgentConfigMap.config_map:type_name -> opamp.proto.AgentConfigMap.ConfigMapEntry
+	14, // 42: opamp.proto.ConnectionSettingsOffers.OtherConnectionsEntry.value:type_name -> opamp.proto.OtherConnectionSettings
+	20, // 43: opamp.proto.PackagesAvailable.PackagesEntry.value:type_name -> opamp.proto.PackageAvailable
+	29, // 44: opamp.proto.PackageStatuses.PackagesEntry.value:type_name -> opamp.proto.PackageStatus
+	33, // 45: opamp.proto.AgentConfigMap.ConfigMapEntry.value:type_name -> opamp.proto.AgentConfigFile
+	46, // [46:46] is the sub-list for method output_type
+	46, // [46:46] is the sub-list for method input_type
+	46, // [46:46] is the sub-list for extension type_name
+	46, // [46:46] is the sub-list for extension extendee
+	0,  // [0:46] is the sub-list for field type_name
 }
 
 func init() { file_opamp_proto_init() }
@@ -3012,7 +3105,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ConnectionSettings); i {
+			switch v := v.(*OpAMPConnectionSettings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3024,7 +3117,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Headers); i {
+			switch v := v.(*TelemetryConnectionSettings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3036,7 +3129,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Header); i {
+			switch v := v.(*OtherConnectionSettings); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3048,7 +3141,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TLSCertificate); i {
+			switch v := v.(*Headers); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3060,7 +3153,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ConnectionSettingsOffers); i {
+			switch v := v.(*Header); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3072,7 +3165,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PackagesAvailable); i {
+			switch v := v.(*TLSCertificate); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3084,7 +3177,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PackageAvailable); i {
+			switch v := v.(*ConnectionSettingsOffers); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3096,7 +3189,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DownloadableFile); i {
+			switch v := v.(*PackagesAvailable); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3108,7 +3201,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ServerErrorResponse); i {
+			switch v := v.(*PackageAvailable); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3120,7 +3213,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RetryInfo); i {
+			switch v := v.(*DownloadableFile); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3132,7 +3225,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ServerToAgentCommand); i {
+			switch v := v.(*ServerErrorResponse); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3144,7 +3237,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AgentDescription); i {
+			switch v := v.(*RetryInfo); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3156,7 +3249,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EffectiveConfig); i {
+			switch v := v.(*ServerToAgentCommand); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3168,7 +3261,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RemoteConfigStatus); i {
+			switch v := v.(*AgentDescription); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3180,7 +3273,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PackageStatuses); i {
+			switch v := v.(*EffectiveConfig); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3192,7 +3285,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PackageStatus); i {
+			switch v := v.(*RemoteConfigStatus); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3204,7 +3297,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AgentIdentification); i {
+			switch v := v.(*PackageStatuses); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3216,7 +3309,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AgentRemoteConfig); i {
+			switch v := v.(*PackageStatus); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3228,7 +3321,7 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AgentConfigMap); i {
+			switch v := v.(*AgentIdentification); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -3240,6 +3333,30 @@ func file_opamp_proto_init() {
 			}
 		}
 		file_opamp_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AgentRemoteConfig); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_opamp_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*AgentConfigMap); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_opamp_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*AgentConfigFile); i {
 			case 0:
 				return &v.state
@@ -3252,7 +3369,7 @@ func file_opamp_proto_init() {
 			}
 		}
 	}
-	file_opamp_proto_msgTypes[11].OneofWrappers = []interface{}{
+	file_opamp_proto_msgTypes[13].OneofWrappers = []interface{}{
 		(*ServerErrorResponse_RetryInfo)(nil),
 	}
 	type x struct{}
@@ -3260,8 +3377,8 @@ func file_opamp_proto_init() {
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_opamp_proto_rawDesc,
-			NumEnums:      10,
-			NumMessages:   27,
+			NumEnums:      9,
+			NumMessages:   30,
 			NumExtensions: 0,
 			NumServices:   0,
 		},


Test patch:
diff --git a/client/clientimpl_test.go b/client/clientimpl_test.go
index 243e044..b3637ae 100644
--- a/client/clientimpl_test.go
+++ b/client/clientimpl_test.go
@@ -618,11 +618,11 @@ func TestAgentIdentification(t *testing.T) {
 func TestConnectionSettings(t *testing.T) {
 	testClients(t, func(t *testing.T, client OpAMPClient) {
 		hash := []byte{1, 2, 3}
-		opampSettings := &protobufs.ConnectionSettings{DestinationEndpoint: "http://opamp.com"}
-		metricsSettings := &protobufs.ConnectionSettings{DestinationEndpoint: "http://metrics.com"}
-		tracesSettings := &protobufs.ConnectionSettings{DestinationEndpoint: "http://traces.com"}
-		logsSettings := &protobufs.ConnectionSettings{DestinationEndpoint: "http://logs.com"}
-		otherSettings := &protobufs.ConnectionSettings{DestinationEndpoint: "http://other.com"}
+		opampSettings := &protobufs.OpAMPConnectionSettings{DestinationEndpoint: "http://opamp.com"}
+		metricsSettings := &protobufs.TelemetryConnectionSettings{DestinationEndpoint: "http://metrics.com"}
+		tracesSettings := &protobufs.TelemetryConnectionSettings{DestinationEndpoint: "http://traces.com"}
+		logsSettings := &protobufs.TelemetryConnectionSettings{DestinationEndpoint: "http://logs.com"}
+		otherSettings := &protobufs.OtherConnectionSettings{DestinationEndpoint: "http://other.com"}
 
 		var rcvStatus int64
 		// Start a Server.
@@ -638,7 +638,7 @@ func TestConnectionSettings(t *testing.T) {
 						OwnMetrics: metricsSettings,
 						OwnTraces:  tracesSettings,
 						OwnLogs:    logsSettings,
-						OtherConnections: map[string]*protobufs.ConnectionSettings{
+						OtherConnections: map[string]*protobufs.OtherConnectionSettings{
 							"other": otherSettings,
 						},
 					},
@@ -655,7 +655,7 @@ func TestConnectionSettings(t *testing.T) {
 		settings := types.StartSettings{
 			Callbacks: types.CallbacksStruct{
 				OnOpampConnectionSettingsFunc: func(
-					ctx context.Context, settings *protobufs.ConnectionSettings,
+					ctx context.Context, settings *protobufs.OpAMPConnectionSettings,
 				) error {
 					assert.True(t, proto.Equal(opampSettings, settings))
 					atomic.AddInt64(&gotOpampSettings, 1)
@@ -664,7 +664,7 @@ func TestConnectionSettings(t *testing.T) {
 
 				OnOwnTelemetryConnectionSettingsFunc: func(
 					ctx context.Context, telemetryType types.OwnTelemetryType,
-					settings *protobufs.ConnectionSettings,
+					settings *protobufs.TelemetryConnectionSettings,
 				) error {
 					switch telemetryType {
 					case types.OwnMetrics:
@@ -680,7 +680,7 @@ func TestConnectionSettings(t *testing.T) {
 
 				OnOtherConnectionSettingsFunc: func(
 					ctx context.Context, name string,
-					settings *protobufs.ConnectionSettings,
+					settings *protobufs.OtherConnectionSettings,
 				) error {
 					assert.EqualValues(t, "other", name)
 					assert.True(t, proto.Equal(otherSettings, settings))