@foir/cli 0.68.0 → 0.69.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.
Files changed (2) hide show
  1. package/dist/cli.js +165 -40
  2. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -932,7 +932,7 @@ var RuleExpressionSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_expr
932
932
  var RuleOperandSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_expressions, 1);
933
933
 
934
934
  // ../../packages/proto-ts/src/records/v1/records_pb.js
935
- var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEi0A0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIVCghvd25lcl9pZBgIIAEoCUgDiAEBEhcKCm93bmVyX2tpbmQYCSABKAlIBIgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAWIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnZlcnNpb25fbnVtYmVyGCggASgFSAeIAQESGQoMY29udGVudF9oYXNoGCkgASgJSAiIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGCogASgJSAmIAQESGwoOcHVibGlzaF9zdGF0dXMYKyABKAlICogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIC4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GC0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEh0KEHB1Ymxpc2hfYmF0Y2hfaWQYLiABKAlIDYgBARIYCgt2YXJpYW50X2tleRgyIAEoCUgOiAEBEhkKDHZhcmlhbnRfbmFtZRgzIAEoCUgPiAEBEiAKE3ZhcmlhbnRfZGVzY3JpcHRpb24YNCABKAlIEIgBARIXCgpjYXRhbG9nX2lkGDUgASgJSBGIAQESFQoIcHJpb3JpdHkYNiABKAVIEogBARI8Cg90YXJnZXRpbmdfcnVsZXMYNyABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgTiAEBEhcKCmlzX2RlZmF1bHQYOCABKAhIFIgBARIfChJjdXJyZW50X3ZlcnNpb25faWQYPCABKAlIFYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBg9IAEoCUgWiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchg+IAEoBUgXiAEBEjUKDHB1Ymxpc2hlZF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIGIgBARIZCgxwdWJsaXNoZWRfYnkYQCABKAlIGYgBARITCgtjYW5fcHVibGlzaBhBIAEoCBIVCg1jYW5fdW5wdWJsaXNoGEIgASgIEh8KF2hhc191bnB1Ymxpc2hlZF9jaGFuZ2VzGEMgASgIEhAKCHJldmlzaW9uGEQgASgJQg4KDF9uYXR1cmFsX2tleUIMCgpfcGFyZW50X2lkQgsKCV9tZXRhZGF0YUILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX3ZlcnNpb25fbnVtYmVyQg8KDV9jb250ZW50X2hhc2hCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIRCg9fcHVibGlzaF9zdGF0dXNCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0QhMKEV9wdWJsaXNoX2JhdGNoX2lkQg4KDF92YXJpYW50X2tleUIPCg1fdmFyaWFudF9uYW1lQhYKFF92YXJpYW50X2Rlc2NyaXB0aW9uQg0KC19jYXRhbG9nX2lkQgsKCV9wcmlvcml0eUISChBfdGFyZ2V0aW5nX3J1bGVzQg0KC19pc19kZWZhdWx0QhUKE19jdXJyZW50X3ZlcnNpb25faWRCFwoVX3B1Ymxpc2hlZF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDwoNX3B1Ymxpc2hlZF9hdEIPCg1fcHVibGlzaGVkX2J5SgQIRhBHUhBtb2RlbF92ZXJzaW9uX2lkIvUBCg9QdWJsaXNoU2NoZWR1bGUSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgFIAEoCUgBiAEBQg8KDV91bnB1Ymxpc2hfYXRCDQoLX2NyZWF0ZWRfYnkiLgoJU29ydEZpZWxkEg0KBWZpZWxkGAEgASgJEhIKCmRlc2NlbmRpbmcYAiABKAgitQIKDkJhdGNoT3BlcmF0aW9uEiwKBHR5cGUYASABKA4yHi5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uVHlwZRIPCgJpZBgCIAEoCUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhgKC25hdHVyYWxfa2V5GAQgASgJSAKIAQESKgoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIVCghvd25lcl9pZBgGIAEoCUgEiAEBEh4KEWV4cGVjdGVkX3JldmlzaW9uGAcgASgJSAWIAQFCBQoDX2lkQgwKCl9tb2RlbF9rZXlCDgoMX25hdHVyYWxfa2V5QgcKBV9kYXRhQgsKCV9vd25lcl9pZEIUChJfZXhwZWN0ZWRfcmV2aXNpb24iiAEKFEJhdGNoT3BlcmF0aW9uUmVzdWx0Eg0KBWluZGV4GAEgASgFEg8KB3N1Y2Nlc3MYAiABKAgSJwoGcmVjb3JkGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARISCgVlcnJvchgEIAEoCUgBiAEBQgkKB19yZWNvcmRCCAoGX2Vycm9yIsQCChNDcmVhdGVSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKCG93bmVyX2lkGAQgASgJSAGIAQESLgoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAYgASgJSAOIAQESHAoPaWRlbXBvdGVuY3lfa2V5GAcgASgJSASIAQFCDgoMX25hdHVyYWxfa2V5QgsKCV9vd25lcl9pZEILCglfbWV0YWRhdGFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkISChBfaWRlbXBvdGVuY3lfa2V5IqYBChRDcmVhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIoCgd2YXJpYW50GAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARIoCgd2ZXJzaW9uGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAYgBAUIKCghfdmFyaWFudEIKCghfdmVyc2lvbiIeChBHZXRSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldFJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIj8KFUdldFJlY29yZEJ5S2V5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkiPAoWR2V0UmVjb3JkQnlLZXlSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJCChlHZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgppZGVudGlmaWVyGAIgASgJIkAKGkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIuICChJMaXN0UmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEiMKBHNvcnQYAiADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIVCghvd25lcl9pZBgDIAEoCUgAiAEBEhMKBnNlYXJjaBgEIAEoCUgBiAEBEg8KB3ByZXZpZXcYBSABKAgSKwoFd2hlcmUYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESEgoFYWZ0ZXIYByABKAlIA4gBARITCgZiZWZvcmUYCCABKAlIBIgBARISCgVmaXJzdBgJIAEoBUgFiAEBEhEKBGxhc3QYCiABKAVIBogBAUILCglfb3duZXJfaWRCCQoHX3NlYXJjaEIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQICxAMSgQIDBANSgQIDRAOIpUBChNMaXN0UmVjb3Jkc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iwAMKE1VwZGF0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEhgKC3ZhcmlhbnRfa2V5GAQgASgJSAGIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAUgASgJSAKIAQESMgoMcmVwbGFjZV9kYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEh4KEWV4cGVjdGVkX3JldmlzaW9uGAggASgJSAWIAQESHAoPaWRlbXBvdGVuY3lfa2V5GAkgASgJSAaIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg8KDV9yZXBsYWNlX2RhdGFCCwoJX21ldGFkYXRhQhQKEl9leHBlY3RlZF9yZXZpc2lvbkISChBfaWRlbXBvdGVuY3lfa2V5IjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIrcBChxCYXRjaFJlY29yZE9wZXJhdGlvbnNSZXF1ZXN0Ei4KCm9wZXJhdGlvbnMYASADKAsyGi5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uEhMKC21haW50ZW5hbmNlGAIgASgIEhAKCHZhbGlkYXRlGAMgASgIEg4KBmF0b21pYxgEIAEoCBIcCg9pZGVtcG90ZW5jeV9rZXkYBSABKAlIAIgBAUISChBfaWRlbXBvdGVuY3lfa2V5ImQKHUJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEjEKB3Jlc3VsdHMYASADKAsyIC5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uUmVzdWx0EhAKCHJlcGxheWVkGAIgASgIIkMKDUFnZ3JlZ2F0ZVNwZWMSIwoCb3AYASABKA4yFy5yZWNvcmRzLnYxLkFnZ3JlZ2F0ZU9wEg0KBWZpZWxkGAIgASgJItQBChdBZ2dyZWdhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESFQoIZ3JvdXBfYnkYAyABKAlIAYgBARItCgphZ2dyZWdhdGVzGAQgAygLMhkucmVjb3Jkcy52MS5BZ2dyZWdhdGVTcGVjEhIKBWxpbWl0GAUgASgFSAKIAQFCCAoGX3doZXJlQgsKCV9ncm91cF9ieUIICgZfbGltaXQiZQoOQWdncmVnYXRlR3JvdXASEAoDa2V5GAEgASgJSACIAQESDQoFY291bnQYAiABKAMSKgoGdmFsdWVzGAMgAygLMhoucmVjb3Jkcy52MS5BZ2dyZWdhdGVWYWx1ZUIGCgRfa2V5ImIKDkFnZ3JlZ2F0ZVZhbHVlEiMKAm9wGAEgASgOMhcucmVjb3Jkcy52MS5BZ2dyZWdhdGVPcBINCgVmaWVsZBgCIAEoCRISCgV2YWx1ZRgDIAEoCUgAiAEBQggKBl92YWx1ZSJZChhBZ2dyZWdhdGVSZWNvcmRzUmVzcG9uc2USKgoGZ3JvdXBzGAEgAygLMhoucmVjb3Jkcy52MS5BZ2dyZWdhdGVHcm91cBIRCgl0cnVuY2F0ZWQYAiABKAgizAEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhMKC21haW50ZW5hbmNlGAYgASgIQggKBl93aGVyZUIJCgdfdXBkYXRlSgQIBBAFSgQIBRAGUgx0eXBlZF91cGRhdGUiNwoZQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRINCgVjb3VudBgBIAEoBRILCgNpZHMYAiADKAkiMgodQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjkKHkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRIXCg9yZWNvcmRzX2luZGV4ZWQYASABKAUiMAobQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSLNAQocQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRIeChZsb29rdXBzX3JlY29yZHNfd2Fsa2VkGAEgASgFEiEKGXF1ZXJ5YWJsZV9yZWNvcmRzX2luZGV4ZWQYAiABKAUSFQoNZWRnZXNfcmVidWlsdBgDIAEoBRIgChhnZW9tZXRyeV9yZWNvcmRzX2luZGV4ZWQYBCABKAUSMQoIZmFpbHVyZXMYBSADKAsyHy5yZWNvcmRzLnYxLkJhY2tmaWxsU3RlcEZhaWx1cmUiMgoTQmFja2ZpbGxTdGVwRmFpbHVyZRIMCgRzdGVwGAEgASgJEg0KBWVycm9yGAIgASgJIlYKFkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSHAoPbmV3X25hdHVyYWxfa2V5GAIgASgJSACIAQFCEgoQX25ld19uYXR1cmFsX2tleSI9ChdEdXBsaWNhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJQChtEdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QSCwoDaWRzGAEgAygJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiQwocRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoVUHVibGlzaFZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPAoWUHVibGlzaFZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChZVbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIqChdVbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKFlJldmVydFRvVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI9ChdSZXZlcnRUb1ZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZlcnNpb25zUmVxdWVzdBIRCglwYXJlbnRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvImUKFENyZWF0ZVZhcmlhbnRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI8ChVDcmVhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIlsKHkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIQCgNrZXkYAyABKAlIAIgBAUIGCgRfa2V5InsKH0NhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEhgKEGNhdGFsb2dfZW50cnlfaWQYAiABKAkSGQoRY2F0YWxvZ19lbnRyeV9rZXkYAyABKAkimgEKFFVwZGF0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNAoObWV0YWRhdGFfcGF0Y2gYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCEQoPX21ldGFkYXRhX3BhdGNoIjwKFVVwZGF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKgoURGVsZXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCSIoChVEZWxldGVWYXJpYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ2ChVTZXRSZWNvcmRPd25lclJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhUKCG93bmVyX2lkGAIgASgJSACIAQESFwoKb3duZXJfa2luZBgDIAEoCUgBiAEBQgsKCV9vd25lcl9pZEINCgtfb3duZXJfa2luZCI8ChZTZXRSZWNvcmRPd25lclJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkEKGFNldERlZmF1bHRWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoKdmFyaWFudF9pZBgCIAEoCSI/ChlTZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqYBChlMaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKdAQoaTGlzdFJlY29yZFZhcmlhbnRzUmVzcG9uc2USJAoIdmFyaWFudHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iqgEKHFNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJECh1TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiOQojQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJLCiRDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqkCCh1MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgCiAEBEhIKBWFmdGVyGAQgASgJSAOIAQESEwoGYmVmb3JlGAUgASgJSASIAQESEgoFZmlyc3QYBiABKAVIBYgBARIRCgRsYXN0GAcgASgFSAaIAQFCBwoFX2Zyb21CBQoDX3RvQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqEBCh5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iMAoaR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJMChtHZXRTY2hlZHVsZWRQdWJsaXNoUmVzcG9uc2USLQoIc2NoZWR1bGUYASABKAsyGy5yZWNvcmRzLnYxLlB1Ymxpc2hTY2hlZHVsZSKNAgoYTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBEhMKBnNlYXJjaBgCIAEoCUgBiAEBEhIKBWFmdGVyGAYgASgJSAKIAQESEwoGYmVmb3JlGAcgASgJSAOIAQESEgoFZmlyc3QYCCABKAVIBIgBARIRCgRsYXN0GAkgASgFSAWIAQESGAoQZGVkdXBlX2J5X3BhcmVudBgFIAEoCEIMCgpfbW9kZWxfa2V5QgkKB19zZWFyY2hCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAxAESgQIBBAFUgVsaW1pdFIGb2Zmc2V0IpwBChlMaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIkcKG0JhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBITCgt2ZXJzaW9uX2lkcxgBIAMoCRITCgttYWludGVuYW5jZRgCIAEoCCJcChxCYXRjaFB1Ymxpc2hWZXJzaW9uc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIXCg9wdWJsaXNoZWRfY291bnQYAiABKAUi3wEKGkJhdGNoUmVzb2x2ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgpyZWNvcmRfaWRzGAIgAygJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESLQoHY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIPCgdwcmV2aWV3GAUgASgIEhIKCnVucmVzb2x2ZWQYByABKAhCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIBhAHUgp2aWV3ZXJfa2V5IkoKG0JhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRIrCgdyZWNvcmRzGAEgAygLMhoucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZCLHAQoVUmVzb2x2ZUNvbnRlbnRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCEIOCgxfY3VzdG9tZXJfaWRCCgoIX2NvbnRleHQiPwoWUmVzb2x2ZUNvbnRlbnRSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKzBQoOUmVzb2x2ZWRSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIXCgp2YXJpYW50X2lkGAYgASgJSAGIAQESEQoJaGFzX2RyYWZ0GAggASgIEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKCG93bmVyX2lkGAsgASgJSAKIAQESFwoKb3duZXJfa2luZBgMIAEoCUgDiAEBEhgKC3ZhcmlhbnRfa2V5GA0gASgJSASIAQESOgoIc2VnbWVudHMYDiADKAsyKC5yZWNvcmRzLnYxLlJlc29sdmVkUmVjb3JkLlNlZ21lbnRzRW50cnkSKwoLcmVzb2x2ZWRfYnkYDyABKA4yFi5yZWNvcmRzLnYxLlJlc29sdmVkQnkSOQoOZmllbGRfdmFyaWFudHMYECADKAsyIS5yZWNvcmRzLnYxLkZpZWxkVmFyaWFudFNlbGVjdGlvbhovCg1TZWdtZW50c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAFCDgoMX25hdHVyYWxfa2V5Qg0KC192YXJpYW50X2lkQgsKCV9vd25lcl9pZEINCgtfb3duZXJfa2luZEIOCgxfdmFyaWFudF9rZXlKBAgHEAhSE2V4cGVyaW1lbnRfZXhwb3N1cmUiQAoVRmllbGRWYXJpYW50U2VsZWN0aW9uEhIKCmZpZWxkX3BhdGgYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkiLwoZTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJIjgKEFJlY29yZE1vZGVsRW50cnkSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCSJLChpMb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRItCgdlbnRyaWVzGAEgAygLMhwucmVjb3Jkcy52MS5SZWNvcmRNb2RlbEVudHJ5ItYBChNHbG9iYWxTZWFyY2hSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhIKCm1vZGVsX2tleXMYAiADKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIXCg9jcm9zc193b3Jrc3BhY2UYByABKAhCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALUgVsaW1pdCK4AQoQU2VhcmNoUmVzdWx0SXRlbRIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVzY29yZRgFIAEoARIRCgl0ZW5hbnRfaWQYBiABKAkSEgoKcHJvamVjdF9pZBgHIAEoCUIOCgxfbmF0dXJhbF9rZXkioAEKFEdsb2JhbFNlYXJjaFJlc3BvbnNlEi0KB3JlY29yZHMYASADKAsyHC5yZWNvcmRzLnYxLlNlYXJjaFJlc3VsdEl0ZW0SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqEBCg5FbWJlZGRpbmdTdGF0cxIRCgltb2RlbF9rZXkYASABKAkSFQoNdG90YWxfcmVjb3JkcxgCIAEoBRIYChBlbWJlZGRlZF9yZWNvcmRzGAMgASgFEhcKD3BlbmRpbmdfcmVjb3JkcxgEIAEoBRIdChBsYXN0X2VtYmVkZGVkX2F0GAUgASgJSACIAQFCEwoRX2xhc3RfZW1iZWRkZWRfYXQi+AEKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBARIOCgZsb2NhbGUYBSABKAkSFgoOcmVjb3JkX3ZhcmlhbnQYBiABKAkSDQoFZmllbGQYByABKAkSFQoNZmllbGRfdmFyaWFudBgIIAEoCRIQCghwcm92aWRlchgJIAEoCRISCgptb2RlbF9uYW1lGAogASgJEg0KBWVudHJ5GAsgASgJQg4KDF9lbWJlZGRlZF9hdCKaAgoNU2ltaWxhclJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBISCgpzaW1pbGFyaXR5GAUgASgBEg4KBmxvY2FsZRgGIAEoCRIWCg5yZWNvcmRfdmFyaWFudBgHIAEoCRINCgVmaWVsZBgIIAEoCRIVCg1maWVsZF92YXJpYW50GAkgASgJEhgKC2ZpZWxkX3Njb3JlGAogASgBSAGIAQESDQoFZW50cnkYCyABKAlCDgoMX25hdHVyYWxfa2V5Qg4KDF9maWVsZF9zY29yZSJAChhHZXRFbWJlZGRpbmdTdGF0c1JlcXVlc3QSFgoJbW9kZWxfa2V5GAEgASgJSACIAQFCDAoKX21vZGVsX2tleSJGChlHZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEikKBXN0YXRzGAEgAygLMhoucmVjb3Jkcy52MS5FbWJlZGRpbmdTdGF0cyIvChpHZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiTgobR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEi8KCmVtYmVkZGluZ3MYASADKAsyGy5yZWNvcmRzLnYxLlJlY29yZEVtYmVkZGluZyK+AgoZRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgFiAEBEi0KB2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAaIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIChALUgVsaW1pdCKUAQoaRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USKgoHcmVjb3JkcxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8i4QEKFldyaXRlRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEg4KBnZlY3RvchgCIAMoAhISCgpkaW1lbnNpb25zGAMgASgFEhUKCHByb3ZpZGVyGAQgASgJSACIAQESFwoKbW9kZWxfbmFtZRgFIAEoCUgBiAEBEhAKA2tleRgGIAEoCUgCiAEBEhkKDGNvbnRlbnRfaGFzaBgHIAEoCUgDiAEBQgsKCV9wcm92aWRlckINCgtfbW9kZWxfbmFtZUIGCgRfa2V5Qg8KDV9jb250ZW50X2hhc2giKgoXV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdEZWxldGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKwoYRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiZwofRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhMKBnNvdXJjZRgDIAEoCUgAiAEBQgkKB19zb3VyY2UiNAogRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVzcG9uc2USEAoIZW5xdWV1ZWQYASABKAgi5wIKF1NlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0EhQKDHF1ZXJ5X3ZlY3RvchgBIAMoAhIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBEhcKCnF1ZXJ5X3RleHQYByABKAlIBYgBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgGiAEBEi0KB2NvbnRleHQYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAeIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDQoLX3F1ZXJ5X3RleHRCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIChALUgVsaW1pdCKSAQoYU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlEioKB3Jlc3VsdHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIokBCh5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhAKA2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBAUIGCgRfa2V5QggKBl9hZnRlckIICgZfZmlyc3QiVQoWTWlzc2luZ0VtYmVkZGluZ1JlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkisQEKH1JlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVzcG9uc2USMwoHcmVjb3JkcxgBIAMoCzIiLnJlY29yZHMudjEuTWlzc2luZ0VtYmVkZGluZ1JlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8ibQoXRW1iZWRkaW5nRGlnZXN0c1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCRIQCgNrZXkYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBAUIGCgRfa2V5QgwKCl9tb2RlbF9rZXkiUAoPRW1iZWRkaW5nRGlnZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIZCgxjb250ZW50X2hhc2gYAiABKAlIAIgBAUIPCg1fY29udGVudF9oYXNoIkgKGEVtYmVkZGluZ0RpZ2VzdHNSZXNwb25zZRIsCgdkaWdlc3RzGAEgAygLMhsucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3QiNQogRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIpABCiFFc3RpbWF0ZUVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USFAoMcmVjb3JkX2NvdW50GAEgASgFEhgKEGVzdGltYXRlZF90b2tlbnMYAiABKAMSGQoRZXN0aW1hdGVkX2NyZWRpdHMYAyABKAUSIAoYYWxyZWFkeV9lbWJlZGRlZF9yZWNvcmRzGAQgASgFIjIKHVN0YXJ0RW1iZWRkaW5nQmFja2ZpbGxSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJICh5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USEAoIZW5xdWV1ZWQYASABKAgSFAoMcmVjb3JkX2NvdW50GAIgASgFIpcBCgxOZWFyYnlSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPZGlzdGFuY2VfbWV0ZXJzGAUgASgBQg4KDF9uYXR1cmFsX2tleSKZAgoXU2VhcmNoQnlMb2NhdGlvblJlcXVlc3QSCwoDbGF0GAEgASgBEgsKA2xuZxgCIAEoARIaCg1yYWRpdXNfbWV0ZXJzGAMgASgBSACIAQESFgoJbW9kZWxfa2V5GAQgASgJSAGIAQESEAoDa2V5GAUgASgJSAKIAQESEgoFYWZ0ZXIYBiABKAlIA4gBARITCgZiZWZvcmUYByABKAlIBIgBARISCgVmaXJzdBgIIAEoBUgFiAEBEhEKBGxhc3QYCSABKAVIBogBAUIQCg5fcmFkaXVzX21ldGVyc0IMCgpfbW9kZWxfa2V5QgYKBF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpEBChhTZWFyY2hCeUxvY2F0aW9uUmVzcG9uc2USKQoHcmVzdWx0cxgBIAMoCzIYLnJlY29yZHMudjEuTmVhcmJ5UmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyL6AQoZRmluZE5lYXJlc3RSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSGgoNcmFkaXVzX21ldGVycxgCIAEoAUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQESEgoFZmlyc3QYBiABKAVIBIgBARIRCgRsYXN0GAcgASgFSAWIAQFCEAoOX3JhZGl1c19tZXRlcnNCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikwEKGkZpbmROZWFyZXN0UmVjb3Jkc1Jlc3BvbnNlEikKB3JlY29yZHMYASADKAsyGC5yZWNvcmRzLnYxLk5lYXJieVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iVAoVTWlzc2luZ0dlb21ldHJ5UmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSKIAQodUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhAKA2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBAUIGCgRfa2V5QggKBl9hZnRlckIICgZfZmlyc3QirwEKHlJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXNwb25zZRIyCgdyZWNvcmRzGAEgAygLMiEucmVjb3Jkcy52MS5NaXNzaW5nR2VvbWV0cnlSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIjIKHUJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI5Ch5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVzcG9uc2USFwoPcmVjb3Jkc19pbmRleGVkGAEgASgFIp8CChNMb29rdXBSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgCiAEBEjYKEGN1c3RvbWVyX2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZUIOCgxfY3VzdG9tZXJfaWRCEwoRX2N1c3RvbWVyX2NvbnRleHQiPAoUTG9va3VwUmVjb3JkUmVzcG9uc2USFgoJcmVjb3JkX2lkGAEgASgJSACIAQFCDAoKX3JlY29yZF9pZCLpAQoeQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIeChFleGNsdWRlX3JlY29yZF9pZBgHIAEoCUgCiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCFAoSX2V4Y2x1ZGVfcmVjb3JkX2lkIjQKH0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIpcBChRMb29rdXBDb25mbGljdERldGFpbBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSDwoHY2hhbm5lbBgDIAEoCRIXCgp2YXJpYW50X2lkGAQgASgJSACIAQESEwoGbG9jYWxlGAUgASgJSAGIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZSLiAQoaTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC2xvb2t1cF9uYW1lGAIgASgJSACIAQESDwoHY2hhbm5lbBgDIAEoCRISCgVmaXJzdBgEIAEoBUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQESEQoEbGFzdBgGIAEoBUgDiAEBEhMKBmJlZm9yZRgHIAEoCUgEiAEBQg4KDF9sb29rdXBfbmFtZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUiowEKG0xpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRIpCgZncm91cHMYASADKAsyGS5yZWNvcmRzLnYxLkNvbmZsaWN0R3JvdXASDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBCg1Db25mbGljdEdyb3VwEhMKC2VuY29kZWRfa2V5GAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoKdmFyaWFudF9pZBgDIAEoCUgAiAEBEhUKCG93bmVyX2lkGAQgASgJSAGIAQESEgoKcmVjb3JkX2lkcxgFIAMoCUINCgtfdmFyaWFudF9pZEILCglfb3duZXJfaWQiLwoaUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjUKG1JlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRIWCg5yZWNvcmRzX3dhbGtlZBgBIAEoBSJOChlQdXJnZVJlc3BvbnNlQ2FjaGVSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIRCglpZF9vcl9rZXkYAiABKAkSCwoDYWxsGAMgASgIIn4KGlB1cmdlUmVzcG9uc2VDYWNoZVJlc3BvbnNlEg0KBXNjb3BlGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCXJlY29yZF9pZBgEIAEoCRIXCg9yZWNvcmRzX3NjYW5uZWQYBSABKAUijQEKIkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1JlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIZCgxyZXNvdXJjZV9rZXkYAiABKAlIAIgBARIWCglyb3dfbGltaXQYAyABKAVIAYgBAUIPCg1fcmVzb3VyY2Vfa2V5QgwKCl9yb3dfbGltaXQiWQojTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2USMgoHZW50cmllcxgBIAMoCzIhLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvckVudHJ5IqsBChVTbG93UXVlcnlBZHZpc29yRW50cnkSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIUCgxyZXNvdXJjZV9rZXkYAiABKAkSEgoKZmllbGRfcGF0aBgDIAEoCRIQCghvcGVyYXRvchgEIAEoCRINCgVjb3VudBgFIAEoAxIwCgxsYXN0X3NlZW5fYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjcKHlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJImEKH1Nsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVzcG9uc2USPgoJcmVzb3VyY2VzGAEgAygLMisucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yUmVzb3VyY2VTdW1tYXJ5ImAKH1Nsb3dRdWVyeUFkdmlzb3JSZXNvdXJjZVN1bW1hcnkSFAoMcmVzb3VyY2Vfa2V5GAEgASgJEhMKC2VudHJ5X2NvdW50GAIgASgFEhIKCnRvdGFsX2hpdHMYAyABKAMijAEKIUNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhkKDHJlc291cmNlX2tleRgCIAEoCUgAiAEBEhIKCmZpZWxkX3BhdGgYAyABKAkSEAoIb3BlcmF0b3IYBCABKAlCDwoNX3Jlc291cmNlX2tleSIkCiJDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlIpkBCiFSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSEgoKY2F0YWxvZ19pZBgBIAEoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IoABChlWYXJpYW50Q2F0YWxvZ1VzYWdlUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARITCgt1c2FnZV9sZXZlbBgEIAEoCUIOCgxfbmF0dXJhbF9rZXkitwEKIlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVzcG9uc2USNgoHcmVjb3JkcxgBIAMoCzIlLnJlY29yZHMudjEuVmFyaWFudENhdGFsb2dVc2FnZVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8ifAobUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIOCgZsb2NhbGUYAiABKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARISCgVmaXJzdBgEIAEoBUgBiAEBQggKBl9hZnRlckIICgZfZmlyc3QiUgoTTWlzc2luZ0xvY2FsZVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkiqwEKHFJlY29yZHNNaXNzaW5nTG9jYWxlUmVzcG9uc2USMAoHcmVjb3JkcxgBIAMoCzIfLnJlY29yZHMudjEuTWlzc2luZ0xvY2FsZVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8iHgocUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVxdWVzdCI3Cg5Mb2NhbGVDb3ZlcmFnZRIOCgZsb2NhbGUYASABKAkSFQoNbWlzc2luZ19jb3VudBgCIAEoBSJjCh1SZWNvcmRzTG9jYWxlQ292ZXJhZ2VSZXNwb25zZRIrCgdsb2NhbGVzGAEgAygLMhoucmVjb3Jkcy52MS5Mb2NhbGVDb3ZlcmFnZRIVCg10b3RhbF9yZWNvcmRzGAIgASgFKnMKClJlY29yZFR5cGUSGwoXUkVDT1JEX1RZUEVfVU5TUEVDSUZJRUQQABIWChJSRUNPUkRfVFlQRV9SRUNPUkQQARIXChNSRUNPUkRfVFlQRV9WQVJJQU5UEAISFwoTUkVDT1JEX1RZUEVfVkVSU0lPThADKp0BChJCYXRjaE9wZXJhdGlvblR5cGUSJAogQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9DUkVBVEUQARIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9VUERBVEUQAhIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9ERUxFVEUQAyp2CgpSZXNvbHZlZEJ5EhsKF1JFU09MVkVEX0JZX1VOU1BFQ0lGSUVEEAASGAoUUkVTT0xWRURfQllfVEFSR0VURUQQARIXChNSRVNPTFZFRF9CWV9ERUZBVUxUEAISGAoUUkVTT0xWRURfQllfRkFMTEJBQ0sQAyqDAQoLQWdncmVnYXRlT3ASHAoYQUdHUkVHQVRFX09QX1VOU1BFQ0lGSUVEEAASFAoQQUdHUkVHQVRFX09QX1NVTRABEhQKEEFHR1JFR0FURV9PUF9BVkcQAhIUChBBR0dSRUdBVEVfT1BfTUlOEAMSFAoQQUdHUkVHQVRFX09QX01BWBAEMuMxCg5SZWNvcmRzU2VydmljZRJRCgxDcmVhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlc3BvbnNlEkgKCUdldFJlY29yZBIcLnJlY29yZHMudjEuR2V0UmVjb3JkUmVxdWVzdBodLnJlY29yZHMudjEuR2V0UmVjb3JkUmVzcG9uc2USVwoOR2V0UmVjb3JkQnlLZXkSIS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVxdWVzdBoiLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXNwb25zZRJjChJHZXRSZWNvcmRCeUtleU9ySWQSJS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QaJi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEk4KC0xpc3RSZWNvcmRzEh4ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1JlcXVlc3QaHy5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVzcG9uc2USUQoMVXBkYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXNwb25zZRJXCg5BdXRvU2F2ZVJlY29yZBIhLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXF1ZXN0GiIucmVjb3Jkcy52MS5BdXRvU2F2ZVJlY29yZFJlc3BvbnNlElEKDFVwc2VydFJlY29yZBIfLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVzcG9uc2USUQoMRGVsZXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXNwb25zZRJXCg5TZXRSZWNvcmRPd25lchIhLnJlY29yZHMudjEuU2V0UmVjb3JkT3duZXJSZXF1ZXN0GiIucmVjb3Jkcy52MS5TZXRSZWNvcmRPd25lclJlc3BvbnNlEmwKFUJhdGNoUmVjb3JkT3BlcmF0aW9ucxIoLnJlY29yZHMudjEuQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVxdWVzdBopLnJlY29yZHMudjEuQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USYAoRQnVsa1VwZGF0ZVJlY29yZHMSJC5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBolLnJlY29yZHMudjEuQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRJdChBBZ2dyZWdhdGVSZWNvcmRzEiMucmVjb3Jkcy52MS5BZ2dyZWdhdGVSZWNvcmRzUmVxdWVzdBokLnJlY29yZHMudjEuQWdncmVnYXRlUmVjb3Jkc1Jlc3BvbnNlEm8KFkJhY2tmaWxsUXVlcnlhYmxlSW5kZXgSKS5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXF1ZXN0GioucmVjb3Jkcy52MS5CYWNrZmlsbFF1ZXJ5YWJsZUluZGV4UmVzcG9uc2USaQoUQmFja2ZpbGxNb2RlbEluZGV4ZXMSJy5yZWNvcmRzLnYxLkJhY2tmaWxsTW9kZWxJbmRleGVzUmVxdWVzdBooLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRJ+ChtMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXMSLi5yZWNvcmRzLnYxLkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1JlcXVlc3QaLy5yZWNvcmRzLnYxLkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1Jlc3BvbnNlEnIKF1Nsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5EioucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlcXVlc3QaKy5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVzcG9uc2USewoaQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnkSLS5yZWNvcmRzLnYxLkNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVxdWVzdBouLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXNwb25zZRJaCg9EdXBsaWNhdGVSZWNvcmQSIi5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEmkKFER1cGxpY2F0ZVJlY29yZHNCdWxrEicucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QaKC5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USVwoOUHVibGlzaFZlcnNpb24SIS5yZWNvcmRzLnYxLlB1Ymxpc2hWZXJzaW9uUmVxdWVzdBoiLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXNwb25zZRJaCg9VbnB1Ymxpc2hSZWNvcmQSIi5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlc3BvbnNlEloKD1JldmVydFRvVmVyc2lvbhIiLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBojLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USYwoSTGlzdFJlY29yZFZlcnNpb25zEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRJUCg1DcmVhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmFyaWFudFJlc3BvbnNlEnIKF0NhcHR1cmVEZWZhdWx0QXNWYXJpYW50EioucmVjb3Jkcy52MS5DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlcXVlc3QaKy5yZWNvcmRzLnYxLkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVzcG9uc2USVAoNVXBkYXRlVmFyaWFudBIgLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXNwb25zZRJUCg1EZWxldGVWYXJpYW50EiAucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlc3BvbnNlEmAKEVNldERlZmF1bHRWYXJpYW50EiQucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlcXVlc3QaJS5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USYwoSTGlzdFJlY29yZFZhcmlhbnRzEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRJsChVTY2hlZHVsZVJlY29yZFB1Ymxpc2gSKC5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QaKS5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEoEBChxDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoEi8ucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBowLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEm8KFkxpc3RTY2hlZHVsZWRQdWJsaXNoZXMSKS5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0GioucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USZgoTR2V0U2NoZWR1bGVkUHVibGlzaBImLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRJgChFMaXN0RHJhZnRWZXJzaW9ucxIkLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0GiUucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEmkKFEJhdGNoUHVibGlzaFZlcnNpb25zEicucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QaKC5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USZgoTQmF0Y2hSZXNvbHZlUmVjb3JkcxImLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRJXCg5SZXNvbHZlQ29udGVudBIhLnJlY29yZHMudjEuUmVzb2x2ZUNvbnRlbnRSZXF1ZXN0GiIucmVjb3Jkcy52MS5SZXNvbHZlQ29udGVudFJlc3BvbnNlEmMKEkxvb2t1cFJlY29yZE1vZGVscxIlLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBomLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USUQoMR2xvYmFsU2VhcmNoEh8ucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXF1ZXN0GiAucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXNwb25zZRJRCgxMb29rdXBSZWNvcmQSHy5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZFJlc3BvbnNlEnIKF0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5EioucmVjb3Jkcy52MS5DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlcXVlc3QaKy5yZWNvcmRzLnYxLkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USZgoTTGlzdExvb2t1cENvbmZsaWN0cxImLnJlY29yZHMudjEuTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QaJy5yZWNvcmRzLnYxLkxpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRJmChNSZWJ1aWxkTW9kZWxMb29rdXBzEiYucmVjb3Jkcy52MS5SZWJ1aWxkTW9kZWxMb29rdXBzUmVxdWVzdBonLnJlY29yZHMudjEuUmVidWlsZE1vZGVsTG9va3Vwc1Jlc3BvbnNlEmMKElB1cmdlUmVzcG9uc2VDYWNoZRIlLnJlY29yZHMudjEuUHVyZ2VSZXNwb25zZUNhY2hlUmVxdWVzdBomLnJlY29yZHMudjEuUHVyZ2VSZXNwb25zZUNhY2hlUmVzcG9uc2USYAoRR2V0RW1iZWRkaW5nU3RhdHMSJC5yZWNvcmRzLnYxLkdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBolLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRJmChNHZXRSZWNvcmRFbWJlZGRpbmdzEiYucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBonLnJlY29yZHMudjEuR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEmMKEkZpbmRTaW1pbGFyUmVjb3JkcxIlLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBomLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USWgoPV3JpdGVFbWJlZGRpbmdzEiIucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXF1ZXN0GiMucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXNwb25zZRJdChBEZWxldGVFbWJlZGRpbmdzEiMucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVxdWVzdBokLnJlY29yZHMudjEuRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEFNlYXJjaEVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2UScgoXUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmcSKi5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVxdWVzdBorLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXNwb25zZRJdChBFbWJlZGRpbmdEaWdlc3RzEiMucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVxdWVzdBokLnJlY29yZHMudjEuRW1iZWRkaW5nRGlnZXN0c1Jlc3BvbnNlEnUKGEVucXVldWVHZW5lcmF0ZUVtYmVkZGluZxIrLnJlY29yZHMudjEuRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVxdWVzdBosLnJlY29yZHMudjEuRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVzcG9uc2USeAoZRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbBIsLnJlY29yZHMudjEuRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlcXVlc3QaLS5yZWNvcmRzLnYxLkVzdGltYXRlRW1iZWRkaW5nQmFja2ZpbGxSZXNwb25zZRJvChZTdGFydEVtYmVkZGluZ0JhY2tmaWxsEikucmVjb3Jkcy52MS5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVxdWVzdBoqLnJlY29yZHMudjEuU3RhcnRFbWJlZGRpbmdCYWNrZmlsbFJlc3BvbnNlEl0KEFNlYXJjaEJ5TG9jYXRpb24SIy5yZWNvcmRzLnYxLlNlYXJjaEJ5TG9jYXRpb25SZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hCeUxvY2F0aW9uUmVzcG9uc2USYwoSRmluZE5lYXJlc3RSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kTmVhcmVzdFJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kTmVhcmVzdFJlY29yZHNSZXNwb25zZRJvChZSZWNvcmRzTWlzc2luZ0dlb21ldHJ5EikucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVxdWVzdBoqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlc3BvbnNlEm8KFkJhY2tmaWxsUmVjb3JkR2VvbWV0cnkSKS5yZWNvcmRzLnYxLkJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXF1ZXN0GioucmVjb3Jkcy52MS5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVzcG9uc2USewoaUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2cSLS5yZWNvcmRzLnYxLlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVxdWVzdBouLnJlY29yZHMudjEuUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXNwb25zZRJpChRSZWNvcmRzTWlzc2luZ0xvY2FsZRInLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXF1ZXN0GigucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0xvY2FsZVJlc3BvbnNlEmwKFVJlY29yZHNMb2NhbGVDb3ZlcmFnZRIoLnJlY29yZHMudjEuUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVxdWVzdBopLnJlY29yZHMudjEuUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3JlY29yZHMvdjE7cmVjb3Jkc3YxYgZwcm90bzM", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
935
+ var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEi0A0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIVCghvd25lcl9pZBgIIAEoCUgDiAEBEhcKCm93bmVyX2tpbmQYCSABKAlIBIgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAWIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnZlcnNpb25fbnVtYmVyGCggASgFSAeIAQESGQoMY29udGVudF9oYXNoGCkgASgJSAiIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGCogASgJSAmIAQESGwoOcHVibGlzaF9zdGF0dXMYKyABKAlICogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIC4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GC0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEh0KEHB1Ymxpc2hfYmF0Y2hfaWQYLiABKAlIDYgBARIYCgt2YXJpYW50X2tleRgyIAEoCUgOiAEBEhkKDHZhcmlhbnRfbmFtZRgzIAEoCUgPiAEBEiAKE3ZhcmlhbnRfZGVzY3JpcHRpb24YNCABKAlIEIgBARIXCgpjYXRhbG9nX2lkGDUgASgJSBGIAQESFQoIcHJpb3JpdHkYNiABKAVIEogBARI8Cg90YXJnZXRpbmdfcnVsZXMYNyABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgTiAEBEhcKCmlzX2RlZmF1bHQYOCABKAhIFIgBARIfChJjdXJyZW50X3ZlcnNpb25faWQYPCABKAlIFYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBg9IAEoCUgWiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchg+IAEoBUgXiAEBEjUKDHB1Ymxpc2hlZF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIGIgBARIZCgxwdWJsaXNoZWRfYnkYQCABKAlIGYgBARITCgtjYW5fcHVibGlzaBhBIAEoCBIVCg1jYW5fdW5wdWJsaXNoGEIgASgIEh8KF2hhc191bnB1Ymxpc2hlZF9jaGFuZ2VzGEMgASgIEhAKCHJldmlzaW9uGEQgASgJQg4KDF9uYXR1cmFsX2tleUIMCgpfcGFyZW50X2lkQgsKCV9tZXRhZGF0YUILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX3ZlcnNpb25fbnVtYmVyQg8KDV9jb250ZW50X2hhc2hCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIRCg9fcHVibGlzaF9zdGF0dXNCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0QhMKEV9wdWJsaXNoX2JhdGNoX2lkQg4KDF92YXJpYW50X2tleUIPCg1fdmFyaWFudF9uYW1lQhYKFF92YXJpYW50X2Rlc2NyaXB0aW9uQg0KC19jYXRhbG9nX2lkQgsKCV9wcmlvcml0eUISChBfdGFyZ2V0aW5nX3J1bGVzQg0KC19pc19kZWZhdWx0QhUKE19jdXJyZW50X3ZlcnNpb25faWRCFwoVX3B1Ymxpc2hlZF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDwoNX3B1Ymxpc2hlZF9hdEIPCg1fcHVibGlzaGVkX2J5SgQIRhBHUhBtb2RlbF92ZXJzaW9uX2lkIvUBCg9QdWJsaXNoU2NoZWR1bGUSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESLgoKY3JlYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgFIAEoCUgBiAEBQg8KDV91bnB1Ymxpc2hfYXRCDQoLX2NyZWF0ZWRfYnkiLgoJU29ydEZpZWxkEg0KBWZpZWxkGAEgASgJEhIKCmRlc2NlbmRpbmcYAiABKAgitQIKDkJhdGNoT3BlcmF0aW9uEiwKBHR5cGUYASABKA4yHi5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uVHlwZRIPCgJpZBgCIAEoCUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhgKC25hdHVyYWxfa2V5GAQgASgJSAKIAQESKgoEZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIVCghvd25lcl9pZBgGIAEoCUgEiAEBEh4KEWV4cGVjdGVkX3JldmlzaW9uGAcgASgJSAWIAQFCBQoDX2lkQgwKCl9tb2RlbF9rZXlCDgoMX25hdHVyYWxfa2V5QgcKBV9kYXRhQgsKCV9vd25lcl9pZEIUChJfZXhwZWN0ZWRfcmV2aXNpb24iiAEKFEJhdGNoT3BlcmF0aW9uUmVzdWx0Eg0KBWluZGV4GAEgASgFEg8KB3N1Y2Nlc3MYAiABKAgSJwoGcmVjb3JkGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARISCgVlcnJvchgEIAEoCUgBiAEBQgkKB19yZWNvcmRCCAoGX2Vycm9yIsQCChNDcmVhdGVSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKCG93bmVyX2lkGAQgASgJSAGIAQESLgoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAYgASgJSAOIAQESHAoPaWRlbXBvdGVuY3lfa2V5GAcgASgJSASIAQFCDgoMX25hdHVyYWxfa2V5QgsKCV9vd25lcl9pZEILCglfbWV0YWRhdGFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkISChBfaWRlbXBvdGVuY3lfa2V5IqYBChRDcmVhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIoCgd2YXJpYW50GAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARIoCgd2ZXJzaW9uGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAYgBAUIKCghfdmFyaWFudEIKCghfdmVyc2lvbiIeChBHZXRSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldFJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIj8KFUdldFJlY29yZEJ5S2V5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkiPAoWR2V0UmVjb3JkQnlLZXlSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJCChlHZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgppZGVudGlmaWVyGAIgASgJIkAKGkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIuICChJMaXN0UmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEiMKBHNvcnQYAiADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIVCghvd25lcl9pZBgDIAEoCUgAiAEBEhMKBnNlYXJjaBgEIAEoCUgBiAEBEg8KB3ByZXZpZXcYBSABKAgSKwoFd2hlcmUYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESEgoFYWZ0ZXIYByABKAlIA4gBARITCgZiZWZvcmUYCCABKAlIBIgBARISCgVmaXJzdBgJIAEoBUgFiAEBEhEKBGxhc3QYCiABKAVIBogBAUILCglfb3duZXJfaWRCCQoHX3NlYXJjaEIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQICxAMSgQIDBANSgQIDRAOIpUBChNMaXN0UmVjb3Jkc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iwAMKE1VwZGF0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEhgKC3ZhcmlhbnRfa2V5GAQgASgJSAGIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAUgASgJSAKIAQESMgoMcmVwbGFjZV9kYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEh4KEWV4cGVjdGVkX3JldmlzaW9uGAggASgJSAWIAQESHAoPaWRlbXBvdGVuY3lfa2V5GAkgASgJSAaIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg8KDV9yZXBsYWNlX2RhdGFCCwoJX21ldGFkYXRhQhQKEl9leHBlY3RlZF9yZXZpc2lvbkISChBfaWRlbXBvdGVuY3lfa2V5IjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIrcBChxCYXRjaFJlY29yZE9wZXJhdGlvbnNSZXF1ZXN0Ei4KCm9wZXJhdGlvbnMYASADKAsyGi5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uEhMKC21haW50ZW5hbmNlGAIgASgIEhAKCHZhbGlkYXRlGAMgASgIEg4KBmF0b21pYxgEIAEoCBIcCg9pZGVtcG90ZW5jeV9rZXkYBSABKAlIAIgBAUISChBfaWRlbXBvdGVuY3lfa2V5ImQKHUJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEjEKB3Jlc3VsdHMYASADKAsyIC5yZWNvcmRzLnYxLkJhdGNoT3BlcmF0aW9uUmVzdWx0EhAKCHJlcGxheWVkGAIgASgIIkMKDUFnZ3JlZ2F0ZVNwZWMSIwoCb3AYASABKA4yFy5yZWNvcmRzLnYxLkFnZ3JlZ2F0ZU9wEg0KBWZpZWxkGAIgASgJItQBChdBZ2dyZWdhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESFQoIZ3JvdXBfYnkYAyABKAlIAYgBARItCgphZ2dyZWdhdGVzGAQgAygLMhkucmVjb3Jkcy52MS5BZ2dyZWdhdGVTcGVjEhIKBWxpbWl0GAUgASgFSAKIAQFCCAoGX3doZXJlQgsKCV9ncm91cF9ieUIICgZfbGltaXQiZQoOQWdncmVnYXRlR3JvdXASEAoDa2V5GAEgASgJSACIAQESDQoFY291bnQYAiABKAMSKgoGdmFsdWVzGAMgAygLMhoucmVjb3Jkcy52MS5BZ2dyZWdhdGVWYWx1ZUIGCgRfa2V5ImIKDkFnZ3JlZ2F0ZVZhbHVlEiMKAm9wGAEgASgOMhcucmVjb3Jkcy52MS5BZ2dyZWdhdGVPcBINCgVmaWVsZBgCIAEoCRISCgV2YWx1ZRgDIAEoCUgAiAEBQggKBl92YWx1ZSJZChhBZ2dyZWdhdGVSZWNvcmRzUmVzcG9uc2USKgoGZ3JvdXBzGAEgAygLMhoucmVjb3Jkcy52MS5BZ2dyZWdhdGVHcm91cBIRCgl0cnVuY2F0ZWQYAiABKAgizAEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhMKC21haW50ZW5hbmNlGAYgASgIQggKBl93aGVyZUIJCgdfdXBkYXRlSgQIBBAFSgQIBRAGUgx0eXBlZF91cGRhdGUiNwoZQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRINCgVjb3VudBgBIAEoBRILCgNpZHMYAiADKAkiMgodQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjkKHkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRIXCg9yZWNvcmRzX2luZGV4ZWQYASABKAUiMAobQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSLNAQocQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRIeChZsb29rdXBzX3JlY29yZHNfd2Fsa2VkGAEgASgFEiEKGXF1ZXJ5YWJsZV9yZWNvcmRzX2luZGV4ZWQYAiABKAUSFQoNZWRnZXNfcmVidWlsdBgDIAEoBRIgChhnZW9tZXRyeV9yZWNvcmRzX2luZGV4ZWQYBCABKAUSMQoIZmFpbHVyZXMYBSADKAsyHy5yZWNvcmRzLnYxLkJhY2tmaWxsU3RlcEZhaWx1cmUiMgoTQmFja2ZpbGxTdGVwRmFpbHVyZRIMCgRzdGVwGAEgASgJEg0KBWVycm9yGAIgASgJIlYKFkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSHAoPbmV3X25hdHVyYWxfa2V5GAIgASgJSACIAQFCEgoQX25ld19uYXR1cmFsX2tleSI9ChdEdXBsaWNhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJQChtEdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QSCwoDaWRzGAEgAygJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiQwocRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoVUHVibGlzaFZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPAoWUHVibGlzaFZlcnNpb25SZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChZVbnB1Ymxpc2hSZWNvcmRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIqChdVbnB1Ymxpc2hSZWNvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIj0KFlJldmVydFRvVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIPCgdkcnlfcnVuGAIgASgIIiwKDFJldmVydENoYW5nZRIMCgRwYXRoGAEgASgJEg4KBmRldGFpbBgCIAEoCSLSAQoXUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQSKwoJY29udmVydGVkGAIgAygLMhgucmVjb3Jkcy52MS5SZXZlcnRDaGFuZ2USKgoIc3RyaXBwZWQYAyADKAsyGC5yZWNvcmRzLnYxLlJldmVydENoYW5nZRIpCgdyZWZ1c2VkGAQgAygLMhgucmVjb3Jkcy52MS5SZXZlcnRDaGFuZ2USDwoHZHJ5X3J1bhgFIAEoCCKmAQoZTGlzdFJlY29yZFZlcnNpb25zUmVxdWVzdBIRCglwYXJlbnRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvImUKFENyZWF0ZVZhcmlhbnRSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRITCgt2YXJpYW50X2tleRgCIAEoCRIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI8ChVDcmVhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIlsKHkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIQCgNrZXkYAyABKAlIAIgBAUIGCgRfa2V5InsKH0NhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEhgKEGNhdGFsb2dfZW50cnlfaWQYAiABKAkSGQoRY2F0YWxvZ19lbnRyeV9rZXkYAyABKAkimgEKFFVwZGF0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNAoObWV0YWRhdGFfcGF0Y2gYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCEQoPX21ldGFkYXRhX3BhdGNoIjwKFVVwZGF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKgoURGVsZXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCSIoChVEZWxldGVWYXJpYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ2ChVTZXRSZWNvcmRPd25lclJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhUKCG93bmVyX2lkGAIgASgJSACIAQESFwoKb3duZXJfa2luZBgDIAEoCUgBiAEBQgsKCV9vd25lcl9pZEINCgtfb3duZXJfa2luZCI8ChZTZXRSZWNvcmRPd25lclJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkEKGFNldERlZmF1bHRWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoKdmFyaWFudF9pZBgCIAEoCSI/ChlTZXREZWZhdWx0VmFyaWFudFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqYBChlMaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKdAQoaTGlzdFJlY29yZFZhcmlhbnRzUmVzcG9uc2USJAoIdmFyaWFudHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iqgEKHFNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJECh1TY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXNwb25zZRIjCgd2ZXJzaW9uGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiOQojQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJLCiRDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqkCCh1MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgCiAEBEhIKBWFmdGVyGAQgASgJSAOIAQESEwoGYmVmb3JlGAUgASgJSASIAQESEgoFZmlyc3QYBiABKAVIBYgBARIRCgRsYXN0GAcgASgFSAaIAQFCBwoFX2Zyb21CBQoDX3RvQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqEBCh5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iMAoaR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSJMChtHZXRTY2hlZHVsZWRQdWJsaXNoUmVzcG9uc2USLQoIc2NoZWR1bGUYASABKAsyGy5yZWNvcmRzLnYxLlB1Ymxpc2hTY2hlZHVsZSKNAgoYTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBEhMKBnNlYXJjaBgCIAEoCUgBiAEBEhIKBWFmdGVyGAYgASgJSAKIAQESEwoGYmVmb3JlGAcgASgJSAOIAQESEgoFZmlyc3QYCCABKAVIBIgBARIRCgRsYXN0GAkgASgFSAWIAQESGAoQZGVkdXBlX2J5X3BhcmVudBgFIAEoCEIMCgpfbW9kZWxfa2V5QgkKB19zZWFyY2hCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAxAESgQIBBAFUgVsaW1pdFIGb2Zmc2V0IpwBChlMaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIkcKG0JhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBITCgt2ZXJzaW9uX2lkcxgBIAMoCRITCgttYWludGVuYW5jZRgCIAEoCCJcChxCYXRjaFB1Ymxpc2hWZXJzaW9uc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIXCg9wdWJsaXNoZWRfY291bnQYAiABKAUi3wEKGkJhdGNoUmVzb2x2ZVJlY29yZHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgpyZWNvcmRfaWRzGAIgAygJEhgKC2N1c3RvbWVyX2lkGAMgASgJSACIAQESLQoHY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIPCgdwcmV2aWV3GAUgASgIEhIKCnVucmVzb2x2ZWQYByABKAhCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIBhAHUgp2aWV3ZXJfa2V5IkoKG0JhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRIrCgdyZWNvcmRzGAEgAygLMhoucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZCLHAQoVUmVzb2x2ZUNvbnRlbnRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCEIOCgxfY3VzdG9tZXJfaWRCCgoIX2NvbnRleHQiPwoWUmVzb2x2ZUNvbnRlbnRSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKzBQoOUmVzb2x2ZWRSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EikKCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIXCgp2YXJpYW50X2lkGAYgASgJSAGIAQESEQoJaGFzX2RyYWZ0GAggASgIEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKCG93bmVyX2lkGAsgASgJSAKIAQESFwoKb3duZXJfa2luZBgMIAEoCUgDiAEBEhgKC3ZhcmlhbnRfa2V5GA0gASgJSASIAQESOgoIc2VnbWVudHMYDiADKAsyKC5yZWNvcmRzLnYxLlJlc29sdmVkUmVjb3JkLlNlZ21lbnRzRW50cnkSKwoLcmVzb2x2ZWRfYnkYDyABKA4yFi5yZWNvcmRzLnYxLlJlc29sdmVkQnkSOQoOZmllbGRfdmFyaWFudHMYECADKAsyIS5yZWNvcmRzLnYxLkZpZWxkVmFyaWFudFNlbGVjdGlvbhovCg1TZWdtZW50c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAFCDgoMX25hdHVyYWxfa2V5Qg0KC192YXJpYW50X2lkQgsKCV9vd25lcl9pZEINCgtfb3duZXJfa2luZEIOCgxfdmFyaWFudF9rZXlKBAgHEAhSE2V4cGVyaW1lbnRfZXhwb3N1cmUiQAoVRmllbGRWYXJpYW50U2VsZWN0aW9uEhIKCmZpZWxkX3BhdGgYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkiLwoZTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJIjgKEFJlY29yZE1vZGVsRW50cnkSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCSJLChpMb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRItCgdlbnRyaWVzGAEgAygLMhwucmVjb3Jkcy52MS5SZWNvcmRNb2RlbEVudHJ5ItYBChNHbG9iYWxTZWFyY2hSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhIKCm1vZGVsX2tleXMYAiADKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIXCg9jcm9zc193b3Jrc3BhY2UYByABKAhCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALUgVsaW1pdCK4AQoQU2VhcmNoUmVzdWx0SXRlbRIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBINCgVzY29yZRgFIAEoARIRCgl0ZW5hbnRfaWQYBiABKAkSEgoKcHJvamVjdF9pZBgHIAEoCUIOCgxfbmF0dXJhbF9rZXkioAEKFEdsb2JhbFNlYXJjaFJlc3BvbnNlEi0KB3JlY29yZHMYASADKAsyHC5yZWNvcmRzLnYxLlNlYXJjaFJlc3VsdEl0ZW0SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqEBCg5FbWJlZGRpbmdTdGF0cxIRCgltb2RlbF9rZXkYASABKAkSFQoNdG90YWxfcmVjb3JkcxgCIAEoBRIYChBlbWJlZGRlZF9yZWNvcmRzGAMgASgFEhcKD3BlbmRpbmdfcmVjb3JkcxgEIAEoBRIdChBsYXN0X2VtYmVkZGVkX2F0GAUgASgJSACIAQFCEwoRX2xhc3RfZW1iZWRkZWRfYXQi+AEKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBARIOCgZsb2NhbGUYBSABKAkSFgoOcmVjb3JkX3ZhcmlhbnQYBiABKAkSDQoFZmllbGQYByABKAkSFQoNZmllbGRfdmFyaWFudBgIIAEoCRIQCghwcm92aWRlchgJIAEoCRISCgptb2RlbF9uYW1lGAogASgJEg0KBWVudHJ5GAsgASgJQg4KDF9lbWJlZGRlZF9hdCKaAgoNU2ltaWxhclJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBISCgpzaW1pbGFyaXR5GAUgASgBEg4KBmxvY2FsZRgGIAEoCRIWCg5yZWNvcmRfdmFyaWFudBgHIAEoCRINCgVmaWVsZBgIIAEoCRIVCg1maWVsZF92YXJpYW50GAkgASgJEhgKC2ZpZWxkX3Njb3JlGAogASgBSAGIAQESDQoFZW50cnkYCyABKAlCDgoMX25hdHVyYWxfa2V5Qg4KDF9maWVsZF9zY29yZSJAChhHZXRFbWJlZGRpbmdTdGF0c1JlcXVlc3QSFgoJbW9kZWxfa2V5GAEgASgJSACIAQFCDAoKX21vZGVsX2tleSJGChlHZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEikKBXN0YXRzGAEgAygLMhoucmVjb3Jkcy52MS5FbWJlZGRpbmdTdGF0cyIvChpHZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiTgobR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEi8KCmVtYmVkZGluZ3MYASADKAsyGy5yZWNvcmRzLnYxLlJlY29yZEVtYmVkZGluZyK+AgoZRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgFiAEBEi0KB2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAaIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIChALUgVsaW1pdCKUAQoaRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USKgoHcmVjb3JkcxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8i4QEKFldyaXRlRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEg4KBnZlY3RvchgCIAMoAhISCgpkaW1lbnNpb25zGAMgASgFEhUKCHByb3ZpZGVyGAQgASgJSACIAQESFwoKbW9kZWxfbmFtZRgFIAEoCUgBiAEBEhAKA2tleRgGIAEoCUgCiAEBEhkKDGNvbnRlbnRfaGFzaBgHIAEoCUgDiAEBQgsKCV9wcm92aWRlckINCgtfbW9kZWxfbmFtZUIGCgRfa2V5Qg8KDV9jb250ZW50X2hhc2giKgoXV3JpdGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdEZWxldGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKwoYRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiZwofRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhMKBnNvdXJjZRgDIAEoCUgAiAEBQgkKB19zb3VyY2UiNAogRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVzcG9uc2USEAoIZW5xdWV1ZWQYASABKAgi5wIKF1NlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0EhQKDHF1ZXJ5X3ZlY3RvchgBIAMoAhIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBEhcKCnF1ZXJ5X3RleHQYByABKAlIBYgBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgGiAEBEi0KB2NvbnRleHQYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAeIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDQoLX3F1ZXJ5X3RleHRCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0SgQIChALUgVsaW1pdCKSAQoYU2VhcmNoRW1iZWRkaW5nc1Jlc3BvbnNlEioKB3Jlc3VsdHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIokBCh5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhAKA2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBAUIGCgRfa2V5QggKBl9hZnRlckIICgZfZmlyc3QiVQoWTWlzc2luZ0VtYmVkZGluZ1JlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkisQEKH1JlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVzcG9uc2USMwoHcmVjb3JkcxgBIAMoCzIiLnJlY29yZHMudjEuTWlzc2luZ0VtYmVkZGluZ1JlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8ibQoXRW1iZWRkaW5nRGlnZXN0c1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCRIQCgNrZXkYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBAUIGCgRfa2V5QgwKCl9tb2RlbF9rZXkiUAoPRW1iZWRkaW5nRGlnZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIZCgxjb250ZW50X2hhc2gYAiABKAlIAIgBAUIPCg1fY29udGVudF9oYXNoIkgKGEVtYmVkZGluZ0RpZ2VzdHNSZXNwb25zZRIsCgdkaWdlc3RzGAEgAygLMhsucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3QiNQogRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIpABCiFFc3RpbWF0ZUVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USFAoMcmVjb3JkX2NvdW50GAEgASgFEhgKEGVzdGltYXRlZF90b2tlbnMYAiABKAMSGQoRZXN0aW1hdGVkX2NyZWRpdHMYAyABKAUSIAoYYWxyZWFkeV9lbWJlZGRlZF9yZWNvcmRzGAQgASgFIjIKHVN0YXJ0RW1iZWRkaW5nQmFja2ZpbGxSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJICh5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVzcG9uc2USEAoIZW5xdWV1ZWQYASABKAgSFAoMcmVjb3JkX2NvdW50GAIgASgFIpcBCgxOZWFyYnlSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoPZGlzdGFuY2VfbWV0ZXJzGAUgASgBQg4KDF9uYXR1cmFsX2tleSKZAgoXU2VhcmNoQnlMb2NhdGlvblJlcXVlc3QSCwoDbGF0GAEgASgBEgsKA2xuZxgCIAEoARIaCg1yYWRpdXNfbWV0ZXJzGAMgASgBSACIAQESFgoJbW9kZWxfa2V5GAQgASgJSAGIAQESEAoDa2V5GAUgASgJSAKIAQESEgoFYWZ0ZXIYBiABKAlIA4gBARITCgZiZWZvcmUYByABKAlIBIgBARISCgVmaXJzdBgIIAEoBUgFiAEBEhEKBGxhc3QYCSABKAVIBogBAUIQCg5fcmFkaXVzX21ldGVyc0IMCgpfbW9kZWxfa2V5QgYKBF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpEBChhTZWFyY2hCeUxvY2F0aW9uUmVzcG9uc2USKQoHcmVzdWx0cxgBIAMoCzIYLnJlY29yZHMudjEuTmVhcmJ5UmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyL6AQoZRmluZE5lYXJlc3RSZWNvcmRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSGgoNcmFkaXVzX21ldGVycxgCIAEoAUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQESEgoFZmlyc3QYBiABKAVIBIgBARIRCgRsYXN0GAcgASgFSAWIAQFCEAoOX3JhZGl1c19tZXRlcnNCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikwEKGkZpbmROZWFyZXN0UmVjb3Jkc1Jlc3BvbnNlEikKB3JlY29yZHMYASADKAsyGC5yZWNvcmRzLnYxLk5lYXJieVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iVAoVTWlzc2luZ0dlb21ldHJ5UmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSKIAQodUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhAKA2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBAUIGCgRfa2V5QggKBl9hZnRlckIICgZfZmlyc3QirwEKHlJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXNwb25zZRIyCgdyZWNvcmRzGAEgAygLMiEucmVjb3Jkcy52MS5NaXNzaW5nR2VvbWV0cnlSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIjIKHUJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI5Ch5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVzcG9uc2USFwoPcmVjb3Jkc19pbmRleGVkGAEgASgFIp8CChNMb29rdXBSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgCiAEBEjYKEGN1c3RvbWVyX2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZUIOCgxfY3VzdG9tZXJfaWRCEwoRX2N1c3RvbWVyX2NvbnRleHQiPAoUTG9va3VwUmVjb3JkUmVzcG9uc2USFgoJcmVjb3JkX2lkGAEgASgJSACIAQFCDAoKX3JlY29yZF9pZCLpAQoeQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIeChFleGNsdWRlX3JlY29yZF9pZBgHIAEoCUgCiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCFAoSX2V4Y2x1ZGVfcmVjb3JkX2lkIjQKH0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIpcBChRMb29rdXBDb25mbGljdERldGFpbBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSDwoHY2hhbm5lbBgDIAEoCRIXCgp2YXJpYW50X2lkGAQgASgJSACIAQESEwoGbG9jYWxlGAUgASgJSAGIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZSLiAQoaTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC2xvb2t1cF9uYW1lGAIgASgJSACIAQESDwoHY2hhbm5lbBgDIAEoCRISCgVmaXJzdBgEIAEoBUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQESEQoEbGFzdBgGIAEoBUgDiAEBEhMKBmJlZm9yZRgHIAEoCUgEiAEBQg4KDF9sb29rdXBfbmFtZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUiowEKG0xpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRIpCgZncm91cHMYASADKAsyGS5yZWNvcmRzLnYxLkNvbmZsaWN0R3JvdXASDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBCg1Db25mbGljdEdyb3VwEhMKC2VuY29kZWRfa2V5GAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoKdmFyaWFudF9pZBgDIAEoCUgAiAEBEhUKCG93bmVyX2lkGAQgASgJSAGIAQESEgoKcmVjb3JkX2lkcxgFIAMoCUINCgtfdmFyaWFudF9pZEILCglfb3duZXJfaWQiLwoaUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjUKG1JlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRIWCg5yZWNvcmRzX3dhbGtlZBgBIAEoBSJOChlQdXJnZVJlc3BvbnNlQ2FjaGVSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIRCglpZF9vcl9rZXkYAiABKAkSCwoDYWxsGAMgASgIIn4KGlB1cmdlUmVzcG9uc2VDYWNoZVJlc3BvbnNlEg0KBXNjb3BlGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCXJlY29yZF9pZBgEIAEoCRIXCg9yZWNvcmRzX3NjYW5uZWQYBSABKAUijQEKIkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1JlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIZCgxyZXNvdXJjZV9rZXkYAiABKAlIAIgBARIWCglyb3dfbGltaXQYAyABKAVIAYgBAUIPCg1fcmVzb3VyY2Vfa2V5QgwKCl9yb3dfbGltaXQiWQojTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2USMgoHZW50cmllcxgBIAMoCzIhLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvckVudHJ5IqsBChVTbG93UXVlcnlBZHZpc29yRW50cnkSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIUCgxyZXNvdXJjZV9rZXkYAiABKAkSEgoKZmllbGRfcGF0aBgDIAEoCRIQCghvcGVyYXRvchgEIAEoCRINCgVjb3VudBgFIAEoAxIwCgxsYXN0X3NlZW5fYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjcKHlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJImEKH1Nsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVzcG9uc2USPgoJcmVzb3VyY2VzGAEgAygLMisucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yUmVzb3VyY2VTdW1tYXJ5ImAKH1Nsb3dRdWVyeUFkdmlzb3JSZXNvdXJjZVN1bW1hcnkSFAoMcmVzb3VyY2Vfa2V5GAEgASgJEhMKC2VudHJ5X2NvdW50GAIgASgFEhIKCnRvdGFsX2hpdHMYAyABKAMijAEKIUNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhkKDHJlc291cmNlX2tleRgCIAEoCUgAiAEBEhIKCmZpZWxkX3BhdGgYAyABKAkSEAoIb3BlcmF0b3IYBCABKAlCDwoNX3Jlc291cmNlX2tleSIkCiJDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlIpkBCiFSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSEgoKY2F0YWxvZ19pZBgBIAEoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IoABChlWYXJpYW50Q2F0YWxvZ1VzYWdlUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARITCgt1c2FnZV9sZXZlbBgEIAEoCUIOCgxfbmF0dXJhbF9rZXkitwEKIlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVzcG9uc2USNgoHcmVjb3JkcxgBIAMoCzIlLnJlY29yZHMudjEuVmFyaWFudENhdGFsb2dVc2FnZVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8ifAobUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIOCgZsb2NhbGUYAiABKAkSEgoFYWZ0ZXIYAyABKAlIAIgBARISCgVmaXJzdBgEIAEoBUgBiAEBQggKBl9hZnRlckIICgZfZmlyc3QiUgoTTWlzc2luZ0xvY2FsZVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkiqwEKHFJlY29yZHNNaXNzaW5nTG9jYWxlUmVzcG9uc2USMAoHcmVjb3JkcxgBIAMoCzIfLnJlY29yZHMudjEuTWlzc2luZ0xvY2FsZVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJEg0KBXRvdGFsGAQgASgFQgwKCl9wYWdlX2luZm8iHgocUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVxdWVzdCI3Cg5Mb2NhbGVDb3ZlcmFnZRIOCgZsb2NhbGUYASABKAkSFQoNbWlzc2luZ19jb3VudBgCIAEoBSJjCh1SZWNvcmRzTG9jYWxlQ292ZXJhZ2VSZXNwb25zZRIrCgdsb2NhbGVzGAEgAygLMhoucmVjb3Jkcy52MS5Mb2NhbGVDb3ZlcmFnZRIVCg10b3RhbF9yZWNvcmRzGAIgASgFKnMKClJlY29yZFR5cGUSGwoXUkVDT1JEX1RZUEVfVU5TUEVDSUZJRUQQABIWChJSRUNPUkRfVFlQRV9SRUNPUkQQARIXChNSRUNPUkRfVFlQRV9WQVJJQU5UEAISFwoTUkVDT1JEX1RZUEVfVkVSU0lPThADKp0BChJCYXRjaE9wZXJhdGlvblR5cGUSJAogQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9DUkVBVEUQARIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9VUERBVEUQAhIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9ERUxFVEUQAyp2CgpSZXNvbHZlZEJ5EhsKF1JFU09MVkVEX0JZX1VOU1BFQ0lGSUVEEAASGAoUUkVTT0xWRURfQllfVEFSR0VURUQQARIXChNSRVNPTFZFRF9CWV9ERUZBVUxUEAISGAoUUkVTT0xWRURfQllfRkFMTEJBQ0sQAyqDAQoLQWdncmVnYXRlT3ASHAoYQUdHUkVHQVRFX09QX1VOU1BFQ0lGSUVEEAASFAoQQUdHUkVHQVRFX09QX1NVTRABEhQKEEFHR1JFR0FURV9PUF9BVkcQAhIUChBBR0dSRUdBVEVfT1BfTUlOEAMSFAoQQUdHUkVHQVRFX09QX01BWBAEMuMxCg5SZWNvcmRzU2VydmljZRJRCgxDcmVhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlc3BvbnNlEkgKCUdldFJlY29yZBIcLnJlY29yZHMudjEuR2V0UmVjb3JkUmVxdWVzdBodLnJlY29yZHMudjEuR2V0UmVjb3JkUmVzcG9uc2USVwoOR2V0UmVjb3JkQnlLZXkSIS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVxdWVzdBoiLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXNwb25zZRJjChJHZXRSZWNvcmRCeUtleU9ySWQSJS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QaJi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEk4KC0xpc3RSZWNvcmRzEh4ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1JlcXVlc3QaHy5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVzcG9uc2USUQoMVXBkYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXNwb25zZRJXCg5BdXRvU2F2ZVJlY29yZBIhLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXF1ZXN0GiIucmVjb3Jkcy52MS5BdXRvU2F2ZVJlY29yZFJlc3BvbnNlElEKDFVwc2VydFJlY29yZBIfLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVzcG9uc2USUQoMRGVsZXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXNwb25zZRJXCg5TZXRSZWNvcmRPd25lchIhLnJlY29yZHMudjEuU2V0UmVjb3JkT3duZXJSZXF1ZXN0GiIucmVjb3Jkcy52MS5TZXRSZWNvcmRPd25lclJlc3BvbnNlEmwKFUJhdGNoUmVjb3JkT3BlcmF0aW9ucxIoLnJlY29yZHMudjEuQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVxdWVzdBopLnJlY29yZHMudjEuQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USYAoRQnVsa1VwZGF0ZVJlY29yZHMSJC5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBolLnJlY29yZHMudjEuQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRJdChBBZ2dyZWdhdGVSZWNvcmRzEiMucmVjb3Jkcy52MS5BZ2dyZWdhdGVSZWNvcmRzUmVxdWVzdBokLnJlY29yZHMudjEuQWdncmVnYXRlUmVjb3Jkc1Jlc3BvbnNlEm8KFkJhY2tmaWxsUXVlcnlhYmxlSW5kZXgSKS5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXF1ZXN0GioucmVjb3Jkcy52MS5CYWNrZmlsbFF1ZXJ5YWJsZUluZGV4UmVzcG9uc2USaQoUQmFja2ZpbGxNb2RlbEluZGV4ZXMSJy5yZWNvcmRzLnYxLkJhY2tmaWxsTW9kZWxJbmRleGVzUmVxdWVzdBooLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRJ+ChtMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXMSLi5yZWNvcmRzLnYxLkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1JlcXVlc3QaLy5yZWNvcmRzLnYxLkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1Jlc3BvbnNlEnIKF1Nsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5EioucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlcXVlc3QaKy5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVzcG9uc2USewoaQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnkSLS5yZWNvcmRzLnYxLkNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVxdWVzdBouLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXNwb25zZRJaCg9EdXBsaWNhdGVSZWNvcmQSIi5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEmkKFER1cGxpY2F0ZVJlY29yZHNCdWxrEicucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QaKC5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USVwoOUHVibGlzaFZlcnNpb24SIS5yZWNvcmRzLnYxLlB1Ymxpc2hWZXJzaW9uUmVxdWVzdBoiLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXNwb25zZRJaCg9VbnB1Ymxpc2hSZWNvcmQSIi5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlc3BvbnNlEloKD1JldmVydFRvVmVyc2lvbhIiLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBojLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USYwoSTGlzdFJlY29yZFZlcnNpb25zEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRJUCg1DcmVhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmFyaWFudFJlc3BvbnNlEnIKF0NhcHR1cmVEZWZhdWx0QXNWYXJpYW50EioucmVjb3Jkcy52MS5DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlcXVlc3QaKy5yZWNvcmRzLnYxLkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVzcG9uc2USVAoNVXBkYXRlVmFyaWFudBIgLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXNwb25zZRJUCg1EZWxldGVWYXJpYW50EiAucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlc3BvbnNlEmAKEVNldERlZmF1bHRWYXJpYW50EiQucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlcXVlc3QaJS5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USYwoSTGlzdFJlY29yZFZhcmlhbnRzEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRJsChVTY2hlZHVsZVJlY29yZFB1Ymxpc2gSKC5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QaKS5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEoEBChxDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoEi8ucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBowLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEm8KFkxpc3RTY2hlZHVsZWRQdWJsaXNoZXMSKS5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0GioucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USZgoTR2V0U2NoZWR1bGVkUHVibGlzaBImLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRJgChFMaXN0RHJhZnRWZXJzaW9ucxIkLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0GiUucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEmkKFEJhdGNoUHVibGlzaFZlcnNpb25zEicucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QaKC5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USZgoTQmF0Y2hSZXNvbHZlUmVjb3JkcxImLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRJXCg5SZXNvbHZlQ29udGVudBIhLnJlY29yZHMudjEuUmVzb2x2ZUNvbnRlbnRSZXF1ZXN0GiIucmVjb3Jkcy52MS5SZXNvbHZlQ29udGVudFJlc3BvbnNlEmMKEkxvb2t1cFJlY29yZE1vZGVscxIlLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBomLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USUQoMR2xvYmFsU2VhcmNoEh8ucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXF1ZXN0GiAucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXNwb25zZRJRCgxMb29rdXBSZWNvcmQSHy5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZFJlc3BvbnNlEnIKF0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5EioucmVjb3Jkcy52MS5DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlcXVlc3QaKy5yZWNvcmRzLnYxLkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USZgoTTGlzdExvb2t1cENvbmZsaWN0cxImLnJlY29yZHMudjEuTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QaJy5yZWNvcmRzLnYxLkxpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRJmChNSZWJ1aWxkTW9kZWxMb29rdXBzEiYucmVjb3Jkcy52MS5SZWJ1aWxkTW9kZWxMb29rdXBzUmVxdWVzdBonLnJlY29yZHMudjEuUmVidWlsZE1vZGVsTG9va3Vwc1Jlc3BvbnNlEmMKElB1cmdlUmVzcG9uc2VDYWNoZRIlLnJlY29yZHMudjEuUHVyZ2VSZXNwb25zZUNhY2hlUmVxdWVzdBomLnJlY29yZHMudjEuUHVyZ2VSZXNwb25zZUNhY2hlUmVzcG9uc2USYAoRR2V0RW1iZWRkaW5nU3RhdHMSJC5yZWNvcmRzLnYxLkdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBolLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRJmChNHZXRSZWNvcmRFbWJlZGRpbmdzEiYucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBonLnJlY29yZHMudjEuR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEmMKEkZpbmRTaW1pbGFyUmVjb3JkcxIlLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBomLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USWgoPV3JpdGVFbWJlZGRpbmdzEiIucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXF1ZXN0GiMucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXNwb25zZRJdChBEZWxldGVFbWJlZGRpbmdzEiMucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVxdWVzdBokLnJlY29yZHMudjEuRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEFNlYXJjaEVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2UScgoXUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmcSKi5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVxdWVzdBorLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXNwb25zZRJdChBFbWJlZGRpbmdEaWdlc3RzEiMucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVxdWVzdBokLnJlY29yZHMudjEuRW1iZWRkaW5nRGlnZXN0c1Jlc3BvbnNlEnUKGEVucXVldWVHZW5lcmF0ZUVtYmVkZGluZxIrLnJlY29yZHMudjEuRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVxdWVzdBosLnJlY29yZHMudjEuRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVzcG9uc2USeAoZRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbBIsLnJlY29yZHMudjEuRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlcXVlc3QaLS5yZWNvcmRzLnYxLkVzdGltYXRlRW1iZWRkaW5nQmFja2ZpbGxSZXNwb25zZRJvChZTdGFydEVtYmVkZGluZ0JhY2tmaWxsEikucmVjb3Jkcy52MS5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVxdWVzdBoqLnJlY29yZHMudjEuU3RhcnRFbWJlZGRpbmdCYWNrZmlsbFJlc3BvbnNlEl0KEFNlYXJjaEJ5TG9jYXRpb24SIy5yZWNvcmRzLnYxLlNlYXJjaEJ5TG9jYXRpb25SZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hCeUxvY2F0aW9uUmVzcG9uc2USYwoSRmluZE5lYXJlc3RSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kTmVhcmVzdFJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kTmVhcmVzdFJlY29yZHNSZXNwb25zZRJvChZSZWNvcmRzTWlzc2luZ0dlb21ldHJ5EikucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVxdWVzdBoqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlc3BvbnNlEm8KFkJhY2tmaWxsUmVjb3JkR2VvbWV0cnkSKS5yZWNvcmRzLnYxLkJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXF1ZXN0GioucmVjb3Jkcy52MS5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVzcG9uc2USewoaUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2cSLS5yZWNvcmRzLnYxLlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVxdWVzdBouLnJlY29yZHMudjEuUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXNwb25zZRJpChRSZWNvcmRzTWlzc2luZ0xvY2FsZRInLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXF1ZXN0GigucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0xvY2FsZVJlc3BvbnNlEmwKFVJlY29yZHNMb2NhbGVDb3ZlcmFnZRIoLnJlY29yZHMudjEuUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVxdWVzdBopLnJlY29yZHMudjEuUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3JlY29yZHMvdjE7cmVjb3Jkc3YxYgZwcm90bzM", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
936
936
  var RecordSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 0);
937
937
  var SortFieldSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 2);
938
938
  var BatchOperationSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 3);
@@ -954,42 +954,42 @@ var DuplicateRecordsBulkRequestSchema = /* @__PURE__ */ messageDesc7(file_record
954
954
  var PublishVersionRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 41);
955
955
  var UnpublishRecordRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 43);
956
956
  var RevertToVersionRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 45);
957
- var ListRecordVersionsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 47);
958
- var CreateVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 49);
959
- var CaptureDefaultAsVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 51);
960
- var UpdateVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 53);
961
- var DeleteVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 55);
962
- var SetRecordOwnerRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 57);
963
- var SetDefaultVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 59);
964
- var ListRecordVariantsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 61);
965
- var ScheduleRecordPublishRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 63);
966
- var CancelScheduledRecordPublishRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 65);
967
- var ListScheduledPublishesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 67);
968
- var ListDraftVersionsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 71);
969
- var BatchPublishVersionsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 73);
970
- var BatchResolveRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 75);
971
- var ResolveContentRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 77);
972
- var GlobalSearchRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 84);
973
- var SearchResultItemSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 85);
974
- var GetEmbeddingStatsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 90);
975
- var GetRecordEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 92);
976
- var FindSimilarRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 94);
977
- var WriteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 96);
978
- var DeleteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 98);
979
- var SearchEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 102);
980
- var SearchByLocationRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 115);
981
- var FindNearestRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 117);
982
- var RecordsMissingGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 120);
983
- var BackfillRecordGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 122);
984
- var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 126);
985
- var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 129);
986
- var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 132);
987
- var PurgeResponseCacheRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 134);
988
- var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 136);
989
- var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 142);
990
- var RecordsUsingVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 144);
991
- var RecordsMissingLocaleRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 147);
992
- var RecordsLocaleCoverageRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 150);
957
+ var ListRecordVersionsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 48);
958
+ var CreateVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 50);
959
+ var CaptureDefaultAsVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 52);
960
+ var UpdateVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 54);
961
+ var DeleteVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 56);
962
+ var SetRecordOwnerRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 58);
963
+ var SetDefaultVariantRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 60);
964
+ var ListRecordVariantsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 62);
965
+ var ScheduleRecordPublishRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 64);
966
+ var CancelScheduledRecordPublishRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 66);
967
+ var ListScheduledPublishesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 68);
968
+ var ListDraftVersionsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 72);
969
+ var BatchPublishVersionsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 74);
970
+ var BatchResolveRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 76);
971
+ var ResolveContentRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 78);
972
+ var GlobalSearchRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 85);
973
+ var SearchResultItemSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 86);
974
+ var GetEmbeddingStatsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 91);
975
+ var GetRecordEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 93);
976
+ var FindSimilarRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 95);
977
+ var WriteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 97);
978
+ var DeleteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 99);
979
+ var SearchEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 103);
980
+ var SearchByLocationRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 116);
981
+ var FindNearestRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 118);
982
+ var RecordsMissingGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 121);
983
+ var BackfillRecordGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 123);
984
+ var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 127);
985
+ var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 130);
986
+ var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 133);
987
+ var PurgeResponseCacheRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 135);
988
+ var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 137);
989
+ var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 143);
990
+ var RecordsUsingVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 145);
991
+ var RecordsMissingLocaleRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 148);
992
+ var RecordsLocaleCoverageRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 151);
993
993
  var AggregateOpSchema = /* @__PURE__ */ enumDesc4(file_records_v1_records, 3);
994
994
  var AggregateOp = /* @__PURE__ */ tsEnum4(AggregateOpSchema);
995
995
  var RecordsService = /* @__PURE__ */ serviceDesc3(file_records_v1_records, 0);
@@ -3818,6 +3818,10 @@ var AGGREGATE_OPS = {
3818
3818
  var AGGREGATE_OP_NAMES = Object.fromEntries(
3819
3819
  Object.entries(AGGREGATE_OPS).map(([name, op]) => [op, name])
3820
3820
  );
3821
+ var revertChange = (c) => ({
3822
+ path: c.path,
3823
+ detail: c.detail
3824
+ });
3821
3825
  function sanitizeData(obj) {
3822
3826
  const result = {};
3823
3827
  for (const [key, value] of Object.entries(obj)) {
@@ -4185,11 +4189,37 @@ function createRecordsMethods(client) {
4185
4189
  );
4186
4190
  return resp.success;
4187
4191
  },
4188
- async revertToVersion(versionId) {
4192
+ /**
4193
+ * Revert a record to one of its versions.
4194
+ *
4195
+ * A revert APPENDS: the version's content comes back as a new version,
4196
+ * through the same validated write as every other edit. It does not move
4197
+ * the record's pointer back onto an old row.
4198
+ *
4199
+ * That is why this returns more than the record. A snapshot is history, and
4200
+ * history can hold shapes the schema has since stopped accepting, so the
4201
+ * platform may re-spell values, drop keys the model no longer declares, or
4202
+ * refuse outright — none of which the caller chose, because the caller did
4203
+ * not write the payload. `dryRun` asks for the same answer without writing
4204
+ * anything, which is the only chance to see it before the version exists.
4205
+ *
4206
+ * On a real revert a refusal arrives as a thrown error naming the fields;
4207
+ * `refused` is populated on a dry run, where nothing throws.
4208
+ */
4209
+ async revertToVersion(versionId, params) {
4189
4210
  const resp = await client.revertToVersion(
4190
- create4(RevertToVersionRequestSchema, { versionId })
4211
+ create4(RevertToVersionRequestSchema, {
4212
+ versionId,
4213
+ dryRun: params?.dryRun ?? false
4214
+ })
4191
4215
  );
4192
- return resp.record ?? null;
4216
+ return {
4217
+ record: resp.record ?? null,
4218
+ converted: resp.converted.map(revertChange),
4219
+ stripped: resp.stripped.map(revertChange),
4220
+ refused: resp.refused.map(revertChange),
4221
+ dryRun: resp.dryRun
4222
+ };
4193
4223
  },
4194
4224
  async listRecordVersions(parentId, params) {
4195
4225
  const resp = await client.listRecordVersions(
@@ -12709,6 +12739,48 @@ function registerModelsCommands(program2, globalOpts) {
12709
12739
  // src/commands/records.ts
12710
12740
  import chalk12 from "chalk";
12711
12741
  import { toJson as toJson4 } from "@bufbuild/protobuf";
12742
+ function printRevertChanges(heading, changes) {
12743
+ if (changes.length === 0) return;
12744
+ console.log(chalk12.bold(`
12745
+ ${heading}:`));
12746
+ for (const change of changes) {
12747
+ console.log(` ${chalk12.cyan(change.path)} ${chalk12.gray(change.detail)}`);
12748
+ }
12749
+ }
12750
+ function revertOutcomeLine(report) {
12751
+ const target = report.recordId ?? "the record";
12752
+ if (report.dryRun) {
12753
+ if (report.refused.length > 0) {
12754
+ return {
12755
+ level: "warn",
12756
+ message: `Dry run: reverting ${target} to version ${report.versionId} would be REFUSED \u2014 ${report.refused.length} value(s) no longer fit the schema. Nothing was written.`
12757
+ };
12758
+ }
12759
+ const parts2 = [];
12760
+ if (report.converted.length > 0)
12761
+ parts2.push(`re-spell ${report.converted.length} value(s)`);
12762
+ if (report.stripped.length > 0)
12763
+ parts2.push(`drop ${report.stripped.length} key(s)`);
12764
+ const would = parts2.length > 0 ? ` It would ${parts2.join(" and ")}.` : "";
12765
+ return {
12766
+ level: "success",
12767
+ message: `Dry run: version ${report.versionId} would revert cleanly onto ${target}.${would} Nothing was written.`
12768
+ };
12769
+ }
12770
+ const parts = [];
12771
+ if (report.converted.length > 0)
12772
+ parts.push(`${report.converted.length} value(s) re-spelled`);
12773
+ if (report.stripped.length > 0)
12774
+ parts.push(`${report.stripped.length} key(s) dropped`);
12775
+ const did = parts.length > 0 ? ` \u2014 ${parts.join(", ")}` : "";
12776
+ return {
12777
+ level: "success",
12778
+ message: `Reverted ${target} to version ${report.versionId} as a new version${did}`
12779
+ };
12780
+ }
12781
+ function revertExitCode(report) {
12782
+ return report.dryRun && report.refused.length > 0 ? 1 : 0;
12783
+ }
12712
12784
  function draftStateMessage(record) {
12713
12785
  if (!record.hasUnpublishedChanges) return null;
12714
12786
  const state = record.publishedVersionNumber !== void 0 ? `v${record.publishedVersionNumber} is live, and the content shown is the published one` : "nothing is published yet, and the content shown is empty";
@@ -13017,6 +13089,59 @@ function registerRecordsCommands(program2, globalOpts) {
13017
13089
  }
13018
13090
  })
13019
13091
  );
13092
+ records.command("revert <versionId>").description(
13093
+ "Revert a record to one of its versions. The version's content comes back as a NEW version through the ordinary validated write \u2014 the record's history moves forwards, not back. Use --dry-run first to see what would be converted, dropped or refused."
13094
+ ).option(
13095
+ "--dry-run",
13096
+ "Report what the revert would convert, drop or refuse, and write nothing"
13097
+ ).action(
13098
+ withErrorHandler(
13099
+ globalOpts,
13100
+ async (versionId, cmdOpts) => {
13101
+ const opts = globalOpts();
13102
+ const client = await createPlatformClient(opts);
13103
+ const dryRun = Boolean(cmdOpts.dryRun);
13104
+ const result = await client.records.revertToVersion(versionId, {
13105
+ dryRun
13106
+ });
13107
+ const report = {
13108
+ versionId,
13109
+ recordId: result.record?.id,
13110
+ dryRun: result.dryRun,
13111
+ converted: result.converted,
13112
+ stripped: result.stripped,
13113
+ refused: result.refused
13114
+ };
13115
+ if (opts.json || opts.jsonl) {
13116
+ formatOutput(report, opts);
13117
+ } else if (!opts.quiet) {
13118
+ const verb = result.dryRun ? "Would" : "Did";
13119
+ printRevertChanges(
13120
+ `${verb} re-spell for the type the model now declares`,
13121
+ result.converted
13122
+ );
13123
+ printRevertChanges(
13124
+ `${verb} drop \u2014 the model declares these nowhere`,
13125
+ result.stripped
13126
+ );
13127
+ printRevertChanges(
13128
+ "Would be REFUSED \u2014 no cast reaches these",
13129
+ result.refused
13130
+ );
13131
+ const outcome = revertOutcomeLine(report);
13132
+ if (outcome.level === "warn") warn(outcome.message);
13133
+ else success(outcome.message);
13134
+ if (!result.dryRun) {
13135
+ const message = draftStateMessage(
13136
+ result.record
13137
+ );
13138
+ if (message) warn(message);
13139
+ }
13140
+ }
13141
+ process.exitCode = revertExitCode(result) || process.exitCode;
13142
+ }
13143
+ )
13144
+ );
13020
13145
  records.command("duplicate <modelKey> <id>").description("Duplicate a record").option("--natural-key <key>", "Natural key for the duplicate").action(
13021
13146
  withErrorHandler(
13022
13147
  globalOpts,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foir/cli",
3
- "version": "0.68.0",
3
+ "version": "0.69.0",
4
4
  "description": "Universal platform CLI for Foir platform",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -63,8 +63,8 @@
63
63
  "vitest": "^3.2.4",
64
64
  "@foir/assistant": "0.0.0",
65
65
  "@foir/console-routes": "0.0.0",
66
- "@foir/rpc-node": "0.0.0",
67
66
  "@foir/proto-ts": "0.109.0",
67
+ "@foir/rpc-node": "0.0.0",
68
68
  "@foir/sdk": "0.9.0"
69
69
  },
70
70
  "engines": {