@eide/foir-proto-ts 0.39.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetCustomerAssignmentsRequest, GetCustomerAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
6
+ import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetAssignmentsRequest, GetAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentDeclarationsRequest, ListExperimentDeclarationsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -149,12 +149,12 @@ export declare const ExperimentsService: {
149
149
  readonly kind: MethodKind.Unary,
150
150
  },
151
151
  /**
152
- * @generated from rpc experiments.v1.ExperimentsService.GetCustomerAssignments
152
+ * @generated from rpc experiments.v1.ExperimentsService.GetAssignments
153
153
  */
154
- readonly getCustomerAssignments: {
155
- readonly name: "GetCustomerAssignments",
156
- readonly I: typeof GetCustomerAssignmentsRequest,
157
- readonly O: typeof GetCustomerAssignmentsResponse,
154
+ readonly getAssignments: {
155
+ readonly name: "GetAssignments",
156
+ readonly I: typeof GetAssignmentsRequest,
157
+ readonly O: typeof GetAssignmentsResponse,
158
158
  readonly kind: MethodKind.Unary,
159
159
  },
160
160
  /**
@@ -168,6 +168,17 @@ export declare const ExperimentsService: {
168
168
  readonly O: typeof ResolveExposureResponse,
169
169
  readonly kind: MethodKind.Unary,
170
170
  },
171
+ /**
172
+ * Declarations (for typed codegen on the public API).
173
+ *
174
+ * @generated from rpc experiments.v1.ExperimentsService.ListExperimentDeclarations
175
+ */
176
+ readonly listExperimentDeclarations: {
177
+ readonly name: "ListExperimentDeclarations",
178
+ readonly I: typeof ListExperimentDeclarationsRequest,
179
+ readonly O: typeof ListExperimentDeclarationsResponse,
180
+ readonly kind: MethodKind.Unary,
181
+ },
171
182
  }
172
183
  };
173
184
 
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetCustomerAssignmentsRequest, GetCustomerAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
6
+ import { ApplyExperimentWinnerRequest, ApplyExperimentWinnerResponse, CreateExperimentRequest, CreateExperimentResponse, DeleteExperimentRequest, DeleteExperimentResponse, EndExperimentRequest, EndExperimentResponse, ForceAssignExperimentRequest, ForceAssignExperimentResponse, GetAssignmentsRequest, GetAssignmentsResponse, GetExperimentByKeyRequest, GetExperimentByKeyResponse, GetExperimentRequest, GetExperimentResponse, GetExperimentStatsRequest, GetExperimentStatsResponse, ListExperimentDeclarationsRequest, ListExperimentDeclarationsResponse, ListExperimentsRequest, ListExperimentsResponse, PauseExperimentRequest, PauseExperimentResponse, RemoveExperimentAssignmentRequest, RemoveExperimentAssignmentResponse, ResolveExposureRequest, ResolveExposureResponse, ResumeExperimentRequest, ResumeExperimentResponse, StartExperimentRequest, StartExperimentResponse, UpdateExperimentRequest, UpdateExperimentResponse } from "./experiments_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -149,12 +149,12 @@ export const ExperimentsService = {
149
149
  kind: MethodKind.Unary,
150
150
  },
151
151
  /**
152
- * @generated from rpc experiments.v1.ExperimentsService.GetCustomerAssignments
152
+ * @generated from rpc experiments.v1.ExperimentsService.GetAssignments
153
153
  */
154
- getCustomerAssignments: {
155
- name: "GetCustomerAssignments",
156
- I: GetCustomerAssignmentsRequest,
157
- O: GetCustomerAssignmentsResponse,
154
+ getAssignments: {
155
+ name: "GetAssignments",
156
+ I: GetAssignmentsRequest,
157
+ O: GetAssignmentsResponse,
158
158
  kind: MethodKind.Unary,
159
159
  },
160
160
  /**
@@ -168,6 +168,17 @@ export const ExperimentsService = {
168
168
  O: ResolveExposureResponse,
169
169
  kind: MethodKind.Unary,
170
170
  },
171
+ /**
172
+ * Declarations (for typed codegen on the public API).
173
+ *
174
+ * @generated from rpc experiments.v1.ExperimentsService.ListExperimentDeclarations
175
+ */
176
+ listExperimentDeclarations: {
177
+ name: "ListExperimentDeclarations",
178
+ I: ListExperimentDeclarationsRequest,
179
+ O: ListExperimentDeclarationsResponse,
180
+ kind: MethodKind.Unary,
181
+ },
171
182
  }
172
183
  };
173
184
 
@@ -216,9 +216,13 @@ export declare type ExperimentAssignment = Message<"experiments.v1.ExperimentAss
216
216
  experimentId: string;
217
217
 
218
218
  /**
219
- * @generated from field: string customer_id = 3;
219
+ * Customer identifier. Null for assignments created before the viewer
220
+ * signed in. Promoted from a viewer_key assignment on the first authed
221
+ * ResolveExposure call (see assignment_method = "promoted").
222
+ *
223
+ * @generated from field: optional string customer_id = 3;
220
224
  */
221
- customerId: string;
225
+ customerId?: string | undefined;
222
226
 
223
227
  /**
224
228
  * @generated from field: string variant_key = 4;
@@ -226,6 +230,11 @@ export declare type ExperimentAssignment = Message<"experiments.v1.ExperimentAss
226
230
  variantKey: string;
227
231
 
228
232
  /**
233
+ * How the assignment was created. One of: "hash" (deterministic
234
+ * bucketing on first exposure), "forced" (admin override via
235
+ * ForceAssignExperiment), "promoted" (viewer_key row was upgraded to
236
+ * a customer_id row when the viewer signed in mid-experiment).
237
+ *
229
238
  * @generated from field: string assignment_method = 5;
230
239
  */
231
240
  assignmentMethod: string;
@@ -235,6 +244,15 @@ export declare type ExperimentAssignment = Message<"experiments.v1.ExperimentAss
235
244
  */
236
245
  experimentKey: string;
237
246
 
247
+ /**
248
+ * Stable anonymous viewer identifier. Null once the assignment has
249
+ * been promoted to a customer_id, otherwise the cookie/localStorage
250
+ * value the frontend supplied at first exposure.
251
+ *
252
+ * @generated from field: optional string viewer_key = 7;
253
+ */
254
+ viewerKey?: string | undefined;
255
+
238
256
  /**
239
257
  * Ownership.
240
258
  *
@@ -276,6 +294,32 @@ export declare type ExperimentAssignment = Message<"experiments.v1.ExperimentAss
276
294
  */
277
295
  export declare const ExperimentAssignmentSchema: GenMessage<ExperimentAssignment>;
278
296
 
297
+ /**
298
+ * ExperimentDeclaration is the static shape of an experiment surfaced to
299
+ * public-API consumers for codegen. Includes all variant keys regardless
300
+ * of the experiment's runtime status, so frontends can compile against
301
+ * experiments that aren't yet running.
302
+ *
303
+ * @generated from message experiments.v1.ExperimentDeclaration
304
+ */
305
+ export declare type ExperimentDeclaration = Message<"experiments.v1.ExperimentDeclaration"> & {
306
+ /**
307
+ * @generated from field: string experiment_key = 1;
308
+ */
309
+ experimentKey: string;
310
+
311
+ /**
312
+ * @generated from field: repeated string variant_keys = 2;
313
+ */
314
+ variantKeys: string[];
315
+ };
316
+
317
+ /**
318
+ * Describes the message experiments.v1.ExperimentDeclaration.
319
+ * Use `create(ExperimentDeclarationSchema)` to create a new message.
320
+ */
321
+ export declare const ExperimentDeclarationSchema: GenMessage<ExperimentDeclaration>;
322
+
279
323
  /**
280
324
  * @generated from message experiments.v1.VariantStats
281
325
  */
@@ -791,13 +835,17 @@ export declare type GetExperimentStatsResponse = Message<"experiments.v1.GetExpe
791
835
  export declare const GetExperimentStatsResponseSchema: GenMessage<GetExperimentStatsResponse>;
792
836
 
793
837
  /**
838
+ * Admin override. Exactly one of customer_id or viewer_key must be set —
839
+ * matches the either-or shape used everywhere else on the experiments
840
+ * surface. Both empty is InvalidArgument.
841
+ *
794
842
  * @generated from message experiments.v1.ForceAssignExperimentRequest
795
843
  */
796
844
  export declare type ForceAssignExperimentRequest = Message<"experiments.v1.ForceAssignExperimentRequest"> & {
797
845
  /**
798
- * @generated from field: string customer_id = 1;
846
+ * @generated from field: optional string customer_id = 1;
799
847
  */
800
- customerId: string;
848
+ customerId?: string | undefined;
801
849
 
802
850
  /**
803
851
  * @generated from field: string experiment_id = 2;
@@ -808,6 +856,11 @@ export declare type ForceAssignExperimentRequest = Message<"experiments.v1.Force
808
856
  * @generated from field: string variant_key = 3;
809
857
  */
810
858
  variantKey: string;
859
+
860
+ /**
861
+ * @generated from field: optional string viewer_key = 4;
862
+ */
863
+ viewerKey?: string | undefined;
811
864
  };
812
865
 
813
866
  /**
@@ -833,18 +886,25 @@ export declare type ForceAssignExperimentResponse = Message<"experiments.v1.Forc
833
886
  export declare const ForceAssignExperimentResponseSchema: GenMessage<ForceAssignExperimentResponse>;
834
887
 
835
888
  /**
889
+ * Exactly one of customer_id or viewer_key must be set.
890
+ *
836
891
  * @generated from message experiments.v1.RemoveExperimentAssignmentRequest
837
892
  */
838
893
  export declare type RemoveExperimentAssignmentRequest = Message<"experiments.v1.RemoveExperimentAssignmentRequest"> & {
839
894
  /**
840
- * @generated from field: string customer_id = 1;
895
+ * @generated from field: optional string customer_id = 1;
841
896
  */
842
- customerId: string;
897
+ customerId?: string | undefined;
843
898
 
844
899
  /**
845
900
  * @generated from field: string experiment_id = 2;
846
901
  */
847
902
  experimentId: string;
903
+
904
+ /**
905
+ * @generated from field: optional string viewer_key = 3;
906
+ */
907
+ viewerKey?: string | undefined;
848
908
  };
849
909
 
850
910
  /**
@@ -907,25 +967,34 @@ export declare type ApplyExperimentWinnerResponse = Message<"experiments.v1.Appl
907
967
  export declare const ApplyExperimentWinnerResponseSchema: GenMessage<ApplyExperimentWinnerResponse>;
908
968
 
909
969
  /**
910
- * @generated from message experiments.v1.GetCustomerAssignmentsRequest
970
+ * Reads assignment rows for the given identity. Exactly one of customer_id
971
+ * or viewer_key must be set — symmetric with RecordConversionInput. Both
972
+ * empty or both set is InvalidArgument.
973
+ *
974
+ * @generated from message experiments.v1.GetAssignmentsRequest
911
975
  */
912
- export declare type GetCustomerAssignmentsRequest = Message<"experiments.v1.GetCustomerAssignmentsRequest"> & {
976
+ export declare type GetAssignmentsRequest = Message<"experiments.v1.GetAssignmentsRequest"> & {
913
977
  /**
914
- * @generated from field: string customer_id = 1;
978
+ * @generated from field: optional string customer_id = 1;
915
979
  */
916
- customerId: string;
980
+ customerId?: string | undefined;
981
+
982
+ /**
983
+ * @generated from field: optional string viewer_key = 2;
984
+ */
985
+ viewerKey?: string | undefined;
917
986
  };
918
987
 
919
988
  /**
920
- * Describes the message experiments.v1.GetCustomerAssignmentsRequest.
921
- * Use `create(GetCustomerAssignmentsRequestSchema)` to create a new message.
989
+ * Describes the message experiments.v1.GetAssignmentsRequest.
990
+ * Use `create(GetAssignmentsRequestSchema)` to create a new message.
922
991
  */
923
- export declare const GetCustomerAssignmentsRequestSchema: GenMessage<GetCustomerAssignmentsRequest>;
992
+ export declare const GetAssignmentsRequestSchema: GenMessage<GetAssignmentsRequest>;
924
993
 
925
994
  /**
926
- * @generated from message experiments.v1.GetCustomerAssignmentsResponse
995
+ * @generated from message experiments.v1.GetAssignmentsResponse
927
996
  */
928
- export declare type GetCustomerAssignmentsResponse = Message<"experiments.v1.GetCustomerAssignmentsResponse"> & {
997
+ export declare type GetAssignmentsResponse = Message<"experiments.v1.GetAssignmentsResponse"> & {
929
998
  /**
930
999
  * @generated from field: repeated experiments.v1.ExperimentAssignment assignments = 1;
931
1000
  */
@@ -933,17 +1002,61 @@ export declare type GetCustomerAssignmentsResponse = Message<"experiments.v1.Get
933
1002
  };
934
1003
 
935
1004
  /**
936
- * Describes the message experiments.v1.GetCustomerAssignmentsResponse.
937
- * Use `create(GetCustomerAssignmentsResponseSchema)` to create a new message.
1005
+ * Describes the message experiments.v1.GetAssignmentsResponse.
1006
+ * Use `create(GetAssignmentsResponseSchema)` to create a new message.
938
1007
  */
939
- export declare const GetCustomerAssignmentsResponseSchema: GenMessage<GetCustomerAssignmentsResponse>;
1008
+ export declare const GetAssignmentsResponseSchema: GenMessage<GetAssignmentsResponse>;
940
1009
 
941
1010
  /**
942
- * Resolves the variant a viewer sees for a given experiment. Uses stateless
943
- * deterministic hash bucketing over experiment.variants[].percent no DB
944
- * writes, no persistence. Same (experiment_key, viewer_key) always returns
945
- * the same variant. customer_id is preferred when available (for cross-device
946
- * consistency); viewer_key is the anonymous fallback.
1011
+ * Returns the static declaration shape (key + variant keys) for every
1012
+ * experiment in the project, regardless of runtime status. Used by the
1013
+ * public-API codegen pipeline to emit stable ExperimentKey /
1014
+ * ExperimentVariantKey enums that don't drift across environments based
1015
+ * on what's currently running. Frontends that want to enumerate declared
1016
+ * experiments at runtime can also read this.
1017
+ *
1018
+ * @generated from message experiments.v1.ListExperimentDeclarationsRequest
1019
+ */
1020
+ export declare type ListExperimentDeclarationsRequest = Message<"experiments.v1.ListExperimentDeclarationsRequest"> & {
1021
+ };
1022
+
1023
+ /**
1024
+ * Describes the message experiments.v1.ListExperimentDeclarationsRequest.
1025
+ * Use `create(ListExperimentDeclarationsRequestSchema)` to create a new message.
1026
+ */
1027
+ export declare const ListExperimentDeclarationsRequestSchema: GenMessage<ListExperimentDeclarationsRequest>;
1028
+
1029
+ /**
1030
+ * @generated from message experiments.v1.ListExperimentDeclarationsResponse
1031
+ */
1032
+ export declare type ListExperimentDeclarationsResponse = Message<"experiments.v1.ListExperimentDeclarationsResponse"> & {
1033
+ /**
1034
+ * @generated from field: repeated experiments.v1.ExperimentDeclaration declarations = 1;
1035
+ */
1036
+ declarations: ExperimentDeclaration[];
1037
+ };
1038
+
1039
+ /**
1040
+ * Describes the message experiments.v1.ListExperimentDeclarationsResponse.
1041
+ * Use `create(ListExperimentDeclarationsResponseSchema)` to create a new message.
1042
+ */
1043
+ export declare const ListExperimentDeclarationsResponseSchema: GenMessage<ListExperimentDeclarationsResponse>;
1044
+
1045
+ /**
1046
+ * Resolves the variant a viewer sees for a given experiment. Persisted
1047
+ * (D2b): the first call for a given (experiment, identity) buckets via
1048
+ * deterministic FNV-1a hash over (experiment_id, identity), writes a
1049
+ * row to experiment_assignments, and returns the chosen variant. All
1050
+ * subsequent calls return the persisted variant — sticky across traffic
1051
+ * allocation changes, percent reallocations, and pause/resume cycles.
1052
+ *
1053
+ * Identity rule: pass exactly one of customer_id or viewer_key, OR pass
1054
+ * both for the anon→customer hand-off (server promotes the existing
1055
+ * viewer row to a customer row, preserving the variant; or, if a
1056
+ * customer row already exists, keeps the customer row and drops the
1057
+ * viewer row). Both empty is InvalidArgument. There is no
1058
+ * "customer-preferred-with-fallback" — the caller asks for what they
1059
+ * have.
947
1060
  *
948
1061
  * @generated from message experiments.v1.ResolveExposureRequest
949
1062
  */
@@ -990,12 +1103,30 @@ export declare type ResolveExposureResponse = Message<"experiments.v1.ResolveExp
990
1103
  isControl: boolean;
991
1104
 
992
1105
  /**
993
- * False when the experiment is not running (draft, paused, ended, or
994
- * outside its date window). In that case variant_key is empty.
1106
+ * False when the experiment is not RUNNING (draft, paused, ended) or
1107
+ * when the current time is outside its [start_date, end_date] window.
1108
+ * No row is written in that case and variant_key is empty.
995
1109
  *
996
1110
  * @generated from field: bool is_exposed = 4;
997
1111
  */
998
1112
  isExposed: boolean;
1113
+
1114
+ /**
1115
+ * "hash" for the first bucketing, "forced" if a ForceAssignExperiment
1116
+ * row was hit, "promoted" if the call promoted a viewer row to a
1117
+ * customer row.
1118
+ *
1119
+ * @generated from field: string assignment_method = 5;
1120
+ */
1121
+ assignmentMethod: string;
1122
+
1123
+ /**
1124
+ * True if this call wrote (or promoted) the assignment row. Useful for
1125
+ * analytics: distinguish first-exposure from subsequent reads.
1126
+ *
1127
+ * @generated from field: bool is_new_assignment = 6;
1128
+ */
1129
+ isNewAssignment: boolean;
999
1130
  };
1000
1131
 
1001
1132
  /**
@@ -1166,12 +1297,12 @@ export declare const ExperimentsService: GenService<{
1166
1297
  output: typeof RemoveExperimentAssignmentResponseSchema;
1167
1298
  },
1168
1299
  /**
1169
- * @generated from rpc experiments.v1.ExperimentsService.GetCustomerAssignments
1300
+ * @generated from rpc experiments.v1.ExperimentsService.GetAssignments
1170
1301
  */
1171
- getCustomerAssignments: {
1302
+ getAssignments: {
1172
1303
  methodKind: "unary";
1173
- input: typeof GetCustomerAssignmentsRequestSchema;
1174
- output: typeof GetCustomerAssignmentsResponseSchema;
1304
+ input: typeof GetAssignmentsRequestSchema;
1305
+ output: typeof GetAssignmentsResponseSchema;
1175
1306
  },
1176
1307
  /**
1177
1308
  * Exposure.
@@ -1183,5 +1314,15 @@ export declare const ExperimentsService: GenService<{
1183
1314
  input: typeof ResolveExposureRequestSchema;
1184
1315
  output: typeof ResolveExposureResponseSchema;
1185
1316
  },
1317
+ /**
1318
+ * Declarations (for typed codegen on the public API).
1319
+ *
1320
+ * @generated from rpc experiments.v1.ExperimentsService.ListExperimentDeclarations
1321
+ */
1322
+ listExperimentDeclarations: {
1323
+ methodKind: "unary";
1324
+ input: typeof ListExperimentDeclarationsRequestSchema;
1325
+ output: typeof ListExperimentDeclarationsResponseSchema;
1326
+ },
1186
1327
  }>;
1187
1328
 
@@ -10,7 +10,7 @@ import { file_expressions_v1_expressions } from "../../expressions/v1/expression
10
10
  * Describes the file experiments/v1/experiments.proto.
11
11
  */
12
12
  export const file_experiments_v1_experiments = /*@__PURE__*/
13
- fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIpUGCgpFeHBlcmltZW50EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESMAoGc3RhdHVzGAogASgOMiAuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXR1cxIRCglpc19hY3RpdmUYCyABKAgSNgoJdGFyZ2V0aW5nGBQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZxIXCg9jb250cm9sX3BlcmNlbnQYFSABKAUSMwoIdmFyaWFudHMYFiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIeChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGBcgASgJEjMKCnN0YXJ0X2RhdGUYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLQoHbWV0cmljcxgjIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIrCgVnb2FscxgkIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIRCgl0ZW5hbnRfaWQYKCABKAkSEgoKcHJvamVjdF9pZBgpIAEoCRIXCgpjcmVhdGVkX2J5GC0gASgJSAWIAQESFwoKdXBkYXRlZF9ieRguIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCCgoIX21ldHJpY3NCCAoGX2dvYWxzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5IpcDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC2N1c3RvbWVyX2lkGAMgASgJEhMKC3ZhcmlhbnRfa2V5GAQgASgJEhkKEWFzc2lnbm1lbnRfbWV0aG9kGAUgASgJEhYKDmV4cGVyaW1lbnRfa2V5GAYgASgJEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSKLBAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARIrCgVnb2FscxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIICgZfZ29hbHMiSgoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiIKFEdldEV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIkcKFUdldEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIoChlHZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJMChpHZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCKfAQoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBI1CgZzdGF0dXMYASABKA4yIC5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHVzSACIAQESFgoJaXNfYWN0aXZlGAIgASgISAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCDAoKX2lzX2FjdGl2ZSJZChdMaXN0RXhwZXJpbWVudHNSZXNwb25zZRIvCgtleHBlcmltZW50cxgBIAMoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQSDQoFdG90YWwYAiABKAUimAQKF1VwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEjsKCXRhcmdldGluZxgEIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmdIAogBARIcCg9jb250cm9sX3BlcmNlbnQYBSABKAVIA4gBARIzCgh2YXJpYW50cxgGIAMoCzIhLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRWYXJpYW50EjMKCnN0YXJ0X2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESMQoIZW5kX2RhdGUYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIwoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgJIAEoCUgGiAEBEisKBWdvYWxzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfdGFyZ2V0aW5nQhIKEF9jb250cm9sX3BlcmNlbnRCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQhkKF19hc3NpZ25tZW50X3BlcnNpc3RlbmNlQggKBl9nb2FscyJKChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiJQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoWU3RhcnRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ii8KFlBhdXNlRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdQYXVzZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIwChdSZXN1bWVFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkoKGFJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCItChRFbmRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkcKFUVuZEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIyChlHZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiTAoaR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USLgoFc3RhdHMYASABKAsyHy5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHMiXwocRm9yY2VBc3NpZ25FeHBlcmltZW50UmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC3ZhcmlhbnRfa2V5GAMgASgJIlkKHUZvcmNlQXNzaWduRXhwZXJpbWVudFJlc3BvbnNlEjgKCmFzc2lnbm1lbnQYASABKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50QXNzaWdubWVudCJPCiFSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFQoNZXhwZXJpbWVudF9pZBgCIAEoCSI1CiJSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiUQocQXBwbHlFeHBlcmltZW50V2lubmVyUmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJEhoKEndpbm5lcl92YXJpYW50X2tleRgCIAEoCSJPCh1BcHBseUV4cGVyaW1lbnRXaW5uZXJSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCI0Ch1HZXRDdXN0b21lckFzc2lnbm1lbnRzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJbCh5HZXRDdXN0b21lckFzc2lnbm1lbnRzUmVzcG9uc2USOQoLYXNzaWdubWVudHMYASADKAsyJC5leHBlcmltZW50cy52MS5FeHBlcmltZW50QXNzaWdubWVudCKCAQoWUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBIWCg5leHBlcmltZW50X2tleRgBIAEoCRIYCgtjdXN0b21lcl9pZBgCIAEoCUgAiAEBEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkibgoXUmVzb2x2ZUV4cG9zdXJlUmVzcG9uc2USFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgppc19leHBvc2VkGAQgASgIKrABChBFeHBlcmltZW50U3RhdHVzEiEKHUVYUEVSSU1FTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXRVhQRVJJTUVOVF9TVEFUVVNfRFJBRlQQARIdChlFWFBFUklNRU5UX1NUQVRVU19SVU5OSU5HEAISHAoYRVhQRVJJTUVOVF9TVEFUVVNfUEFVU0VEEAMSHwobRVhQRVJJTUVOVF9TVEFUVVNfQ09NUExFVEVEEAQywQ0KEkV4cGVyaW1lbnRzU2VydmljZRJcCg1HZXRFeHBlcmltZW50EiQuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFJlcXVlc3QaJS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50UmVzcG9uc2USawoSR2V0RXhwZXJpbWVudEJ5S2V5EikuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudEJ5S2V5UmVxdWVzdBoqLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRCeUtleVJlc3BvbnNlEmIKD0xpc3RFeHBlcmltZW50cxImLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50c1JlcXVlc3QaJy5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudHNSZXNwb25zZRJlChBDcmVhdGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5DcmVhdGVFeHBlcmltZW50UmVzcG9uc2USZQoQVXBkYXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLlVwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlEmUKEERlbGV0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5EZWxldGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLkRlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZRJiCg9TdGFydEV4cGVyaW1lbnQSJi5leHBlcmltZW50cy52MS5TdGFydEV4cGVyaW1lbnRSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuU3RhcnRFeHBlcmltZW50UmVzcG9uc2USYgoPUGF1c2VFeHBlcmltZW50EiYuZXhwZXJpbWVudHMudjEuUGF1c2VFeHBlcmltZW50UmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlBhdXNlRXhwZXJpbWVudFJlc3BvbnNlEmUKEFJlc3VtZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5SZXN1bWVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLlJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRJcCg1FbmRFeHBlcmltZW50EiQuZXhwZXJpbWVudHMudjEuRW5kRXhwZXJpbWVudFJlcXVlc3QaJS5leHBlcmltZW50cy52MS5FbmRFeHBlcmltZW50UmVzcG9uc2USdAoVQXBwbHlFeHBlcmltZW50V2lubmVyEiwuZXhwZXJpbWVudHMudjEuQXBwbHlFeHBlcmltZW50V2lubmVyUmVxdWVzdBotLmV4cGVyaW1lbnRzLnYxLkFwcGx5RXhwZXJpbWVudFdpbm5lclJlc3BvbnNlEmsKEkdldEV4cGVyaW1lbnRTdGF0cxIpLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRTdGF0c1JlcXVlc3QaKi5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50U3RhdHNSZXNwb25zZRJ0ChVGb3JjZUFzc2lnbkV4cGVyaW1lbnQSLC5leHBlcmltZW50cy52MS5Gb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXF1ZXN0Gi0uZXhwZXJpbWVudHMudjEuRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USgwEKGlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50EjEuZXhwZXJpbWVudHMudjEuUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXF1ZXN0GjIuZXhwZXJpbWVudHMudjEuUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRJ3ChZHZXRDdXN0b21lckFzc2lnbm1lbnRzEi0uZXhwZXJpbWVudHMudjEuR2V0Q3VzdG9tZXJBc3NpZ25tZW50c1JlcXVlc3QaLi5leHBlcmltZW50cy52MS5HZXRDdXN0b21lckFzc2lnbm1lbnRzUmVzcG9uc2USYgoPUmVzb2x2ZUV4cG9zdXJlEiYuZXhwZXJpbWVudHMudjEuUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlJlc29sdmVFeHBvc3VyZVJlc3BvbnNlQkNaQWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9leHBlcmltZW50cy92MTtleHBlcmltZW50c3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("CiBleHBlcmltZW50cy92MS9leHBlcmltZW50cy5wcm90bxIOZXhwZXJpbWVudHMudjEiswEKE0V4cGVyaW1lbnRUYXJnZXRpbmcSDAoEdHlwZRgBIAEoCRIXCgpzZWdtZW50X2lkGAIgASgJSACIAQESGAoLc2VnbWVudF9rZXkYAyABKAlIAYgBARIyCgVydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQFCDQoLX3NlZ21lbnRfaWRCDgoMX3NlZ21lbnRfa2V5QggKBl9ydWxlcyJ4ChFFeHBlcmltZW50VmFyaWFudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdwZXJjZW50GAMgASgFEiwKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIpUGCgpFeHBlcmltZW50EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESMAoGc3RhdHVzGAogASgOMiAuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFN0YXR1cxIRCglpc19hY3RpdmUYCyABKAgSNgoJdGFyZ2V0aW5nGBQgASgLMiMuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudFRhcmdldGluZxIXCg9jb250cm9sX3BlcmNlbnQYFSABKAUSMwoIdmFyaWFudHMYFiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIeChZhc3NpZ25tZW50X3BlcnNpc3RlbmNlGBcgASgJEjMKCnN0YXJ0X2RhdGUYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESMQoIZW5kX2RhdGUYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLQoHbWV0cmljcxgjIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIrCgVnb2FscxgkIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIRCgl0ZW5hbnRfaWQYKCABKAkSEgoKcHJvamVjdF9pZBgpIAEoCRIXCgpjcmVhdGVkX2J5GC0gASgJSAWIAQESFwoKdXBkYXRlZF9ieRguIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkINCgtfc3RhcnRfZGF0ZUILCglfZW5kX2RhdGVCCgoIX21ldHJpY3NCCAoGX2dvYWxzQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5ItQDChRFeHBlcmltZW50QXNzaWdubWVudBIKCgJpZBgBIAEoCRIVCg1leHBlcmltZW50X2lkGAIgASgJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESEwoLdmFyaWFudF9rZXkYBCABKAkSGQoRYXNzaWdubWVudF9tZXRob2QYBSABKAkSFgoOZXhwZXJpbWVudF9rZXkYBiABKAkSFwoKdmlld2VyX2tleRgHIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEi8KC2Fzc2lnbmVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1maXJzdF9zZWVuX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3NlZW5fYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmV4cGlyZXNfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDgoMX2N1c3RvbWVyX2lkQg0KC192aWV3ZXJfa2V5Qg0KC19leHBpcmVzX2F0IkUKFUV4cGVyaW1lbnREZWNsYXJhdGlvbhIWCg5leHBlcmltZW50X2tleRgBIAEoCRIUCgx2YXJpYW50X2tleXMYAiADKAkipwEKDFZhcmlhbnRTdGF0cxITCgt2YXJpYW50X2tleRgBIAEoCRIYChBhc3NpZ25tZW50X2NvdW50GAIgASgFEhcKD2NvbnZlcnNpb25fcmF0ZRgDIAEoARI4ChJhZGRpdGlvbmFsX21ldHJpY3MYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCFQoTX2FkZGl0aW9uYWxfbWV0cmljcyJhCg9FeHBlcmltZW50U3RhdHMSMwoNdmFyaWFudF9zdGF0cxgBIAMoCzIcLmV4cGVyaW1lbnRzLnYxLlZhcmlhbnRTdGF0cxIZChF0b3RhbF9hc3NpZ25tZW50cxgCIAEoBSKLBAoXQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI7Cgl0YXJnZXRpbmcYBCABKAsyIy5leHBlcmltZW50cy52MS5FeHBlcmltZW50VGFyZ2V0aW5nSAGIAQESHAoPY29udHJvbF9wZXJjZW50GAUgASgFSAKIAQESMwoIdmFyaWFudHMYBiADKAsyIS5leHBlcmltZW50cy52MS5FeHBlcmltZW50VmFyaWFudBIzCgpzdGFydF9kYXRlGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjEKCGVuZF9kYXRlGAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiMKFmFzc2lnbm1lbnRfcGVyc2lzdGVuY2UYCSABKAlIBYgBARIrCgVnb2FscxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX3RhcmdldGluZ0ISChBfY29udHJvbF9wZXJjZW50Qg0KC19zdGFydF9kYXRlQgsKCV9lbmRfZGF0ZUIZChdfYXNzaWdubWVudF9wZXJzaXN0ZW5jZUIICgZfZ29hbHMiSgoYQ3JlYXRlRXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50IiIKFEdldEV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIkcKFUdldEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIoChlHZXRFeHBlcmltZW50QnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJMChpHZXRFeHBlcmltZW50QnlLZXlSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCKfAQoWTGlzdEV4cGVyaW1lbnRzUmVxdWVzdBI1CgZzdGF0dXMYASABKA4yIC5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHVzSACIAQESFgoJaXNfYWN0aXZlGAIgASgISAGIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zdGF0dXNCDAoKX2lzX2FjdGl2ZSJZChdMaXN0RXhwZXJpbWVudHNSZXNwb25zZRIvCgtleHBlcmltZW50cxgBIAMoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQSDQoFdG90YWwYAiABKAUimAQKF1VwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEjsKCXRhcmdldGluZxgEIAEoCzIjLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRUYXJnZXRpbmdIAogBARIcCg9jb250cm9sX3BlcmNlbnQYBSABKAVIA4gBARIzCgh2YXJpYW50cxgGIAMoCzIhLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRWYXJpYW50EjMKCnN0YXJ0X2RhdGUYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESMQoIZW5kX2RhdGUYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIwoWYXNzaWdubWVudF9wZXJzaXN0ZW5jZRgJIAEoCUgGiAEBEisKBWdvYWxzGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfdGFyZ2V0aW5nQhIKEF9jb250cm9sX3BlcmNlbnRCDQoLX3N0YXJ0X2RhdGVCCwoJX2VuZF9kYXRlQhkKF19hc3NpZ25tZW50X3BlcnNpc3RlbmNlQggKBl9nb2FscyJKChhVcGRhdGVFeHBlcmltZW50UmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiJQoXRGVsZXRlRXhwZXJpbWVudFJlcXVlc3QSCgoCaWQYASABKAkiKwoYRGVsZXRlRXhwZXJpbWVudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoWU3RhcnRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkkKF1N0YXJ0RXhwZXJpbWVudFJlc3BvbnNlEi4KCmV4cGVyaW1lbnQYASABKAsyGi5leHBlcmltZW50cy52MS5FeHBlcmltZW50Ii8KFlBhdXNlRXhwZXJpbWVudFJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCSJJChdQYXVzZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIwChdSZXN1bWVFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkoKGFJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCItChRFbmRFeHBlcmltZW50UmVxdWVzdBIVCg1leHBlcmltZW50X2lkGAEgASgJIkcKFUVuZEV4cGVyaW1lbnRSZXNwb25zZRIuCgpleHBlcmltZW50GAEgASgLMhouZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudCIyChlHZXRFeHBlcmltZW50U3RhdHNSZXF1ZXN0EhUKDWV4cGVyaW1lbnRfaWQYASABKAkiTAoaR2V0RXhwZXJpbWVudFN0YXRzUmVzcG9uc2USLgoFc3RhdHMYASABKAsyHy5leHBlcmltZW50cy52MS5FeHBlcmltZW50U3RhdHMinAEKHEZvcmNlQXNzaWduRXhwZXJpbWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhMKC3ZhcmlhbnRfa2V5GAMgASgJEhcKCnZpZXdlcl9rZXkYBCABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiWQodRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USOAoKYXNzaWdubWVudBgBIAEoCzIkLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnRBc3NpZ25tZW50IowBCiFSZW1vdmVFeHBlcmltZW50QXNzaWdubWVudFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBARIVCg1leHBlcmltZW50X2lkGAIgASgJEhcKCnZpZXdlcl9rZXkYAyABKAlIAYgBAUIOCgxfY3VzdG9tZXJfaWRCDQoLX3ZpZXdlcl9rZXkiNQoiUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlEKHEFwcGx5RXhwZXJpbWVudFdpbm5lclJlcXVlc3QSFQoNZXhwZXJpbWVudF9pZBgBIAEoCRIaChJ3aW5uZXJfdmFyaWFudF9rZXkYAiABKAkiTwodQXBwbHlFeHBlcmltZW50V2lubmVyUmVzcG9uc2USLgoKZXhwZXJpbWVudBgBIAEoCzIaLmV4cGVyaW1lbnRzLnYxLkV4cGVyaW1lbnQiaQoVR2V0QXNzaWdubWVudHNSZXF1ZXN0EhgKC2N1c3RvbWVyX2lkGAEgASgJSACIAQESFwoKdmlld2VyX2tleRgCIAEoCUgBiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleSJTChZHZXRBc3NpZ25tZW50c1Jlc3BvbnNlEjkKC2Fzc2lnbm1lbnRzGAEgAygLMiQuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudEFzc2lnbm1lbnQiIwohTGlzdEV4cGVyaW1lbnREZWNsYXJhdGlvbnNSZXF1ZXN0ImEKIkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVzcG9uc2USOwoMZGVjbGFyYXRpb25zGAEgAygLMiUuZXhwZXJpbWVudHMudjEuRXhwZXJpbWVudERlY2xhcmF0aW9uIoIBChZSZXNvbHZlRXhwb3N1cmVSZXF1ZXN0EhYKDmV4cGVyaW1lbnRfa2V5GAEgASgJEhgKC2N1c3RvbWVyX2lkGAIgASgJSACIAQESFwoKdmlld2VyX2tleRgDIAEoCUgBiAEBQg4KDF9jdXN0b21lcl9pZEINCgtfdmlld2VyX2tleSKkAQoXUmVzb2x2ZUV4cG9zdXJlUmVzcG9uc2USFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCBISCgppc19leHBvc2VkGAQgASgIEhkKEWFzc2lnbm1lbnRfbWV0aG9kGAUgASgJEhkKEWlzX25ld19hc3NpZ25tZW50GAYgASgIKrABChBFeHBlcmltZW50U3RhdHVzEiEKHUVYUEVSSU1FTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXRVhQRVJJTUVOVF9TVEFUVVNfRFJBRlQQARIdChlFWFBFUklNRU5UX1NUQVRVU19SVU5OSU5HEAISHAoYRVhQRVJJTUVOVF9TVEFUVVNfUEFVU0VEEAMSHwobRVhQRVJJTUVOVF9TVEFUVVNfQ09NUExFVEVEEAQyrw4KEkV4cGVyaW1lbnRzU2VydmljZRJcCg1HZXRFeHBlcmltZW50EiQuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudFJlcXVlc3QaJS5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50UmVzcG9uc2USawoSR2V0RXhwZXJpbWVudEJ5S2V5EikuZXhwZXJpbWVudHMudjEuR2V0RXhwZXJpbWVudEJ5S2V5UmVxdWVzdBoqLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRCeUtleVJlc3BvbnNlEmIKD0xpc3RFeHBlcmltZW50cxImLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50c1JlcXVlc3QaJy5leHBlcmltZW50cy52MS5MaXN0RXhwZXJpbWVudHNSZXNwb25zZRJlChBDcmVhdGVFeHBlcmltZW50EicuZXhwZXJpbWVudHMudjEuQ3JlYXRlRXhwZXJpbWVudFJlcXVlc3QaKC5leHBlcmltZW50cy52MS5DcmVhdGVFeHBlcmltZW50UmVzcG9uc2USZQoQVXBkYXRlRXhwZXJpbWVudBInLmV4cGVyaW1lbnRzLnYxLlVwZGF0ZUV4cGVyaW1lbnRSZXF1ZXN0GiguZXhwZXJpbWVudHMudjEuVXBkYXRlRXhwZXJpbWVudFJlc3BvbnNlEmUKEERlbGV0ZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5EZWxldGVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLkRlbGV0ZUV4cGVyaW1lbnRSZXNwb25zZRJiCg9TdGFydEV4cGVyaW1lbnQSJi5leHBlcmltZW50cy52MS5TdGFydEV4cGVyaW1lbnRSZXF1ZXN0GicuZXhwZXJpbWVudHMudjEuU3RhcnRFeHBlcmltZW50UmVzcG9uc2USYgoPUGF1c2VFeHBlcmltZW50EiYuZXhwZXJpbWVudHMudjEuUGF1c2VFeHBlcmltZW50UmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlBhdXNlRXhwZXJpbWVudFJlc3BvbnNlEmUKEFJlc3VtZUV4cGVyaW1lbnQSJy5leHBlcmltZW50cy52MS5SZXN1bWVFeHBlcmltZW50UmVxdWVzdBooLmV4cGVyaW1lbnRzLnYxLlJlc3VtZUV4cGVyaW1lbnRSZXNwb25zZRJcCg1FbmRFeHBlcmltZW50EiQuZXhwZXJpbWVudHMudjEuRW5kRXhwZXJpbWVudFJlcXVlc3QaJS5leHBlcmltZW50cy52MS5FbmRFeHBlcmltZW50UmVzcG9uc2USdAoVQXBwbHlFeHBlcmltZW50V2lubmVyEiwuZXhwZXJpbWVudHMudjEuQXBwbHlFeHBlcmltZW50V2lubmVyUmVxdWVzdBotLmV4cGVyaW1lbnRzLnYxLkFwcGx5RXhwZXJpbWVudFdpbm5lclJlc3BvbnNlEmsKEkdldEV4cGVyaW1lbnRTdGF0cxIpLmV4cGVyaW1lbnRzLnYxLkdldEV4cGVyaW1lbnRTdGF0c1JlcXVlc3QaKi5leHBlcmltZW50cy52MS5HZXRFeHBlcmltZW50U3RhdHNSZXNwb25zZRJ0ChVGb3JjZUFzc2lnbkV4cGVyaW1lbnQSLC5leHBlcmltZW50cy52MS5Gb3JjZUFzc2lnbkV4cGVyaW1lbnRSZXF1ZXN0Gi0uZXhwZXJpbWVudHMudjEuRm9yY2VBc3NpZ25FeHBlcmltZW50UmVzcG9uc2USgwEKGlJlbW92ZUV4cGVyaW1lbnRBc3NpZ25tZW50EjEuZXhwZXJpbWVudHMudjEuUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXF1ZXN0GjIuZXhwZXJpbWVudHMudjEuUmVtb3ZlRXhwZXJpbWVudEFzc2lnbm1lbnRSZXNwb25zZRJfCg5HZXRBc3NpZ25tZW50cxIlLmV4cGVyaW1lbnRzLnYxLkdldEFzc2lnbm1lbnRzUmVxdWVzdBomLmV4cGVyaW1lbnRzLnYxLkdldEFzc2lnbm1lbnRzUmVzcG9uc2USYgoPUmVzb2x2ZUV4cG9zdXJlEiYuZXhwZXJpbWVudHMudjEuUmVzb2x2ZUV4cG9zdXJlUmVxdWVzdBonLmV4cGVyaW1lbnRzLnYxLlJlc29sdmVFeHBvc3VyZVJlc3BvbnNlEoMBChpMaXN0RXhwZXJpbWVudERlY2xhcmF0aW9ucxIxLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVxdWVzdBoyLmV4cGVyaW1lbnRzLnYxLkxpc3RFeHBlcmltZW50RGVjbGFyYXRpb25zUmVzcG9uc2VCQ1pBZ2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2V4cGVyaW1lbnRzL3YxO2V4cGVyaW1lbnRzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message experiments.v1.ExperimentTargeting.
@@ -40,243 +40,264 @@ export const ExperimentSchema = /*@__PURE__*/
40
40
  export const ExperimentAssignmentSchema = /*@__PURE__*/
41
41
  messageDesc(file_experiments_v1_experiments, 3);
42
42
 
43
+ /**
44
+ * Describes the message experiments.v1.ExperimentDeclaration.
45
+ * Use `create(ExperimentDeclarationSchema)` to create a new message.
46
+ */
47
+ export const ExperimentDeclarationSchema = /*@__PURE__*/
48
+ messageDesc(file_experiments_v1_experiments, 4);
49
+
43
50
  /**
44
51
  * Describes the message experiments.v1.VariantStats.
45
52
  * Use `create(VariantStatsSchema)` to create a new message.
46
53
  */
47
54
  export const VariantStatsSchema = /*@__PURE__*/
48
- messageDesc(file_experiments_v1_experiments, 4);
55
+ messageDesc(file_experiments_v1_experiments, 5);
49
56
 
50
57
  /**
51
58
  * Describes the message experiments.v1.ExperimentStats.
52
59
  * Use `create(ExperimentStatsSchema)` to create a new message.
53
60
  */
54
61
  export const ExperimentStatsSchema = /*@__PURE__*/
55
- messageDesc(file_experiments_v1_experiments, 5);
62
+ messageDesc(file_experiments_v1_experiments, 6);
56
63
 
57
64
  /**
58
65
  * Describes the message experiments.v1.CreateExperimentRequest.
59
66
  * Use `create(CreateExperimentRequestSchema)` to create a new message.
60
67
  */
61
68
  export const CreateExperimentRequestSchema = /*@__PURE__*/
62
- messageDesc(file_experiments_v1_experiments, 6);
69
+ messageDesc(file_experiments_v1_experiments, 7);
63
70
 
64
71
  /**
65
72
  * Describes the message experiments.v1.CreateExperimentResponse.
66
73
  * Use `create(CreateExperimentResponseSchema)` to create a new message.
67
74
  */
68
75
  export const CreateExperimentResponseSchema = /*@__PURE__*/
69
- messageDesc(file_experiments_v1_experiments, 7);
76
+ messageDesc(file_experiments_v1_experiments, 8);
70
77
 
71
78
  /**
72
79
  * Describes the message experiments.v1.GetExperimentRequest.
73
80
  * Use `create(GetExperimentRequestSchema)` to create a new message.
74
81
  */
75
82
  export const GetExperimentRequestSchema = /*@__PURE__*/
76
- messageDesc(file_experiments_v1_experiments, 8);
83
+ messageDesc(file_experiments_v1_experiments, 9);
77
84
 
78
85
  /**
79
86
  * Describes the message experiments.v1.GetExperimentResponse.
80
87
  * Use `create(GetExperimentResponseSchema)` to create a new message.
81
88
  */
82
89
  export const GetExperimentResponseSchema = /*@__PURE__*/
83
- messageDesc(file_experiments_v1_experiments, 9);
90
+ messageDesc(file_experiments_v1_experiments, 10);
84
91
 
85
92
  /**
86
93
  * Describes the message experiments.v1.GetExperimentByKeyRequest.
87
94
  * Use `create(GetExperimentByKeyRequestSchema)` to create a new message.
88
95
  */
89
96
  export const GetExperimentByKeyRequestSchema = /*@__PURE__*/
90
- messageDesc(file_experiments_v1_experiments, 10);
97
+ messageDesc(file_experiments_v1_experiments, 11);
91
98
 
92
99
  /**
93
100
  * Describes the message experiments.v1.GetExperimentByKeyResponse.
94
101
  * Use `create(GetExperimentByKeyResponseSchema)` to create a new message.
95
102
  */
96
103
  export const GetExperimentByKeyResponseSchema = /*@__PURE__*/
97
- messageDesc(file_experiments_v1_experiments, 11);
104
+ messageDesc(file_experiments_v1_experiments, 12);
98
105
 
99
106
  /**
100
107
  * Describes the message experiments.v1.ListExperimentsRequest.
101
108
  * Use `create(ListExperimentsRequestSchema)` to create a new message.
102
109
  */
103
110
  export const ListExperimentsRequestSchema = /*@__PURE__*/
104
- messageDesc(file_experiments_v1_experiments, 12);
111
+ messageDesc(file_experiments_v1_experiments, 13);
105
112
 
106
113
  /**
107
114
  * Describes the message experiments.v1.ListExperimentsResponse.
108
115
  * Use `create(ListExperimentsResponseSchema)` to create a new message.
109
116
  */
110
117
  export const ListExperimentsResponseSchema = /*@__PURE__*/
111
- messageDesc(file_experiments_v1_experiments, 13);
118
+ messageDesc(file_experiments_v1_experiments, 14);
112
119
 
113
120
  /**
114
121
  * Describes the message experiments.v1.UpdateExperimentRequest.
115
122
  * Use `create(UpdateExperimentRequestSchema)` to create a new message.
116
123
  */
117
124
  export const UpdateExperimentRequestSchema = /*@__PURE__*/
118
- messageDesc(file_experiments_v1_experiments, 14);
125
+ messageDesc(file_experiments_v1_experiments, 15);
119
126
 
120
127
  /**
121
128
  * Describes the message experiments.v1.UpdateExperimentResponse.
122
129
  * Use `create(UpdateExperimentResponseSchema)` to create a new message.
123
130
  */
124
131
  export const UpdateExperimentResponseSchema = /*@__PURE__*/
125
- messageDesc(file_experiments_v1_experiments, 15);
132
+ messageDesc(file_experiments_v1_experiments, 16);
126
133
 
127
134
  /**
128
135
  * Describes the message experiments.v1.DeleteExperimentRequest.
129
136
  * Use `create(DeleteExperimentRequestSchema)` to create a new message.
130
137
  */
131
138
  export const DeleteExperimentRequestSchema = /*@__PURE__*/
132
- messageDesc(file_experiments_v1_experiments, 16);
139
+ messageDesc(file_experiments_v1_experiments, 17);
133
140
 
134
141
  /**
135
142
  * Describes the message experiments.v1.DeleteExperimentResponse.
136
143
  * Use `create(DeleteExperimentResponseSchema)` to create a new message.
137
144
  */
138
145
  export const DeleteExperimentResponseSchema = /*@__PURE__*/
139
- messageDesc(file_experiments_v1_experiments, 17);
146
+ messageDesc(file_experiments_v1_experiments, 18);
140
147
 
141
148
  /**
142
149
  * Describes the message experiments.v1.StartExperimentRequest.
143
150
  * Use `create(StartExperimentRequestSchema)` to create a new message.
144
151
  */
145
152
  export const StartExperimentRequestSchema = /*@__PURE__*/
146
- messageDesc(file_experiments_v1_experiments, 18);
153
+ messageDesc(file_experiments_v1_experiments, 19);
147
154
 
148
155
  /**
149
156
  * Describes the message experiments.v1.StartExperimentResponse.
150
157
  * Use `create(StartExperimentResponseSchema)` to create a new message.
151
158
  */
152
159
  export const StartExperimentResponseSchema = /*@__PURE__*/
153
- messageDesc(file_experiments_v1_experiments, 19);
160
+ messageDesc(file_experiments_v1_experiments, 20);
154
161
 
155
162
  /**
156
163
  * Describes the message experiments.v1.PauseExperimentRequest.
157
164
  * Use `create(PauseExperimentRequestSchema)` to create a new message.
158
165
  */
159
166
  export const PauseExperimentRequestSchema = /*@__PURE__*/
160
- messageDesc(file_experiments_v1_experiments, 20);
167
+ messageDesc(file_experiments_v1_experiments, 21);
161
168
 
162
169
  /**
163
170
  * Describes the message experiments.v1.PauseExperimentResponse.
164
171
  * Use `create(PauseExperimentResponseSchema)` to create a new message.
165
172
  */
166
173
  export const PauseExperimentResponseSchema = /*@__PURE__*/
167
- messageDesc(file_experiments_v1_experiments, 21);
174
+ messageDesc(file_experiments_v1_experiments, 22);
168
175
 
169
176
  /**
170
177
  * Describes the message experiments.v1.ResumeExperimentRequest.
171
178
  * Use `create(ResumeExperimentRequestSchema)` to create a new message.
172
179
  */
173
180
  export const ResumeExperimentRequestSchema = /*@__PURE__*/
174
- messageDesc(file_experiments_v1_experiments, 22);
181
+ messageDesc(file_experiments_v1_experiments, 23);
175
182
 
176
183
  /**
177
184
  * Describes the message experiments.v1.ResumeExperimentResponse.
178
185
  * Use `create(ResumeExperimentResponseSchema)` to create a new message.
179
186
  */
180
187
  export const ResumeExperimentResponseSchema = /*@__PURE__*/
181
- messageDesc(file_experiments_v1_experiments, 23);
188
+ messageDesc(file_experiments_v1_experiments, 24);
182
189
 
183
190
  /**
184
191
  * Describes the message experiments.v1.EndExperimentRequest.
185
192
  * Use `create(EndExperimentRequestSchema)` to create a new message.
186
193
  */
187
194
  export const EndExperimentRequestSchema = /*@__PURE__*/
188
- messageDesc(file_experiments_v1_experiments, 24);
195
+ messageDesc(file_experiments_v1_experiments, 25);
189
196
 
190
197
  /**
191
198
  * Describes the message experiments.v1.EndExperimentResponse.
192
199
  * Use `create(EndExperimentResponseSchema)` to create a new message.
193
200
  */
194
201
  export const EndExperimentResponseSchema = /*@__PURE__*/
195
- messageDesc(file_experiments_v1_experiments, 25);
202
+ messageDesc(file_experiments_v1_experiments, 26);
196
203
 
197
204
  /**
198
205
  * Describes the message experiments.v1.GetExperimentStatsRequest.
199
206
  * Use `create(GetExperimentStatsRequestSchema)` to create a new message.
200
207
  */
201
208
  export const GetExperimentStatsRequestSchema = /*@__PURE__*/
202
- messageDesc(file_experiments_v1_experiments, 26);
209
+ messageDesc(file_experiments_v1_experiments, 27);
203
210
 
204
211
  /**
205
212
  * Describes the message experiments.v1.GetExperimentStatsResponse.
206
213
  * Use `create(GetExperimentStatsResponseSchema)` to create a new message.
207
214
  */
208
215
  export const GetExperimentStatsResponseSchema = /*@__PURE__*/
209
- messageDesc(file_experiments_v1_experiments, 27);
216
+ messageDesc(file_experiments_v1_experiments, 28);
210
217
 
211
218
  /**
212
219
  * Describes the message experiments.v1.ForceAssignExperimentRequest.
213
220
  * Use `create(ForceAssignExperimentRequestSchema)` to create a new message.
214
221
  */
215
222
  export const ForceAssignExperimentRequestSchema = /*@__PURE__*/
216
- messageDesc(file_experiments_v1_experiments, 28);
223
+ messageDesc(file_experiments_v1_experiments, 29);
217
224
 
218
225
  /**
219
226
  * Describes the message experiments.v1.ForceAssignExperimentResponse.
220
227
  * Use `create(ForceAssignExperimentResponseSchema)` to create a new message.
221
228
  */
222
229
  export const ForceAssignExperimentResponseSchema = /*@__PURE__*/
223
- messageDesc(file_experiments_v1_experiments, 29);
230
+ messageDesc(file_experiments_v1_experiments, 30);
224
231
 
225
232
  /**
226
233
  * Describes the message experiments.v1.RemoveExperimentAssignmentRequest.
227
234
  * Use `create(RemoveExperimentAssignmentRequestSchema)` to create a new message.
228
235
  */
229
236
  export const RemoveExperimentAssignmentRequestSchema = /*@__PURE__*/
230
- messageDesc(file_experiments_v1_experiments, 30);
237
+ messageDesc(file_experiments_v1_experiments, 31);
231
238
 
232
239
  /**
233
240
  * Describes the message experiments.v1.RemoveExperimentAssignmentResponse.
234
241
  * Use `create(RemoveExperimentAssignmentResponseSchema)` to create a new message.
235
242
  */
236
243
  export const RemoveExperimentAssignmentResponseSchema = /*@__PURE__*/
237
- messageDesc(file_experiments_v1_experiments, 31);
244
+ messageDesc(file_experiments_v1_experiments, 32);
238
245
 
239
246
  /**
240
247
  * Describes the message experiments.v1.ApplyExperimentWinnerRequest.
241
248
  * Use `create(ApplyExperimentWinnerRequestSchema)` to create a new message.
242
249
  */
243
250
  export const ApplyExperimentWinnerRequestSchema = /*@__PURE__*/
244
- messageDesc(file_experiments_v1_experiments, 32);
251
+ messageDesc(file_experiments_v1_experiments, 33);
245
252
 
246
253
  /**
247
254
  * Describes the message experiments.v1.ApplyExperimentWinnerResponse.
248
255
  * Use `create(ApplyExperimentWinnerResponseSchema)` to create a new message.
249
256
  */
250
257
  export const ApplyExperimentWinnerResponseSchema = /*@__PURE__*/
251
- messageDesc(file_experiments_v1_experiments, 33);
258
+ messageDesc(file_experiments_v1_experiments, 34);
252
259
 
253
260
  /**
254
- * Describes the message experiments.v1.GetCustomerAssignmentsRequest.
255
- * Use `create(GetCustomerAssignmentsRequestSchema)` to create a new message.
261
+ * Describes the message experiments.v1.GetAssignmentsRequest.
262
+ * Use `create(GetAssignmentsRequestSchema)` to create a new message.
256
263
  */
257
- export const GetCustomerAssignmentsRequestSchema = /*@__PURE__*/
258
- messageDesc(file_experiments_v1_experiments, 34);
264
+ export const GetAssignmentsRequestSchema = /*@__PURE__*/
265
+ messageDesc(file_experiments_v1_experiments, 35);
259
266
 
260
267
  /**
261
- * Describes the message experiments.v1.GetCustomerAssignmentsResponse.
262
- * Use `create(GetCustomerAssignmentsResponseSchema)` to create a new message.
268
+ * Describes the message experiments.v1.GetAssignmentsResponse.
269
+ * Use `create(GetAssignmentsResponseSchema)` to create a new message.
263
270
  */
264
- export const GetCustomerAssignmentsResponseSchema = /*@__PURE__*/
265
- messageDesc(file_experiments_v1_experiments, 35);
271
+ export const GetAssignmentsResponseSchema = /*@__PURE__*/
272
+ messageDesc(file_experiments_v1_experiments, 36);
273
+
274
+ /**
275
+ * Describes the message experiments.v1.ListExperimentDeclarationsRequest.
276
+ * Use `create(ListExperimentDeclarationsRequestSchema)` to create a new message.
277
+ */
278
+ export const ListExperimentDeclarationsRequestSchema = /*@__PURE__*/
279
+ messageDesc(file_experiments_v1_experiments, 37);
280
+
281
+ /**
282
+ * Describes the message experiments.v1.ListExperimentDeclarationsResponse.
283
+ * Use `create(ListExperimentDeclarationsResponseSchema)` to create a new message.
284
+ */
285
+ export const ListExperimentDeclarationsResponseSchema = /*@__PURE__*/
286
+ messageDesc(file_experiments_v1_experiments, 38);
266
287
 
267
288
  /**
268
289
  * Describes the message experiments.v1.ResolveExposureRequest.
269
290
  * Use `create(ResolveExposureRequestSchema)` to create a new message.
270
291
  */
271
292
  export const ResolveExposureRequestSchema = /*@__PURE__*/
272
- messageDesc(file_experiments_v1_experiments, 36);
293
+ messageDesc(file_experiments_v1_experiments, 39);
273
294
 
274
295
  /**
275
296
  * Describes the message experiments.v1.ResolveExposureResponse.
276
297
  * Use `create(ResolveExposureResponseSchema)` to create a new message.
277
298
  */
278
299
  export const ResolveExposureResponseSchema = /*@__PURE__*/
279
- messageDesc(file_experiments_v1_experiments, 37);
300
+ messageDesc(file_experiments_v1_experiments, 40);
280
301
 
281
302
  /**
282
303
  * Describes the enum experiments.v1.ExperimentStatus.
@@ -1180,6 +1180,17 @@ export enum FieldType {
1180
1180
  * @generated from enum value: FIELD_TYPE_FLEXIBLE = 14;
1181
1181
  */
1182
1182
  FLEXIBLE = 14,
1183
+
1184
+ /**
1185
+ * FIELD_TYPE_SECRET — opaque ref into the platform secret vault. Writes
1186
+ * accept plaintext and are routed through SecretsService.PutSecret /
1187
+ * RotateSecret; reads return the 24-char ref. The bind/unbind dance with
1188
+ * secret_references is platform-managed. Field config carries an optional
1189
+ * on_delete policy (block | cascade) read by DeleteSecret + DeleteRecord.
1190
+ *
1191
+ * @generated from enum value: FIELD_TYPE_SECRET = 15;
1192
+ */
1193
+ SECRET = 15,
1183
1194
  }
1184
1195
 
1185
1196
  /**
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file models/v1/models.proto.
10
10
  */
11
11
  export const file_models_v1_models = /*@__PURE__*/
12
- fileDesc("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiuQQKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCEAoOX2RlZmF1bHRfdmFsdWVCDAoKX2l0ZW1fdHlwZUIKCghfc3RvcmFnZUIQCg5fdGVtcGxhdGVfem9uZUINCgtfem9uZV9vcmRlckITChFfcmVmZXJlbmNlX2ZpbHRlckINCgtfdmFsaWRhdGlvbiI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIq8FCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEh4KEW5hdHVyYWxfa2V5X2ZpZWxkGAwgASgJSAaIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIB4gBARIVCghlZGl0YWJsZRgPIAEoCEgIiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIXCgpwbHVyYWxfa2V5GBIgASgJSAuIAQFCCgoIX3NoYXJpbmdCDgoMX3BsdXJhbF9uYW1lQg4KDF9kZXNjcmlwdGlvbkILCglfY2F0ZWdvcnlCBwoFX2ljb25CEAoOX2Rpc3BsYXlfZmllbGRCFAoSX25hdHVyYWxfa2V5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5IokBChFNb2RlbENhcGFiaWxpdGllcxIUCgxpc192ZXJzaW9uZWQYASABKAgSFgoOaXNfcHVibGlzaGFibGUYAiABKAgSFAoMaGFzX3ZhcmlhbnRzGAMgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgEIAEoCBIXCg9zaGFyaW5nX2VuYWJsZWQYBSABKAginwUKBU1vZGVsEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBImCgZjb25maWcYBSABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWcSFgoJY29uZmlnX2lkGAYgASgJSACIAQESMgoMY2FwYWJpbGl0aWVzGAcgASgLMhwubW9kZWxzLnYxLk1vZGVsQ2FwYWJpbGl0aWVzEh8KEmN1cnJlbnRfdmVyc2lvbl9pZBgIIAEoCUgBiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchgJIAEoBUgCiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIA4gBARIXCgp1cGRhdGVkX2J5GBUgASgJSASIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoSbGFzdF9wdXNoZWRfZmllbGRzGCggAygLMhAubW9kZWxzLnYxLkZpZWxkEjcKDmxhc3RfcHVzaGVkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQgwKCl9jb25maWdfaWRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD19sYXN0X3B1c2hlZF9hdCLCAgoMTW9kZWxWZXJzaW9uEgoKAmlkGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkizQEKEkNyZWF0ZU1vZGVsUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESFgoJY29uZmlnX2lkGAUgASgJSAGIAQESHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAhCCQoHX2NvbmZpZ0IMCgpfY29uZmlnX2lkIjYKE0NyZWF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiHQoPR2V0TW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjMKEEdldE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIwoUR2V0TW9kZWxCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjgKFUdldE1vZGVsQnlLZXlSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKcAQoRTGlzdE1vZGVsc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESFQoIY2F0ZWdvcnkYAiABKAlIAYgBARINCgVsaW1pdBgDIAEoBRIOCgZvZmZzZXQYBCABKAUSFgoJY29uZmlnX2lkGAUgASgJSAKIAQFCCQoHX3NlYXJjaEILCglfY2F0ZWdvcnlCDAoKX2NvbmZpZ19pZCJFChJMaXN0TW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEg0KBXRvdGFsGAIgASgFIpoCChJVcGRhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIVCg11cGRhdGVfZmllbGRzGAYgASgIEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAhCBwoFX25hbWVCCQoHX2NvbmZpZ0IVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIjYKE1VwZGF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIAoSRGVsZXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE0RlbGV0ZU1vZGVsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJGChVEdXBsaWNhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSDwoHbmV3X2tleRgCIAEoCRIQCghuZXdfbmFtZRgDIAEoCSI5ChZEdXBsaWNhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIksKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiVQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUiPgoWR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIkMKF0dldE1vZGVsVmVyc2lvblJlc3BvbnNlEigKB3ZlcnNpb24YASABKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uIkIKGlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiPgobUmVzdG9yZU1vZGVsVmVyc2lvblJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsImMKFERlcHJlY2F0ZWRGaWVsZFRvdWNoEhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglmaWVsZF9rZXkYBCABKAkiVgoiTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBIwCgd0b3VjaGVzGAEgAygLMh8ubW9kZWxzLnYxLkRlcHJlY2F0ZWRGaWVsZFRvdWNoIjYKI01hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlc3BvbnNlEg8KB3VwZGF0ZWQYASABKAUi9wEKGERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZRIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghtb2RlbF9pZBgDIAEoCRIRCgltb2RlbF9rZXkYBCABKAkSEQoJZmllbGRfa2V5GAUgASgJEi4KCmRlbGV0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKD2xhc3RfcXVlcmllZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUISChBfbGFzdF9xdWVyaWVkX2F0IkQKJExpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBIcChRncmFjZV9wZXJpb2Rfc2Vjb25kcxgBIAEoAyJgCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlIkEKGkRyb3BEZXByZWNhdGVkRmllbGRSZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhEKCWZpZWxkX2tleRgCIAEoCSIuChtEcm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2USDwoHZHJvcHBlZBgBIAEoCCrjAgoJRmllbGRUeXBlEhoKFkZJRUxEX1RZUEVfVU5TUEVDSUZJRUQQABITCg9GSUVMRF9UWVBFX1RFWFQQARIVChFGSUVMRF9UWVBFX05VTUJFUhACEhYKEkZJRUxEX1RZUEVfQk9PTEVBThADEhMKD0ZJRUxEX1RZUEVfREFURRAEEhUKEUZJRUxEX1RZUEVfU0VMRUNUEAUSEwoPRklFTERfVFlQRV9KU09OEAYSEwoPRklFTERfVFlQRV9MSVNUEAcSFAoQRklFTERfVFlQRV9NT0RFTBAIEhgKFEZJRUxEX1RZUEVfUkVGRVJFTkNFEAkSEwoPRklFTERfVFlQRV9GSUxFEAoSFAoQRklFTERfVFlQRV9JTUFHRRALEhQKEEZJRUxEX1RZUEVfVklERU8QDBIWChJGSUVMRF9UWVBFX0NPTlRFTlQQDRIXChNGSUVMRF9UWVBFX0ZMRVhJQkxFEA4yvQkKDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USggEKHUxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzEi8ubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBowLm1vZGVscy52MS5MaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEmQKE0Ryb3BEZXByZWNhdGVkRmllbGQSJS5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlcXVlc3QaJi5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9tb2RlbHMvdjE7bW9kZWxzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiuQQKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCEAoOX2RlZmF1bHRfdmFsdWVCDAoKX2l0ZW1fdHlwZUIKCghfc3RvcmFnZUIQCg5fdGVtcGxhdGVfem9uZUINCgtfem9uZV9vcmRlckITChFfcmVmZXJlbmNlX2ZpbHRlckINCgtfdmFsaWRhdGlvbiI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIq8FCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEh4KEW5hdHVyYWxfa2V5X2ZpZWxkGAwgASgJSAaIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIB4gBARIVCghlZGl0YWJsZRgPIAEoCEgIiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIXCgpwbHVyYWxfa2V5GBIgASgJSAuIAQFCCgoIX3NoYXJpbmdCDgoMX3BsdXJhbF9uYW1lQg4KDF9kZXNjcmlwdGlvbkILCglfY2F0ZWdvcnlCBwoFX2ljb25CEAoOX2Rpc3BsYXlfZmllbGRCFAoSX25hdHVyYWxfa2V5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5IokBChFNb2RlbENhcGFiaWxpdGllcxIUCgxpc192ZXJzaW9uZWQYASABKAgSFgoOaXNfcHVibGlzaGFibGUYAiABKAgSFAoMaGFzX3ZhcmlhbnRzGAMgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgEIAEoCBIXCg9zaGFyaW5nX2VuYWJsZWQYBSABKAginwUKBU1vZGVsEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBImCgZjb25maWcYBSABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWcSFgoJY29uZmlnX2lkGAYgASgJSACIAQESMgoMY2FwYWJpbGl0aWVzGAcgASgLMhwubW9kZWxzLnYxLk1vZGVsQ2FwYWJpbGl0aWVzEh8KEmN1cnJlbnRfdmVyc2lvbl9pZBgIIAEoCUgBiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchgJIAEoBUgCiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIA4gBARIXCgp1cGRhdGVkX2J5GBUgASgJSASIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoSbGFzdF9wdXNoZWRfZmllbGRzGCggAygLMhAubW9kZWxzLnYxLkZpZWxkEjcKDmxhc3RfcHVzaGVkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQgwKCl9jb25maWdfaWRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD19sYXN0X3B1c2hlZF9hdCLCAgoMTW9kZWxWZXJzaW9uEgoKAmlkGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkizQEKEkNyZWF0ZU1vZGVsUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESFgoJY29uZmlnX2lkGAUgASgJSAGIAQESHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAhCCQoHX2NvbmZpZ0IMCgpfY29uZmlnX2lkIjYKE0NyZWF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiHQoPR2V0TW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjMKEEdldE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIwoUR2V0TW9kZWxCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjgKFUdldE1vZGVsQnlLZXlSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKcAQoRTGlzdE1vZGVsc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESFQoIY2F0ZWdvcnkYAiABKAlIAYgBARINCgVsaW1pdBgDIAEoBRIOCgZvZmZzZXQYBCABKAUSFgoJY29uZmlnX2lkGAUgASgJSAKIAQFCCQoHX3NlYXJjaEILCglfY2F0ZWdvcnlCDAoKX2NvbmZpZ19pZCJFChJMaXN0TW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEg0KBXRvdGFsGAIgASgFIpoCChJVcGRhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIVCg11cGRhdGVfZmllbGRzGAYgASgIEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAhCBwoFX25hbWVCCQoHX2NvbmZpZ0IVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIjYKE1VwZGF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIAoSRGVsZXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE0RlbGV0ZU1vZGVsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJGChVEdXBsaWNhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSDwoHbmV3X2tleRgCIAEoCRIQCghuZXdfbmFtZRgDIAEoCSI5ChZEdXBsaWNhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIksKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiVQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUiPgoWR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIkMKF0dldE1vZGVsVmVyc2lvblJlc3BvbnNlEigKB3ZlcnNpb24YASABKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uIkIKGlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiPgobUmVzdG9yZU1vZGVsVmVyc2lvblJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsImMKFERlcHJlY2F0ZWRGaWVsZFRvdWNoEhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglmaWVsZF9rZXkYBCABKAkiVgoiTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBIwCgd0b3VjaGVzGAEgAygLMh8ubW9kZWxzLnYxLkRlcHJlY2F0ZWRGaWVsZFRvdWNoIjYKI01hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlc3BvbnNlEg8KB3VwZGF0ZWQYASABKAUi9wEKGERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZRIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghtb2RlbF9pZBgDIAEoCRIRCgltb2RlbF9rZXkYBCABKAkSEQoJZmllbGRfa2V5GAUgASgJEi4KCmRlbGV0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKD2xhc3RfcXVlcmllZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUISChBfbGFzdF9xdWVyaWVkX2F0IkQKJExpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBIcChRncmFjZV9wZXJpb2Rfc2Vjb25kcxgBIAEoAyJgCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlIkEKGkRyb3BEZXByZWNhdGVkRmllbGRSZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhEKCWZpZWxkX2tleRgCIAEoCSIuChtEcm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2USDwoHZHJvcHBlZBgBIAEoCCr6AgoJRmllbGRUeXBlEhoKFkZJRUxEX1RZUEVfVU5TUEVDSUZJRUQQABITCg9GSUVMRF9UWVBFX1RFWFQQARIVChFGSUVMRF9UWVBFX05VTUJFUhACEhYKEkZJRUxEX1RZUEVfQk9PTEVBThADEhMKD0ZJRUxEX1RZUEVfREFURRAEEhUKEUZJRUxEX1RZUEVfU0VMRUNUEAUSEwoPRklFTERfVFlQRV9KU09OEAYSEwoPRklFTERfVFlQRV9MSVNUEAcSFAoQRklFTERfVFlQRV9NT0RFTBAIEhgKFEZJRUxEX1RZUEVfUkVGRVJFTkNFEAkSEwoPRklFTERfVFlQRV9GSUxFEAoSFAoQRklFTERfVFlQRV9JTUFHRRALEhQKEEZJRUxEX1RZUEVfVklERU8QDBIWChJGSUVMRF9UWVBFX0NPTlRFTlQQDRIXChNGSUVMRF9UWVBFX0ZMRVhJQkxFEA4SFQoRRklFTERfVFlQRV9TRUNSRVQQDzK9CQoNTW9kZWxzU2VydmljZRJDCghHZXRNb2RlbBIaLm1vZGVscy52MS5HZXRNb2RlbFJlcXVlc3QaGy5tb2RlbHMudjEuR2V0TW9kZWxSZXNwb25zZRJSCg1HZXRNb2RlbEJ5S2V5Eh8ubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXF1ZXN0GiAubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXNwb25zZRJJCgpMaXN0TW9kZWxzEhwubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXF1ZXN0Gh0ubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXNwb25zZRJMCgtDcmVhdGVNb2RlbBIdLm1vZGVscy52MS5DcmVhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXNwb25zZRJMCgtVcGRhdGVNb2RlbBIdLm1vZGVscy52MS5VcGRhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXNwb25zZRJMCgtEZWxldGVNb2RlbBIdLm1vZGVscy52MS5EZWxldGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXNwb25zZRJVCg5EdXBsaWNhdGVNb2RlbBIgLm1vZGVscy52MS5EdXBsaWNhdGVNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXNwb25zZRJYCg9HZXRNb2RlbFZlcnNpb24SIS5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBoiLm1vZGVscy52MS5HZXRNb2RlbFZlcnNpb25SZXNwb25zZRJeChFMaXN0TW9kZWxWZXJzaW9ucxIjLm1vZGVscy52MS5MaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QaJC5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRJkChNSZXN0b3JlTW9kZWxWZXJzaW9uEiUubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0GiYubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRJ8ChtNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWQSLS5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBouLm1vZGVscy52MS5NYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRKCAQodTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXMSLy5tb2RlbHMudjEuTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0GjAubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVzcG9uc2USZAoTRHJvcERlcHJlY2F0ZWRGaWVsZBIlLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBomLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message models.v1.Field.
@@ -1180,6 +1180,17 @@ export declare type UpdateVariantRequest = Message<"records.v1.UpdateVariantRequ
1180
1180
  * @generated from field: google.protobuf.Struct data = 2;
1181
1181
  */
1182
1182
  data?: JsonObject | undefined;
1183
+
1184
+ /**
1185
+ * Patch merged into the variant's metadata jsonb (deep-merge at the
1186
+ * top-level keys). Used to set per-variant binding fields such as
1187
+ * experimentKey / variantKey that the resolve path reads off the
1188
+ * variant row's metadata. Pass only the keys you want to set; existing
1189
+ * keys not in the patch are preserved.
1190
+ *
1191
+ * @generated from field: optional google.protobuf.Struct metadata_patch = 3;
1192
+ */
1193
+ metadataPatch?: JsonObject | undefined;
1183
1194
  };
1184
1195
 
1185
1196
  /**
@@ -10,7 +10,7 @@ import { file_expressions_v1_expressions } from "../../expressions/v1/expression
10
10
  * Describes the file records/v1/records.proto.
11
11
  */
12
12
  export const file_records_v1_records = /*@__PURE__*/
13
- fileDesc("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEihA0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIBIgBARIXCgp1cGRhdGVkX2J5GBUgASgJSAWIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOdmVyc2lvbl9udW1iZXIYKCABKAVIBogBARIZCgxjb250ZW50X2hhc2gYKSABKAlIB4gBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YKiABKAlICIgBARIbCg5wdWJsaXNoX3N0YXR1cxgrIAEoCUgJiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESGAoLdmFyaWFudF9rZXkYMiABKAlIDIgBARIZCgx2YXJpYW50X25hbWUYMyABKAlIDYgBARIgChN2YXJpYW50X2Rlc2NyaXB0aW9uGDQgASgJSA6IAQESFwoKY2F0YWxvZ19pZBg1IAEoCUgPiAEBEhUKCHByaW9yaXR5GDYgASgFSBCIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGDcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IEYgBARIXCgppc19kZWZhdWx0GDggASgISBKIAQESHwoSY3VycmVudF92ZXJzaW9uX2lkGDwgASgJSBOIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYPSABKAlIFIgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYPiABKAVIFYgBARI1CgxwdWJsaXNoZWRfYXQYPyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBaIAQESGQoMcHVibGlzaGVkX2J5GEAgASgJSBeIAQESEwoLY2FuX3B1Ymxpc2gYQSABKAgSFQoNY2FuX3VucHVibGlzaBhCIAEoCBIfChdoYXNfdW5wdWJsaXNoZWRfY2hhbmdlcxhDIAEoCBIdChBtb2RlbF92ZXJzaW9uX2lkGEYgASgJSBiIAQFCDgoMX25hdHVyYWxfa2V5QgwKCl9wYXJlbnRfaWRCCwoJX21ldGFkYXRhQg4KDF9jdXN0b21lcl9pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUIRCg9fdmVyc2lvbl9udW1iZXJCDwoNX2NvbnRlbnRfaGFzaEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQhEKD19wdWJsaXNoX3N0YXR1c0IXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDgoMX3ZhcmlhbnRfa2V5Qg8KDV92YXJpYW50X25hbWVCFgoUX3ZhcmlhbnRfZGVzY3JpcHRpb25CDQoLX2NhdGFsb2dfaWRCCwoJX3ByaW9yaXR5QhIKEF90YXJnZXRpbmdfcnVsZXNCDQoLX2lzX2RlZmF1bHRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCGwoZX3B1Ymxpc2hlZF92ZXJzaW9uX251bWJlckIPCg1fcHVibGlzaGVkX2F0Qg8KDV9wdWJsaXNoZWRfYnlCEwoRX21vZGVsX3ZlcnNpb25faWQi9QEKD1B1Ymxpc2hTY2hlZHVsZRISCgp2ZXJzaW9uX2lkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAUgASgJSAGIAQFCDwoNX3VucHVibGlzaF9hdEINCgtfY3JlYXRlZF9ieSJWCgxSZWNvcmRGaWx0ZXISDQoFZmllbGQYASABKAkSEAoIb3BlcmF0b3IYAiABKAkSJQoFdmFsdWUYAyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiLgoJU29ydEZpZWxkEg0KBWZpZWxkGAEgASgJEhIKCmRlc2NlbmRpbmcYAiABKAgihQIKDkJhdGNoT3BlcmF0aW9uEiwKBHR5cGUYASABKA4yHi5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uVHlwZRIPCgJpZBgCIAEoCUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhgKC25hdHVyYWxfa2V5GAQgASgJSAKIAQESKgoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIYCgtjdXN0b21lcl9pZBgGIAEoCUgEiAEBQgUKA19pZEIMCgpfbW9kZWxfa2V5Qg4KDF9uYXR1cmFsX2tleUIHCgVfZGF0YUIOCgxfY3VzdG9tZXJfaWQiiAEKFEJhdGNoT3BlcmF0aW9uUmVzdWx0Eg0KBWluZGV4GAEgASgFEg8KB3N1Y2Nlc3MYAiABKAgSJwoGcmVjb3JkGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARISCgVlcnJvchgEIAEoCUgBiAEBQgkKB19yZWNvcmRCCAoGX2Vycm9yIpgCChNDcmVhdGVSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC2N1c3RvbWVyX2lkGAQgASgJSAGIAQESLgoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAYgASgJSAOIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF9jdXN0b21lcl9pZEILCglfbWV0YWRhdGFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKmAQoUQ3JlYXRlUmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQSKAoHdmFyaWFudBgCIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSACIAQESKAoHdmVyc2lvbhgDIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSAGIAQFCCgoIX3ZhcmlhbnRCCgoIX3ZlcnNpb24iHgoQR2V0UmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCSI3ChFHZXRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCI/ChVHZXRSZWNvcmRCeUtleVJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhMKC25hdHVyYWxfa2V5GAIgASgJIjwKFkdldFJlY29yZEJ5S2V5UmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiQgoZR2V0UmVjb3JkQnlLZXlPcklkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKaWRlbnRpZmllchgCIAEoCSJAChpHZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCLxAQoSTGlzdFJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUSKQoHZmlsdGVycxgEIAMoCzIYLnJlY29yZHMudjEuUmVjb3JkRmlsdGVyEiMKBHNvcnQYBSADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIYCgtjdXN0b21lcl9pZBgGIAEoCUgAiAEBEhMKBnNlYXJjaBgHIAEoCUgBiAEBEg8KB3ByZXZpZXcYCCABKAhCDgoMX2N1c3RvbWVyX2lkQgkKB19zZWFyY2giSQoTTGlzdFJlY29yZHNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUicgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSI6ChRVcGRhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQifgoYQnVsa1VwZGF0ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIoCgZmaWx0ZXIYAiADKAsyGC5yZWNvcmRzLnYxLlJlY29yZEZpbHRlchIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIqChlCdWxrVXBkYXRlUmVjb3Jkc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFIlYKFkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSHAoPbmV3X25hdHVyYWxfa2V5GAIgASgJSACIAQFCEgoQX25ld19uYXR1cmFsX2tleSI9ChdEdXBsaWNhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJQChtEdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QSCwoDaWRzGAEgAygJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiQwocRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQiiAEKFENyZWF0ZVZlcnNpb25SZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAyABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIjwKFUNyZWF0ZVZlcnNpb25SZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoVUHVibGlzaFZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPAoWUHVibGlzaFZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChZVbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIqChdVbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKFlJldmVydFRvVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI9ChdSZXZlcnRUb1ZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJNChlMaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiUQoaTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSJlChRDcmVhdGVWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPAoVQ3JlYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJRChRVcGRhdGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjwKFVVwZGF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKgoURGVsZXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCSIoChVEZWxldGVWYXJpYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJBChhTZXREZWZhdWx0VmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhIKCnZhcmlhbnRfaWQYAiABKAkiPwoZU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJNChlMaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiUQoaTGlzdFJlY29yZFZhcmlhbnRzUmVzcG9uc2USJAoIdmFyaWFudHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSKwAQoSU2F2ZUNvbnRlbnRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgt2YXJpYW50X2tleRgDIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgEIAEoCUgBiAEBQg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIl4KE1NhdmVDb250ZW50UmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQSIwoHdmVyc2lvbhgCIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqoBChxTY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiRAodU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIjkKI0NhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiSwokQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCLQAQodTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCgltb2RlbF9rZXkYAyABKAlIAogBARINCgVsaW1pdBgEIAEoBRIOCgZvZmZzZXQYBSABKAVCBwoFX2Zyb21CBQoDX3RvQgwKCl9tb2RlbF9rZXkiVQoeTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUiMAoaR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJMChtHZXRTY2hlZHVsZWRQdWJsaXNoUmVzcG9uc2USLQoIc2NoZWR1bGUYASABKAsyGy5yZWNvcmRzLnYxLlB1Ymxpc2hTY2hlZHVsZSJ/ChhMaXN0RHJhZnRWZXJzaW9uc1JlcXVlc3QSFgoJbW9kZWxfa2V5GAEgASgJSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESDQoFbGltaXQYAyABKAUSDgoGb2Zmc2V0GAQgASgFQgwKCl9tb2RlbF9rZXlCCQoHX3NlYXJjaCJQChlMaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUiMgobQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXF1ZXN0EhMKC3ZlcnNpb25faWRzGAEgAygJIlwKHEJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEhcKD3B1Ymxpc2hlZF9jb3VudBgCIAEoBSJVChJFeHBlcmltZW50RXhwb3N1cmUSFgoOZXhwZXJpbWVudF9rZXkYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSEgoKaXNfY29udHJvbBgDIAEoCCLhAQoaQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhIKCnJlY29yZF9pZHMYAiADKAkSGAoLY3VzdG9tZXJfaWQYAyABKAlIAIgBARItCgdjb250ZXh0GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEg8KB3ByZXZpZXcYBSABKAgSFwoKdmlld2VyX2tleRgGIAEoCUgCiAEBQg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dEINCgtfdmlld2VyX2tleSJKChtCYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USKwoHcmVjb3JkcxgBIAMoCzIaLnJlY29yZHMudjEuUmVzb2x2ZWRSZWNvcmQixwIKDlJlc29sdmVkUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoKdmFyaWFudF9pZBgGIAEoCUgBiAEBEkAKE2V4cGVyaW1lbnRfZXhwb3N1cmUYByABKAsyHi5yZWNvcmRzLnYxLkV4cGVyaW1lbnRFeHBvc3VyZUgCiAEBEhEKCWhhc19kcmFmdBgIIAEoCEIOCgxfbmF0dXJhbF9rZXlCDQoLX3ZhcmlhbnRfaWRCFgoUX2V4cGVyaW1lbnRfZXhwb3N1cmUiLwoZTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJIjgKEFJlY29yZE1vZGVsRW50cnkSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCSJLChpMb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRItCgdlbnRyaWVzGAEgAygLMhwucmVjb3Jkcy52MS5SZWNvcmRNb2RlbEVudHJ5IkcKE0dsb2JhbFNlYXJjaFJlcXVlc3QSDQoFcXVlcnkYASABKAkSEgoKbW9kZWxfa2V5cxgCIAMoCRINCgVsaW1pdBgKIAEoBSKRAQoQU2VhcmNoUmVzdWx0SXRlbRIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVzY29yZRgFIAEoAUIOCgxfbmF0dXJhbF9rZXkiVAoUR2xvYmFsU2VhcmNoUmVzcG9uc2USLQoHcmVjb3JkcxgBIAMoCzIcLnJlY29yZHMudjEuU2VhcmNoUmVzdWx0SXRlbRINCgV0b3RhbBgCIAEoBSKhAQoORW1iZWRkaW5nU3RhdHMSEQoJbW9kZWxfa2V5GAEgASgJEhUKDXRvdGFsX3JlY29yZHMYAiABKAUSGAoQZW1iZWRkZWRfcmVjb3JkcxgDIAEoBRIXCg9wZW5kaW5nX3JlY29yZHMYBCABKAUSHQoQbGFzdF9lbWJlZGRlZF9hdBgFIAEoCUgAiAEBQhMKEV9sYXN0X2VtYmVkZGVkX2F0InUKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBAUIOCgxfZW1iZWRkZWRfYXQikwEKDVNpbWlsYXJSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKc2ltaWxhcml0eRgFIAEoAUIOCgxfbmF0dXJhbF9rZXkiQAoYR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiRgoZR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRIpCgVzdGF0cxgBIAMoCzIaLnJlY29yZHMudjEuRW1iZWRkaW5nU3RhdHMiLwoaR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIk4KG0dldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRIvCgplbWJlZGRpbmdzGAEgAygLMhsucmVjb3Jkcy52MS5SZWNvcmRFbWJlZGRpbmciYwoZRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESDQoFbGltaXQYCiABKAVCDAoKX21vZGVsX2tleSJIChpGaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRIqCgdyZWNvcmRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkIpsBChZXcml0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIOCgZ2ZWN0b3IYAiADKAISEgoKZGltZW5zaW9ucxgDIAEoBRIVCghwcm92aWRlchgEIAEoCUgAiAEBEhcKCm1vZGVsX25hbWUYBSABKAlIAYgBAUILCglfcHJvdmlkZXJCDQoLX21vZGVsX25hbWUiKgoXV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdEZWxldGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKwoYRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiZAoXU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QSFAoMcXVlcnlfdmVjdG9yGAEgAygCEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFQgwKCl9tb2RlbF9rZXkiRgoYU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlEioKB3Jlc3VsdHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQqcwoKUmVjb3JkVHlwZRIbChdSRUNPUkRfVFlQRV9VTlNQRUNJRklFRBAAEhYKElJFQ09SRF9UWVBFX1JFQ09SRBABEhcKE1JFQ09SRF9UWVBFX1ZBUklBTlQQAhIXChNSRUNPUkRfVFlQRV9WRVJTSU9OEAMqnQEKEkJhdGNoT3BlcmF0aW9uVHlwZRIkCiBCQVRDSF9PUEVSQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0NSRUFURRABEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX1VQREFURRACEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0RFTEVURRADMrEcCg5SZWNvcmRzU2VydmljZRJRCgxDcmVhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlc3BvbnNlEkgKCUdldFJlY29yZBIcLnJlY29yZHMudjEuR2V0UmVjb3JkUmVxdWVzdBodLnJlY29yZHMudjEuR2V0UmVjb3JkUmVzcG9uc2USVwoOR2V0UmVjb3JkQnlLZXkSIS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVxdWVzdBoiLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXNwb25zZRJjChJHZXRSZWNvcmRCeUtleU9ySWQSJS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QaJi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEk4KC0xpc3RSZWNvcmRzEh4ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1JlcXVlc3QaHy5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVzcG9uc2USUQoMVXBkYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXNwb25zZRJRCgxVcHNlcnRSZWNvcmQSHy5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlc3BvbnNlElEKDERlbGV0ZVJlY29yZBIfLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVzcG9uc2USbAoVQmF0Y2hSZWNvcmRPcGVyYXRpb25zEigucmVjb3Jkcy52MS5CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXF1ZXN0GikucmVjb3Jkcy52MS5CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXNwb25zZRJgChFCdWxrVXBkYXRlUmVjb3JkcxIkLnJlY29yZHMudjEuQnVsa1VwZGF0ZVJlY29yZHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1Jlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJUCg1DcmVhdGVWZXJzaW9uEiAucmVjb3Jkcy52MS5DcmVhdGVWZXJzaW9uUmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmVyc2lvblJlc3BvbnNlElcKDlB1Ymxpc2hWZXJzaW9uEiEucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlcXVlc3QaIi5yZWNvcmRzLnYxLlB1Ymxpc2hWZXJzaW9uUmVzcG9uc2USWgoPVW5wdWJsaXNoUmVjb3JkEiIucmVjb3Jkcy52MS5VbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0GiMucmVjb3Jkcy52MS5VbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRJaCg9SZXZlcnRUb1ZlcnNpb24SIi5yZWNvcmRzLnYxLlJldmVydFRvVmVyc2lvblJlcXVlc3QaIy5yZWNvcmRzLnYxLlJldmVydFRvVmVyc2lvblJlc3BvbnNlEmMKEkxpc3RSZWNvcmRWZXJzaW9ucxIlLnJlY29yZHMudjEuTGlzdFJlY29yZFZlcnNpb25zUmVxdWVzdBomLnJlY29yZHMudjEuTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USTgoLU2F2ZUNvbnRlbnQSHi5yZWNvcmRzLnYxLlNhdmVDb250ZW50UmVxdWVzdBofLnJlY29yZHMudjEuU2F2ZUNvbnRlbnRSZXNwb25zZRJUCg1DcmVhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmFyaWFudFJlc3BvbnNlElQKDVVwZGF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5VcGRhdGVWYXJpYW50UmVzcG9uc2USVAoNRGVsZXRlVmFyaWFudBIgLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLkRlbGV0ZVZhcmlhbnRSZXNwb25zZRJgChFTZXREZWZhdWx0VmFyaWFudBIkLnJlY29yZHMudjEuU2V0RGVmYXVsdFZhcmlhbnRSZXF1ZXN0GiUucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEmMKEkxpc3RSZWNvcmRWYXJpYW50cxIlLnJlY29yZHMudjEuTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBomLnJlY29yZHMudjEuTGlzdFJlY29yZFZhcmlhbnRzUmVzcG9uc2USbAoVU2NoZWR1bGVSZWNvcmRQdWJsaXNoEigucmVjb3Jkcy52MS5TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0GikucmVjb3Jkcy52MS5TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRKBAQocQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaBIvLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QaMC5yZWNvcmRzLnYxLkNhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXNwb25zZRJvChZMaXN0U2NoZWR1bGVkUHVibGlzaGVzEikucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBoqLnJlY29yZHMudjEuTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEmYKE0dldFNjaGVkdWxlZFB1Ymxpc2gSJi5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRTY2hlZHVsZWRQdWJsaXNoUmVzcG9uc2USYAoRTGlzdERyYWZ0VmVyc2lvbnMSJC5yZWNvcmRzLnYxLkxpc3REcmFmdFZlcnNpb25zUmVxdWVzdBolLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRJpChRCYXRjaFB1Ymxpc2hWZXJzaW9ucxInLnJlY29yZHMudjEuQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1Jlc3BvbnNlEmYKE0JhdGNoUmVzb2x2ZVJlY29yZHMSJi5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXF1ZXN0GicucmVjb3Jkcy52MS5CYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USYwoSTG9va3VwUmVjb3JkTW9kZWxzEiUucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRJRCgxHbG9iYWxTZWFyY2gSHy5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlcXVlc3QaIC5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlc3BvbnNlEmAKEUdldEVtYmVkZGluZ1N0YXRzEiQucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1JlcXVlc3QaJS5yZWNvcmRzLnYxLkdldEVtYmVkZGluZ1N0YXRzUmVzcG9uc2USZgoTR2V0UmVjb3JkRW1iZWRkaW5ncxImLnJlY29yZHMudjEuR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRJjChJGaW5kU2ltaWxhclJlY29yZHMSJS5yZWNvcmRzLnYxLkZpbmRTaW1pbGFyUmVjb3Jkc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkZpbmRTaW1pbGFyUmVjb3Jkc1Jlc3BvbnNlEloKD1dyaXRlRW1iZWRkaW5ncxIiLnJlY29yZHMudjEuV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBojLnJlY29yZHMudjEuV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQRGVsZXRlRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuRGVsZXRlRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXNwb25zZRJdChBTZWFyY2hFbWJlZGRpbmdzEiMucmVjb3Jkcy52MS5TZWFyY2hFbWJlZGRpbmdzUmVxdWVzdBokLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9yZWNvcmRzL3YxO3JlY29yZHN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEihA0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIBIgBARIXCgp1cGRhdGVkX2J5GBUgASgJSAWIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOdmVyc2lvbl9udW1iZXIYKCABKAVIBogBARIZCgxjb250ZW50X2hhc2gYKSABKAlIB4gBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YKiABKAlICIgBARIbCg5wdWJsaXNoX3N0YXR1cxgrIAEoCUgJiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESGAoLdmFyaWFudF9rZXkYMiABKAlIDIgBARIZCgx2YXJpYW50X25hbWUYMyABKAlIDYgBARIgChN2YXJpYW50X2Rlc2NyaXB0aW9uGDQgASgJSA6IAQESFwoKY2F0YWxvZ19pZBg1IAEoCUgPiAEBEhUKCHByaW9yaXR5GDYgASgFSBCIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGDcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IEYgBARIXCgppc19kZWZhdWx0GDggASgISBKIAQESHwoSY3VycmVudF92ZXJzaW9uX2lkGDwgASgJSBOIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYPSABKAlIFIgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYPiABKAVIFYgBARI1CgxwdWJsaXNoZWRfYXQYPyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBaIAQESGQoMcHVibGlzaGVkX2J5GEAgASgJSBeIAQESEwoLY2FuX3B1Ymxpc2gYQSABKAgSFQoNY2FuX3VucHVibGlzaBhCIAEoCBIfChdoYXNfdW5wdWJsaXNoZWRfY2hhbmdlcxhDIAEoCBIdChBtb2RlbF92ZXJzaW9uX2lkGEYgASgJSBiIAQFCDgoMX25hdHVyYWxfa2V5QgwKCl9wYXJlbnRfaWRCCwoJX21ldGFkYXRhQg4KDF9jdXN0b21lcl9pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUIRCg9fdmVyc2lvbl9udW1iZXJCDwoNX2NvbnRlbnRfaGFzaEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQhEKD19wdWJsaXNoX3N0YXR1c0IXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDgoMX3ZhcmlhbnRfa2V5Qg8KDV92YXJpYW50X25hbWVCFgoUX3ZhcmlhbnRfZGVzY3JpcHRpb25CDQoLX2NhdGFsb2dfaWRCCwoJX3ByaW9yaXR5QhIKEF90YXJnZXRpbmdfcnVsZXNCDQoLX2lzX2RlZmF1bHRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCGwoZX3B1Ymxpc2hlZF92ZXJzaW9uX251bWJlckIPCg1fcHVibGlzaGVkX2F0Qg8KDV9wdWJsaXNoZWRfYnlCEwoRX21vZGVsX3ZlcnNpb25faWQi9QEKD1B1Ymxpc2hTY2hlZHVsZRISCgp2ZXJzaW9uX2lkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAUgASgJSAGIAQFCDwoNX3VucHVibGlzaF9hdEINCgtfY3JlYXRlZF9ieSJWCgxSZWNvcmRGaWx0ZXISDQoFZmllbGQYASABKAkSEAoIb3BlcmF0b3IYAiABKAkSJQoFdmFsdWUYAyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiLgoJU29ydEZpZWxkEg0KBWZpZWxkGAEgASgJEhIKCmRlc2NlbmRpbmcYAiABKAgihQIKDkJhdGNoT3BlcmF0aW9uEiwKBHR5cGUYASABKA4yHi5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uVHlwZRIPCgJpZBgCIAEoCUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhgKC25hdHVyYWxfa2V5GAQgASgJSAKIAQESKgoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIYCgtjdXN0b21lcl9pZBgGIAEoCUgEiAEBQgUKA19pZEIMCgpfbW9kZWxfa2V5Qg4KDF9uYXR1cmFsX2tleUIHCgVfZGF0YUIOCgxfY3VzdG9tZXJfaWQiiAEKFEJhdGNoT3BlcmF0aW9uUmVzdWx0Eg0KBWluZGV4GAEgASgFEg8KB3N1Y2Nlc3MYAiABKAgSJwoGcmVjb3JkGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARISCgVlcnJvchgEIAEoCUgBiAEBQgkKB19yZWNvcmRCCAoGX2Vycm9yIpgCChNDcmVhdGVSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC2N1c3RvbWVyX2lkGAQgASgJSAGIAQESLgoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAYgASgJSAOIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF9jdXN0b21lcl9pZEILCglfbWV0YWRhdGFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKmAQoUQ3JlYXRlUmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQSKAoHdmFyaWFudBgCIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSACIAQESKAoHdmVyc2lvbhgDIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSAGIAQFCCgoIX3ZhcmlhbnRCCgoIX3ZlcnNpb24iHgoQR2V0UmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCSI3ChFHZXRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCI/ChVHZXRSZWNvcmRCeUtleVJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhMKC25hdHVyYWxfa2V5GAIgASgJIjwKFkdldFJlY29yZEJ5S2V5UmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiQgoZR2V0UmVjb3JkQnlLZXlPcklkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKaWRlbnRpZmllchgCIAEoCSJAChpHZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCLxAQoSTGlzdFJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUSKQoHZmlsdGVycxgEIAMoCzIYLnJlY29yZHMudjEuUmVjb3JkRmlsdGVyEiMKBHNvcnQYBSADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIYCgtjdXN0b21lcl9pZBgGIAEoCUgAiAEBEhMKBnNlYXJjaBgHIAEoCUgBiAEBEg8KB3ByZXZpZXcYCCABKAhCDgoMX2N1c3RvbWVyX2lkQgkKB19zZWFyY2giSQoTTGlzdFJlY29yZHNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUicgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSI6ChRVcGRhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQifgoYQnVsa1VwZGF0ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIoCgZmaWx0ZXIYAiADKAsyGC5yZWNvcmRzLnYxLlJlY29yZEZpbHRlchIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIqChlCdWxrVXBkYXRlUmVjb3Jkc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFIlYKFkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSHAoPbmV3X25hdHVyYWxfa2V5GAIgASgJSACIAQFCEgoQX25ld19uYXR1cmFsX2tleSI9ChdEdXBsaWNhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJQChtEdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QSCwoDaWRzGAEgAygJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiQwocRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQiiAEKFENyZWF0ZVZlcnNpb25SZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAyABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIjwKFUNyZWF0ZVZlcnNpb25SZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoVUHVibGlzaFZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPAoWUHVibGlzaFZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChZVbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIqChdVbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKFlJldmVydFRvVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI9ChdSZXZlcnRUb1ZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJNChlMaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiUQoaTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSJlChRDcmVhdGVWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPAoVQ3JlYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKaAQoUVXBkYXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI0Cg5tZXRhZGF0YV9wYXRjaBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIRCg9fbWV0YWRhdGFfcGF0Y2giPAoVVXBkYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIqChREZWxldGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJIigKFURlbGV0ZVZhcmlhbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkEKGFNldERlZmF1bHRWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoKdmFyaWFudF9pZBgCIAEoCSI/ChlTZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIk0KGUxpc3RSZWNvcmRWYXJpYW50c1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBm9mZnNldBgDIAEoBSJRChpMaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRIkCgh2YXJpYW50cxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFIrABChJTYXZlQ29udGVudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC3ZhcmlhbnRfa2V5GAMgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAQgASgJSAGIAQFCDgoMX3ZhcmlhbnRfa2V5QhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iXgoTU2F2ZUNvbnRlbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIjCgd2ZXJzaW9uGAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiqgEKHFNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJECh1TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiOQojQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJLCiRDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkItABCh1MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgCiAEBEg0KBWxpbWl0GAQgASgFEg4KBm9mZnNldBgFIAEoBUIHCgVfZnJvbUIFCgNfdG9CDAoKX21vZGVsX2tleSJVCh5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSIwChpHZXRTY2hlZHVsZWRQdWJsaXNoUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIkwKG0dldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRItCghzY2hlZHVsZRgBIAEoCzIbLnJlY29yZHMudjEuUHVibGlzaFNjaGVkdWxlIn8KGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARINCgVsaW1pdBgDIAEoBRIOCgZvZmZzZXQYBCABKAVCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoIlAKGUxpc3REcmFmdFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIlUKEkV4cGVyaW1lbnRFeHBvc3VyZRIWCg5leHBlcmltZW50X2tleRgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRISCgppc19jb250cm9sGAMgASgIIuEBChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCBIXCgp2aWV3ZXJfa2V5GAYgASgJSAKIAQFCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0Qg0KC192aWV3ZXJfa2V5IkoKG0JhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRIrCgdyZWNvcmRzGAEgAygLMhoucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZCLHAgoOUmVzb2x2ZWRSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIXCgp2YXJpYW50X2lkGAYgASgJSAGIAQESQAoTZXhwZXJpbWVudF9leHBvc3VyZRgHIAEoCzIeLnJlY29yZHMudjEuRXhwZXJpbWVudEV4cG9zdXJlSAKIAQESEQoJaGFzX2RyYWZ0GAggASgIQg4KDF9uYXR1cmFsX2tleUINCgtfdmFyaWFudF9pZEIWChRfZXhwZXJpbWVudF9leHBvc3VyZSIvChlMb29rdXBSZWNvcmRNb2RlbHNSZXF1ZXN0EhIKCnJlY29yZF9pZHMYASADKAkiOAoQUmVjb3JkTW9kZWxFbnRyeRIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJIksKGkxvb2t1cFJlY29yZE1vZGVsc1Jlc3BvbnNlEi0KB2VudHJpZXMYASADKAsyHC5yZWNvcmRzLnYxLlJlY29yZE1vZGVsRW50cnkiRwoTR2xvYmFsU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgptb2RlbF9rZXlzGAIgAygJEg0KBWxpbWl0GAogASgFIpEBChBTZWFyY2hSZXN1bHRJdGVtEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg0KBXNjb3JlGAUgASgBQg4KDF9uYXR1cmFsX2tleSJUChRHbG9iYWxTZWFyY2hSZXNwb25zZRItCgdyZWNvcmRzGAEgAygLMhwucmVjb3Jkcy52MS5TZWFyY2hSZXN1bHRJdGVtEg0KBXRvdGFsGAIgASgFIqEBCg5FbWJlZGRpbmdTdGF0cxIRCgltb2RlbF9rZXkYASABKAkSFQoNdG90YWxfcmVjb3JkcxgCIAEoBRIYChBlbWJlZGRlZF9yZWNvcmRzGAMgASgFEhcKD3BlbmRpbmdfcmVjb3JkcxgEIAEoBRIdChBsYXN0X2VtYmVkZGVkX2F0GAUgASgJSACIAQFCEwoRX2xhc3RfZW1iZWRkZWRfYXQidQoPUmVjb3JkRW1iZWRkaW5nEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSEgoKZGltZW5zaW9ucxgDIAEoBRIYCgtlbWJlZGRlZF9hdBgEIAEoCUgAiAEBQg4KDF9lbWJlZGRlZF9hdCKTAQoNU2ltaWxhclJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBISCgpzaW1pbGFyaXR5GAUgASgBQg4KDF9uYXR1cmFsX2tleSJAChhHZXRFbWJlZGRpbmdTdGF0c1JlcXVlc3QSFgoJbW9kZWxfa2V5GAEgASgJSACIAQFCDAoKX21vZGVsX2tleSJGChlHZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEikKBXN0YXRzGAEgAygLMhoucmVjb3Jkcy52MS5FbWJlZGRpbmdTdGF0cyIvChpHZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiTgobR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEi8KCmVtYmVkZGluZ3MYASADKAsyGy5yZWNvcmRzLnYxLlJlY29yZEVtYmVkZGluZyJjChlGaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBARINCgVsaW1pdBgKIAEoBUIMCgpfbW9kZWxfa2V5IkgKGkZpbmRTaW1pbGFyUmVjb3Jkc1Jlc3BvbnNlEioKB3JlY29yZHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQimwEKFldyaXRlRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEg4KBnZlY3RvchgCIAMoAhISCgpkaW1lbnNpb25zGAMgASgFEhUKCHByb3ZpZGVyGAQgASgJSACIAQESFwoKbW9kZWxfbmFtZRgFIAEoCUgBiAEBQgsKCV9wcm92aWRlckINCgtfbW9kZWxfbmFtZSIqChdXcml0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKF0RlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIrChhEZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJkChdTZWFyY2hFbWJlZGRpbmdzUmVxdWVzdBIUCgxxdWVyeV92ZWN0b3IYASADKAISFgoJbW9kZWxfa2V5GAIgASgJSACIAQESDQoFbGltaXQYCiABKAVCDAoKX21vZGVsX2tleSJGChhTZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2USKgoHcmVzdWx0cxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZCpzCgpSZWNvcmRUeXBlEhsKF1JFQ09SRF9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSUkVDT1JEX1RZUEVfUkVDT1JEEAESFwoTUkVDT1JEX1RZUEVfVkFSSUFOVBACEhcKE1JFQ09SRF9UWVBFX1ZFUlNJT04QAyqdAQoSQmF0Y2hPcGVyYXRpb25UeXBlEiQKIEJBVENIX09QRVJBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASHwobQkFUQ0hfT1BFUkFUSU9OX1RZUEVfQ1JFQVRFEAESHwobQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVVBEQVRFEAISHwobQkFUQ0hfT1BFUkFUSU9OX1RZUEVfREVMRVRFEAMysRwKDlJlY29yZHNTZXJ2aWNlElEKDENyZWF0ZVJlY29yZBIfLnJlY29yZHMudjEuQ3JlYXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuQ3JlYXRlUmVjb3JkUmVzcG9uc2USSAoJR2V0UmVjb3JkEhwucmVjb3Jkcy52MS5HZXRSZWNvcmRSZXF1ZXN0Gh0ucmVjb3Jkcy52MS5HZXRSZWNvcmRSZXNwb25zZRJXCg5HZXRSZWNvcmRCeUtleRIhLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXF1ZXN0GiIucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleVJlc3BvbnNlEmMKEkdldFJlY29yZEJ5S2V5T3JJZBIlLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlPcklkUmVxdWVzdBomLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlPcklkUmVzcG9uc2USTgoLTGlzdFJlY29yZHMSHi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVxdWVzdBofLnJlY29yZHMudjEuTGlzdFJlY29yZHNSZXNwb25zZRJRCgxVcGRhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLlVwZGF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwZGF0ZVJlY29yZFJlc3BvbnNlElEKDFVwc2VydFJlY29yZBIfLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVzcG9uc2USUQoMRGVsZXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXNwb25zZRJsChVCYXRjaFJlY29yZE9wZXJhdGlvbnMSKC5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QaKS5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEmAKEUJ1bGtVcGRhdGVSZWNvcmRzEiQucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USWgoPRHVwbGljYXRlUmVjb3JkEiIucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRSZXF1ZXN0GiMucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRSZXNwb25zZRJpChREdXBsaWNhdGVSZWNvcmRzQnVsaxInLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXF1ZXN0GigucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRzQnVsa1Jlc3BvbnNlElQKDUNyZWF0ZVZlcnNpb24SIC5yZWNvcmRzLnYxLkNyZWF0ZVZlcnNpb25SZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWZXJzaW9uUmVzcG9uc2USVwoOUHVibGlzaFZlcnNpb24SIS5yZWNvcmRzLnYxLlB1Ymxpc2hWZXJzaW9uUmVxdWVzdBoiLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXNwb25zZRJaCg9VbnB1Ymxpc2hSZWNvcmQSIi5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlc3BvbnNlEloKD1JldmVydFRvVmVyc2lvbhIiLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBojLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USYwoSTGlzdFJlY29yZFZlcnNpb25zEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRJOCgtTYXZlQ29udGVudBIeLnJlY29yZHMudjEuU2F2ZUNvbnRlbnRSZXF1ZXN0Gh8ucmVjb3Jkcy52MS5TYXZlQ29udGVudFJlc3BvbnNlElQKDUNyZWF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVzcG9uc2USVAoNVXBkYXRlVmFyaWFudBIgLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXNwb25zZRJUCg1EZWxldGVWYXJpYW50EiAucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlc3BvbnNlEmAKEVNldERlZmF1bHRWYXJpYW50EiQucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlcXVlc3QaJS5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USYwoSTGlzdFJlY29yZFZhcmlhbnRzEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRJsChVTY2hlZHVsZVJlY29yZFB1Ymxpc2gSKC5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QaKS5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEoEBChxDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoEi8ucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBowLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEm8KFkxpc3RTY2hlZHVsZWRQdWJsaXNoZXMSKS5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0GioucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USZgoTR2V0U2NoZWR1bGVkUHVibGlzaBImLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRJgChFMaXN0RHJhZnRWZXJzaW9ucxIkLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0GiUucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEmkKFEJhdGNoUHVibGlzaFZlcnNpb25zEicucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QaKC5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USZgoTQmF0Y2hSZXNvbHZlUmVjb3JkcxImLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRJjChJMb29rdXBSZWNvcmRNb2RlbHMSJS5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZE1vZGVsc1Jlc3BvbnNlElEKDEdsb2JhbFNlYXJjaBIfLnJlY29yZHMudjEuR2xvYmFsU2VhcmNoUmVxdWVzdBogLnJlY29yZHMudjEuR2xvYmFsU2VhcmNoUmVzcG9uc2USYAoRR2V0RW1iZWRkaW5nU3RhdHMSJC5yZWNvcmRzLnYxLkdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBolLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRJmChNHZXRSZWNvcmRFbWJlZGRpbmdzEiYucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBonLnJlY29yZHMudjEuR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEmMKEkZpbmRTaW1pbGFyUmVjb3JkcxIlLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBomLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USWgoPV3JpdGVFbWJlZGRpbmdzEiIucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXF1ZXN0GiMucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXNwb25zZRJdChBEZWxldGVFbWJlZGRpbmdzEiMucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVxdWVzdBokLnJlY29yZHMudjEuRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEFNlYXJjaEVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3JlY29yZHMvdjE7cmVjb3Jkc3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message records.v1.Record.