From 7e23c7facb6205cdfd34289a2356a0253004c007 Mon Sep 17 00:00:00 2001 From: mintaka Date: Mon, 7 Sep 2026 23:04:36 -0400 Subject: [PATCH] feat(forge): carry the owner-qualified actor handle on the wire (RIG-3326) regen: owner-wire generated files --- apps/ui/src/live/adapt.test.ts | 11 +++++----- apps/ui/src/live/adapt.ts | 14 +++++++------ go/gen/compass/v1/compass.pb.go | 21 ++++++++++++------- go/internal/forge/githubapp_webhook.go | 2 +- go/internal/forge/githubapp_webhook_test.go | 3 +++ go/internal/ingest/notify_detect.go | 2 +- go/internal/ingest/notify_router_test.go | 21 +++++++++++++++++++ go/internal/linearagent/data_event.go | 2 +- go/internal/linearagent/data_event_test.go | 3 +++ .../src/gen/compass/v1/compass_pb.ts | 17 ++++++++------- .../src/gen/compass/v1/compass_pb.ts | 17 ++++++++------- proto/compass/v1/compass.proto | 9 +++----- 12 files changed, 79 insertions(+), 43 deletions(-) diff --git a/apps/ui/src/live/adapt.test.ts b/apps/ui/src/live/adapt.test.ts index 41b137a67..65f6b9ca1 100644 --- a/apps/ui/src/live/adapt.test.ts +++ b/apps/ui/src/live/adapt.test.ts @@ -798,7 +798,7 @@ describe("adaptPullRequest", () => { url: "https://github.com/x/42", headRef: "feat/x", baseRef: "main", - agent: { agentHandle: "cook" }, + agent: { agentHandle: "cook", ownerHandle: "matt" }, forgeAccount: "matt", draft: true, changed: { files: 3, additions: 10, deletions: 2 }, @@ -827,11 +827,10 @@ describe("adaptPullRequest", () => { expect(r.url).toBe("https://github.com/x/42"); expect(r.headRef).toBe("feat/x"); expect(r.baseRef).toBe("main"); - // The wire attribution carries only agentHandle; ownerHandle/verified have - // no wire source and take honest hedged defaults. + // The wire attribution carries both handles; verified remains hedged. expect(r.agent).toEqual({ agentHandle: "cook", - ownerHandle: "", + ownerHandle: "matt", verified: false, }); expect(r.forgeAccount).toBe("matt"); @@ -880,7 +879,7 @@ describe("adaptIssue", () => { body: "stripped", forgeState: "open", url: "https://linear.app/RIG-1729", - agent: { agentHandle: "cook" }, + agent: { agentHandle: "cook", ownerHandle: "matt" }, forgeAccount: "matt", labels: ["p1", "ui"], state: IssueState.IN_PROGRESS, @@ -913,7 +912,7 @@ describe("adaptIssue", () => { expect(r.url).toBe("https://linear.app/RIG-1729"); expect(r.agent).toEqual({ agentHandle: "cook", - ownerHandle: "", + ownerHandle: "matt", verified: false, }); expect(r.forgeAccount).toBe("matt"); diff --git a/apps/ui/src/live/adapt.ts b/apps/ui/src/live/adapt.ts index be364787c..b83b92984 100644 --- a/apps/ui/src/live/adapt.ts +++ b/apps/ui/src/live/adapt.ts @@ -364,15 +364,17 @@ function adaptForgeRef(w: WireForgeRef | undefined): DomainForgeRef { }; } -/** Map a wire AgentAttribution to the domain one. The current wire shape carries - * only `agentHandle` (DL-094 burned owner_handle/verified as reserved); the - * domain's `ownerHandle`/`verified` have no wire source, so they take honest - * hedged defaults (`""` / `false` — an unverified claim with no owner) rather - * than a fabricated value. */ +/** Map a wire AgentAttribution to the domain one. The owner handle is carried + * from the same stamped header parse (DL-339); verification remains an honest + * hedge because attribution is not a trust claim (DL-094). */ function adaptAgentAttribution( w: WireAgentAttribution, ): DomainAgentAttribution { - return { agentHandle: w.agentHandle, ownerHandle: "", verified: false }; + return { + agentHandle: w.agentHandle, + ownerHandle: w.ownerHandle, + verified: false, + }; } /** Map a wire ChangedStats to the domain diffstat — verbatim scalars. */ diff --git a/go/gen/compass/v1/compass.pb.go b/go/gen/compass/v1/compass.pb.go index 42b4a7dfa..214812461 100644 --- a/go/gen/compass/v1/compass.pb.go +++ b/go/gen/compass/v1/compass.pb.go @@ -4566,15 +4566,12 @@ func (*DeleteModelRegistryResponse) Descriptor() ([]byte, []int) { // plain display fact (DL-094, compass-attribution-simplification, Active). If a // header names an agent, that is the displayed author: NO forge-login // cross-check, NO verified bit, NO population gating. It never reaches an authz, -// routing, or ownership decision (DL-050). Owner is a property of the agent -// account (AgentAccount.owner_user_id in comms.proto), resolved -// server-side, never restated per artifact — so no owner_handle. Field numbers -// 2,3 are simply reclaimable pre-dogfood (DL-186): no wire build ever shipped -// the frozen #1018 owner_handle/verified shape, and nothing on disk is -// proto-encoded, so the numbers carry no compatibility obligation. +// routing, or ownership decision (DL-050). Owner is carried from the same +// stamped header parse for downstream display and suppression (DL-339). type AgentAttribution struct { state protoimpl.MessageState `protogen:"open.v1"` AgentHandle string `protobuf:"bytes,1,opt,name=agent_handle,json=agentHandle,proto3" json:"agent_handle,omitempty"` // the authoring agent's handle, from the header + OwnerHandle string `protobuf:"bytes,2,opt,name=owner_handle,json=ownerHandle,proto3" json:"owner_handle,omitempty"` // the owning user's handle, from the same header parse unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4616,6 +4613,13 @@ func (x *AgentAttribution) GetAgentHandle() string { return "" } +func (x *AgentAttribution) GetOwnerHandle() string { + if x != nil { + return x.OwnerHandle + } + return "" +} + type ForgeRef struct { state protoimpl.MessageState `protogen:"open.v1"` Provider ForgeProvider `protobuf:"varint,1,opt,name=provider,proto3,enum=compass.v1.ForgeProvider" json:"provider,omitempty"` @@ -5736,9 +5740,10 @@ const file_compass_v1_compass_proto_rawDesc = "" + "\aversion\x18\x01 \x01(\x03R\aversion\x125\n" + "\bregistry\x18\x02 \x01(\v2\x19.compass.v1.ModelRegistryR\bregistry\"\x1c\n" + "\x1aDeleteModelRegistryRequest\"\x1d\n" + - "\x1bDeleteModelRegistryResponse\"5\n" + + "\x1bDeleteModelRegistryResponse\"X\n" + "\x10AgentAttribution\x12!\n" + - "\fagent_handle\x18\x01 \x01(\tR\vagentHandle\"U\n" + + "\fagent_handle\x18\x01 \x01(\tR\vagentHandle\x12!\n" + + "\fowner_handle\x18\x02 \x01(\tR\vownerHandle\"U\n" + "\bForgeRef\x125\n" + "\bprovider\x18\x01 \x01(\x0e2\x19.compass.v1.ForgeProviderR\bprovider\x12\x12\n" + "\x04host\x18\x02 \x01(\tR\x04host\"\xed\x04\n" + diff --git a/go/internal/forge/githubapp_webhook.go b/go/internal/forge/githubapp_webhook.go index 60b544093..b59d5578a 100644 --- a/go/internal/forge/githubapp_webhook.go +++ b/go/internal/forge/githubapp_webhook.go @@ -277,5 +277,5 @@ func stripBodyToRef(raw string) (string, *compassv1.AgentAttribution) { if !ok { return clean, nil } - return clean, &compassv1.AgentAttribution{AgentHandle: author.AgentHandle} + return clean, &compassv1.AgentAttribution{AgentHandle: author.AgentHandle, OwnerHandle: author.OwnerHandle} } diff --git a/go/internal/forge/githubapp_webhook_test.go b/go/internal/forge/githubapp_webhook_test.go index c02f0dcda..ba84cbb5d 100644 --- a/go/internal/forge/githubapp_webhook_test.go +++ b/go/internal/forge/githubapp_webhook_test.go @@ -295,4 +295,7 @@ func TestParseGitHubEvent_StripsOwner(t *testing.T) { if ev.Comment.GetAgent().GetAgentHandle() != "agent-x" { t.Errorf("agent claim = %q, want agent-x", ev.Comment.GetAgent().GetAgentHandle()) } + if got := ev.Comment.GetAgent().GetOwnerHandle(); got != "owner-y" { + t.Errorf("owner claim = %q, want owner-y", got) + } } diff --git a/go/internal/ingest/notify_detect.go b/go/internal/ingest/notify_detect.go index 7d1332307..16c21a8ef 100644 --- a/go/internal/ingest/notify_detect.go +++ b/go/internal/ingest/notify_detect.go @@ -325,7 +325,7 @@ func detectArtifact(prev *ArtifactSnapshot, fetched FetchedArtifact) (ArtifactSn clean, author, ok := forge.StripOwner(c.Body) ref := &compassv1internal.CommentRef{Url: c.URL, CommentKey: c.Key, Body: clean, ForgeAccount: c.ForgeAccount} if ok { - ref.Agent = &compassv1.AgentAttribution{AgentHandle: author.AgentHandle} + ref.Agent = &compassv1.AgentAttribution{AgentHandle: author.AgentHandle, OwnerHandle: author.OwnerHandle} } changes = append(changes, forge.ForgeEvent{ Provider: fetched.Provider, Host: fetched.Host, Repo: fetched.Repo, diff --git a/go/internal/ingest/notify_router_test.go b/go/internal/ingest/notify_router_test.go index 35bb2eeb3..0be21bd5f 100644 --- a/go/internal/ingest/notify_router_test.go +++ b/go/internal/ingest/notify_router_test.go @@ -628,6 +628,27 @@ func TestCrossProducerLinearCommentNoPhantomDiff(t *testing.T) { } } +func TestDetectChangesCommentAttributionIncludesOwner(t *testing.T) { + body, err := forge.StampOwner("real body", forge.Author{AgentHandle: "agent-x", OwnerHandle: "owner-y", SessionID: "sess-1"}, 0) + if err != nil { + t.Fatalf("stamp: %v", err) + } + prev := &ArtifactSnapshot{Comments: map[string]SnapshotComment{}} + fetched := FetchedArtifact{ + Provider: compassv1.ForgeProvider_FORGE_PROVIDER_GITHUB, + Host: "github.com", Repo: "owner/repo", Kind: kindIssue, Number: 7, + Comments: []forge.Comment{{Key: "comment-1", URL: "https://github.com/owner/repo/issues/7#comment-1", Body: body}}, + } + changes, _, _ := DetectChanges(prev, fetched) + if len(changes) != 1 { + t.Fatalf("changes = %d, want 1", len(changes)) + } + got := changes[0].Comment.GetAgent() + if got.GetAgentHandle() != "agent-x" || got.GetOwnerHandle() != "owner-y" { + t.Errorf("attribution = %v, want agent-x/owner-y", got) + } +} + func mustJSON(t *testing.T, v any) []byte { t.Helper() b, err := json.Marshal(v) diff --git a/go/internal/linearagent/data_event.go b/go/internal/linearagent/data_event.go index 924ecbe3a..e9da9a069 100644 --- a/go/internal/linearagent/data_event.go +++ b/go/internal/linearagent/data_event.go @@ -174,7 +174,7 @@ func linearCommentRef(d dataPayload) *compassv1internal.CommentRef { ForgeAccount: linearAccount(d.User), } if ok { - ref.Agent = &compassv1.AgentAttribution{AgentHandle: author.AgentHandle} + ref.Agent = &compassv1.AgentAttribution{AgentHandle: author.AgentHandle, OwnerHandle: author.OwnerHandle} } return ref } diff --git a/go/internal/linearagent/data_event_test.go b/go/internal/linearagent/data_event_test.go index 7c79011b3..3399b3f1a 100644 --- a/go/internal/linearagent/data_event_test.go +++ b/go/internal/linearagent/data_event_test.go @@ -144,6 +144,9 @@ func TestParseLinearDataEvent_Comment(t *testing.T) { if ev.Comment.GetAgent().GetAgentHandle() != "agent-x" { t.Errorf("agent claim = %q, want agent-x", ev.Comment.GetAgent().GetAgentHandle()) } + if got := ev.Comment.GetAgent().GetOwnerHandle(); got != "owner-y" { + t.Errorf("owner claim = %q, want owner-y", got) + } if ev.Comment.GetForgeAccount() != "Alice" { t.Errorf("forge_account = %q, want Alice", ev.Comment.GetForgeAccount()) } diff --git a/packages/compass-agent/src/gen/compass/v1/compass_pb.ts b/packages/compass-agent/src/gen/compass/v1/compass_pb.ts index 1f01f95bc..389cc0abb 100644 --- a/packages/compass-agent/src/gen/compass/v1/compass_pb.ts +++ b/packages/compass-agent/src/gen/compass/v1/compass_pb.ts @@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file compass/v1/compass.proto. */ export const file_compass_v1_compass: GenFile = /*@__PURE__*/ - fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiFgoUR2V0U2VydmVySW5mb1JlcXVlc3QiPQoVR2V0U2VydmVySW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSEwoLYXBpX3ZlcnNpb24YAiABKAkiDwoNV2hvQW1JUmVxdWVzdCIkCg5XaG9BbUlSZXNwb25zZRISCgphY2NvdW50X2lkGAEgASgJIkMKFlN1YnNjcmliZUV2ZW50c1JlcXVlc3QSEQoJc2luY2Vfc2VxGAEgASgEEhYKDmluc3RhbmNlX2Vwb2NoGAIgASgEIuIDChdTdWJzY3JpYmVFdmVudHNSZXNwb25zZRILCgNzZXEYASABKAQSEgoKYXRfdW5peF9tcxgCIAEoAxIWCg5pbnN0YW5jZV9lcG9jaBgDIAEoBBIUCgxzbmFwc2hvdF9zZXEYBCABKAQSMQoNc2VydmVyX3N0YXR1cxgKIAEoCzIYLmNvbXBhc3MudjEuU2VydmVyU3RhdHVzSAASNQoPcmVzeW5jX3JlcXVpcmVkGAsgASgLMhouY29tcGFzcy52MS5SZXN5bmNSZXF1aXJlZEgAEj4KFGFnZW50X3Nlc3Npb25fc3RhdHVzGAwgASgLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXNIABI8ChNhZ2VudF9tZXNzYWdlX2NodW5rGA0gASgLMh0uY29tcGFzcy52MS5BZ2VudE1lc3NhZ2VDaHVua0gAEjQKD2FnZW50X3Rvb2xfY2FsbBgOIAEoCzIZLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbEgAEisKCmFnZW50X3BsYW4YDyABKAsyFS5jb21wYXNzLnYxLkFnZW50UGxhbkgAEiIKBWlzc3VlGBAgASgLMhEuY29tcGFzcy52MS5Jc3N1ZUgAQgkKB3BheWxvYWQiLgoWTGlzdEJvYXJkSXNzdWVzUmVxdWVzdBIUCgxzbmFwc2hvdF9zZXEYASABKAQiPAoXTGlzdEJvYXJkSXNzdWVzUmVzcG9uc2USIQoGaXNzdWVzGAEgAygLMhEuY29tcGFzcy52MS5Jc3N1ZSI2CgxTZXJ2ZXJTdGF0dXMSJgoFc3RhdGUYASABKA4yFy5jb21wYXNzLnYxLlNlcnZlclN0YXRlIhAKDlJlc3luY1JlcXVpcmVkInAKEkFnZW50U2Vzc2lvblN0YXR1cxISCgpzZXNzaW9uX2lkGAEgASgJEiwKBXN0YXRlGAIgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZRIYChBhZ2VudF9hY2NvdW50X2lkGAMgASgJIkkKEUFnZW50TWVzc2FnZUNodW5rEhIKCnNlc3Npb25faWQYASABKAkSDAoEdGV4dBgCIAEoCRISCgppc190aG91Z2h0GAMgASgIInkKDUFnZW50VG9vbENhbGwSEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSLwoGc3RhdHVzGAQgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIkwKCUFnZW50UGxhbhISCgpzZXNzaW9uX2lkGAEgASgJEisKB2VudHJpZXMYAiADKAsyGi5jb21wYXNzLnYxLkFnZW50UGxhbkVudHJ5IlMKDkFnZW50UGxhbkVudHJ5Eg8KB2NvbnRlbnQYASABKAkSMAoGc3RhdHVzGAIgASgOMiAuY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeVN0YXR1cyLfAwoMU2Vzc2lvbkV2ZW50EhAKCGV2ZW50X2lkGAEgASgJEhIKCmF0X3VuaXhfbXMYAiABKAMSOgoOYXNzaXN0YW50X3RleHQYAyABKAsyIC5jb21wYXNzLnYxLlNlc3Npb25Bc3Npc3RhbnRUZXh0SAASLwoIdGhpbmtpbmcYBCABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25UaGlua2luZ0gAEjAKCXRvb2xfY2FsbBgFIAEoCzIbLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsSAASPQoQdG9vbF9jYWxsX3VwZGF0ZRgGIAEoCzIhLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsVXBkYXRlSAASJwoEcGxhbhgHIAEoCzIXLmNvbXBhc3MudjEuU2Vzc2lvblBsYW5IABIrCgZub3RpY2UYCCABKAsyGS5jb21wYXNzLnYxLlNlc3Npb25Ob3RpY2VIABI5ChFzZXNzaW9uX2luamVjdGlvbhgJIAEoCzIcLmNvbXBhc3MudjEuU2Vzc2lvbkluamVjdGlvbkgAEjEKDXNlc3Npb25fZXJyb3IYCiABKAsyGC5jb21wYXNzLnYxLlNlc3Npb25FcnJvckgAQgcKBWV2ZW50IjgKFFNlc3Npb25Bc3Npc3RhbnRUZXh0EgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSIzCg9TZXNzaW9uVGhpbmtpbmcSDAoEdGV4dBgBIAEoCRISCgptZXNzYWdlX2lkGAIgASgJImcKD1Nlc3Npb25Ub29sQ2FsbBIUCgx0b29sX2NhbGxfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSLwoGc3RhdHVzGAMgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIpoBChVTZXNzaW9uVG9vbENhbGxVcGRhdGUSFAoMdG9vbF9jYWxsX2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cxIOCgZvdXRwdXQYAyABKAkSKgoFZGlmZnMYBCADKAsyGy5jb21wYXNzLnYxLlNlc3Npb25GaWxlRGlmZiJVCg9TZXNzaW9uRmlsZURpZmYSDAoEcGF0aBgBIAEoCRIVCghvbGRfdGV4dBgCIAEoCUgAiAEBEhAKCG5ld190ZXh0GAMgASgJQgsKCV9vbGRfdGV4dCI6CgtTZXNzaW9uUGxhbhIrCgdlbnRyaWVzGAEgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSI5Cg1TZXNzaW9uTm90aWNlEgwKBHRleHQYASABKAkSEQoEbGluaxgCIAEoCUgAiAEBQgcKBV9saW5rIoMBChBTZXNzaW9uSW5qZWN0aW9uEjEKB29wX2tpbmQYASABKA4yIC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25LaW5kEhIKCm1lc3NhZ2VfaWQYAiABKAkSEwoLZnJvbV9oYW5kbGUYAyABKAkSEwoLdHJhY2VwYXJlbnQYBCABKAkiawoMU2Vzc2lvbkVycm9yEioKBGtpbmQYASABKA4yHC5jb21wYXNzLnYxLlNlc3Npb25FcnJvcktpbmQSDwoHbWVzc2FnZRgCIAEoCRITCgZzdGF0dXMYAyABKAVIAIgBAUIJCgdfc3RhdHVzIjIKHFN1YnNjcmliZUFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJ+ChFBZ2VudFNlc3Npb25GcmFtZRISCgpzZXNzaW9uX2lkGAEgASgJEicKBWV2ZW50GAIgASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXZlbnQSLAoFc3RhdGUYAyABKA4yHS5jb21wYXNzLnYxLkFnZW50U2Vzc2lvblN0YXRlInAKHlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVxdWVzdBIUCgxhZ2VudF9oYW5kbGUYASABKAkSGQoRY2xpZW50X3JlcXVlc3RfaWQYAiABKAkSDwoHcGVyc29uYRgDIAEoCRIMCgRyb2xlGAQgASgJIjkKH1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USFgoOY29udGFpbmVyX25hbWUYASABKAkiUAobUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJIh4KHFJlbW92ZUFnZW50V29ya3NwYWNlUmVzcG9uc2UiYwoYU3RhcnRBZ2VudFNlc3Npb25SZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEXJlc3VtZV9zZXNzaW9uX2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCIvChlTdGFydEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiWgoRU3Bhd25BZ2VudFJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCJAChJTcGF3bkFnZW50UmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIWCg5jb250YWluZXJfbmFtZRgCIAEoCSItChdTdG9wQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIhoKGFN0b3BBZ2VudFNlc3Npb25SZXNwb25zZSIvChlSZWxvYWRBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiMAoaUmVsb2FkQWdlbnRTZXNzaW9uUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCSIrChVHZXRBZ2VudFN0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJKChZHZXRBZ2VudFN0YXR1c1Jlc3BvbnNlEjAKCHN0YXR1c2VzGAEgAygLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXMiKwoRSXNzdWVUb2tlblJlcXVlc3QSFgoOYWNjb3VudF9oYW5kbGUYASABKAkiIwoSSXNzdWVUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJIigKElJldm9rZVRva2VuUmVxdWVzdBISCgV0b2tlbhgBIAEoCUIDgAEBIhUKE1Jldm9rZVRva2VuUmVzcG9uc2UiJwoVUHV0QWdlbnRDb25maWdSZXF1ZXN0Eg4KBmJ1bmRsZRgBIAEoDCIpChZQdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkiGwoZR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdCLaAQoaR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USDwoHdmVyc2lvbhgBIAEoCRIOCgZza2lsbHMYAiADKAkSEgoKZXh0ZW5zaW9ucxgDIAMoCRITCgttY3Bfc2VydmVycxgEIAMoCRIUCgxoYXNfc2V0dGluZ3MYBSABKAgSFQoNaGFzX2FnZW50c19tZBgGIAEoCBINCgVydWxlcxgHIAMoCRIRCglzdWJhZ2VudHMYCCADKAkSEgoKaGFzX21vZGVscxgJIAEoCBIPCgdwcm9tcHRzGAogAygJIhoKGERlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdCIbChlEZWxldGVBZ2VudENvbmZpZ1Jlc3BvbnNlIjQKDk1vZGVsQ2FuZGlkYXRlEhAKCHByb3ZpZGVyGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJInEKDU1vZGVsTWV0YWRhdGESFgoOY29udGV4dF93aW5kb3cYASABKAMSHAoUaW5wdXRfY29zdF9taWNyb191c2QYAiABKAMSHQoVb3V0cHV0X2Nvc3RfbWljcm9fdXNkGAMgASgDEgsKA2FwaRgEIAEoCSKHAQoSTW9kZWxSZWdpc3RyeUVudHJ5EhQKDGRpc3BsYXlfbmFtZRgBIAEoCRIuCgpjYW5kaWRhdGVzGAIgAygLMhouY29tcGFzcy52MS5Nb2RlbENhbmRpZGF0ZRIrCghtZXRhZGF0YRgDIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxNZXRhZGF0YSKYAQoNTW9kZWxSZWdpc3RyeRI3CgdlbnRyaWVzGAEgAygLMiYuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5LkVudHJpZXNFbnRyeRpOCgxFbnRyaWVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgLMh4uY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5RW50cnk6AjgBImAKF1B1dE1vZGVsUmVnaXN0cnlSZXF1ZXN0EisKCHJlZ2lzdHJ5GAEgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5EhgKEGV4cGVjdGVkX3ZlcnNpb24YAiABKAMiKwoYUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMiGQoXR2V0TW9kZWxSZWdpc3RyeVJlcXVlc3QiWAoYR2V0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMSKwoIcmVnaXN0cnkYAiABKAsyGS5jb21wYXNzLnYxLk1vZGVsUmVnaXN0cnkiHAoaRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QiHQobRGVsZXRlTW9kZWxSZWdpc3RyeVJlc3BvbnNlIigKEEFnZW50QXR0cmlidXRpb24SFAoMYWdlbnRfaGFuZGxlGAEgASgJIkUKCEZvcmdlUmVmEisKCHByb3ZpZGVyGAEgASgOMhkuY29tcGFzcy52MS5Gb3JnZVByb3ZpZGVyEgwKBGhvc3QYAiABKAki1AMKBUlzc3VlEgoKAmlkGAEgASgJEiMKBWZvcmdlGAIgASgLMhQuY29tcGFzcy52MS5Gb3JnZVJlZhIMCgRyZXBvGAMgASgJEg4KBm51bWJlchgEIAEoDRINCgV0aXRsZRgFIAEoCRIMCgRib2R5GAYgASgJEhMKC2ZvcmdlX3N0YXRlGAcgASgJEgsKA3VybBgIIAEoCRIrCgVhZ2VudBgJIAEoCzIcLmNvbXBhc3MudjEuQWdlbnRBdHRyaWJ1dGlvbhIVCg1mb3JnZV9hY2NvdW50GAogASgJEg4KBmxhYmVscxgLIAMoCRIuCgp1cGRhdGVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgVzdGF0ZRgMIAEoDjIWLmNvbXBhc3MudjEuSXNzdWVTdGF0ZRIQCghwcmlvcml0eRgNIAEoCRIQCghhc3NpZ25lZRgOIAEoCRIPCgdzdW1tYXJ5GA8gASgJEg4KBmJyYW5jaBgQIAEoCRIkCgNwcnMYESADKAsyFy5jb21wYXNzLnYxLlB1bGxSZXF1ZXN0EicKB3RyYWNrZXIYEiABKAsyFi5jb21wYXNzLnYxLlRyYWNrZXJSZWYingMKC1B1bGxSZXF1ZXN0EiMKBWZvcmdlGAEgASgLMhQuY29tcGFzcy52MS5Gb3JnZVJlZhIMCgRyZXBvGAIgASgJEg4KBm51bWJlchgDIAEoDRINCgV0aXRsZRgEIAEoCRITCgtmb3JnZV9zdGF0ZRgFIAEoCRILCgN1cmwYBiABKAkSEAoIaGVhZF9yZWYYByABKAkSEAoIYmFzZV9yZWYYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRINCgVkcmFmdBgLIAEoCBIpCgdjaGFuZ2VkGAwgASgLMhguY29tcGFzcy52MS5DaGFuZ2VkU3RhdHMSKQoGY2hlY2tzGA0gASgLMhkuY29tcGFzcy52MS5DaGVja3NTdW1tYXJ5EiMKB3Jldmlld3MYDiADKAsyEi5jb21wYXNzLnYxLlJldmlldxIpCgd0aHJlYWRzGA8gAygLMhguY29tcGFzcy52MS5SZXZpZXdUaHJlYWQiUwoNQ2hlY2tzU3VtbWFyeRIQCghoZWFkX3NoYRgBIAEoCRINCgVzdGF0ZRgCIAEoCRIhCgZjaGVja3MYAyADKAsyES5jb21wYXNzLnYxLkNoZWNrIkMKBUNoZWNrEgwKBG5hbWUYASABKAkSDQoFc3RhdGUYAiABKAkSCwoDdXJsGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIIkMKDENoYW5nZWRTdGF0cxINCgVmaWxlcxgBIAEoDRIRCglhZGRpdGlvbnMYAiABKA0SEQoJZGVsZXRpb25zGAMgASgNIkMKClRyYWNrZXJSZWYSDAoEa2luZBgBIAEoCRIKCgJpZBgCIAEoCRIOCgZzdGF0dXMYAyABKAkSCwoDdXJsGAQgASgJIkcKBlJldmlldxIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEg8KB3ZlcmRpY3QYAyABKAkSDAoEYm9keRgEIAEoCSJVCgxSZXZpZXdUaHJlYWQSDAoEcGF0aBgBIAEoCRIQCghyZXNvbHZlZBgCIAEoCBIlCghjb21tZW50cxgDIAMoCzITLmNvbXBhc3MudjEuQ29tbWVudCI3CgdDb21tZW50Eg4KBmF1dGhvchgBIAEoCRIOCgZpc19ib3QYAiABKAgSDAoEYm9keRgDIAEoCSpkCg5TZWNyZXREZWxpdmVyeRIfChtTRUNSRVRfREVMSVZFUllfVU5TUEVDSUZJRUQQABIYChRTRUNSRVRfREVMSVZFUllfRklMRRABEhcKE1NFQ1JFVF9ERUxJVkVSWV9FTlYQAipwCgpTZWNyZXRLaW5kEhsKF1NFQ1JFVF9LSU5EX1VOU1BFQ0lGSUVEEAASFwoTU0VDUkVUX0tJTkRfR0VORVJJQxABEhgKFFNFQ1JFVF9LSU5EX1BST1ZJREVSEAISEgoOU0VDUkVUX0tJTkRfR0gQAypDCgtTZXJ2ZXJTdGF0ZRIcChhTRVJWRVJfU1RBVEVfVU5TUEVDSUZJRUQQABIWChJTRVJWRVJfU1RBVEVfUkVBRFkQASqCAgoRQWdlbnRTZXNzaW9uU3RhdGUSIwofQUdFTlRfU0VTU0lPTl9TVEFURV9VTlNQRUNJRklFRBAAEiAKHEFHRU5UX1NFU1NJT05fU1RBVEVfU1RBUlRJTkcQARIdChlBR0VOVF9TRVNTSU9OX1NUQVRFX1JFQURZEAISHwobQUdFTlRfU0VTU0lPTl9TVEFURV9XT1JLSU5HEAMSHwobQUdFTlRfU0VTU0lPTl9TVEFURV9TVE9QUEVEEAQSHwobQUdFTlRfU0VTU0lPTl9TVEFURV9FUlJPUkVEEAUSJAogQUdFTlRfU0VTU0lPTl9TVEFURV9ESVNDT05ORUNURUQQBirSAQoTQWdlbnRUb29sQ2FsbFN0YXR1cxImCiJBR0VOVF9UT09MX0NBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIgoeQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19QRU5ESU5HEAESJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19JTl9QUk9HUkVTUxACEiQKIEFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfQ09NUExFVEVEEAMSIQodQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19GQUlMRUQQBCq0AQoUQWdlbnRQbGFuRW50cnlTdGF0dXMSJwojQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfVU5TUEVDSUZJRUQQABIjCh9BR0VOVF9QTEFOX0VOVFJZX1NUQVRVU19QRU5ESU5HEAESJwojQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfSU5fUFJPR1JFU1MQAhIlCiFBR0VOVF9QTEFOX0VOVFJZX1NUQVRVU19DT01QTEVURUQQAyqEAQoUU2Vzc2lvbkluamVjdGlvbktpbmQSJgoiU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9VTlNQRUNJRklFRBAAEiAKHFNFU1NJT05fSU5KRUNUSU9OX0tJTkRfU1RFRVIQARIiCh5TRVNTSU9OX0lOSkVDVElPTl9LSU5EX0RFTElWRVIQAip0ChBTZXNzaW9uRXJyb3JLaW5kEiIKHlNFU1NJT05fRVJST1JfS0lORF9VTlNQRUNJRklFRBAAEhwKGFNFU1NJT05fRVJST1JfS0lORF9FUlJPUhABEh4KGlNFU1NJT05fRVJST1JfS0lORF9BQk9SVEVEEAIq8QEKCklzc3VlU3RhdGUSGwoXSVNTVUVfU1RBVEVfVU5TUEVDSUZJRUQQABIXChNJU1NVRV9TVEFURV9CQUNLTE9HEAESFAoQSVNTVUVfU1RBVEVfVE9ETxACEhYKEklTU1VFX1NUQVRFX1FVRVVFRBADEhcKE0lTU1VFX1NUQVRFX0JMT0NLRUQQBBIbChdJU1NVRV9TVEFURV9JTl9QUk9HUkVTUxAFEhkKFUlTU1VFX1NUQVRFX0lOX1JFVklFVxAGEhQKEElTU1VFX1NUQVRFX0RPTkUQBxIYChRJU1NVRV9TVEFURV9BUkNISVZFRBAIKpwBCg1Gb3JnZVByb3ZpZGVyEh4KGkZPUkdFX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASGQoVRk9SR0VfUFJPVklERVJfR0lUSFVCEAESGQoVRk9SR0VfUFJPVklERVJfR0lUTEFCEAISGgoWRk9SR0VfUFJPVklERVJfRk9SR0VKTxADEhkKFUZPUkdFX1BST1ZJREVSX0xJTkVBUhAEMtMOCg5Db21wYXNzU2VydmljZRJUCg1HZXRTZXJ2ZXJJbmZvEiAuY29tcGFzcy52MS5HZXRTZXJ2ZXJJbmZvUmVxdWVzdBohLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1Jlc3BvbnNlEj8KBldob0FtSRIZLmNvbXBhc3MudjEuV2hvQW1JUmVxdWVzdBoaLmNvbXBhc3MudjEuV2hvQW1JUmVzcG9uc2USXAoPU3Vic2NyaWJlRXZlbnRzEiIuY29tcGFzcy52MS5TdWJzY3JpYmVFdmVudHNSZXF1ZXN0GiMuY29tcGFzcy52MS5TdWJzY3JpYmVFdmVudHNSZXNwb25zZTABEloKD0xpc3RCb2FyZElzc3VlcxIiLmNvbXBhc3MudjEuTGlzdEJvYXJkSXNzdWVzUmVxdWVzdBojLmNvbXBhc3MudjEuTGlzdEJvYXJkSXNzdWVzUmVzcG9uc2UScgoXUHJvdmlzaW9uQWdlbnRXb3Jrc3BhY2USKi5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVxdWVzdBorLmNvbXBhc3MudjEuUHJvdmlzaW9uQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJgChFTdGFydEFnZW50U2Vzc2lvbhIkLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXF1ZXN0GiUuY29tcGFzcy52MS5TdGFydEFnZW50U2Vzc2lvblJlc3BvbnNlEksKClNwYXduQWdlbnQSHS5jb21wYXNzLnYxLlNwYXduQWdlbnRSZXF1ZXN0Gh4uY29tcGFzcy52MS5TcGF3bkFnZW50UmVzcG9uc2USXQoQU3RvcEFnZW50U2Vzc2lvbhIjLmNvbXBhc3MudjEuU3RvcEFnZW50U2Vzc2lvblJlcXVlc3QaJC5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXNwb25zZRJpChRSZW1vdmVBZ2VudFdvcmtzcGFjZRInLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXF1ZXN0GiguY29tcGFzcy52MS5SZW1vdmVBZ2VudFdvcmtzcGFjZVJlc3BvbnNlEmMKElJlbG9hZEFnZW50U2Vzc2lvbhIlLmNvbXBhc3MudjEuUmVsb2FkQWdlbnRTZXNzaW9uUmVxdWVzdBomLmNvbXBhc3MudjEuUmVsb2FkQWdlbnRTZXNzaW9uUmVzcG9uc2USVwoOR2V0QWdlbnRTdGF0dXMSIS5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVxdWVzdBoiLmNvbXBhc3MudjEuR2V0QWdlbnRTdGF0dXNSZXNwb25zZRJiChVTdWJzY3JpYmVBZ2VudFNlc3Npb24SKC5jb21wYXNzLnYxLlN1YnNjcmliZUFnZW50U2Vzc2lvblJlcXVlc3QaHS5jb21wYXNzLnYxLkFnZW50U2Vzc2lvbkZyYW1lMAESSwoKSXNzdWVUb2tlbhIdLmNvbXBhc3MudjEuSXNzdWVUb2tlblJlcXVlc3QaHi5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXNwb25zZRJOCgtSZXZva2VUb2tlbhIeLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXF1ZXN0Gh8uY29tcGFzcy52MS5SZXZva2VUb2tlblJlc3BvbnNlElcKDlB1dEFnZW50Q29uZmlnEiEuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1JlcXVlc3QaIi5jb21wYXNzLnYxLlB1dEFnZW50Q29uZmlnUmVzcG9uc2USYwoSR2V0QWdlbnRDb25maWdJbmZvEiUuY29tcGFzcy52MS5HZXRBZ2VudENvbmZpZ0luZm9SZXF1ZXN0GiYuY29tcGFzcy52MS5HZXRBZ2VudENvbmZpZ0luZm9SZXNwb25zZRJgChFEZWxldGVBZ2VudENvbmZpZxIkLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXF1ZXN0GiUuY29tcGFzcy52MS5EZWxldGVBZ2VudENvbmZpZ1Jlc3BvbnNlEl0KEFB1dE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLlB1dE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USXQoQR2V0TW9kZWxSZWdpc3RyeRIjLmNvbXBhc3MudjEuR2V0TW9kZWxSZWdpc3RyeVJlcXVlc3QaJC5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXNwb25zZRJmChNEZWxldGVNb2RlbFJlZ2lzdHJ5EiYuY29tcGFzcy52MS5EZWxldGVNb2RlbFJlZ2lzdHJ5UmVxdWVzdBonLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlc3BvbnNlMv0BCg5TZWNyZXRzU2VydmljZRJICglTZXRTZWNyZXQSHC5jb21wYXNzLnYxLlNldFNlY3JldFJlcXVlc3QaHS5jb21wYXNzLnYxLlNldFNlY3JldFJlc3BvbnNlEk4KC0xpc3RTZWNyZXRzEh4uY29tcGFzcy52MS5MaXN0U2VjcmV0c1JlcXVlc3QaHy5jb21wYXNzLnYxLkxpc3RTZWNyZXRzUmVzcG9uc2USUQoMRGVsZXRlU2VjcmV0Eh8uY29tcGFzcy52MS5EZWxldGVTZWNyZXRSZXF1ZXN0GiAuY29tcGFzcy52MS5EZWxldGVTZWNyZXRSZXNwb25zZWIGcHJvdG8z", [file_google_protobuf_timestamp]); + fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiFgoUR2V0U2VydmVySW5mb1JlcXVlc3QiPQoVR2V0U2VydmVySW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSEwoLYXBpX3ZlcnNpb24YAiABKAkiDwoNV2hvQW1JUmVxdWVzdCIkCg5XaG9BbUlSZXNwb25zZRISCgphY2NvdW50X2lkGAEgASgJIkMKFlN1YnNjcmliZUV2ZW50c1JlcXVlc3QSEQoJc2luY2Vfc2VxGAEgASgEEhYKDmluc3RhbmNlX2Vwb2NoGAIgASgEIuIDChdTdWJzY3JpYmVFdmVudHNSZXNwb25zZRILCgNzZXEYASABKAQSEgoKYXRfdW5peF9tcxgCIAEoAxIWCg5pbnN0YW5jZV9lcG9jaBgDIAEoBBIUCgxzbmFwc2hvdF9zZXEYBCABKAQSMQoNc2VydmVyX3N0YXR1cxgKIAEoCzIYLmNvbXBhc3MudjEuU2VydmVyU3RhdHVzSAASNQoPcmVzeW5jX3JlcXVpcmVkGAsgASgLMhouY29tcGFzcy52MS5SZXN5bmNSZXF1aXJlZEgAEj4KFGFnZW50X3Nlc3Npb25fc3RhdHVzGAwgASgLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXNIABI8ChNhZ2VudF9tZXNzYWdlX2NodW5rGA0gASgLMh0uY29tcGFzcy52MS5BZ2VudE1lc3NhZ2VDaHVua0gAEjQKD2FnZW50X3Rvb2xfY2FsbBgOIAEoCzIZLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbEgAEisKCmFnZW50X3BsYW4YDyABKAsyFS5jb21wYXNzLnYxLkFnZW50UGxhbkgAEiIKBWlzc3VlGBAgASgLMhEuY29tcGFzcy52MS5Jc3N1ZUgAQgkKB3BheWxvYWQiLgoWTGlzdEJvYXJkSXNzdWVzUmVxdWVzdBIUCgxzbmFwc2hvdF9zZXEYASABKAQiPAoXTGlzdEJvYXJkSXNzdWVzUmVzcG9uc2USIQoGaXNzdWVzGAEgAygLMhEuY29tcGFzcy52MS5Jc3N1ZSI2CgxTZXJ2ZXJTdGF0dXMSJgoFc3RhdGUYASABKA4yFy5jb21wYXNzLnYxLlNlcnZlclN0YXRlIhAKDlJlc3luY1JlcXVpcmVkInAKEkFnZW50U2Vzc2lvblN0YXR1cxISCgpzZXNzaW9uX2lkGAEgASgJEiwKBXN0YXRlGAIgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZRIYChBhZ2VudF9hY2NvdW50X2lkGAMgASgJIkkKEUFnZW50TWVzc2FnZUNodW5rEhIKCnNlc3Npb25faWQYASABKAkSDAoEdGV4dBgCIAEoCRISCgppc190aG91Z2h0GAMgASgIInkKDUFnZW50VG9vbENhbGwSEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSLwoGc3RhdHVzGAQgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIkwKCUFnZW50UGxhbhISCgpzZXNzaW9uX2lkGAEgASgJEisKB2VudHJpZXMYAiADKAsyGi5jb21wYXNzLnYxLkFnZW50UGxhbkVudHJ5IlMKDkFnZW50UGxhbkVudHJ5Eg8KB2NvbnRlbnQYASABKAkSMAoGc3RhdHVzGAIgASgOMiAuY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeVN0YXR1cyLfAwoMU2Vzc2lvbkV2ZW50EhAKCGV2ZW50X2lkGAEgASgJEhIKCmF0X3VuaXhfbXMYAiABKAMSOgoOYXNzaXN0YW50X3RleHQYAyABKAsyIC5jb21wYXNzLnYxLlNlc3Npb25Bc3Npc3RhbnRUZXh0SAASLwoIdGhpbmtpbmcYBCABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25UaGlua2luZ0gAEjAKCXRvb2xfY2FsbBgFIAEoCzIbLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsSAASPQoQdG9vbF9jYWxsX3VwZGF0ZRgGIAEoCzIhLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsVXBkYXRlSAASJwoEcGxhbhgHIAEoCzIXLmNvbXBhc3MudjEuU2Vzc2lvblBsYW5IABIrCgZub3RpY2UYCCABKAsyGS5jb21wYXNzLnYxLlNlc3Npb25Ob3RpY2VIABI5ChFzZXNzaW9uX2luamVjdGlvbhgJIAEoCzIcLmNvbXBhc3MudjEuU2Vzc2lvbkluamVjdGlvbkgAEjEKDXNlc3Npb25fZXJyb3IYCiABKAsyGC5jb21wYXNzLnYxLlNlc3Npb25FcnJvckgAQgcKBWV2ZW50IjgKFFNlc3Npb25Bc3Npc3RhbnRUZXh0EgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSIzCg9TZXNzaW9uVGhpbmtpbmcSDAoEdGV4dBgBIAEoCRISCgptZXNzYWdlX2lkGAIgASgJImcKD1Nlc3Npb25Ub29sQ2FsbBIUCgx0b29sX2NhbGxfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSLwoGc3RhdHVzGAMgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIpoBChVTZXNzaW9uVG9vbENhbGxVcGRhdGUSFAoMdG9vbF9jYWxsX2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cxIOCgZvdXRwdXQYAyABKAkSKgoFZGlmZnMYBCADKAsyGy5jb21wYXNzLnYxLlNlc3Npb25GaWxlRGlmZiJVCg9TZXNzaW9uRmlsZURpZmYSDAoEcGF0aBgBIAEoCRIVCghvbGRfdGV4dBgCIAEoCUgAiAEBEhAKCG5ld190ZXh0GAMgASgJQgsKCV9vbGRfdGV4dCI6CgtTZXNzaW9uUGxhbhIrCgdlbnRyaWVzGAEgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSI5Cg1TZXNzaW9uTm90aWNlEgwKBHRleHQYASABKAkSEQoEbGluaxgCIAEoCUgAiAEBQgcKBV9saW5rIoMBChBTZXNzaW9uSW5qZWN0aW9uEjEKB29wX2tpbmQYASABKA4yIC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25LaW5kEhIKCm1lc3NhZ2VfaWQYAiABKAkSEwoLZnJvbV9oYW5kbGUYAyABKAkSEwoLdHJhY2VwYXJlbnQYBCABKAkiawoMU2Vzc2lvbkVycm9yEioKBGtpbmQYASABKA4yHC5jb21wYXNzLnYxLlNlc3Npb25FcnJvcktpbmQSDwoHbWVzc2FnZRgCIAEoCRITCgZzdGF0dXMYAyABKAVIAIgBAUIJCgdfc3RhdHVzIjIKHFN1YnNjcmliZUFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJ+ChFBZ2VudFNlc3Npb25GcmFtZRISCgpzZXNzaW9uX2lkGAEgASgJEicKBWV2ZW50GAIgASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXZlbnQSLAoFc3RhdGUYAyABKA4yHS5jb21wYXNzLnYxLkFnZW50U2Vzc2lvblN0YXRlInAKHlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVxdWVzdBIUCgxhZ2VudF9oYW5kbGUYASABKAkSGQoRY2xpZW50X3JlcXVlc3RfaWQYAiABKAkSDwoHcGVyc29uYRgDIAEoCRIMCgRyb2xlGAQgASgJIjkKH1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USFgoOY29udGFpbmVyX25hbWUYASABKAkiUAobUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJIh4KHFJlbW92ZUFnZW50V29ya3NwYWNlUmVzcG9uc2UiYwoYU3RhcnRBZ2VudFNlc3Npb25SZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEXJlc3VtZV9zZXNzaW9uX2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCIvChlTdGFydEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiWgoRU3Bhd25BZ2VudFJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCJAChJTcGF3bkFnZW50UmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIWCg5jb250YWluZXJfbmFtZRgCIAEoCSItChdTdG9wQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIhoKGFN0b3BBZ2VudFNlc3Npb25SZXNwb25zZSIvChlSZWxvYWRBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiMAoaUmVsb2FkQWdlbnRTZXNzaW9uUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCSIrChVHZXRBZ2VudFN0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJKChZHZXRBZ2VudFN0YXR1c1Jlc3BvbnNlEjAKCHN0YXR1c2VzGAEgAygLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXMiKwoRSXNzdWVUb2tlblJlcXVlc3QSFgoOYWNjb3VudF9oYW5kbGUYASABKAkiIwoSSXNzdWVUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJIigKElJldm9rZVRva2VuUmVxdWVzdBISCgV0b2tlbhgBIAEoCUIDgAEBIhUKE1Jldm9rZVRva2VuUmVzcG9uc2UiJwoVUHV0QWdlbnRDb25maWdSZXF1ZXN0Eg4KBmJ1bmRsZRgBIAEoDCIpChZQdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkiGwoZR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdCLaAQoaR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USDwoHdmVyc2lvbhgBIAEoCRIOCgZza2lsbHMYAiADKAkSEgoKZXh0ZW5zaW9ucxgDIAMoCRITCgttY3Bfc2VydmVycxgEIAMoCRIUCgxoYXNfc2V0dGluZ3MYBSABKAgSFQoNaGFzX2FnZW50c19tZBgGIAEoCBINCgVydWxlcxgHIAMoCRIRCglzdWJhZ2VudHMYCCADKAkSEgoKaGFzX21vZGVscxgJIAEoCBIPCgdwcm9tcHRzGAogAygJIhoKGERlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdCIbChlEZWxldGVBZ2VudENvbmZpZ1Jlc3BvbnNlIjQKDk1vZGVsQ2FuZGlkYXRlEhAKCHByb3ZpZGVyGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJInEKDU1vZGVsTWV0YWRhdGESFgoOY29udGV4dF93aW5kb3cYASABKAMSHAoUaW5wdXRfY29zdF9taWNyb191c2QYAiABKAMSHQoVb3V0cHV0X2Nvc3RfbWljcm9fdXNkGAMgASgDEgsKA2FwaRgEIAEoCSKHAQoSTW9kZWxSZWdpc3RyeUVudHJ5EhQKDGRpc3BsYXlfbmFtZRgBIAEoCRIuCgpjYW5kaWRhdGVzGAIgAygLMhouY29tcGFzcy52MS5Nb2RlbENhbmRpZGF0ZRIrCghtZXRhZGF0YRgDIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxNZXRhZGF0YSKYAQoNTW9kZWxSZWdpc3RyeRI3CgdlbnRyaWVzGAEgAygLMiYuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5LkVudHJpZXNFbnRyeRpOCgxFbnRyaWVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgLMh4uY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5RW50cnk6AjgBImAKF1B1dE1vZGVsUmVnaXN0cnlSZXF1ZXN0EisKCHJlZ2lzdHJ5GAEgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5EhgKEGV4cGVjdGVkX3ZlcnNpb24YAiABKAMiKwoYUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMiGQoXR2V0TW9kZWxSZWdpc3RyeVJlcXVlc3QiWAoYR2V0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMSKwoIcmVnaXN0cnkYAiABKAsyGS5jb21wYXNzLnYxLk1vZGVsUmVnaXN0cnkiHAoaRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QiHQobRGVsZXRlTW9kZWxSZWdpc3RyeVJlc3BvbnNlIj4KEEFnZW50QXR0cmlidXRpb24SFAoMYWdlbnRfaGFuZGxlGAEgASgJEhQKDG93bmVyX2hhbmRsZRgCIAEoCSJFCghGb3JnZVJlZhIrCghwcm92aWRlchgBIAEoDjIZLmNvbXBhc3MudjEuRm9yZ2VQcm92aWRlchIMCgRob3N0GAIgASgJItQDCgVJc3N1ZRIKCgJpZBgBIAEoCRIjCgVmb3JnZRgCIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgDIAEoCRIOCgZudW1iZXIYBCABKA0SDQoFdGl0bGUYBSABKAkSDAoEYm9keRgGIAEoCRITCgtmb3JnZV9zdGF0ZRgHIAEoCRILCgN1cmwYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRIOCgZsYWJlbHMYCyADKAkSLgoKdXBkYXRlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoFc3RhdGUYDCABKA4yFi5jb21wYXNzLnYxLklzc3VlU3RhdGUSEAoIcHJpb3JpdHkYDSABKAkSEAoIYXNzaWduZWUYDiABKAkSDwoHc3VtbWFyeRgPIAEoCRIOCgZicmFuY2gYECABKAkSJAoDcHJzGBEgAygLMhcuY29tcGFzcy52MS5QdWxsUmVxdWVzdBInCgd0cmFja2VyGBIgASgLMhYuY29tcGFzcy52MS5UcmFja2VyUmVmIp4DCgtQdWxsUmVxdWVzdBIjCgVmb3JnZRgBIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgCIAEoCRIOCgZudW1iZXIYAyABKA0SDQoFdGl0bGUYBCABKAkSEwoLZm9yZ2Vfc3RhdGUYBSABKAkSCwoDdXJsGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEisKBWFnZW50GAkgASgLMhwuY29tcGFzcy52MS5BZ2VudEF0dHJpYnV0aW9uEhUKDWZvcmdlX2FjY291bnQYCiABKAkSDQoFZHJhZnQYCyABKAgSKQoHY2hhbmdlZBgMIAEoCzIYLmNvbXBhc3MudjEuQ2hhbmdlZFN0YXRzEikKBmNoZWNrcxgNIAEoCzIZLmNvbXBhc3MudjEuQ2hlY2tzU3VtbWFyeRIjCgdyZXZpZXdzGA4gAygLMhIuY29tcGFzcy52MS5SZXZpZXcSKQoHdGhyZWFkcxgPIAMoCzIYLmNvbXBhc3MudjEuUmV2aWV3VGhyZWFkIlMKDUNoZWNrc1N1bW1hcnkSEAoIaGVhZF9zaGEYASABKAkSDQoFc3RhdGUYAiABKAkSIQoGY2hlY2tzGAMgAygLMhEuY29tcGFzcy52MS5DaGVjayJDCgVDaGVjaxIMCgRuYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgsKA3VybBgDIAEoCRIQCghyZXF1aXJlZBgEIAEoCCJDCgxDaGFuZ2VkU3RhdHMSDQoFZmlsZXMYASABKA0SEQoJYWRkaXRpb25zGAIgASgNEhEKCWRlbGV0aW9ucxgDIAEoDSJDCgpUcmFja2VyUmVmEgwKBGtpbmQYASABKAkSCgoCaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEgsKA3VybBgEIAEoCSJHCgZSZXZpZXcSDgoGYXV0aG9yGAEgASgJEg4KBmlzX2JvdBgCIAEoCBIPCgd2ZXJkaWN0GAMgASgJEgwKBGJvZHkYBCABKAkiVQoMUmV2aWV3VGhyZWFkEgwKBHBhdGgYASABKAkSEAoIcmVzb2x2ZWQYAiABKAgSJQoIY29tbWVudHMYAyADKAsyEy5jb21wYXNzLnYxLkNvbW1lbnQiNwoHQ29tbWVudBIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEgwKBGJvZHkYAyABKAkqZAoOU2VjcmV0RGVsaXZlcnkSHwobU0VDUkVUX0RFTElWRVJZX1VOU1BFQ0lGSUVEEAASGAoUU0VDUkVUX0RFTElWRVJZX0ZJTEUQARIXChNTRUNSRVRfREVMSVZFUllfRU5WEAIqcAoKU2VjcmV0S2luZBIbChdTRUNSRVRfS0lORF9VTlNQRUNJRklFRBAAEhcKE1NFQ1JFVF9LSU5EX0dFTkVSSUMQARIYChRTRUNSRVRfS0lORF9QUk9WSURFUhACEhIKDlNFQ1JFVF9LSU5EX0dIEAMqQwoLU2VydmVyU3RhdGUSHAoYU0VSVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSU0VSVkVSX1NUQVRFX1JFQURZEAEqggIKEUFnZW50U2Vzc2lvblN0YXRlEiMKH0FHRU5UX1NFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBR0VOVF9TRVNTSU9OX1NUQVRFX1NUQVJUSU5HEAESHQoZQUdFTlRfU0VTU0lPTl9TVEFURV9SRUFEWRACEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfV09SS0lORxADEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfU1RPUFBFRBAEEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfRVJST1JFRBAFEiQKIEFHRU5UX1NFU1NJT05fU1RBVEVfRElTQ09OTkVDVEVEEAYq0gEKE0FnZW50VG9vbENhbGxTdGF0dXMSJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfUEVORElORxABEiYKIkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfSU5fUFJPR1JFU1MQAhIkCiBBR0VOVF9UT09MX0NBTExfU1RBVFVTX0NPTVBMRVRFRBADEiEKHUFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfRkFJTEVEEAQqtAEKFEFnZW50UGxhbkVudHJ5U3RhdHVzEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfUEVORElORxABEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX0lOX1BST0dSRVNTEAISJQohQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfQ09NUExFVEVEEAMqhAEKFFNlc3Npb25JbmplY3Rpb25LaW5kEiYKIlNFU1NJT05fSU5KRUNUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIgChxTRVNTSU9OX0lOSkVDVElPTl9LSU5EX1NURUVSEAESIgoeU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9ERUxJVkVSEAIqdAoQU2Vzc2lvbkVycm9yS2luZBIiCh5TRVNTSU9OX0VSUk9SX0tJTkRfVU5TUEVDSUZJRUQQABIcChhTRVNTSU9OX0VSUk9SX0tJTkRfRVJST1IQARIeChpTRVNTSU9OX0VSUk9SX0tJTkRfQUJPUlRFRBACKvEBCgpJc3N1ZVN0YXRlEhsKF0lTU1VFX1NUQVRFX1VOU1BFQ0lGSUVEEAASFwoTSVNTVUVfU1RBVEVfQkFDS0xPRxABEhQKEElTU1VFX1NUQVRFX1RPRE8QAhIWChJJU1NVRV9TVEFURV9RVUVVRUQQAxIXChNJU1NVRV9TVEFURV9CTE9DS0VEEAQSGwoXSVNTVUVfU1RBVEVfSU5fUFJPR1JFU1MQBRIZChVJU1NVRV9TVEFURV9JTl9SRVZJRVcQBhIUChBJU1NVRV9TVEFURV9ET05FEAcSGAoUSVNTVUVfU1RBVEVfQVJDSElWRUQQCCqcAQoNRm9yZ2VQcm92aWRlchIeChpGT1JHRV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEhkKFUZPUkdFX1BST1ZJREVSX0dJVEhVQhABEhkKFUZPUkdFX1BST1ZJREVSX0dJVExBQhACEhoKFkZPUkdFX1BST1ZJREVSX0ZPUkdFSk8QAxIZChVGT1JHRV9QUk9WSURFUl9MSU5FQVIQBDLTDgoOQ29tcGFzc1NlcnZpY2USVAoNR2V0U2VydmVySW5mbxIgLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1JlcXVlc3QaIS5jb21wYXNzLnYxLkdldFNlcnZlckluZm9SZXNwb25zZRI/CgZXaG9BbUkSGS5jb21wYXNzLnYxLldob0FtSVJlcXVlc3QaGi5jb21wYXNzLnYxLldob0FtSVJlc3BvbnNlElwKD1N1YnNjcmliZUV2ZW50cxIiLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVxdWVzdBojLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2UwARJaCg9MaXN0Qm9hcmRJc3N1ZXMSIi5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QaIy5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEnIKF1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlEiouY29tcGFzcy52MS5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QaKy5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USYAoRU3RhcnRBZ2VudFNlc3Npb24SJC5jb21wYXNzLnYxLlN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBolLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRJLCgpTcGF3bkFnZW50Eh0uY29tcGFzcy52MS5TcGF3bkFnZW50UmVxdWVzdBoeLmNvbXBhc3MudjEuU3Bhd25BZ2VudFJlc3BvbnNlEl0KEFN0b3BBZ2VudFNlc3Npb24SIy5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXF1ZXN0GiQuY29tcGFzcy52MS5TdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2USaQoUUmVtb3ZlQWdlbnRXb3Jrc3BhY2USJy5jb21wYXNzLnYxLlJlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBooLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJjChJSZWxvYWRBZ2VudFNlc3Npb24SJS5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlcXVlc3QaJi5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlElcKDkdldEFnZW50U3RhdHVzEiEuY29tcGFzcy52MS5HZXRBZ2VudFN0YXR1c1JlcXVlc3QaIi5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVzcG9uc2USYgoVU3Vic2NyaWJlQWdlbnRTZXNzaW9uEiguY29tcGFzcy52MS5TdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0Gh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25GcmFtZTABEksKCklzc3VlVG9rZW4SHS5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXF1ZXN0Gh4uY29tcGFzcy52MS5Jc3N1ZVRva2VuUmVzcG9uc2USTgoLUmV2b2tlVG9rZW4SHi5jb21wYXNzLnYxLlJldm9rZVRva2VuUmVxdWVzdBofLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXNwb25zZRJXCg5QdXRBZ2VudENvbmZpZxIhLmNvbXBhc3MudjEuUHV0QWdlbnRDb25maWdSZXF1ZXN0GiIuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEmMKEkdldEFnZW50Q29uZmlnSW5mbxIlLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdBomLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USYAoRRGVsZXRlQWdlbnRDb25maWcSJC5jb21wYXNzLnYxLkRlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdBolLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZRJdChBQdXRNb2RlbFJlZ2lzdHJ5EiMuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBokLmNvbXBhc3MudjEuUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEl0KEEdldE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5HZXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USZgoTRGVsZXRlTW9kZWxSZWdpc3RyeRImLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QaJy5jb21wYXNzLnYxLkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZTL9AQoOU2VjcmV0c1NlcnZpY2USSAoJU2V0U2VjcmV0EhwuY29tcGFzcy52MS5TZXRTZWNyZXRSZXF1ZXN0Gh0uY29tcGFzcy52MS5TZXRTZWNyZXRSZXNwb25zZRJOCgtMaXN0U2VjcmV0cxIeLmNvbXBhc3MudjEuTGlzdFNlY3JldHNSZXF1ZXN0Gh8uY29tcGFzcy52MS5MaXN0U2VjcmV0c1Jlc3BvbnNlElEKDERlbGV0ZVNlY3JldBIfLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVxdWVzdBogLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVzcG9uc2ViBnByb3RvMw", [file_google_protobuf_timestamp]); /** * @generated from message compass.v1.SetSecretRequest @@ -1948,12 +1948,8 @@ export const DeleteModelRegistryResponseSchema: GenMessage & { * @generated from field: string agent_handle = 1; */ agentHandle: string; + + /** + * the owning user's handle, from the same header parse + * + * @generated from field: string owner_handle = 2; + */ + ownerHandle: string; }; /** diff --git a/packages/compass-client/src/gen/compass/v1/compass_pb.ts b/packages/compass-client/src/gen/compass/v1/compass_pb.ts index 1f01f95bc..389cc0abb 100644 --- a/packages/compass-client/src/gen/compass/v1/compass_pb.ts +++ b/packages/compass-client/src/gen/compass/v1/compass_pb.ts @@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file compass/v1/compass.proto. */ export const file_compass_v1_compass: GenFile = /*@__PURE__*/ - fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiFgoUR2V0U2VydmVySW5mb1JlcXVlc3QiPQoVR2V0U2VydmVySW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSEwoLYXBpX3ZlcnNpb24YAiABKAkiDwoNV2hvQW1JUmVxdWVzdCIkCg5XaG9BbUlSZXNwb25zZRISCgphY2NvdW50X2lkGAEgASgJIkMKFlN1YnNjcmliZUV2ZW50c1JlcXVlc3QSEQoJc2luY2Vfc2VxGAEgASgEEhYKDmluc3RhbmNlX2Vwb2NoGAIgASgEIuIDChdTdWJzY3JpYmVFdmVudHNSZXNwb25zZRILCgNzZXEYASABKAQSEgoKYXRfdW5peF9tcxgCIAEoAxIWCg5pbnN0YW5jZV9lcG9jaBgDIAEoBBIUCgxzbmFwc2hvdF9zZXEYBCABKAQSMQoNc2VydmVyX3N0YXR1cxgKIAEoCzIYLmNvbXBhc3MudjEuU2VydmVyU3RhdHVzSAASNQoPcmVzeW5jX3JlcXVpcmVkGAsgASgLMhouY29tcGFzcy52MS5SZXN5bmNSZXF1aXJlZEgAEj4KFGFnZW50X3Nlc3Npb25fc3RhdHVzGAwgASgLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXNIABI8ChNhZ2VudF9tZXNzYWdlX2NodW5rGA0gASgLMh0uY29tcGFzcy52MS5BZ2VudE1lc3NhZ2VDaHVua0gAEjQKD2FnZW50X3Rvb2xfY2FsbBgOIAEoCzIZLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbEgAEisKCmFnZW50X3BsYW4YDyABKAsyFS5jb21wYXNzLnYxLkFnZW50UGxhbkgAEiIKBWlzc3VlGBAgASgLMhEuY29tcGFzcy52MS5Jc3N1ZUgAQgkKB3BheWxvYWQiLgoWTGlzdEJvYXJkSXNzdWVzUmVxdWVzdBIUCgxzbmFwc2hvdF9zZXEYASABKAQiPAoXTGlzdEJvYXJkSXNzdWVzUmVzcG9uc2USIQoGaXNzdWVzGAEgAygLMhEuY29tcGFzcy52MS5Jc3N1ZSI2CgxTZXJ2ZXJTdGF0dXMSJgoFc3RhdGUYASABKA4yFy5jb21wYXNzLnYxLlNlcnZlclN0YXRlIhAKDlJlc3luY1JlcXVpcmVkInAKEkFnZW50U2Vzc2lvblN0YXR1cxISCgpzZXNzaW9uX2lkGAEgASgJEiwKBXN0YXRlGAIgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZRIYChBhZ2VudF9hY2NvdW50X2lkGAMgASgJIkkKEUFnZW50TWVzc2FnZUNodW5rEhIKCnNlc3Npb25faWQYASABKAkSDAoEdGV4dBgCIAEoCRISCgppc190aG91Z2h0GAMgASgIInkKDUFnZW50VG9vbENhbGwSEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSLwoGc3RhdHVzGAQgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIkwKCUFnZW50UGxhbhISCgpzZXNzaW9uX2lkGAEgASgJEisKB2VudHJpZXMYAiADKAsyGi5jb21wYXNzLnYxLkFnZW50UGxhbkVudHJ5IlMKDkFnZW50UGxhbkVudHJ5Eg8KB2NvbnRlbnQYASABKAkSMAoGc3RhdHVzGAIgASgOMiAuY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeVN0YXR1cyLfAwoMU2Vzc2lvbkV2ZW50EhAKCGV2ZW50X2lkGAEgASgJEhIKCmF0X3VuaXhfbXMYAiABKAMSOgoOYXNzaXN0YW50X3RleHQYAyABKAsyIC5jb21wYXNzLnYxLlNlc3Npb25Bc3Npc3RhbnRUZXh0SAASLwoIdGhpbmtpbmcYBCABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25UaGlua2luZ0gAEjAKCXRvb2xfY2FsbBgFIAEoCzIbLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsSAASPQoQdG9vbF9jYWxsX3VwZGF0ZRgGIAEoCzIhLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsVXBkYXRlSAASJwoEcGxhbhgHIAEoCzIXLmNvbXBhc3MudjEuU2Vzc2lvblBsYW5IABIrCgZub3RpY2UYCCABKAsyGS5jb21wYXNzLnYxLlNlc3Npb25Ob3RpY2VIABI5ChFzZXNzaW9uX2luamVjdGlvbhgJIAEoCzIcLmNvbXBhc3MudjEuU2Vzc2lvbkluamVjdGlvbkgAEjEKDXNlc3Npb25fZXJyb3IYCiABKAsyGC5jb21wYXNzLnYxLlNlc3Npb25FcnJvckgAQgcKBWV2ZW50IjgKFFNlc3Npb25Bc3Npc3RhbnRUZXh0EgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSIzCg9TZXNzaW9uVGhpbmtpbmcSDAoEdGV4dBgBIAEoCRISCgptZXNzYWdlX2lkGAIgASgJImcKD1Nlc3Npb25Ub29sQ2FsbBIUCgx0b29sX2NhbGxfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSLwoGc3RhdHVzGAMgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIpoBChVTZXNzaW9uVG9vbENhbGxVcGRhdGUSFAoMdG9vbF9jYWxsX2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cxIOCgZvdXRwdXQYAyABKAkSKgoFZGlmZnMYBCADKAsyGy5jb21wYXNzLnYxLlNlc3Npb25GaWxlRGlmZiJVCg9TZXNzaW9uRmlsZURpZmYSDAoEcGF0aBgBIAEoCRIVCghvbGRfdGV4dBgCIAEoCUgAiAEBEhAKCG5ld190ZXh0GAMgASgJQgsKCV9vbGRfdGV4dCI6CgtTZXNzaW9uUGxhbhIrCgdlbnRyaWVzGAEgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSI5Cg1TZXNzaW9uTm90aWNlEgwKBHRleHQYASABKAkSEQoEbGluaxgCIAEoCUgAiAEBQgcKBV9saW5rIoMBChBTZXNzaW9uSW5qZWN0aW9uEjEKB29wX2tpbmQYASABKA4yIC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25LaW5kEhIKCm1lc3NhZ2VfaWQYAiABKAkSEwoLZnJvbV9oYW5kbGUYAyABKAkSEwoLdHJhY2VwYXJlbnQYBCABKAkiawoMU2Vzc2lvbkVycm9yEioKBGtpbmQYASABKA4yHC5jb21wYXNzLnYxLlNlc3Npb25FcnJvcktpbmQSDwoHbWVzc2FnZRgCIAEoCRITCgZzdGF0dXMYAyABKAVIAIgBAUIJCgdfc3RhdHVzIjIKHFN1YnNjcmliZUFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJ+ChFBZ2VudFNlc3Npb25GcmFtZRISCgpzZXNzaW9uX2lkGAEgASgJEicKBWV2ZW50GAIgASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXZlbnQSLAoFc3RhdGUYAyABKA4yHS5jb21wYXNzLnYxLkFnZW50U2Vzc2lvblN0YXRlInAKHlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVxdWVzdBIUCgxhZ2VudF9oYW5kbGUYASABKAkSGQoRY2xpZW50X3JlcXVlc3RfaWQYAiABKAkSDwoHcGVyc29uYRgDIAEoCRIMCgRyb2xlGAQgASgJIjkKH1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USFgoOY29udGFpbmVyX25hbWUYASABKAkiUAobUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJIh4KHFJlbW92ZUFnZW50V29ya3NwYWNlUmVzcG9uc2UiYwoYU3RhcnRBZ2VudFNlc3Npb25SZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEXJlc3VtZV9zZXNzaW9uX2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCIvChlTdGFydEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiWgoRU3Bhd25BZ2VudFJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCJAChJTcGF3bkFnZW50UmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIWCg5jb250YWluZXJfbmFtZRgCIAEoCSItChdTdG9wQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIhoKGFN0b3BBZ2VudFNlc3Npb25SZXNwb25zZSIvChlSZWxvYWRBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiMAoaUmVsb2FkQWdlbnRTZXNzaW9uUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCSIrChVHZXRBZ2VudFN0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJKChZHZXRBZ2VudFN0YXR1c1Jlc3BvbnNlEjAKCHN0YXR1c2VzGAEgAygLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXMiKwoRSXNzdWVUb2tlblJlcXVlc3QSFgoOYWNjb3VudF9oYW5kbGUYASABKAkiIwoSSXNzdWVUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJIigKElJldm9rZVRva2VuUmVxdWVzdBISCgV0b2tlbhgBIAEoCUIDgAEBIhUKE1Jldm9rZVRva2VuUmVzcG9uc2UiJwoVUHV0QWdlbnRDb25maWdSZXF1ZXN0Eg4KBmJ1bmRsZRgBIAEoDCIpChZQdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkiGwoZR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdCLaAQoaR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USDwoHdmVyc2lvbhgBIAEoCRIOCgZza2lsbHMYAiADKAkSEgoKZXh0ZW5zaW9ucxgDIAMoCRITCgttY3Bfc2VydmVycxgEIAMoCRIUCgxoYXNfc2V0dGluZ3MYBSABKAgSFQoNaGFzX2FnZW50c19tZBgGIAEoCBINCgVydWxlcxgHIAMoCRIRCglzdWJhZ2VudHMYCCADKAkSEgoKaGFzX21vZGVscxgJIAEoCBIPCgdwcm9tcHRzGAogAygJIhoKGERlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdCIbChlEZWxldGVBZ2VudENvbmZpZ1Jlc3BvbnNlIjQKDk1vZGVsQ2FuZGlkYXRlEhAKCHByb3ZpZGVyGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJInEKDU1vZGVsTWV0YWRhdGESFgoOY29udGV4dF93aW5kb3cYASABKAMSHAoUaW5wdXRfY29zdF9taWNyb191c2QYAiABKAMSHQoVb3V0cHV0X2Nvc3RfbWljcm9fdXNkGAMgASgDEgsKA2FwaRgEIAEoCSKHAQoSTW9kZWxSZWdpc3RyeUVudHJ5EhQKDGRpc3BsYXlfbmFtZRgBIAEoCRIuCgpjYW5kaWRhdGVzGAIgAygLMhouY29tcGFzcy52MS5Nb2RlbENhbmRpZGF0ZRIrCghtZXRhZGF0YRgDIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxNZXRhZGF0YSKYAQoNTW9kZWxSZWdpc3RyeRI3CgdlbnRyaWVzGAEgAygLMiYuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5LkVudHJpZXNFbnRyeRpOCgxFbnRyaWVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgLMh4uY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5RW50cnk6AjgBImAKF1B1dE1vZGVsUmVnaXN0cnlSZXF1ZXN0EisKCHJlZ2lzdHJ5GAEgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5EhgKEGV4cGVjdGVkX3ZlcnNpb24YAiABKAMiKwoYUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMiGQoXR2V0TW9kZWxSZWdpc3RyeVJlcXVlc3QiWAoYR2V0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMSKwoIcmVnaXN0cnkYAiABKAsyGS5jb21wYXNzLnYxLk1vZGVsUmVnaXN0cnkiHAoaRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QiHQobRGVsZXRlTW9kZWxSZWdpc3RyeVJlc3BvbnNlIigKEEFnZW50QXR0cmlidXRpb24SFAoMYWdlbnRfaGFuZGxlGAEgASgJIkUKCEZvcmdlUmVmEisKCHByb3ZpZGVyGAEgASgOMhkuY29tcGFzcy52MS5Gb3JnZVByb3ZpZGVyEgwKBGhvc3QYAiABKAki1AMKBUlzc3VlEgoKAmlkGAEgASgJEiMKBWZvcmdlGAIgASgLMhQuY29tcGFzcy52MS5Gb3JnZVJlZhIMCgRyZXBvGAMgASgJEg4KBm51bWJlchgEIAEoDRINCgV0aXRsZRgFIAEoCRIMCgRib2R5GAYgASgJEhMKC2ZvcmdlX3N0YXRlGAcgASgJEgsKA3VybBgIIAEoCRIrCgVhZ2VudBgJIAEoCzIcLmNvbXBhc3MudjEuQWdlbnRBdHRyaWJ1dGlvbhIVCg1mb3JnZV9hY2NvdW50GAogASgJEg4KBmxhYmVscxgLIAMoCRIuCgp1cGRhdGVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIlCgVzdGF0ZRgMIAEoDjIWLmNvbXBhc3MudjEuSXNzdWVTdGF0ZRIQCghwcmlvcml0eRgNIAEoCRIQCghhc3NpZ25lZRgOIAEoCRIPCgdzdW1tYXJ5GA8gASgJEg4KBmJyYW5jaBgQIAEoCRIkCgNwcnMYESADKAsyFy5jb21wYXNzLnYxLlB1bGxSZXF1ZXN0EicKB3RyYWNrZXIYEiABKAsyFi5jb21wYXNzLnYxLlRyYWNrZXJSZWYingMKC1B1bGxSZXF1ZXN0EiMKBWZvcmdlGAEgASgLMhQuY29tcGFzcy52MS5Gb3JnZVJlZhIMCgRyZXBvGAIgASgJEg4KBm51bWJlchgDIAEoDRINCgV0aXRsZRgEIAEoCRITCgtmb3JnZV9zdGF0ZRgFIAEoCRILCgN1cmwYBiABKAkSEAoIaGVhZF9yZWYYByABKAkSEAoIYmFzZV9yZWYYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRINCgVkcmFmdBgLIAEoCBIpCgdjaGFuZ2VkGAwgASgLMhguY29tcGFzcy52MS5DaGFuZ2VkU3RhdHMSKQoGY2hlY2tzGA0gASgLMhkuY29tcGFzcy52MS5DaGVja3NTdW1tYXJ5EiMKB3Jldmlld3MYDiADKAsyEi5jb21wYXNzLnYxLlJldmlldxIpCgd0aHJlYWRzGA8gAygLMhguY29tcGFzcy52MS5SZXZpZXdUaHJlYWQiUwoNQ2hlY2tzU3VtbWFyeRIQCghoZWFkX3NoYRgBIAEoCRINCgVzdGF0ZRgCIAEoCRIhCgZjaGVja3MYAyADKAsyES5jb21wYXNzLnYxLkNoZWNrIkMKBUNoZWNrEgwKBG5hbWUYASABKAkSDQoFc3RhdGUYAiABKAkSCwoDdXJsGAMgASgJEhAKCHJlcXVpcmVkGAQgASgIIkMKDENoYW5nZWRTdGF0cxINCgVmaWxlcxgBIAEoDRIRCglhZGRpdGlvbnMYAiABKA0SEQoJZGVsZXRpb25zGAMgASgNIkMKClRyYWNrZXJSZWYSDAoEa2luZBgBIAEoCRIKCgJpZBgCIAEoCRIOCgZzdGF0dXMYAyABKAkSCwoDdXJsGAQgASgJIkcKBlJldmlldxIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEg8KB3ZlcmRpY3QYAyABKAkSDAoEYm9keRgEIAEoCSJVCgxSZXZpZXdUaHJlYWQSDAoEcGF0aBgBIAEoCRIQCghyZXNvbHZlZBgCIAEoCBIlCghjb21tZW50cxgDIAMoCzITLmNvbXBhc3MudjEuQ29tbWVudCI3CgdDb21tZW50Eg4KBmF1dGhvchgBIAEoCRIOCgZpc19ib3QYAiABKAgSDAoEYm9keRgDIAEoCSpkCg5TZWNyZXREZWxpdmVyeRIfChtTRUNSRVRfREVMSVZFUllfVU5TUEVDSUZJRUQQABIYChRTRUNSRVRfREVMSVZFUllfRklMRRABEhcKE1NFQ1JFVF9ERUxJVkVSWV9FTlYQAipwCgpTZWNyZXRLaW5kEhsKF1NFQ1JFVF9LSU5EX1VOU1BFQ0lGSUVEEAASFwoTU0VDUkVUX0tJTkRfR0VORVJJQxABEhgKFFNFQ1JFVF9LSU5EX1BST1ZJREVSEAISEgoOU0VDUkVUX0tJTkRfR0gQAypDCgtTZXJ2ZXJTdGF0ZRIcChhTRVJWRVJfU1RBVEVfVU5TUEVDSUZJRUQQABIWChJTRVJWRVJfU1RBVEVfUkVBRFkQASqCAgoRQWdlbnRTZXNzaW9uU3RhdGUSIwofQUdFTlRfU0VTU0lPTl9TVEFURV9VTlNQRUNJRklFRBAAEiAKHEFHRU5UX1NFU1NJT05fU1RBVEVfU1RBUlRJTkcQARIdChlBR0VOVF9TRVNTSU9OX1NUQVRFX1JFQURZEAISHwobQUdFTlRfU0VTU0lPTl9TVEFURV9XT1JLSU5HEAMSHwobQUdFTlRfU0VTU0lPTl9TVEFURV9TVE9QUEVEEAQSHwobQUdFTlRfU0VTU0lPTl9TVEFURV9FUlJPUkVEEAUSJAogQUdFTlRfU0VTU0lPTl9TVEFURV9ESVNDT05ORUNURUQQBirSAQoTQWdlbnRUb29sQ2FsbFN0YXR1cxImCiJBR0VOVF9UT09MX0NBTExfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIgoeQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19QRU5ESU5HEAESJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19JTl9QUk9HUkVTUxACEiQKIEFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfQ09NUExFVEVEEAMSIQodQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19GQUlMRUQQBCq0AQoUQWdlbnRQbGFuRW50cnlTdGF0dXMSJwojQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfVU5TUEVDSUZJRUQQABIjCh9BR0VOVF9QTEFOX0VOVFJZX1NUQVRVU19QRU5ESU5HEAESJwojQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfSU5fUFJPR1JFU1MQAhIlCiFBR0VOVF9QTEFOX0VOVFJZX1NUQVRVU19DT01QTEVURUQQAyqEAQoUU2Vzc2lvbkluamVjdGlvbktpbmQSJgoiU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9VTlNQRUNJRklFRBAAEiAKHFNFU1NJT05fSU5KRUNUSU9OX0tJTkRfU1RFRVIQARIiCh5TRVNTSU9OX0lOSkVDVElPTl9LSU5EX0RFTElWRVIQAip0ChBTZXNzaW9uRXJyb3JLaW5kEiIKHlNFU1NJT05fRVJST1JfS0lORF9VTlNQRUNJRklFRBAAEhwKGFNFU1NJT05fRVJST1JfS0lORF9FUlJPUhABEh4KGlNFU1NJT05fRVJST1JfS0lORF9BQk9SVEVEEAIq8QEKCklzc3VlU3RhdGUSGwoXSVNTVUVfU1RBVEVfVU5TUEVDSUZJRUQQABIXChNJU1NVRV9TVEFURV9CQUNLTE9HEAESFAoQSVNTVUVfU1RBVEVfVE9ETxACEhYKEklTU1VFX1NUQVRFX1FVRVVFRBADEhcKE0lTU1VFX1NUQVRFX0JMT0NLRUQQBBIbChdJU1NVRV9TVEFURV9JTl9QUk9HUkVTUxAFEhkKFUlTU1VFX1NUQVRFX0lOX1JFVklFVxAGEhQKEElTU1VFX1NUQVRFX0RPTkUQBxIYChRJU1NVRV9TVEFURV9BUkNISVZFRBAIKpwBCg1Gb3JnZVByb3ZpZGVyEh4KGkZPUkdFX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASGQoVRk9SR0VfUFJPVklERVJfR0lUSFVCEAESGQoVRk9SR0VfUFJPVklERVJfR0lUTEFCEAISGgoWRk9SR0VfUFJPVklERVJfRk9SR0VKTxADEhkKFUZPUkdFX1BST1ZJREVSX0xJTkVBUhAEMtMOCg5Db21wYXNzU2VydmljZRJUCg1HZXRTZXJ2ZXJJbmZvEiAuY29tcGFzcy52MS5HZXRTZXJ2ZXJJbmZvUmVxdWVzdBohLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1Jlc3BvbnNlEj8KBldob0FtSRIZLmNvbXBhc3MudjEuV2hvQW1JUmVxdWVzdBoaLmNvbXBhc3MudjEuV2hvQW1JUmVzcG9uc2USXAoPU3Vic2NyaWJlRXZlbnRzEiIuY29tcGFzcy52MS5TdWJzY3JpYmVFdmVudHNSZXF1ZXN0GiMuY29tcGFzcy52MS5TdWJzY3JpYmVFdmVudHNSZXNwb25zZTABEloKD0xpc3RCb2FyZElzc3VlcxIiLmNvbXBhc3MudjEuTGlzdEJvYXJkSXNzdWVzUmVxdWVzdBojLmNvbXBhc3MudjEuTGlzdEJvYXJkSXNzdWVzUmVzcG9uc2UScgoXUHJvdmlzaW9uQWdlbnRXb3Jrc3BhY2USKi5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVxdWVzdBorLmNvbXBhc3MudjEuUHJvdmlzaW9uQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJgChFTdGFydEFnZW50U2Vzc2lvbhIkLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXF1ZXN0GiUuY29tcGFzcy52MS5TdGFydEFnZW50U2Vzc2lvblJlc3BvbnNlEksKClNwYXduQWdlbnQSHS5jb21wYXNzLnYxLlNwYXduQWdlbnRSZXF1ZXN0Gh4uY29tcGFzcy52MS5TcGF3bkFnZW50UmVzcG9uc2USXQoQU3RvcEFnZW50U2Vzc2lvbhIjLmNvbXBhc3MudjEuU3RvcEFnZW50U2Vzc2lvblJlcXVlc3QaJC5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXNwb25zZRJpChRSZW1vdmVBZ2VudFdvcmtzcGFjZRInLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXF1ZXN0GiguY29tcGFzcy52MS5SZW1vdmVBZ2VudFdvcmtzcGFjZVJlc3BvbnNlEmMKElJlbG9hZEFnZW50U2Vzc2lvbhIlLmNvbXBhc3MudjEuUmVsb2FkQWdlbnRTZXNzaW9uUmVxdWVzdBomLmNvbXBhc3MudjEuUmVsb2FkQWdlbnRTZXNzaW9uUmVzcG9uc2USVwoOR2V0QWdlbnRTdGF0dXMSIS5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVxdWVzdBoiLmNvbXBhc3MudjEuR2V0QWdlbnRTdGF0dXNSZXNwb25zZRJiChVTdWJzY3JpYmVBZ2VudFNlc3Npb24SKC5jb21wYXNzLnYxLlN1YnNjcmliZUFnZW50U2Vzc2lvblJlcXVlc3QaHS5jb21wYXNzLnYxLkFnZW50U2Vzc2lvbkZyYW1lMAESSwoKSXNzdWVUb2tlbhIdLmNvbXBhc3MudjEuSXNzdWVUb2tlblJlcXVlc3QaHi5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXNwb25zZRJOCgtSZXZva2VUb2tlbhIeLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXF1ZXN0Gh8uY29tcGFzcy52MS5SZXZva2VUb2tlblJlc3BvbnNlElcKDlB1dEFnZW50Q29uZmlnEiEuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1JlcXVlc3QaIi5jb21wYXNzLnYxLlB1dEFnZW50Q29uZmlnUmVzcG9uc2USYwoSR2V0QWdlbnRDb25maWdJbmZvEiUuY29tcGFzcy52MS5HZXRBZ2VudENvbmZpZ0luZm9SZXF1ZXN0GiYuY29tcGFzcy52MS5HZXRBZ2VudENvbmZpZ0luZm9SZXNwb25zZRJgChFEZWxldGVBZ2VudENvbmZpZxIkLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXF1ZXN0GiUuY29tcGFzcy52MS5EZWxldGVBZ2VudENvbmZpZ1Jlc3BvbnNlEl0KEFB1dE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLlB1dE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USXQoQR2V0TW9kZWxSZWdpc3RyeRIjLmNvbXBhc3MudjEuR2V0TW9kZWxSZWdpc3RyeVJlcXVlc3QaJC5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXNwb25zZRJmChNEZWxldGVNb2RlbFJlZ2lzdHJ5EiYuY29tcGFzcy52MS5EZWxldGVNb2RlbFJlZ2lzdHJ5UmVxdWVzdBonLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlc3BvbnNlMv0BCg5TZWNyZXRzU2VydmljZRJICglTZXRTZWNyZXQSHC5jb21wYXNzLnYxLlNldFNlY3JldFJlcXVlc3QaHS5jb21wYXNzLnYxLlNldFNlY3JldFJlc3BvbnNlEk4KC0xpc3RTZWNyZXRzEh4uY29tcGFzcy52MS5MaXN0U2VjcmV0c1JlcXVlc3QaHy5jb21wYXNzLnYxLkxpc3RTZWNyZXRzUmVzcG9uc2USUQoMRGVsZXRlU2VjcmV0Eh8uY29tcGFzcy52MS5EZWxldGVTZWNyZXRSZXF1ZXN0GiAuY29tcGFzcy52MS5EZWxldGVTZWNyZXRSZXNwb25zZWIGcHJvdG8z", [file_google_protobuf_timestamp]); + fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiFgoUR2V0U2VydmVySW5mb1JlcXVlc3QiPQoVR2V0U2VydmVySW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSEwoLYXBpX3ZlcnNpb24YAiABKAkiDwoNV2hvQW1JUmVxdWVzdCIkCg5XaG9BbUlSZXNwb25zZRISCgphY2NvdW50X2lkGAEgASgJIkMKFlN1YnNjcmliZUV2ZW50c1JlcXVlc3QSEQoJc2luY2Vfc2VxGAEgASgEEhYKDmluc3RhbmNlX2Vwb2NoGAIgASgEIuIDChdTdWJzY3JpYmVFdmVudHNSZXNwb25zZRILCgNzZXEYASABKAQSEgoKYXRfdW5peF9tcxgCIAEoAxIWCg5pbnN0YW5jZV9lcG9jaBgDIAEoBBIUCgxzbmFwc2hvdF9zZXEYBCABKAQSMQoNc2VydmVyX3N0YXR1cxgKIAEoCzIYLmNvbXBhc3MudjEuU2VydmVyU3RhdHVzSAASNQoPcmVzeW5jX3JlcXVpcmVkGAsgASgLMhouY29tcGFzcy52MS5SZXN5bmNSZXF1aXJlZEgAEj4KFGFnZW50X3Nlc3Npb25fc3RhdHVzGAwgASgLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXNIABI8ChNhZ2VudF9tZXNzYWdlX2NodW5rGA0gASgLMh0uY29tcGFzcy52MS5BZ2VudE1lc3NhZ2VDaHVua0gAEjQKD2FnZW50X3Rvb2xfY2FsbBgOIAEoCzIZLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbEgAEisKCmFnZW50X3BsYW4YDyABKAsyFS5jb21wYXNzLnYxLkFnZW50UGxhbkgAEiIKBWlzc3VlGBAgASgLMhEuY29tcGFzcy52MS5Jc3N1ZUgAQgkKB3BheWxvYWQiLgoWTGlzdEJvYXJkSXNzdWVzUmVxdWVzdBIUCgxzbmFwc2hvdF9zZXEYASABKAQiPAoXTGlzdEJvYXJkSXNzdWVzUmVzcG9uc2USIQoGaXNzdWVzGAEgAygLMhEuY29tcGFzcy52MS5Jc3N1ZSI2CgxTZXJ2ZXJTdGF0dXMSJgoFc3RhdGUYASABKA4yFy5jb21wYXNzLnYxLlNlcnZlclN0YXRlIhAKDlJlc3luY1JlcXVpcmVkInAKEkFnZW50U2Vzc2lvblN0YXR1cxISCgpzZXNzaW9uX2lkGAEgASgJEiwKBXN0YXRlGAIgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZRIYChBhZ2VudF9hY2NvdW50X2lkGAMgASgJIkkKEUFnZW50TWVzc2FnZUNodW5rEhIKCnNlc3Npb25faWQYASABKAkSDAoEdGV4dBgCIAEoCRISCgppc190aG91Z2h0GAMgASgIInkKDUFnZW50VG9vbENhbGwSEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgx0b29sX2NhbGxfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSLwoGc3RhdHVzGAQgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIkwKCUFnZW50UGxhbhISCgpzZXNzaW9uX2lkGAEgASgJEisKB2VudHJpZXMYAiADKAsyGi5jb21wYXNzLnYxLkFnZW50UGxhbkVudHJ5IlMKDkFnZW50UGxhbkVudHJ5Eg8KB2NvbnRlbnQYASABKAkSMAoGc3RhdHVzGAIgASgOMiAuY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeVN0YXR1cyLfAwoMU2Vzc2lvbkV2ZW50EhAKCGV2ZW50X2lkGAEgASgJEhIKCmF0X3VuaXhfbXMYAiABKAMSOgoOYXNzaXN0YW50X3RleHQYAyABKAsyIC5jb21wYXNzLnYxLlNlc3Npb25Bc3Npc3RhbnRUZXh0SAASLwoIdGhpbmtpbmcYBCABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25UaGlua2luZ0gAEjAKCXRvb2xfY2FsbBgFIAEoCzIbLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsSAASPQoQdG9vbF9jYWxsX3VwZGF0ZRgGIAEoCzIhLmNvbXBhc3MudjEuU2Vzc2lvblRvb2xDYWxsVXBkYXRlSAASJwoEcGxhbhgHIAEoCzIXLmNvbXBhc3MudjEuU2Vzc2lvblBsYW5IABIrCgZub3RpY2UYCCABKAsyGS5jb21wYXNzLnYxLlNlc3Npb25Ob3RpY2VIABI5ChFzZXNzaW9uX2luamVjdGlvbhgJIAEoCzIcLmNvbXBhc3MudjEuU2Vzc2lvbkluamVjdGlvbkgAEjEKDXNlc3Npb25fZXJyb3IYCiABKAsyGC5jb21wYXNzLnYxLlNlc3Npb25FcnJvckgAQgcKBWV2ZW50IjgKFFNlc3Npb25Bc3Npc3RhbnRUZXh0EgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSIzCg9TZXNzaW9uVGhpbmtpbmcSDAoEdGV4dBgBIAEoCRISCgptZXNzYWdlX2lkGAIgASgJImcKD1Nlc3Npb25Ub29sQ2FsbBIUCgx0b29sX2NhbGxfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSLwoGc3RhdHVzGAMgASgOMh8uY29tcGFzcy52MS5BZ2VudFRvb2xDYWxsU3RhdHVzIpoBChVTZXNzaW9uVG9vbENhbGxVcGRhdGUSFAoMdG9vbF9jYWxsX2lkGAEgASgJEi8KBnN0YXR1cxgCIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cxIOCgZvdXRwdXQYAyABKAkSKgoFZGlmZnMYBCADKAsyGy5jb21wYXNzLnYxLlNlc3Npb25GaWxlRGlmZiJVCg9TZXNzaW9uRmlsZURpZmYSDAoEcGF0aBgBIAEoCRIVCghvbGRfdGV4dBgCIAEoCUgAiAEBEhAKCG5ld190ZXh0GAMgASgJQgsKCV9vbGRfdGV4dCI6CgtTZXNzaW9uUGxhbhIrCgdlbnRyaWVzGAEgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSI5Cg1TZXNzaW9uTm90aWNlEgwKBHRleHQYASABKAkSEQoEbGluaxgCIAEoCUgAiAEBQgcKBV9saW5rIoMBChBTZXNzaW9uSW5qZWN0aW9uEjEKB29wX2tpbmQYASABKA4yIC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25LaW5kEhIKCm1lc3NhZ2VfaWQYAiABKAkSEwoLZnJvbV9oYW5kbGUYAyABKAkSEwoLdHJhY2VwYXJlbnQYBCABKAkiawoMU2Vzc2lvbkVycm9yEioKBGtpbmQYASABKA4yHC5jb21wYXNzLnYxLlNlc3Npb25FcnJvcktpbmQSDwoHbWVzc2FnZRgCIAEoCRITCgZzdGF0dXMYAyABKAVIAIgBAUIJCgdfc3RhdHVzIjIKHFN1YnNjcmliZUFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJ+ChFBZ2VudFNlc3Npb25GcmFtZRISCgpzZXNzaW9uX2lkGAEgASgJEicKBWV2ZW50GAIgASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXZlbnQSLAoFc3RhdGUYAyABKA4yHS5jb21wYXNzLnYxLkFnZW50U2Vzc2lvblN0YXRlInAKHlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVxdWVzdBIUCgxhZ2VudF9oYW5kbGUYASABKAkSGQoRY2xpZW50X3JlcXVlc3RfaWQYAiABKAkSDwoHcGVyc29uYRgDIAEoCRIMCgRyb2xlGAQgASgJIjkKH1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USFgoOY29udGFpbmVyX25hbWUYASABKAkiUAobUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJIh4KHFJlbW92ZUFnZW50V29ya3NwYWNlUmVzcG9uc2UiYwoYU3RhcnRBZ2VudFNlc3Npb25SZXF1ZXN0EhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJEhkKEXJlc3VtZV9zZXNzaW9uX2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCIvChlTdGFydEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiWgoRU3Bhd25BZ2VudFJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAMgASgJSgQIAhADUg5pbml0aWFsX3Byb21wdCJAChJTcGF3bkFnZW50UmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIWCg5jb250YWluZXJfbmFtZRgCIAEoCSItChdTdG9wQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIhoKGFN0b3BBZ2VudFNlc3Npb25SZXNwb25zZSIvChlSZWxvYWRBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiMAoaUmVsb2FkQWdlbnRTZXNzaW9uUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCSIrChVHZXRBZ2VudFN0YXR1c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSJKChZHZXRBZ2VudFN0YXR1c1Jlc3BvbnNlEjAKCHN0YXR1c2VzGAEgAygLMh4uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0dXMiKwoRSXNzdWVUb2tlblJlcXVlc3QSFgoOYWNjb3VudF9oYW5kbGUYASABKAkiIwoSSXNzdWVUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJIigKElJldm9rZVRva2VuUmVxdWVzdBISCgV0b2tlbhgBIAEoCUIDgAEBIhUKE1Jldm9rZVRva2VuUmVzcG9uc2UiJwoVUHV0QWdlbnRDb25maWdSZXF1ZXN0Eg4KBmJ1bmRsZRgBIAEoDCIpChZQdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkiGwoZR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdCLaAQoaR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USDwoHdmVyc2lvbhgBIAEoCRIOCgZza2lsbHMYAiADKAkSEgoKZXh0ZW5zaW9ucxgDIAMoCRITCgttY3Bfc2VydmVycxgEIAMoCRIUCgxoYXNfc2V0dGluZ3MYBSABKAgSFQoNaGFzX2FnZW50c19tZBgGIAEoCBINCgVydWxlcxgHIAMoCRIRCglzdWJhZ2VudHMYCCADKAkSEgoKaGFzX21vZGVscxgJIAEoCBIPCgdwcm9tcHRzGAogAygJIhoKGERlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdCIbChlEZWxldGVBZ2VudENvbmZpZ1Jlc3BvbnNlIjQKDk1vZGVsQ2FuZGlkYXRlEhAKCHByb3ZpZGVyGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJInEKDU1vZGVsTWV0YWRhdGESFgoOY29udGV4dF93aW5kb3cYASABKAMSHAoUaW5wdXRfY29zdF9taWNyb191c2QYAiABKAMSHQoVb3V0cHV0X2Nvc3RfbWljcm9fdXNkGAMgASgDEgsKA2FwaRgEIAEoCSKHAQoSTW9kZWxSZWdpc3RyeUVudHJ5EhQKDGRpc3BsYXlfbmFtZRgBIAEoCRIuCgpjYW5kaWRhdGVzGAIgAygLMhouY29tcGFzcy52MS5Nb2RlbENhbmRpZGF0ZRIrCghtZXRhZGF0YRgDIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxNZXRhZGF0YSKYAQoNTW9kZWxSZWdpc3RyeRI3CgdlbnRyaWVzGAEgAygLMiYuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5LkVudHJpZXNFbnRyeRpOCgxFbnRyaWVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgLMh4uY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5RW50cnk6AjgBImAKF1B1dE1vZGVsUmVnaXN0cnlSZXF1ZXN0EisKCHJlZ2lzdHJ5GAEgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5EhgKEGV4cGVjdGVkX3ZlcnNpb24YAiABKAMiKwoYUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMiGQoXR2V0TW9kZWxSZWdpc3RyeVJlcXVlc3QiWAoYR2V0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAMSKwoIcmVnaXN0cnkYAiABKAsyGS5jb21wYXNzLnYxLk1vZGVsUmVnaXN0cnkiHAoaRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QiHQobRGVsZXRlTW9kZWxSZWdpc3RyeVJlc3BvbnNlIj4KEEFnZW50QXR0cmlidXRpb24SFAoMYWdlbnRfaGFuZGxlGAEgASgJEhQKDG93bmVyX2hhbmRsZRgCIAEoCSJFCghGb3JnZVJlZhIrCghwcm92aWRlchgBIAEoDjIZLmNvbXBhc3MudjEuRm9yZ2VQcm92aWRlchIMCgRob3N0GAIgASgJItQDCgVJc3N1ZRIKCgJpZBgBIAEoCRIjCgVmb3JnZRgCIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgDIAEoCRIOCgZudW1iZXIYBCABKA0SDQoFdGl0bGUYBSABKAkSDAoEYm9keRgGIAEoCRITCgtmb3JnZV9zdGF0ZRgHIAEoCRILCgN1cmwYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRIOCgZsYWJlbHMYCyADKAkSLgoKdXBkYXRlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoFc3RhdGUYDCABKA4yFi5jb21wYXNzLnYxLklzc3VlU3RhdGUSEAoIcHJpb3JpdHkYDSABKAkSEAoIYXNzaWduZWUYDiABKAkSDwoHc3VtbWFyeRgPIAEoCRIOCgZicmFuY2gYECABKAkSJAoDcHJzGBEgAygLMhcuY29tcGFzcy52MS5QdWxsUmVxdWVzdBInCgd0cmFja2VyGBIgASgLMhYuY29tcGFzcy52MS5UcmFja2VyUmVmIp4DCgtQdWxsUmVxdWVzdBIjCgVmb3JnZRgBIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgCIAEoCRIOCgZudW1iZXIYAyABKA0SDQoFdGl0bGUYBCABKAkSEwoLZm9yZ2Vfc3RhdGUYBSABKAkSCwoDdXJsGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEisKBWFnZW50GAkgASgLMhwuY29tcGFzcy52MS5BZ2VudEF0dHJpYnV0aW9uEhUKDWZvcmdlX2FjY291bnQYCiABKAkSDQoFZHJhZnQYCyABKAgSKQoHY2hhbmdlZBgMIAEoCzIYLmNvbXBhc3MudjEuQ2hhbmdlZFN0YXRzEikKBmNoZWNrcxgNIAEoCzIZLmNvbXBhc3MudjEuQ2hlY2tzU3VtbWFyeRIjCgdyZXZpZXdzGA4gAygLMhIuY29tcGFzcy52MS5SZXZpZXcSKQoHdGhyZWFkcxgPIAMoCzIYLmNvbXBhc3MudjEuUmV2aWV3VGhyZWFkIlMKDUNoZWNrc1N1bW1hcnkSEAoIaGVhZF9zaGEYASABKAkSDQoFc3RhdGUYAiABKAkSIQoGY2hlY2tzGAMgAygLMhEuY29tcGFzcy52MS5DaGVjayJDCgVDaGVjaxIMCgRuYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgsKA3VybBgDIAEoCRIQCghyZXF1aXJlZBgEIAEoCCJDCgxDaGFuZ2VkU3RhdHMSDQoFZmlsZXMYASABKA0SEQoJYWRkaXRpb25zGAIgASgNEhEKCWRlbGV0aW9ucxgDIAEoDSJDCgpUcmFja2VyUmVmEgwKBGtpbmQYASABKAkSCgoCaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEgsKA3VybBgEIAEoCSJHCgZSZXZpZXcSDgoGYXV0aG9yGAEgASgJEg4KBmlzX2JvdBgCIAEoCBIPCgd2ZXJkaWN0GAMgASgJEgwKBGJvZHkYBCABKAkiVQoMUmV2aWV3VGhyZWFkEgwKBHBhdGgYASABKAkSEAoIcmVzb2x2ZWQYAiABKAgSJQoIY29tbWVudHMYAyADKAsyEy5jb21wYXNzLnYxLkNvbW1lbnQiNwoHQ29tbWVudBIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEgwKBGJvZHkYAyABKAkqZAoOU2VjcmV0RGVsaXZlcnkSHwobU0VDUkVUX0RFTElWRVJZX1VOU1BFQ0lGSUVEEAASGAoUU0VDUkVUX0RFTElWRVJZX0ZJTEUQARIXChNTRUNSRVRfREVMSVZFUllfRU5WEAIqcAoKU2VjcmV0S2luZBIbChdTRUNSRVRfS0lORF9VTlNQRUNJRklFRBAAEhcKE1NFQ1JFVF9LSU5EX0dFTkVSSUMQARIYChRTRUNSRVRfS0lORF9QUk9WSURFUhACEhIKDlNFQ1JFVF9LSU5EX0dIEAMqQwoLU2VydmVyU3RhdGUSHAoYU0VSVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSU0VSVkVSX1NUQVRFX1JFQURZEAEqggIKEUFnZW50U2Vzc2lvblN0YXRlEiMKH0FHRU5UX1NFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBR0VOVF9TRVNTSU9OX1NUQVRFX1NUQVJUSU5HEAESHQoZQUdFTlRfU0VTU0lPTl9TVEFURV9SRUFEWRACEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfV09SS0lORxADEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfU1RPUFBFRBAEEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfRVJST1JFRBAFEiQKIEFHRU5UX1NFU1NJT05fU1RBVEVfRElTQ09OTkVDVEVEEAYq0gEKE0FnZW50VG9vbENhbGxTdGF0dXMSJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfUEVORElORxABEiYKIkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfSU5fUFJPR1JFU1MQAhIkCiBBR0VOVF9UT09MX0NBTExfU1RBVFVTX0NPTVBMRVRFRBADEiEKHUFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfRkFJTEVEEAQqtAEKFEFnZW50UGxhbkVudHJ5U3RhdHVzEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfUEVORElORxABEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX0lOX1BST0dSRVNTEAISJQohQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfQ09NUExFVEVEEAMqhAEKFFNlc3Npb25JbmplY3Rpb25LaW5kEiYKIlNFU1NJT05fSU5KRUNUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIgChxTRVNTSU9OX0lOSkVDVElPTl9LSU5EX1NURUVSEAESIgoeU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9ERUxJVkVSEAIqdAoQU2Vzc2lvbkVycm9yS2luZBIiCh5TRVNTSU9OX0VSUk9SX0tJTkRfVU5TUEVDSUZJRUQQABIcChhTRVNTSU9OX0VSUk9SX0tJTkRfRVJST1IQARIeChpTRVNTSU9OX0VSUk9SX0tJTkRfQUJPUlRFRBACKvEBCgpJc3N1ZVN0YXRlEhsKF0lTU1VFX1NUQVRFX1VOU1BFQ0lGSUVEEAASFwoTSVNTVUVfU1RBVEVfQkFDS0xPRxABEhQKEElTU1VFX1NUQVRFX1RPRE8QAhIWChJJU1NVRV9TVEFURV9RVUVVRUQQAxIXChNJU1NVRV9TVEFURV9CTE9DS0VEEAQSGwoXSVNTVUVfU1RBVEVfSU5fUFJPR1JFU1MQBRIZChVJU1NVRV9TVEFURV9JTl9SRVZJRVcQBhIUChBJU1NVRV9TVEFURV9ET05FEAcSGAoUSVNTVUVfU1RBVEVfQVJDSElWRUQQCCqcAQoNRm9yZ2VQcm92aWRlchIeChpGT1JHRV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEhkKFUZPUkdFX1BST1ZJREVSX0dJVEhVQhABEhkKFUZPUkdFX1BST1ZJREVSX0dJVExBQhACEhoKFkZPUkdFX1BST1ZJREVSX0ZPUkdFSk8QAxIZChVGT1JHRV9QUk9WSURFUl9MSU5FQVIQBDLTDgoOQ29tcGFzc1NlcnZpY2USVAoNR2V0U2VydmVySW5mbxIgLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1JlcXVlc3QaIS5jb21wYXNzLnYxLkdldFNlcnZlckluZm9SZXNwb25zZRI/CgZXaG9BbUkSGS5jb21wYXNzLnYxLldob0FtSVJlcXVlc3QaGi5jb21wYXNzLnYxLldob0FtSVJlc3BvbnNlElwKD1N1YnNjcmliZUV2ZW50cxIiLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVxdWVzdBojLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2UwARJaCg9MaXN0Qm9hcmRJc3N1ZXMSIi5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QaIy5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEnIKF1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlEiouY29tcGFzcy52MS5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QaKy5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USYAoRU3RhcnRBZ2VudFNlc3Npb24SJC5jb21wYXNzLnYxLlN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBolLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRJLCgpTcGF3bkFnZW50Eh0uY29tcGFzcy52MS5TcGF3bkFnZW50UmVxdWVzdBoeLmNvbXBhc3MudjEuU3Bhd25BZ2VudFJlc3BvbnNlEl0KEFN0b3BBZ2VudFNlc3Npb24SIy5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXF1ZXN0GiQuY29tcGFzcy52MS5TdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2USaQoUUmVtb3ZlQWdlbnRXb3Jrc3BhY2USJy5jb21wYXNzLnYxLlJlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBooLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJjChJSZWxvYWRBZ2VudFNlc3Npb24SJS5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlcXVlc3QaJi5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlElcKDkdldEFnZW50U3RhdHVzEiEuY29tcGFzcy52MS5HZXRBZ2VudFN0YXR1c1JlcXVlc3QaIi5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVzcG9uc2USYgoVU3Vic2NyaWJlQWdlbnRTZXNzaW9uEiguY29tcGFzcy52MS5TdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0Gh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25GcmFtZTABEksKCklzc3VlVG9rZW4SHS5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXF1ZXN0Gh4uY29tcGFzcy52MS5Jc3N1ZVRva2VuUmVzcG9uc2USTgoLUmV2b2tlVG9rZW4SHi5jb21wYXNzLnYxLlJldm9rZVRva2VuUmVxdWVzdBofLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXNwb25zZRJXCg5QdXRBZ2VudENvbmZpZxIhLmNvbXBhc3MudjEuUHV0QWdlbnRDb25maWdSZXF1ZXN0GiIuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEmMKEkdldEFnZW50Q29uZmlnSW5mbxIlLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdBomLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USYAoRRGVsZXRlQWdlbnRDb25maWcSJC5jb21wYXNzLnYxLkRlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdBolLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZRJdChBQdXRNb2RlbFJlZ2lzdHJ5EiMuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBokLmNvbXBhc3MudjEuUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEl0KEEdldE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5HZXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USZgoTRGVsZXRlTW9kZWxSZWdpc3RyeRImLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QaJy5jb21wYXNzLnYxLkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZTL9AQoOU2VjcmV0c1NlcnZpY2USSAoJU2V0U2VjcmV0EhwuY29tcGFzcy52MS5TZXRTZWNyZXRSZXF1ZXN0Gh0uY29tcGFzcy52MS5TZXRTZWNyZXRSZXNwb25zZRJOCgtMaXN0U2VjcmV0cxIeLmNvbXBhc3MudjEuTGlzdFNlY3JldHNSZXF1ZXN0Gh8uY29tcGFzcy52MS5MaXN0U2VjcmV0c1Jlc3BvbnNlElEKDERlbGV0ZVNlY3JldBIfLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVxdWVzdBogLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVzcG9uc2ViBnByb3RvMw", [file_google_protobuf_timestamp]); /** * @generated from message compass.v1.SetSecretRequest @@ -1948,12 +1948,8 @@ export const DeleteModelRegistryResponseSchema: GenMessage & { * @generated from field: string agent_handle = 1; */ agentHandle: string; + + /** + * the owning user's handle, from the same header parse + * + * @generated from field: string owner_handle = 2; + */ + ownerHandle: string; }; /** diff --git a/proto/compass/v1/compass.proto b/proto/compass/v1/compass.proto index 314002423..2ce175249 100644 --- a/proto/compass/v1/compass.proto +++ b/proto/compass/v1/compass.proto @@ -921,14 +921,11 @@ enum IssueState { // plain display fact (DL-094, compass-attribution-simplification, Active). If a // header names an agent, that is the displayed author: NO forge-login // cross-check, NO verified bit, NO population gating. It never reaches an authz, -// routing, or ownership decision (DL-050). Owner is a property of the agent -// account (AgentAccount.owner_user_id in comms.proto), resolved -// server-side, never restated per artifact — so no owner_handle. Field numbers -// 2,3 are simply reclaimable pre-dogfood (DL-186): no wire build ever shipped -// the frozen #1018 owner_handle/verified shape, and nothing on disk is -// proto-encoded, so the numbers carry no compatibility obligation. +// routing, or ownership decision (DL-050). Owner is carried from the same +// stamped header parse for downstream display and suppression (DL-339). message AgentAttribution { string agent_handle = 1; // the authoring agent's handle, from the header + string owner_handle = 2; // the owning user's handle, from the same header parse } // Which forge (and which host, for self-hosted instances) an artifact lives on.