@eide/foir-proto-ts 0.64.0 → 0.65.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.64.0",
3
+ "version": "0.65.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -244,6 +244,17 @@ export declare type ModelConfig = Message<"models.v1.ModelConfig"> & {
244
244
  * @generated from field: optional string plural_key = 18;
245
245
  */
246
246
  pluralKey?: string | undefined;
247
+
248
+ /**
249
+ * Lookup definitions — additional indexed access paths into records by
250
+ * non-natural-key fields. The platform maintains a projection in the
251
+ * record_lookups table with a UNIQUE constraint per channel × variant ×
252
+ * locale × customer slice. Each entry emits one typed GraphQL query.
253
+ * See docs/platform/record-lookups-rfc.md.
254
+ *
255
+ * @generated from field: repeated models.v1.LookupDefinition lookups = 19;
256
+ */
257
+ lookups: LookupDefinition[];
247
258
  };
248
259
 
249
260
  /**
@@ -252,6 +263,37 @@ export declare type ModelConfig = Message<"models.v1.ModelConfig"> & {
252
263
  */
253
264
  export declare const ModelConfigSchema: GenMessage<ModelConfig>;
254
265
 
266
+ /**
267
+ * LookupDefinition declares one indexed access path on a model.
268
+ *
269
+ * @generated from message models.v1.LookupDefinition
270
+ */
271
+ export declare type LookupDefinition = Message<"models.v1.LookupDefinition"> & {
272
+ /**
273
+ * Ordered list of field names that make up the lookup key.
274
+ * 1..4 fields. Each field must reference a top-level scalar field
275
+ * on the model (string, number, boolean, enum).
276
+ *
277
+ * @generated from field: repeated string key_by = 1;
278
+ */
279
+ keyBy: string[];
280
+
281
+ /**
282
+ * Optional override for the generated GraphQL field name.
283
+ * If empty, uses the convention: <typeLowerCamel>By<PascalCaseKeyFields>.
284
+ * Validated against GraphQL field-name regex.
285
+ *
286
+ * @generated from field: optional string name = 2;
287
+ */
288
+ name?: string | undefined;
289
+ };
290
+
291
+ /**
292
+ * Describes the message models.v1.LookupDefinition.
293
+ * Use `create(LookupDefinitionSchema)` to create a new message.
294
+ */
295
+ export declare const LookupDefinitionSchema: GenMessage<LookupDefinition>;
296
+
255
297
  /**
256
298
  * @generated from message models.v1.ModelCapabilities
257
299
  */
@@ -10,7 +10,7 @@ import { file_publish_v1_publish } from "../../publish/v1/publish_pb.js";
10
10
  * Describes the file models/v1/models.proto.
11
11
  */
12
12
  export const file_models_v1_models = /*@__PURE__*/
13
- fileDesc("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiuQQKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCEAoOX2RlZmF1bHRfdmFsdWVCDAoKX2l0ZW1fdHlwZUIKCghfc3RvcmFnZUIQCg5fdGVtcGxhdGVfem9uZUINCgtfem9uZV9vcmRlckITChFfcmVmZXJlbmNlX2ZpbHRlckINCgtfdmFsaWRhdGlvbiI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIq8FCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEh4KEW5hdHVyYWxfa2V5X2ZpZWxkGAwgASgJSAaIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIB4gBARIVCghlZGl0YWJsZRgPIAEoCEgIiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIXCgpwbHVyYWxfa2V5GBIgASgJSAuIAQFCCgoIX3NoYXJpbmdCDgoMX3BsdXJhbF9uYW1lQg4KDF9kZXNjcmlwdGlvbkILCglfY2F0ZWdvcnlCBwoFX2ljb25CEAoOX2Rpc3BsYXlfZmllbGRCFAoSX25hdHVyYWxfa2V5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5IokBChFNb2RlbENhcGFiaWxpdGllcxIUCgxpc192ZXJzaW9uZWQYASABKAgSFgoOaXNfcHVibGlzaGFibGUYAiABKAgSFAoMaGFzX3ZhcmlhbnRzGAMgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgEIAEoCBIXCg9zaGFyaW5nX2VuYWJsZWQYBSABKAgijwcKBU1vZGVsEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBImCgZjb25maWcYBSABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWcSFgoJY29uZmlnX2lkGAYgASgJSACIAQESMgoMY2FwYWJpbGl0aWVzGAcgASgLMhwubW9kZWxzLnYxLk1vZGVsQ2FwYWJpbGl0aWVzEh8KEmN1cnJlbnRfdmVyc2lvbl9pZBgIIAEoCUgBiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchgJIAEoBUgCiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIA4gBARIXCgp1cGRhdGVkX2J5GBUgASgJSASIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoSbGFzdF9wdXNoZWRfZmllbGRzGCggAygLMhAubW9kZWxzLnYxLkZpZWxkEjcKDmxhc3RfcHVzaGVkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEiEKFHB1Ymxpc2hlZF92ZXJzaW9uX2lkGCogASgJSAaIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYKyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAeIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBICIgBAUIMCgpfY29uZmlnX2lkQhUKE19jdXJyZW50X3ZlcnNpb25faWRCGwoZX3B1Ymxpc2hlZF92ZXJzaW9uX251bWJlckINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUIRCg9fbGFzdF9wdXNoZWRfYXRCFwoVX3B1Ymxpc2hlZF92ZXJzaW9uX2lkQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCLCAgoMTW9kZWxWZXJzaW9uEgoKAmlkGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkizQEKEkNyZWF0ZU1vZGVsUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESFgoJY29uZmlnX2lkGAUgASgJSAGIAQESHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAhCCQoHX2NvbmZpZ0IMCgpfY29uZmlnX2lkIjYKE0NyZWF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiHQoPR2V0TW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjMKEEdldE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIwoUR2V0TW9kZWxCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjgKFUdldE1vZGVsQnlLZXlSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKcAQoRTGlzdE1vZGVsc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESFQoIY2F0ZWdvcnkYAiABKAlIAYgBARINCgVsaW1pdBgDIAEoBRIOCgZvZmZzZXQYBCABKAUSFgoJY29uZmlnX2lkGAUgASgJSAKIAQFCCQoHX3NlYXJjaEILCglfY2F0ZWdvcnlCDAoKX2NvbmZpZ19pZCJFChJMaXN0TW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEg0KBXRvdGFsGAIgASgFIpoCChJVcGRhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIVCg11cGRhdGVfZmllbGRzGAYgASgIEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAhCBwoFX25hbWVCCQoHX2NvbmZpZ0IVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIjYKE1VwZGF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIAoSRGVsZXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE0RlbGV0ZU1vZGVsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJGChVEdXBsaWNhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSDwoHbmV3X2tleRgCIAEoCRIQCghuZXdfbmFtZRgDIAEoCSI5ChZEdXBsaWNhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIksKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiVQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUiPgoWR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIkMKF0dldE1vZGVsVmVyc2lvblJlc3BvbnNlEigKB3ZlcnNpb24YASABKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uIkIKGlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiPgobUmVzdG9yZU1vZGVsVmVyc2lvblJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsImMKFERlcHJlY2F0ZWRGaWVsZFRvdWNoEhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglmaWVsZF9rZXkYBCABKAkiVgoiTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBIwCgd0b3VjaGVzGAEgAygLMh8ubW9kZWxzLnYxLkRlcHJlY2F0ZWRGaWVsZFRvdWNoIjYKI01hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlc3BvbnNlEg8KB3VwZGF0ZWQYASABKAUi9wEKGERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZRIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghtb2RlbF9pZBgDIAEoCRIRCgltb2RlbF9rZXkYBCABKAkSEQoJZmllbGRfa2V5GAUgASgJEi4KCmRlbGV0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKD2xhc3RfcXVlcmllZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUISChBfbGFzdF9xdWVyaWVkX2F0IkQKJExpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBIcChRncmFjZV9wZXJpb2Rfc2Vjb25kcxgBIAEoAyJgCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlIkEKGkRyb3BEZXByZWNhdGVkRmllbGRSZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhEKCWZpZWxkX2tleRgCIAEoCSIuChtEcm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2USDwoHZHJvcHBlZBgBIAEoCCIhChNQdWJsaXNoTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIm0KFFB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFVVucHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSI5ChZVbnB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIioKHEdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiSgodR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIqEBChtTY2hlZHVsZU1vZGVsUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiPwocU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIwCiJDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJIkYKI0NhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsKvkCCglGaWVsZFR5cGUSGgoWRklFTERfVFlQRV9VTlNQRUNJRklFRBAAEhMKD0ZJRUxEX1RZUEVfVEVYVBABEhUKEUZJRUxEX1RZUEVfTlVNQkVSEAISFgoSRklFTERfVFlQRV9CT09MRUFOEAMSEwoPRklFTERfVFlQRV9EQVRFEAQSFQoRRklFTERfVFlQRV9TRUxFQ1QQBRITCg9GSUVMRF9UWVBFX0pTT04QBhITCg9GSUVMRF9UWVBFX0xJU1QQBxIUChBGSUVMRF9UWVBFX01PREVMEAgSGAoURklFTERfVFlQRV9SRUZFUkVOQ0UQCRITCg9GSUVMRF9UWVBFX0ZJTEUQChIUChBGSUVMRF9UWVBFX0lNQUdFEAsSFAoQRklFTERfVFlQRV9WSURFTxAMEhcKE0ZJRUxEX1RZUEVfRkxFWElCTEUQDRITCg9GSUVMRF9UWVBFX0VOVU0QDhIXChNGSUVMRF9UWVBFX1JJQ0hURVhUEA8yuA0KDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USTwoMUHVibGlzaE1vZGVsEh4ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlcXVlc3QaHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVzcG9uc2USVQoOVW5wdWJsaXNoTW9kZWwSIC5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVzcG9uc2USagoVR2V0TW9kZWxQdWJsaXNoU3RhdHVzEicubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QaKC5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USZwoUU2NoZWR1bGVNb2RlbFB1Ymxpc2gSJi5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0GicubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoEi0ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QaLi5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USggEKHUxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzEi8ubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBowLm1vZGVscy52MS5MaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEmQKE0Ryb3BEZXByZWNhdGVkRmllbGQSJS5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlcXVlc3QaJi5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9tb2RlbHMvdjE7bW9kZWxzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_publish_v1_publish]);
13
+ fileDesc("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiuQQKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCEAoOX2RlZmF1bHRfdmFsdWVCDAoKX2l0ZW1fdHlwZUIKCghfc3RvcmFnZUIQCg5fdGVtcGxhdGVfem9uZUINCgtfem9uZV9vcmRlckITChFfcmVmZXJlbmNlX2ZpbHRlckINCgtfdmFsaWRhdGlvbiI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIt0FCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEh4KEW5hdHVyYWxfa2V5X2ZpZWxkGAwgASgJSAaIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIB4gBARIVCghlZGl0YWJsZRgPIAEoCEgIiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIXCgpwbHVyYWxfa2V5GBIgASgJSAuIAQESLAoHbG9va3VwcxgTIAMoCzIbLm1vZGVscy52MS5Mb29rdXBEZWZpbml0aW9uQgoKCF9zaGFyaW5nQg4KDF9wbHVyYWxfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2NhdGVnb3J5QgcKBV9pY29uQhAKDl9kaXNwbGF5X2ZpZWxkQhQKEl9uYXR1cmFsX2tleV9maWVsZEIMCgpfZGVsZXRhYmxlQgsKCV9lZGl0YWJsZUISChBfbWV0YWRhdGFfc2NoZW1hQggKBl9ob29rc0INCgtfcGx1cmFsX2tleSI+ChBMb29rdXBEZWZpbml0aW9uEg4KBmtleV9ieRgBIAMoCRIRCgRuYW1lGAIgASgJSACIAQFCBwoFX25hbWUiiQEKEU1vZGVsQ2FwYWJpbGl0aWVzEhQKDGlzX3ZlcnNpb25lZBgBIAEoCBIWCg5pc19wdWJsaXNoYWJsZRgCIAEoCBIUCgxoYXNfdmFyaWFudHMYAyABKAgSFwoPY3VzdG9tZXJfc2NvcGVkGAQgASgIEhcKD3NoYXJpbmdfZW5hYmxlZBgFIAEoCCKPBwoFTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSIAoGZmllbGRzGAQgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgFIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIWCgljb25maWdfaWQYBiABKAlIAIgBARIyCgxjYXBhYmlsaXRpZXMYByABKAsyHC5tb2RlbHMudjEuTW9kZWxDYXBhYmlsaXRpZXMSHwoSY3VycmVudF92ZXJzaW9uX2lkGAggASgJSAGIAQESJQoYcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyGAkgASgFSAKIAQESEQoJdGVuYW50X2lkGAogASgJEhIKCnByb2plY3RfaWQYCyABKAkSFwoKY3JlYXRlZF9ieRgUIAEoCUgDiAEBEhcKCnVwZGF0ZWRfYnkYFSABKAlIBIgBARIuCgpjcmVhdGVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsChJsYXN0X3B1c2hlZF9maWVsZHMYKCADKAsyEC5tb2RlbHMudjEuRmllbGQSNwoObGFzdF9wdXNoZWRfYXQYKSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYKiABKAlIBogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgrIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIB4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgwKCl9jb25maWdfaWRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD19sYXN0X3B1c2hlZF9hdEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IsICCgxNb2RlbFZlcnNpb24SCgoCaWQYASABKAkSEAoIbW9kZWxfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSIAoGZmllbGRzGAQgAygLMhAubW9kZWxzLnYxLkZpZWxkEhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSLNAQoSQ3JlYXRlTW9kZWxSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAIgBARIWCgljb25maWdfaWQYBSABKAlIAYgBARIcChR1cGRhdGVfcHVzaF9zbmFwc2hvdBgGIAEoCEIJCgdfY29uZmlnQgwKCl9jb25maWdfaWQiNgoTQ3JlYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIdCg9HZXRNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiMwoQR2V0TW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIjChRHZXRNb2RlbEJ5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiOAoVR2V0TW9kZWxCeUtleVJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIpwBChFMaXN0TW9kZWxzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBARIVCghjYXRlZ29yeRgCIAEoCUgBiAEBEg0KBWxpbWl0GAMgASgFEg4KBm9mZnNldBgEIAEoBRIWCgljb25maWdfaWQYBSABKAlIAogBAUIJCgdfc2VhcmNoQgsKCV9jYXRlZ29yeUIMCgpfY29uZmlnX2lkIkUKEkxpc3RNb2RlbHNSZXNwb25zZRIgCgZtb2RlbHMYASADKAsyEC5tb2RlbHMudjEuTW9kZWwSDQoFdG90YWwYAiABKAUimgIKElVwZGF0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gBiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgFIAEoCUgCiAEBEhUKDXVwZGF0ZV9maWVsZHMYBiABKAgSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYByABKAgSFQoNc25hcHNob3Rfb25seRgIIAEoCEIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iNgoTVXBkYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIgChJEZWxldGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiJgoTRGVsZXRlTW9kZWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkYKFUR1cGxpY2F0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIPCgduZXdfa2V5GAIgASgJEhAKCG5ld19uYW1lGAMgASgJIjkKFkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiSwoYTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBm9mZnNldBgDIAEoBSJVChlMaXN0TW9kZWxWZXJzaW9uc1Jlc3BvbnNlEikKCHZlcnNpb25zGAEgAygLMhcubW9kZWxzLnYxLk1vZGVsVmVyc2lvbhINCgV0b3RhbBgCIAEoBSI+ChZHZXRNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiQwoXR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USKAoHdmVyc2lvbhgBIAEoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24iQgoaUmVzdG9yZU1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSI+ChtSZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiYwoURGVwcmVjYXRlZEZpZWxkVG91Y2gSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCWZpZWxkX2tleRgEIAEoCSJWCiJNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXF1ZXN0EjAKB3RvdWNoZXMYASADKAsyHy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkVG91Y2giNgojTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USDwoHdXBkYXRlZBgBIAEoBSL3AQoYRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlEhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhAKCG1vZGVsX2lkGAMgASgJEhEKCW1vZGVsX2tleRgEIAEoCRIRCglmaWVsZF9rZXkYBSABKAkSLgoKZGVsZXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoPbGFzdF9xdWVyaWVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQhIKEF9sYXN0X3F1ZXJpZWRfYXQiRAokTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0EhwKFGdyYWNlX3BlcmlvZF9zZWNvbmRzGAEgASgDImAKJUxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVzcG9uc2USNwoKY2FuZGlkYXRlcxgBIAMoCzIjLm1vZGVscy52MS5EZXByZWNhdGVkRmllbGRDYW5kaWRhdGUiQQoaRHJvcERlcHJlY2F0ZWRGaWVsZFJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEQoJZmllbGRfa2V5GAIgASgJIi4KG0Ryb3BEZXByZWNhdGVkRmllbGRSZXNwb25zZRIPCgdkcm9wcGVkGAEgASgIIiEKE1B1Ymxpc2hNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkibQoUUHVibGlzaE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiIwoVVW5wdWJsaXNoTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjkKFlVucHVibGlzaE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiKgocR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJKCh1HZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMioQEKG1NjaGVkdWxlTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCI/ChxTY2hlZHVsZU1vZGVsUHVibGlzaFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIjAKIkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiRgojQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwq+QIKCUZpZWxkVHlwZRIaChZGSUVMRF9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPRklFTERfVFlQRV9URVhUEAESFQoRRklFTERfVFlQRV9OVU1CRVIQAhIWChJGSUVMRF9UWVBFX0JPT0xFQU4QAxITCg9GSUVMRF9UWVBFX0RBVEUQBBIVChFGSUVMRF9UWVBFX1NFTEVDVBAFEhMKD0ZJRUxEX1RZUEVfSlNPThAGEhMKD0ZJRUxEX1RZUEVfTElTVBAHEhQKEEZJRUxEX1RZUEVfTU9ERUwQCBIYChRGSUVMRF9UWVBFX1JFRkVSRU5DRRAJEhMKD0ZJRUxEX1RZUEVfRklMRRAKEhQKEEZJRUxEX1RZUEVfSU1BR0UQCxIUChBGSUVMRF9UWVBFX1ZJREVPEAwSFwoTRklFTERfVFlQRV9GTEVYSUJMRRANEhMKD0ZJRUxEX1RZUEVfRU5VTRAOEhcKE0ZJRUxEX1RZUEVfUklDSFRFWFQQDzK4DQoNTW9kZWxzU2VydmljZRJDCghHZXRNb2RlbBIaLm1vZGVscy52MS5HZXRNb2RlbFJlcXVlc3QaGy5tb2RlbHMudjEuR2V0TW9kZWxSZXNwb25zZRJSCg1HZXRNb2RlbEJ5S2V5Eh8ubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXF1ZXN0GiAubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXNwb25zZRJJCgpMaXN0TW9kZWxzEhwubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXF1ZXN0Gh0ubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXNwb25zZRJMCgtDcmVhdGVNb2RlbBIdLm1vZGVscy52MS5DcmVhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXNwb25zZRJMCgtVcGRhdGVNb2RlbBIdLm1vZGVscy52MS5VcGRhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXNwb25zZRJMCgtEZWxldGVNb2RlbBIdLm1vZGVscy52MS5EZWxldGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXNwb25zZRJVCg5EdXBsaWNhdGVNb2RlbBIgLm1vZGVscy52MS5EdXBsaWNhdGVNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXNwb25zZRJYCg9HZXRNb2RlbFZlcnNpb24SIS5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBoiLm1vZGVscy52MS5HZXRNb2RlbFZlcnNpb25SZXNwb25zZRJeChFMaXN0TW9kZWxWZXJzaW9ucxIjLm1vZGVscy52MS5MaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QaJC5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRJkChNSZXN0b3JlTW9kZWxWZXJzaW9uEiUubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0GiYubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRJPCgxQdWJsaXNoTW9kZWwSHi5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVxdWVzdBofLm1vZGVscy52MS5QdWJsaXNoTW9kZWxSZXNwb25zZRJVCg5VbnB1Ymxpc2hNb2RlbBIgLm1vZGVscy52MS5VbnB1Ymxpc2hNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXNwb25zZRJqChVHZXRNb2RlbFB1Ymxpc2hTdGF0dXMSJy5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVxdWVzdBooLm1vZGVscy52MS5HZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXNwb25zZRJnChRTY2hlZHVsZU1vZGVsUHVibGlzaBImLm1vZGVscy52MS5TY2hlZHVsZU1vZGVsUHVibGlzaFJlcXVlc3QaJy5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXNwb25zZRJ8ChtDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2gSLS5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBouLm1vZGVscy52MS5DYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRJ8ChtNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWQSLS5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBouLm1vZGVscy52MS5NYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRKCAQodTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXMSLy5tb2RlbHMudjEuTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0GjAubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVzcG9uc2USZAoTRHJvcERlcHJlY2F0ZWRGaWVsZBIlLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBomLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_publish_v1_publish]);
14
14
 
15
15
  /**
16
16
  * Describes the message models.v1.Field.
@@ -33,292 +33,299 @@ export const SharingConfigSchema = /*@__PURE__*/
33
33
  export const ModelConfigSchema = /*@__PURE__*/
34
34
  messageDesc(file_models_v1_models, 2);
35
35
 
36
+ /**
37
+ * Describes the message models.v1.LookupDefinition.
38
+ * Use `create(LookupDefinitionSchema)` to create a new message.
39
+ */
40
+ export const LookupDefinitionSchema = /*@__PURE__*/
41
+ messageDesc(file_models_v1_models, 3);
42
+
36
43
  /**
37
44
  * Describes the message models.v1.ModelCapabilities.
38
45
  * Use `create(ModelCapabilitiesSchema)` to create a new message.
39
46
  */
40
47
  export const ModelCapabilitiesSchema = /*@__PURE__*/
41
- messageDesc(file_models_v1_models, 3);
48
+ messageDesc(file_models_v1_models, 4);
42
49
 
43
50
  /**
44
51
  * Describes the message models.v1.Model.
45
52
  * Use `create(ModelSchema)` to create a new message.
46
53
  */
47
54
  export const ModelSchema = /*@__PURE__*/
48
- messageDesc(file_models_v1_models, 4);
55
+ messageDesc(file_models_v1_models, 5);
49
56
 
50
57
  /**
51
58
  * Describes the message models.v1.ModelVersion.
52
59
  * Use `create(ModelVersionSchema)` to create a new message.
53
60
  */
54
61
  export const ModelVersionSchema = /*@__PURE__*/
55
- messageDesc(file_models_v1_models, 5);
62
+ messageDesc(file_models_v1_models, 6);
56
63
 
57
64
  /**
58
65
  * Describes the message models.v1.CreateModelRequest.
59
66
  * Use `create(CreateModelRequestSchema)` to create a new message.
60
67
  */
61
68
  export const CreateModelRequestSchema = /*@__PURE__*/
62
- messageDesc(file_models_v1_models, 6);
69
+ messageDesc(file_models_v1_models, 7);
63
70
 
64
71
  /**
65
72
  * Describes the message models.v1.CreateModelResponse.
66
73
  * Use `create(CreateModelResponseSchema)` to create a new message.
67
74
  */
68
75
  export const CreateModelResponseSchema = /*@__PURE__*/
69
- messageDesc(file_models_v1_models, 7);
76
+ messageDesc(file_models_v1_models, 8);
70
77
 
71
78
  /**
72
79
  * Describes the message models.v1.GetModelRequest.
73
80
  * Use `create(GetModelRequestSchema)` to create a new message.
74
81
  */
75
82
  export const GetModelRequestSchema = /*@__PURE__*/
76
- messageDesc(file_models_v1_models, 8);
83
+ messageDesc(file_models_v1_models, 9);
77
84
 
78
85
  /**
79
86
  * Describes the message models.v1.GetModelResponse.
80
87
  * Use `create(GetModelResponseSchema)` to create a new message.
81
88
  */
82
89
  export const GetModelResponseSchema = /*@__PURE__*/
83
- messageDesc(file_models_v1_models, 9);
90
+ messageDesc(file_models_v1_models, 10);
84
91
 
85
92
  /**
86
93
  * Describes the message models.v1.GetModelByKeyRequest.
87
94
  * Use `create(GetModelByKeyRequestSchema)` to create a new message.
88
95
  */
89
96
  export const GetModelByKeyRequestSchema = /*@__PURE__*/
90
- messageDesc(file_models_v1_models, 10);
97
+ messageDesc(file_models_v1_models, 11);
91
98
 
92
99
  /**
93
100
  * Describes the message models.v1.GetModelByKeyResponse.
94
101
  * Use `create(GetModelByKeyResponseSchema)` to create a new message.
95
102
  */
96
103
  export const GetModelByKeyResponseSchema = /*@__PURE__*/
97
- messageDesc(file_models_v1_models, 11);
104
+ messageDesc(file_models_v1_models, 12);
98
105
 
99
106
  /**
100
107
  * Describes the message models.v1.ListModelsRequest.
101
108
  * Use `create(ListModelsRequestSchema)` to create a new message.
102
109
  */
103
110
  export const ListModelsRequestSchema = /*@__PURE__*/
104
- messageDesc(file_models_v1_models, 12);
111
+ messageDesc(file_models_v1_models, 13);
105
112
 
106
113
  /**
107
114
  * Describes the message models.v1.ListModelsResponse.
108
115
  * Use `create(ListModelsResponseSchema)` to create a new message.
109
116
  */
110
117
  export const ListModelsResponseSchema = /*@__PURE__*/
111
- messageDesc(file_models_v1_models, 13);
118
+ messageDesc(file_models_v1_models, 14);
112
119
 
113
120
  /**
114
121
  * Describes the message models.v1.UpdateModelRequest.
115
122
  * Use `create(UpdateModelRequestSchema)` to create a new message.
116
123
  */
117
124
  export const UpdateModelRequestSchema = /*@__PURE__*/
118
- messageDesc(file_models_v1_models, 14);
125
+ messageDesc(file_models_v1_models, 15);
119
126
 
120
127
  /**
121
128
  * Describes the message models.v1.UpdateModelResponse.
122
129
  * Use `create(UpdateModelResponseSchema)` to create a new message.
123
130
  */
124
131
  export const UpdateModelResponseSchema = /*@__PURE__*/
125
- messageDesc(file_models_v1_models, 15);
132
+ messageDesc(file_models_v1_models, 16);
126
133
 
127
134
  /**
128
135
  * Describes the message models.v1.DeleteModelRequest.
129
136
  * Use `create(DeleteModelRequestSchema)` to create a new message.
130
137
  */
131
138
  export const DeleteModelRequestSchema = /*@__PURE__*/
132
- messageDesc(file_models_v1_models, 16);
139
+ messageDesc(file_models_v1_models, 17);
133
140
 
134
141
  /**
135
142
  * Describes the message models.v1.DeleteModelResponse.
136
143
  * Use `create(DeleteModelResponseSchema)` to create a new message.
137
144
  */
138
145
  export const DeleteModelResponseSchema = /*@__PURE__*/
139
- messageDesc(file_models_v1_models, 17);
146
+ messageDesc(file_models_v1_models, 18);
140
147
 
141
148
  /**
142
149
  * Describes the message models.v1.DuplicateModelRequest.
143
150
  * Use `create(DuplicateModelRequestSchema)` to create a new message.
144
151
  */
145
152
  export const DuplicateModelRequestSchema = /*@__PURE__*/
146
- messageDesc(file_models_v1_models, 18);
153
+ messageDesc(file_models_v1_models, 19);
147
154
 
148
155
  /**
149
156
  * Describes the message models.v1.DuplicateModelResponse.
150
157
  * Use `create(DuplicateModelResponseSchema)` to create a new message.
151
158
  */
152
159
  export const DuplicateModelResponseSchema = /*@__PURE__*/
153
- messageDesc(file_models_v1_models, 19);
160
+ messageDesc(file_models_v1_models, 20);
154
161
 
155
162
  /**
156
163
  * Describes the message models.v1.ListModelVersionsRequest.
157
164
  * Use `create(ListModelVersionsRequestSchema)` to create a new message.
158
165
  */
159
166
  export const ListModelVersionsRequestSchema = /*@__PURE__*/
160
- messageDesc(file_models_v1_models, 20);
167
+ messageDesc(file_models_v1_models, 21);
161
168
 
162
169
  /**
163
170
  * Describes the message models.v1.ListModelVersionsResponse.
164
171
  * Use `create(ListModelVersionsResponseSchema)` to create a new message.
165
172
  */
166
173
  export const ListModelVersionsResponseSchema = /*@__PURE__*/
167
- messageDesc(file_models_v1_models, 21);
174
+ messageDesc(file_models_v1_models, 22);
168
175
 
169
176
  /**
170
177
  * Describes the message models.v1.GetModelVersionRequest.
171
178
  * Use `create(GetModelVersionRequestSchema)` to create a new message.
172
179
  */
173
180
  export const GetModelVersionRequestSchema = /*@__PURE__*/
174
- messageDesc(file_models_v1_models, 22);
181
+ messageDesc(file_models_v1_models, 23);
175
182
 
176
183
  /**
177
184
  * Describes the message models.v1.GetModelVersionResponse.
178
185
  * Use `create(GetModelVersionResponseSchema)` to create a new message.
179
186
  */
180
187
  export const GetModelVersionResponseSchema = /*@__PURE__*/
181
- messageDesc(file_models_v1_models, 23);
188
+ messageDesc(file_models_v1_models, 24);
182
189
 
183
190
  /**
184
191
  * Describes the message models.v1.RestoreModelVersionRequest.
185
192
  * Use `create(RestoreModelVersionRequestSchema)` to create a new message.
186
193
  */
187
194
  export const RestoreModelVersionRequestSchema = /*@__PURE__*/
188
- messageDesc(file_models_v1_models, 24);
195
+ messageDesc(file_models_v1_models, 25);
189
196
 
190
197
  /**
191
198
  * Describes the message models.v1.RestoreModelVersionResponse.
192
199
  * Use `create(RestoreModelVersionResponseSchema)` to create a new message.
193
200
  */
194
201
  export const RestoreModelVersionResponseSchema = /*@__PURE__*/
195
- messageDesc(file_models_v1_models, 25);
202
+ messageDesc(file_models_v1_models, 26);
196
203
 
197
204
  /**
198
205
  * Describes the message models.v1.DeprecatedFieldTouch.
199
206
  * Use `create(DeprecatedFieldTouchSchema)` to create a new message.
200
207
  */
201
208
  export const DeprecatedFieldTouchSchema = /*@__PURE__*/
202
- messageDesc(file_models_v1_models, 26);
209
+ messageDesc(file_models_v1_models, 27);
203
210
 
204
211
  /**
205
212
  * Describes the message models.v1.MarkDeprecatedFieldsQueriedRequest.
206
213
  * Use `create(MarkDeprecatedFieldsQueriedRequestSchema)` to create a new message.
207
214
  */
208
215
  export const MarkDeprecatedFieldsQueriedRequestSchema = /*@__PURE__*/
209
- messageDesc(file_models_v1_models, 27);
216
+ messageDesc(file_models_v1_models, 28);
210
217
 
211
218
  /**
212
219
  * Describes the message models.v1.MarkDeprecatedFieldsQueriedResponse.
213
220
  * Use `create(MarkDeprecatedFieldsQueriedResponseSchema)` to create a new message.
214
221
  */
215
222
  export const MarkDeprecatedFieldsQueriedResponseSchema = /*@__PURE__*/
216
- messageDesc(file_models_v1_models, 28);
223
+ messageDesc(file_models_v1_models, 29);
217
224
 
218
225
  /**
219
226
  * Describes the message models.v1.DeprecatedFieldCandidate.
220
227
  * Use `create(DeprecatedFieldCandidateSchema)` to create a new message.
221
228
  */
222
229
  export const DeprecatedFieldCandidateSchema = /*@__PURE__*/
223
- messageDesc(file_models_v1_models, 29);
230
+ messageDesc(file_models_v1_models, 30);
224
231
 
225
232
  /**
226
233
  * Describes the message models.v1.ListDeprecatedFieldCandidatesRequest.
227
234
  * Use `create(ListDeprecatedFieldCandidatesRequestSchema)` to create a new message.
228
235
  */
229
236
  export const ListDeprecatedFieldCandidatesRequestSchema = /*@__PURE__*/
230
- messageDesc(file_models_v1_models, 30);
237
+ messageDesc(file_models_v1_models, 31);
231
238
 
232
239
  /**
233
240
  * Describes the message models.v1.ListDeprecatedFieldCandidatesResponse.
234
241
  * Use `create(ListDeprecatedFieldCandidatesResponseSchema)` to create a new message.
235
242
  */
236
243
  export const ListDeprecatedFieldCandidatesResponseSchema = /*@__PURE__*/
237
- messageDesc(file_models_v1_models, 31);
244
+ messageDesc(file_models_v1_models, 32);
238
245
 
239
246
  /**
240
247
  * Describes the message models.v1.DropDeprecatedFieldRequest.
241
248
  * Use `create(DropDeprecatedFieldRequestSchema)` to create a new message.
242
249
  */
243
250
  export const DropDeprecatedFieldRequestSchema = /*@__PURE__*/
244
- messageDesc(file_models_v1_models, 32);
251
+ messageDesc(file_models_v1_models, 33);
245
252
 
246
253
  /**
247
254
  * Describes the message models.v1.DropDeprecatedFieldResponse.
248
255
  * Use `create(DropDeprecatedFieldResponseSchema)` to create a new message.
249
256
  */
250
257
  export const DropDeprecatedFieldResponseSchema = /*@__PURE__*/
251
- messageDesc(file_models_v1_models, 33);
258
+ messageDesc(file_models_v1_models, 34);
252
259
 
253
260
  /**
254
261
  * Describes the message models.v1.PublishModelRequest.
255
262
  * Use `create(PublishModelRequestSchema)` to create a new message.
256
263
  */
257
264
  export const PublishModelRequestSchema = /*@__PURE__*/
258
- messageDesc(file_models_v1_models, 34);
265
+ messageDesc(file_models_v1_models, 35);
259
266
 
260
267
  /**
261
268
  * Describes the message models.v1.PublishModelResponse.
262
269
  * Use `create(PublishModelResponseSchema)` to create a new message.
263
270
  */
264
271
  export const PublishModelResponseSchema = /*@__PURE__*/
265
- messageDesc(file_models_v1_models, 35);
272
+ messageDesc(file_models_v1_models, 36);
266
273
 
267
274
  /**
268
275
  * Describes the message models.v1.UnpublishModelRequest.
269
276
  * Use `create(UnpublishModelRequestSchema)` to create a new message.
270
277
  */
271
278
  export const UnpublishModelRequestSchema = /*@__PURE__*/
272
- messageDesc(file_models_v1_models, 36);
279
+ messageDesc(file_models_v1_models, 37);
273
280
 
274
281
  /**
275
282
  * Describes the message models.v1.UnpublishModelResponse.
276
283
  * Use `create(UnpublishModelResponseSchema)` to create a new message.
277
284
  */
278
285
  export const UnpublishModelResponseSchema = /*@__PURE__*/
279
- messageDesc(file_models_v1_models, 37);
286
+ messageDesc(file_models_v1_models, 38);
280
287
 
281
288
  /**
282
289
  * Describes the message models.v1.GetModelPublishStatusRequest.
283
290
  * Use `create(GetModelPublishStatusRequestSchema)` to create a new message.
284
291
  */
285
292
  export const GetModelPublishStatusRequestSchema = /*@__PURE__*/
286
- messageDesc(file_models_v1_models, 38);
293
+ messageDesc(file_models_v1_models, 39);
287
294
 
288
295
  /**
289
296
  * Describes the message models.v1.GetModelPublishStatusResponse.
290
297
  * Use `create(GetModelPublishStatusResponseSchema)` to create a new message.
291
298
  */
292
299
  export const GetModelPublishStatusResponseSchema = /*@__PURE__*/
293
- messageDesc(file_models_v1_models, 39);
300
+ messageDesc(file_models_v1_models, 40);
294
301
 
295
302
  /**
296
303
  * Describes the message models.v1.ScheduleModelPublishRequest.
297
304
  * Use `create(ScheduleModelPublishRequestSchema)` to create a new message.
298
305
  */
299
306
  export const ScheduleModelPublishRequestSchema = /*@__PURE__*/
300
- messageDesc(file_models_v1_models, 40);
307
+ messageDesc(file_models_v1_models, 41);
301
308
 
302
309
  /**
303
310
  * Describes the message models.v1.ScheduleModelPublishResponse.
304
311
  * Use `create(ScheduleModelPublishResponseSchema)` to create a new message.
305
312
  */
306
313
  export const ScheduleModelPublishResponseSchema = /*@__PURE__*/
307
- messageDesc(file_models_v1_models, 41);
314
+ messageDesc(file_models_v1_models, 42);
308
315
 
309
316
  /**
310
317
  * Describes the message models.v1.CancelScheduledModelPublishRequest.
311
318
  * Use `create(CancelScheduledModelPublishRequestSchema)` to create a new message.
312
319
  */
313
320
  export const CancelScheduledModelPublishRequestSchema = /*@__PURE__*/
314
- messageDesc(file_models_v1_models, 42);
321
+ messageDesc(file_models_v1_models, 43);
315
322
 
316
323
  /**
317
324
  * Describes the message models.v1.CancelScheduledModelPublishResponse.
318
325
  * Use `create(CancelScheduledModelPublishResponseSchema)` to create a new message.
319
326
  */
320
327
  export const CancelScheduledModelPublishResponseSchema = /*@__PURE__*/
321
- messageDesc(file_models_v1_models, 43);
328
+ messageDesc(file_models_v1_models, 44);
322
329
 
323
330
  /**
324
331
  * Describes the enum models.v1.FieldType.
@@ -279,6 +279,17 @@ export declare type RecordFilter = Message<"records.v1.RecordFilter"> & {
279
279
  * @generated from field: google.protobuf.Value value = 3;
280
280
  */
281
281
  value?: Value | undefined;
282
+
283
+ /**
284
+ * When set, `field` points at a reference-typed field and `value` is the
285
+ * target record's natural key (not its id). The handler resolves
286
+ * (ref_model, value) -> record id server-side and rewrites the condition
287
+ * to match the stored reference id. Lets callers filter references by the
288
+ * editorially-stable natural key while storage stays id-based.
289
+ *
290
+ * @generated from field: optional string ref_model = 4;
291
+ */
292
+ refModel?: string | undefined;
282
293
  };
283
294
 
284
295
  /**
@@ -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/ChVHZXRSZWNvcmRCeUtleVJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhMKC25hdHVyYWxfa2V5GAIgASgJIjwKFkdldFJlY29yZEJ5S2V5UmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiQgoZR2V0UmVjb3JkQnlLZXlPcklkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKaWRlbnRpZmllchgCIAEoCSJAChpHZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCLxAQoSTGlzdFJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUSKQoHZmlsdGVycxgEIAMoCzIYLnJlY29yZHMudjEuUmVjb3JkRmlsdGVyEiMKBHNvcnQYBSADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIYCgtjdXN0b21lcl9pZBgGIAEoCUgAiAEBEhMKBnNlYXJjaBgHIAEoCUgBiAEBEg8KB3ByZXZpZXcYCCABKAhCDgoMX2N1c3RvbWVyX2lkQgkKB19zZWFyY2giSQoTTGlzdFJlY29yZHNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUicgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSI6ChRVcGRhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQifgoYQnVsa1VwZGF0ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIoCgZmaWx0ZXIYAiADKAsyGC5yZWNvcmRzLnYxLlJlY29yZEZpbHRlchIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIqChlCdWxrVXBkYXRlUmVjb3Jkc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFIlYKFkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSHAoPbmV3X25hdHVyYWxfa2V5GAIgASgJSACIAQFCEgoQX25ld19uYXR1cmFsX2tleSI9ChdEdXBsaWNhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJQChtEdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QSCwoDaWRzGAEgAygJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiQwocRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQiiAEKFENyZWF0ZVZlcnNpb25SZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAyABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIjwKFUNyZWF0ZVZlcnNpb25SZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoVUHVibGlzaFZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPAoWUHVibGlzaFZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChZVbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIqChdVbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKFlJldmVydFRvVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI9ChdSZXZlcnRUb1ZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJNChlMaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRINCgVsaW1pdBgCIAEoBRIOCgZvZmZzZXQYAyABKAUiUQoaTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSJlChRDcmVhdGVWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPAoVQ3JlYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKaAQoUVXBkYXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI0Cg5tZXRhZGF0YV9wYXRjaBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIRCg9fbWV0YWRhdGFfcGF0Y2giPAoVVXBkYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIqChREZWxldGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJIigKFURlbGV0ZVZhcmlhbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkEKGFNldERlZmF1bHRWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoKdmFyaWFudF9pZBgCIAEoCSI/ChlTZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIk0KGUxpc3RSZWNvcmRWYXJpYW50c1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBm9mZnNldBgDIAEoBSJRChpMaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRIkCgh2YXJpYW50cxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFIrABChJTYXZlQ29udGVudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC3ZhcmlhbnRfa2V5GAMgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAQgASgJSAGIAQFCDgoMX3ZhcmlhbnRfa2V5QhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iXgoTU2F2ZUNvbnRlbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIjCgd2ZXJzaW9uGAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiqgEKHFNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJECh1TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiOQojQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJLCiRDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkItABCh1MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgCiAEBEg0KBWxpbWl0GAQgASgFEg4KBm9mZnNldBgFIAEoBUIHCgVfZnJvbUIFCgNfdG9CDAoKX21vZGVsX2tleSJVCh5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSIwChpHZXRTY2hlZHVsZWRQdWJsaXNoUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIkwKG0dldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRItCghzY2hlZHVsZRgBIAEoCzIbLnJlY29yZHMudjEuUHVibGlzaFNjaGVkdWxlIpkBChhMaXN0RHJhZnRWZXJzaW9uc1JlcXVlc3QSFgoJbW9kZWxfa2V5GAEgASgJSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESDQoFbGltaXQYAyABKAUSDgoGb2Zmc2V0GAQgASgFEhgKEGRlZHVwZV9ieV9wYXJlbnQYBSABKAhCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoIlAKGUxpc3REcmFmdFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIrkBChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCEIOCgxfY3VzdG9tZXJfaWRCCgoIX2NvbnRleHQiSgobQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlEisKB3JlY29yZHMYASADKAsyGi5yZWNvcmRzLnYxLlJlc29sdmVkUmVjb3JkIs0CCg5SZXNvbHZlZFJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKQoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhcKCnZhcmlhbnRfaWQYBiABKAlIAYgBARIRCgloYXNfZHJhZnQYCCABKAgSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdHVyYWxfa2V5Qg0KC192YXJpYW50X2lkIi8KGUxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCSI4ChBSZWNvcmRNb2RlbEVudHJ5EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkiSwoaTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USLQoHZW50cmllcxgBIAMoCzIcLnJlY29yZHMudjEuUmVjb3JkTW9kZWxFbnRyeSJHChNHbG9iYWxTZWFyY2hSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhIKCm1vZGVsX2tleXMYAiADKAkSDQoFbGltaXQYCiABKAUikQEKEFNlYXJjaFJlc3VsdEl0ZW0SCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDQoFc2NvcmUYBSABKAFCDgoMX25hdHVyYWxfa2V5IlQKFEdsb2JhbFNlYXJjaFJlc3BvbnNlEi0KB3JlY29yZHMYASADKAsyHC5yZWNvcmRzLnYxLlNlYXJjaFJlc3VsdEl0ZW0SDQoFdG90YWwYAiABKAUioQEKDkVtYmVkZGluZ1N0YXRzEhEKCW1vZGVsX2tleRgBIAEoCRIVCg10b3RhbF9yZWNvcmRzGAIgASgFEhgKEGVtYmVkZGVkX3JlY29yZHMYAyABKAUSFwoPcGVuZGluZ19yZWNvcmRzGAQgASgFEh0KEGxhc3RfZW1iZWRkZWRfYXQYBSABKAlIAIgBAUITChFfbGFzdF9lbWJlZGRlZF9hdCJ1Cg9SZWNvcmRFbWJlZGRpbmcSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRISCgpkaW1lbnNpb25zGAMgASgFEhgKC2VtYmVkZGVkX2F0GAQgASgJSACIAQFCDgoMX2VtYmVkZGVkX2F0IpMBCg1TaW1pbGFyUmVjb3JkEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhIKCnNpbWlsYXJpdHkYBSABKAFCDgoMX25hdHVyYWxfa2V5IkAKGEdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBAUIMCgpfbW9kZWxfa2V5IkYKGUdldEVtYmVkZGluZ1N0YXRzUmVzcG9uc2USKQoFc3RhdHMYASADKAsyGi5yZWNvcmRzLnYxLkVtYmVkZGluZ1N0YXRzIi8KGkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSJOChtHZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USLwoKZW1iZWRkaW5ncxgBIAMoCzIbLnJlY29yZHMudjEuUmVjb3JkRW1iZWRkaW5nImMKGUZpbmRTaW1pbGFyUmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFQgwKCl9tb2RlbF9rZXkiSAoaRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USKgoHcmVjb3JkcxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZCKbAQoWV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDgoGdmVjdG9yGAIgAygCEhIKCmRpbWVuc2lvbnMYAyABKAUSFQoIcHJvdmlkZXIYBCABKAlIAIgBARIXCgptb2RlbF9uYW1lGAUgASgJSAGIAQFCCwoJX3Byb3ZpZGVyQg0KC19tb2RlbF9uYW1lIioKF1dyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoXRGVsZXRlRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIisKGERlbGV0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIImQKF1NlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0EhQKDHF1ZXJ5X3ZlY3RvchgBIAMoAhIWCgltb2RlbF9rZXkYAiABKAlIAIgBARINCgVsaW1pdBgKIAEoBUIMCgpfbW9kZWxfa2V5IkYKGFNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRIqCgdyZXN1bHRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkKnMKClJlY29yZFR5cGUSGwoXUkVDT1JEX1RZUEVfVU5TUEVDSUZJRUQQABIWChJSRUNPUkRfVFlQRV9SRUNPUkQQARIXChNSRUNPUkRfVFlQRV9WQVJJQU5UEAISFwoTUkVDT1JEX1RZUEVfVkVSU0lPThADKp0BChJCYXRjaE9wZXJhdGlvblR5cGUSJAogQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9DUkVBVEUQARIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9VUERBVEUQAhIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9ERUxFVEUQAzKxHAoOUmVjb3Jkc1NlcnZpY2USUQoMQ3JlYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXNwb25zZRJICglHZXRSZWNvcmQSHC5yZWNvcmRzLnYxLkdldFJlY29yZFJlcXVlc3QaHS5yZWNvcmRzLnYxLkdldFJlY29yZFJlc3BvbnNlElcKDkdldFJlY29yZEJ5S2V5EiEucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleVJlcXVlc3QaIi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVzcG9uc2USYwoSR2V0UmVjb3JkQnlLZXlPcklkEiUucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0GiYucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRJOCgtMaXN0UmVjb3JkcxIeLnJlY29yZHMudjEuTGlzdFJlY29yZHNSZXF1ZXN0Gh8ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1Jlc3BvbnNlElEKDFVwZGF0ZVJlY29yZBIfLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVzcG9uc2USUQoMVXBzZXJ0UmVjb3JkEh8ucmVjb3Jkcy52MS5VcHNlcnRSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcHNlcnRSZWNvcmRSZXNwb25zZRJRCgxEZWxldGVSZWNvcmQSHy5yZWNvcmRzLnYxLkRlbGV0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkRlbGV0ZVJlY29yZFJlc3BvbnNlEmwKFUJhdGNoUmVjb3JkT3BlcmF0aW9ucxIoLnJlY29yZHMudjEuQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVxdWVzdBopLnJlY29yZHMudjEuQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USYAoRQnVsa1VwZGF0ZVJlY29yZHMSJC5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBolLnJlY29yZHMudjEuQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRJaCg9EdXBsaWNhdGVSZWNvcmQSIi5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEmkKFER1cGxpY2F0ZVJlY29yZHNCdWxrEicucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QaKC5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USVAoNQ3JlYXRlVmVyc2lvbhIgLnJlY29yZHMudjEuQ3JlYXRlVmVyc2lvblJlcXVlc3QaIS5yZWNvcmRzLnYxLkNyZWF0ZVZlcnNpb25SZXNwb25zZRJXCg5QdWJsaXNoVmVyc2lvbhIhLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXF1ZXN0GiIucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlc3BvbnNlEloKD1VucHVibGlzaFJlY29yZBIiLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USWgoPUmV2ZXJ0VG9WZXJzaW9uEiIucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXF1ZXN0GiMucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXNwb25zZRJjChJMaXN0UmVjb3JkVmVyc2lvbnMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlEk4KC1NhdmVDb250ZW50Eh4ucmVjb3Jkcy52MS5TYXZlQ29udGVudFJlcXVlc3QaHy5yZWNvcmRzLnYxLlNhdmVDb250ZW50UmVzcG9uc2USVAoNQ3JlYXRlVmFyaWFudBIgLnJlY29yZHMudjEuQ3JlYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXNwb25zZRJUCg1VcGRhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5VcGRhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlc3BvbnNlElQKDURlbGV0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkRlbGV0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVzcG9uc2USYAoRU2V0RGVmYXVsdFZhcmlhbnQSJC5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVxdWVzdBolLnJlY29yZHMudjEuU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRJjChJMaXN0UmVjb3JkVmFyaWFudHMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEmwKFVNjaGVkdWxlUmVjb3JkUHVibGlzaBIoLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVxdWVzdBopLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USgQEKHENhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2gSLy5yZWNvcmRzLnYxLkNhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0GjAucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USbwoWTGlzdFNjaGVkdWxlZFB1Ymxpc2hlcxIpLnJlY29yZHMudjEuTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QaKi5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXNwb25zZRJmChNHZXRTY2hlZHVsZWRQdWJsaXNoEiYucmVjb3Jkcy52MS5HZXRTY2hlZHVsZWRQdWJsaXNoUmVxdWVzdBonLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEmAKEUxpc3REcmFmdFZlcnNpb25zEiQucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkxpc3REcmFmdFZlcnNpb25zUmVzcG9uc2USaQoUQmF0Y2hQdWJsaXNoVmVyc2lvbnMSJy5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBooLnJlY29yZHMudjEuQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRJmChNCYXRjaFJlc29sdmVSZWNvcmRzEiYucmVjb3Jkcy52MS5CYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBonLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlEmMKEkxvb2t1cFJlY29yZE1vZGVscxIlLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBomLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USUQoMR2xvYmFsU2VhcmNoEh8ucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXF1ZXN0GiAucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXNwb25zZRJgChFHZXRFbWJlZGRpbmdTdGF0cxIkLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEmYKE0dldFJlY29yZEVtYmVkZGluZ3MSJi5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USYwoSRmluZFNpbWlsYXJSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRJaCg9Xcml0ZUVtYmVkZGluZ3MSIi5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1JlcXVlc3QaIy5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEERlbGV0ZUVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQU2VhcmNoRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vcmVjb3Jkcy92MTtyZWNvcmRzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEihA0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIBIgBARIXCgp1cGRhdGVkX2J5GBUgASgJSAWIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOdmVyc2lvbl9udW1iZXIYKCABKAVIBogBARIZCgxjb250ZW50X2hhc2gYKSABKAlIB4gBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YKiABKAlICIgBARIbCg5wdWJsaXNoX3N0YXR1cxgrIAEoCUgJiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESGAoLdmFyaWFudF9rZXkYMiABKAlIDIgBARIZCgx2YXJpYW50X25hbWUYMyABKAlIDYgBARIgChN2YXJpYW50X2Rlc2NyaXB0aW9uGDQgASgJSA6IAQESFwoKY2F0YWxvZ19pZBg1IAEoCUgPiAEBEhUKCHByaW9yaXR5GDYgASgFSBCIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGDcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IEYgBARIXCgppc19kZWZhdWx0GDggASgISBKIAQESHwoSY3VycmVudF92ZXJzaW9uX2lkGDwgASgJSBOIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYPSABKAlIFIgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYPiABKAVIFYgBARI1CgxwdWJsaXNoZWRfYXQYPyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBaIAQESGQoMcHVibGlzaGVkX2J5GEAgASgJSBeIAQESEwoLY2FuX3B1Ymxpc2gYQSABKAgSFQoNY2FuX3VucHVibGlzaBhCIAEoCBIfChdoYXNfdW5wdWJsaXNoZWRfY2hhbmdlcxhDIAEoCBIdChBtb2RlbF92ZXJzaW9uX2lkGEYgASgJSBiIAQFCDgoMX25hdHVyYWxfa2V5QgwKCl9wYXJlbnRfaWRCCwoJX21ldGFkYXRhQg4KDF9jdXN0b21lcl9pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUIRCg9fdmVyc2lvbl9udW1iZXJCDwoNX2NvbnRlbnRfaGFzaEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQhEKD19wdWJsaXNoX3N0YXR1c0IXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDgoMX3ZhcmlhbnRfa2V5Qg8KDV92YXJpYW50X25hbWVCFgoUX3ZhcmlhbnRfZGVzY3JpcHRpb25CDQoLX2NhdGFsb2dfaWRCCwoJX3ByaW9yaXR5QhIKEF90YXJnZXRpbmdfcnVsZXNCDQoLX2lzX2RlZmF1bHRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCGwoZX3B1Ymxpc2hlZF92ZXJzaW9uX251bWJlckIPCg1fcHVibGlzaGVkX2F0Qg8KDV9wdWJsaXNoZWRfYnlCEwoRX21vZGVsX3ZlcnNpb25faWQi9QEKD1B1Ymxpc2hTY2hlZHVsZRISCgp2ZXJzaW9uX2lkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAUgASgJSAGIAQFCDwoNX3VucHVibGlzaF9hdEINCgtfY3JlYXRlZF9ieSJ8CgxSZWNvcmRGaWx0ZXISDQoFZmllbGQYASABKAkSEAoIb3BlcmF0b3IYAiABKAkSJQoFdmFsdWUYAyABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSFgoJcmVmX21vZGVsGAQgASgJSACIAQFCDAoKX3JlZl9tb2RlbCIuCglTb3J0RmllbGQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKFAgoOQmF0Y2hPcGVyYXRpb24SLAoEdHlwZRgBIAEoDjIeLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25UeXBlEg8KAmlkGAIgASgJSACIAQESFgoJbW9kZWxfa2V5GAMgASgJSAGIAQESGAoLbmF0dXJhbF9rZXkYBCABKAlIAogBARIqCgRkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhgKC2N1c3RvbWVyX2lkGAYgASgJSASIAQFCBQoDX2lkQgwKCl9tb2RlbF9rZXlCDgoMX25hdHVyYWxfa2V5QgcKBV9kYXRhQg4KDF9jdXN0b21lcl9pZCKIAQoUQmF0Y2hPcGVyYXRpb25SZXN1bHQSDQoFaW5kZXgYASABKAUSDwoHc3VjY2VzcxgCIAEoCBInCgZyZWNvcmQYAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEhIKBWVycm9yGAQgASgJSAGIAQFCCQoHX3JlY29yZEIICgZfZXJyb3IimAIKE0NyZWF0ZVJlY29yZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQESJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLY3VzdG9tZXJfaWQYBCABKAlIAYgBARIuCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBiABKAlIA4gBAUIOCgxfbmF0dXJhbF9rZXlCDgoMX2N1c3RvbWVyX2lkQgsKCV9tZXRhZGF0YUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIqYBChRDcmVhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIoCgd2YXJpYW50GAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARIoCgd2ZXJzaW9uGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAYgBAUIKCghfdmFyaWFudEIKCghfdmVyc2lvbiIeChBHZXRSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldFJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIj8KFUdldFJlY29yZEJ5S2V5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkiPAoWR2V0UmVjb3JkQnlLZXlSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJCChlHZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgppZGVudGlmaWVyGAIgASgJIkAKGkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIvEBChJMaXN0UmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBm9mZnNldBgDIAEoBRIpCgdmaWx0ZXJzGAQgAygLMhgucmVjb3Jkcy52MS5SZWNvcmRGaWx0ZXISIwoEc29ydBgFIAMoCzIVLnJlY29yZHMudjEuU29ydEZpZWxkEhgKC2N1c3RvbWVyX2lkGAYgASgJSACIAQESEwoGc2VhcmNoGAcgASgJSAGIAQESDwoHcHJldmlldxgIIAEoCEIOCgxfY3VzdG9tZXJfaWRCCQoHX3NlYXJjaCJJChNMaXN0UmVjb3Jkc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBSJyChNVcGRhdGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIiEKE0RlbGV0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlUmVjb3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKnAQoTVXBzZXJ0UmVjb3JkUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIRCgltb2RlbF9rZXkYAyABKAkSEwoLbmF0dXJhbF9rZXkYBCABKAkSJQoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGgoSY2hhbmdlX2Rlc2NyaXB0aW9uGAYgASgJIksKFFVwc2VydFJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEg8KB2NyZWF0ZWQYAiABKAgiTgocQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVxdWVzdBIuCgpvcGVyYXRpb25zGAEgAygLMhoucmVjb3Jkcy52MS5CYXRjaE9wZXJhdGlvbiJSCh1CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXNwb25zZRIxCgdyZXN1bHRzGAEgAygLMiAucmVjb3Jkcy52MS5CYXRjaE9wZXJhdGlvblJlc3VsdCJ+ChhCdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEigKBmZpbHRlchgCIAMoCzIYLnJlY29yZHMudjEuUmVjb3JkRmlsdGVyEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IioKGUJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USDQoFY291bnQYASABKAUiVgoWRHVwbGljYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIcCg9uZXdfbmF0dXJhbF9rZXkYAiABKAlIAIgBAUISChBfbmV3X25hdHVyYWxfa2V5Ij0KF0R1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIlAKG0R1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBILCgNpZHMYASADKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQFCDAoKX21vZGVsX2tleSJDChxEdXBsaWNhdGVSZWNvcmRzQnVsa1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKIAQoUQ3JlYXRlVmVyc2lvblJlcXVlc3QSEQoJcGFyZW50X2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgDIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iPAoVQ3JlYXRlVmVyc2lvblJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChVQdWJsaXNoVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI8ChZQdWJsaXNoVmVyc2lvblJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIisKFlVucHVibGlzaFJlY29yZFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIioKF1VucHVibGlzaFJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoWUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIj0KF1JldmVydFRvVmVyc2lvblJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIk0KGUxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QSEQoJcGFyZW50X2lkGAEgASgJEg0KBWxpbWl0GAIgASgFEg4KBm9mZnNldBgDIAEoBSJRChpMaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFImUKFENyZWF0ZVZhcmlhbnRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI8ChVDcmVhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIpoBChRVcGRhdGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjQKDm1ldGFkYXRhX3BhdGNoGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQhEKD19tZXRhZGF0YV9wYXRjaCI8ChVVcGRhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIioKFERlbGV0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkiKAoVRGVsZXRlVmFyaWFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiQQoYU2V0RGVmYXVsdFZhcmlhbnRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRISCgp2YXJpYW50X2lkGAIgASgJIj8KGVNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiTQoZTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDQoFbGltaXQYAiABKAUSDgoGb2Zmc2V0GAMgASgFIlEKGkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEiQKCHZhcmlhbnRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUisAEKElNhdmVDb250ZW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLdmFyaWFudF9rZXkYAyABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBCABKAlIAYgBAUIOCgxfdmFyaWFudF9rZXlCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiJeChNTYXZlQ29udGVudFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEiMKB3ZlcnNpb24YAiABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKqAQocU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0IkQKHVNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCI5CiNDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIksKJENhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQi0AEKHUxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0Ei0KBGZyb20YASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESKwoCdG8YAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFgoJbW9kZWxfa2V5GAMgASgJSAKIAQESDQoFbGltaXQYBCABKAUSDgoGb2Zmc2V0GAUgASgFQgcKBV9mcm9tQgUKA190b0IMCgpfbW9kZWxfa2V5IlUKHkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFIjAKGkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiTAobR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEi0KCHNjaGVkdWxlGAEgASgLMhsucmVjb3Jkcy52MS5QdWJsaXNoU2NoZWR1bGUimQEKGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARINCgVsaW1pdBgDIAEoBRIOCgZvZmZzZXQYBCABKAUSGAoQZGVkdXBlX2J5X3BhcmVudBgFIAEoCEIMCgpfbW9kZWxfa2V5QgkKB19zZWFyY2giUAoZTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFIjIKG0JhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBITCgt2ZXJzaW9uX2lkcxgBIAMoCSJcChxCYXRjaFB1Ymxpc2hWZXJzaW9uc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIXCg9wdWJsaXNoZWRfY291bnQYAiABKAUiuQEKGkJhdGNoUmVzb2x2ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgpyZWNvcmRfaWRzGAIgAygJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESLQoHY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIPCgdwcmV2aWV3GAUgASgIQg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dCJKChtCYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USKwoHcmVjb3JkcxgBIAMoCzIaLnJlY29yZHMudjEuUmVzb2x2ZWRSZWNvcmQizQIKDlJlc29sdmVkUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoKdmFyaWFudF9pZBgGIAEoCUgBiAEBEhEKCWhhc19kcmFmdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfbmF0dXJhbF9rZXlCDQoLX3ZhcmlhbnRfaWQiLwoZTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJIjgKEFJlY29yZE1vZGVsRW50cnkSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCSJLChpMb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRItCgdlbnRyaWVzGAEgAygLMhwucmVjb3Jkcy52MS5SZWNvcmRNb2RlbEVudHJ5IkcKE0dsb2JhbFNlYXJjaFJlcXVlc3QSDQoFcXVlcnkYASABKAkSEgoKbW9kZWxfa2V5cxgCIAMoCRINCgVsaW1pdBgKIAEoBSKRAQoQU2VhcmNoUmVzdWx0SXRlbRIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVzY29yZRgFIAEoAUIOCgxfbmF0dXJhbF9rZXkiVAoUR2xvYmFsU2VhcmNoUmVzcG9uc2USLQoHcmVjb3JkcxgBIAMoCzIcLnJlY29yZHMudjEuU2VhcmNoUmVzdWx0SXRlbRINCgV0b3RhbBgCIAEoBSKhAQoORW1iZWRkaW5nU3RhdHMSEQoJbW9kZWxfa2V5GAEgASgJEhUKDXRvdGFsX3JlY29yZHMYAiABKAUSGAoQZW1iZWRkZWRfcmVjb3JkcxgDIAEoBRIXCg9wZW5kaW5nX3JlY29yZHMYBCABKAUSHQoQbGFzdF9lbWJlZGRlZF9hdBgFIAEoCUgAiAEBQhMKEV9sYXN0X2VtYmVkZGVkX2F0InUKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBAUIOCgxfZW1iZWRkZWRfYXQikwEKDVNpbWlsYXJSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKc2ltaWxhcml0eRgFIAEoAUIOCgxfbmF0dXJhbF9rZXkiQAoYR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiRgoZR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRIpCgVzdGF0cxgBIAMoCzIaLnJlY29yZHMudjEuRW1iZWRkaW5nU3RhdHMiLwoaR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIk4KG0dldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRIvCgplbWJlZGRpbmdzGAEgAygLMhsucmVjb3Jkcy52MS5SZWNvcmRFbWJlZGRpbmciYwoZRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESDQoFbGltaXQYCiABKAVCDAoKX21vZGVsX2tleSJIChpGaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRIqCgdyZWNvcmRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkIpsBChZXcml0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIOCgZ2ZWN0b3IYAiADKAISEgoKZGltZW5zaW9ucxgDIAEoBRIVCghwcm92aWRlchgEIAEoCUgAiAEBEhcKCm1vZGVsX25hbWUYBSABKAlIAYgBAUILCglfcHJvdmlkZXJCDQoLX21vZGVsX25hbWUiKgoXV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdEZWxldGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKwoYRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiZAoXU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QSFAoMcXVlcnlfdmVjdG9yGAEgAygCEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFQgwKCl9tb2RlbF9rZXkiRgoYU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlEioKB3Jlc3VsdHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQqcwoKUmVjb3JkVHlwZRIbChdSRUNPUkRfVFlQRV9VTlNQRUNJRklFRBAAEhYKElJFQ09SRF9UWVBFX1JFQ09SRBABEhcKE1JFQ09SRF9UWVBFX1ZBUklBTlQQAhIXChNSRUNPUkRfVFlQRV9WRVJTSU9OEAMqnQEKEkJhdGNoT3BlcmF0aW9uVHlwZRIkCiBCQVRDSF9PUEVSQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0NSRUFURRABEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX1VQREFURRACEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0RFTEVURRADMrEcCg5SZWNvcmRzU2VydmljZRJRCgxDcmVhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlc3BvbnNlEkgKCUdldFJlY29yZBIcLnJlY29yZHMudjEuR2V0UmVjb3JkUmVxdWVzdBodLnJlY29yZHMudjEuR2V0UmVjb3JkUmVzcG9uc2USVwoOR2V0UmVjb3JkQnlLZXkSIS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVxdWVzdBoiLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXNwb25zZRJjChJHZXRSZWNvcmRCeUtleU9ySWQSJS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QaJi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEk4KC0xpc3RSZWNvcmRzEh4ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1JlcXVlc3QaHy5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVzcG9uc2USUQoMVXBkYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXNwb25zZRJRCgxVcHNlcnRSZWNvcmQSHy5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlc3BvbnNlElEKDERlbGV0ZVJlY29yZBIfLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVzcG9uc2USbAoVQmF0Y2hSZWNvcmRPcGVyYXRpb25zEigucmVjb3Jkcy52MS5CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXF1ZXN0GikucmVjb3Jkcy52MS5CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXNwb25zZRJgChFCdWxrVXBkYXRlUmVjb3JkcxIkLnJlY29yZHMudjEuQnVsa1VwZGF0ZVJlY29yZHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1Jlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJUCg1DcmVhdGVWZXJzaW9uEiAucmVjb3Jkcy52MS5DcmVhdGVWZXJzaW9uUmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmVyc2lvblJlc3BvbnNlElcKDlB1Ymxpc2hWZXJzaW9uEiEucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlcXVlc3QaIi5yZWNvcmRzLnYxLlB1Ymxpc2hWZXJzaW9uUmVzcG9uc2USWgoPVW5wdWJsaXNoUmVjb3JkEiIucmVjb3Jkcy52MS5VbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0GiMucmVjb3Jkcy52MS5VbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRJaCg9SZXZlcnRUb1ZlcnNpb24SIi5yZWNvcmRzLnYxLlJldmVydFRvVmVyc2lvblJlcXVlc3QaIy5yZWNvcmRzLnYxLlJldmVydFRvVmVyc2lvblJlc3BvbnNlEmMKEkxpc3RSZWNvcmRWZXJzaW9ucxIlLnJlY29yZHMudjEuTGlzdFJlY29yZFZlcnNpb25zUmVxdWVzdBomLnJlY29yZHMudjEuTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USTgoLU2F2ZUNvbnRlbnQSHi5yZWNvcmRzLnYxLlNhdmVDb250ZW50UmVxdWVzdBofLnJlY29yZHMudjEuU2F2ZUNvbnRlbnRSZXNwb25zZRJUCg1DcmVhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmFyaWFudFJlc3BvbnNlElQKDVVwZGF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5VcGRhdGVWYXJpYW50UmVzcG9uc2USVAoNRGVsZXRlVmFyaWFudBIgLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLkRlbGV0ZVZhcmlhbnRSZXNwb25zZRJgChFTZXREZWZhdWx0VmFyaWFudBIkLnJlY29yZHMudjEuU2V0RGVmYXVsdFZhcmlhbnRSZXF1ZXN0GiUucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEmMKEkxpc3RSZWNvcmRWYXJpYW50cxIlLnJlY29yZHMudjEuTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBomLnJlY29yZHMudjEuTGlzdFJlY29yZFZhcmlhbnRzUmVzcG9uc2USbAoVU2NoZWR1bGVSZWNvcmRQdWJsaXNoEigucmVjb3Jkcy52MS5TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0GikucmVjb3Jkcy52MS5TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRKBAQocQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaBIvLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QaMC5yZWNvcmRzLnYxLkNhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXNwb25zZRJvChZMaXN0U2NoZWR1bGVkUHVibGlzaGVzEikucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBoqLnJlY29yZHMudjEuTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEmYKE0dldFNjaGVkdWxlZFB1Ymxpc2gSJi5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRTY2hlZHVsZWRQdWJsaXNoUmVzcG9uc2USYAoRTGlzdERyYWZ0VmVyc2lvbnMSJC5yZWNvcmRzLnYxLkxpc3REcmFmdFZlcnNpb25zUmVxdWVzdBolLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRJpChRCYXRjaFB1Ymxpc2hWZXJzaW9ucxInLnJlY29yZHMudjEuQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1Jlc3BvbnNlEmYKE0JhdGNoUmVzb2x2ZVJlY29yZHMSJi5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXF1ZXN0GicucmVjb3Jkcy52MS5CYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USYwoSTG9va3VwUmVjb3JkTW9kZWxzEiUucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRJRCgxHbG9iYWxTZWFyY2gSHy5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlcXVlc3QaIC5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlc3BvbnNlEmAKEUdldEVtYmVkZGluZ1N0YXRzEiQucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1JlcXVlc3QaJS5yZWNvcmRzLnYxLkdldEVtYmVkZGluZ1N0YXRzUmVzcG9uc2USZgoTR2V0UmVjb3JkRW1iZWRkaW5ncxImLnJlY29yZHMudjEuR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRJjChJGaW5kU2ltaWxhclJlY29yZHMSJS5yZWNvcmRzLnYxLkZpbmRTaW1pbGFyUmVjb3Jkc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkZpbmRTaW1pbGFyUmVjb3Jkc1Jlc3BvbnNlEloKD1dyaXRlRW1iZWRkaW5ncxIiLnJlY29yZHMudjEuV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBojLnJlY29yZHMudjEuV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQRGVsZXRlRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuRGVsZXRlRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXNwb25zZRJdChBTZWFyY2hFbWJlZGRpbmdzEiMucmVjb3Jkcy52MS5TZWFyY2hFbWJlZGRpbmdzUmVxdWVzdBokLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9yZWNvcmRzL3YxO3JlY29yZHN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message records.v1.Record.