@n1xyz/nord-ts 0.7.2 → 0.7.3

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.
@@ -1628,7 +1628,7 @@ var require_fallback = __commonJS((exports, module) => {
1628
1628
 
1629
1629
  // node_modules/bufferutil/index.js
1630
1630
  var require_bufferutil = __commonJS((exports, module) => {
1631
- var __dirname = "/Users/alexiusbelov/Code/N1/proton/nord/ts/node_modules/bufferutil";
1631
+ var __dirname = "/Users/sheheryar/work/proton.wt0/nord/ts/node_modules/bufferutil";
1632
1632
  try {
1633
1633
  module.exports = require_node_gyp_build2()(__dirname);
1634
1634
  } catch (e2) {
@@ -2040,7 +2040,7 @@ var require_fallback2 = __commonJS((exports, module) => {
2040
2040
 
2041
2041
  // node_modules/utf-8-validate/index.js
2042
2042
  var require_utf_8_validate = __commonJS((exports, module) => {
2043
- var __dirname = "/Users/alexiusbelov/Code/N1/proton/nord/ts/node_modules/utf-8-validate";
2043
+ var __dirname = "/Users/sheheryar/work/proton.wt0/nord/ts/node_modules/utf-8-validate";
2044
2044
  try {
2045
2045
  module.exports = require_node_gyp_build2()(__dirname);
2046
2046
  } catch (e2) {
@@ -49235,7 +49235,7 @@ var require_file_uri_to_path = __commonJS((exports, module) => {
49235
49235
 
49236
49236
  // node_modules/bindings/bindings.js
49237
49237
  var require_bindings = __commonJS((exports, module) => {
49238
- var __filename = "/Users/alexiusbelov/Code/N1/proton/nord/ts/node_modules/bindings/bindings.js";
49238
+ var __filename = "/Users/sheheryar/work/proton.wt0/nord/ts/node_modules/bindings/bindings.js";
49239
49239
  var fs = __require("fs");
49240
49240
  var path = __require("path");
49241
49241
  var fileURLToPath = require_file_uri_to_path();
@@ -53911,6 +53911,8 @@ __export(exports_nord_pb, {
53911
53911
  RfqTradeActionSchema: () => RfqTradeActionSchema,
53912
53912
  RfqPlaceOnlySchema: () => RfqPlaceOnlySchema,
53913
53913
  RfqMakersSetSchema: () => RfqMakersSetSchema,
53914
+ RfqFillStatusSchema: () => RfqFillStatusSchema,
53915
+ RfqFillStatus: () => RfqFillStatus,
53914
53916
  ReduceOrderLiquidationSchema: () => ReduceOrderLiquidationSchema,
53915
53917
  Receipt_WithdrawResultSchema: () => Receipt_WithdrawResultSchema,
53916
53918
  Receipt_VaultPlacementReceiptSchema: () => Receipt_VaultPlacementReceiptSchema,
@@ -53970,11 +53972,13 @@ __export(exports_nord_pb, {
53970
53972
  Receipt_AccountPlacementReceiptSchema: () => Receipt_AccountPlacementReceiptSchema,
53971
53973
  ReceiptSchema: () => ReceiptSchema,
53972
53974
  RFQQtyPlaceSchema: () => RFQQtyPlaceSchema,
53975
+ RFQExecutionSchema: () => RFQExecutionSchema,
53973
53976
  PythLazerTrustedSignerSchema: () => PythLazerTrustedSignerSchema,
53974
53977
  PlacementRoleSchema: () => PlacementRoleSchema,
53975
53978
  PlacementRole: () => PlacementRole,
53976
53979
  PlaceTypeSchema: () => PlaceTypeSchema,
53977
53980
  PlaceRFQResultSchema: () => PlaceRFQResultSchema,
53981
+ PartialFillSchema: () => PartialFillSchema,
53978
53982
  OrderLimitSchema: () => OrderLimitSchema,
53979
53983
  MarketTypeSchema: () => MarketTypeSchema,
53980
53984
  MarketType: () => MarketType,
@@ -53985,6 +53989,7 @@ __export(exports_nord_pb, {
53985
53989
  MarketMode: () => MarketMode,
53986
53990
  IntentSchema: () => IntentSchema,
53987
53991
  Intent: () => Intent,
53992
+ FillTypeSchema: () => FillTypeSchema,
53988
53993
  FillRFQResultSchema: () => FillRFQResultSchema,
53989
53994
  FillModeSchema: () => FillModeSchema,
53990
53995
  FillMode: () => FillMode,
@@ -53997,14 +54002,11 @@ __export(exports_nord_pb, {
53997
54002
  CreateRfqMarket_MarginsSchema: () => CreateRfqMarket_MarginsSchema,
53998
54003
  CreateRfqMarket_DecimalsSchema: () => CreateRfqMarket_DecimalsSchema,
53999
54004
  CreateRfqMarketSchema: () => CreateRfqMarketSchema,
54000
- AtomicV2Schema: () => AtomicV2Schema,
54001
54005
  AtomicV1Schema: () => AtomicV1Schema,
54002
- AtomicSubactionV2Schema: () => AtomicSubactionV2Schema,
54003
54006
  AtomicSubactionSchema: () => AtomicSubactionSchema,
54004
54007
  AtomicSubactionKindV1Schema: () => AtomicSubactionKindV1Schema,
54005
54008
  AtomicSchema: () => AtomicSchema,
54006
54009
  AtomicRemoveTriggerSchema: () => AtomicRemoveTriggerSchema,
54007
- AtomicPlacementRequestSchema: () => AtomicPlacementRequestSchema,
54008
54010
  AtomicEditTriggerSchema: () => AtomicEditTriggerSchema,
54009
54011
  AtomicCancelOrderByIdSchema: () => AtomicCancelOrderByIdSchema,
54010
54012
  AtomicCancelOrderByClientIdSchema: () => AtomicCancelOrderByClientIdSchema,
@@ -57294,73 +57296,73 @@ function fileDesc(b64, imports) {
57294
57296
  }
57295
57297
 
57296
57298
  // src/gen/nord_pb.ts
57297
- var file_nord = /* @__PURE__ */ fileDesc("Cgpub3JkLnByb3RvEgRub3JkIh4KBFUxMjgSCgoCbG8YASABKAQSCgoCaGkYAiABKAQiiAEKCFJmcVRyYWRlEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESEQoJbWFya2V0X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEg0KBXByaWNlGAQgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBSABKANCEQoPX3RpbWVvdXRfbWlsbGlzItQBCgxSZnFQbGFjZU9ubHkSEQoJbWFya2V0X2lkGAcgASgNEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESHAoPY2xpZW50X29yZGVyX2lkGAIgASgESAGIAQESDQoFcHJpY2UYAyABKAQSGAoEc2lkZRgEIAEoDjIKLm5vcmQuU2lkZRIMCgRiYXNlGAUgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBiABKANCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9jbGllbnRfb3JkZXJfaWQiIwoMU2V0UmZxTWFrZXJzEhMKC2FjY291bnRfaWRzGAEgAygNIiUKEFNldE1hcmtldE1vZGVSRlESEQoJbWFya2V0X2lkGAEgASgNItMCCg9DcmVhdGVSZnFNYXJrZXQSMAoIZGVjaW1hbHMYASABKAsyHi5ub3JkLkNyZWF0ZVJmcU1hcmtldC5EZWNpbWFscxIuCgdtYXJnaW5zGAIgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuTWFyZ2lucxIuCgdzeW1ib2xzGAMgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuU3ltYm9scxo5CghEZWNpbWFscxIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNGjwKB01hcmdpbnMSDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0aNQoHU3ltYm9scxITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJIpQBCg5SZnFUcmFkZUFjdGlvbhIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIcChRxdW90ZV90aW1lb3V0X21pbGxpcxgEIAEoDRITCgliYXNlX3NpemUYBSABKANIAEIKCghxdWFudGl0eUoECAYQByLbAgoPUmZxVHJhZGVSZWNlaXB0EhAKCG9yZGVyX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIwCgdzdWNjZXNzGAMgASgLMh0ubm9yZC5SZnFUcmFkZVJlY2VpcHQuU3VjY2Vzc0gAEjYKB2ZhaWx1cmUYBCABKA4yIy5ub3JkLlJmcVRyYWRlUmVjZWlwdC5GYWlsdXJlUmVhc29uSAAaggEKB1N1Y2Nlc3MSEAoIcXVvdGVfaWQYASABKAQSGAoEc2lkZRgCIAEoDjIKLm5vcmQuU2lkZRIYChBmaWxsZWRfYmFzZV9zaXplGAMgASgEEiIKDnF1b3RlX25vdGlvbmFsGAQgASgLMgoubm9yZC5VMTI4Eg0KBXByaWNlGAUgASgEIioKDUZhaWx1cmVSZWFzb24SCwoHVElNRU9VVBAAEgwKCFJFSkVDVEVEEAFCCAoGcmVzdWx0IjoKDlBsYWNlUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhYKDnRpbWVvdXRfbWlsbGlzGAIgASgNIqMBCg1GaWxsUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhgKEG1ha2VyX2FjY291bnRfaWQYAiABKA0SGAoQdGFrZXJfYWNjb3VudF9pZBgDIAEoDRIYCgtmaWxsZWRfc2l6ZRgEIAEoBEgAiAEBEhUKCHRyYWRlX2lkGAUgASgESAGIAQFCDgoMX2ZpbGxlZF9zaXplQgsKCV90cmFkZV9pZCIjCgxSZnFNYWtlcnNTZXQSEwoLYWNjb3VudF9pZHMYASADKA0iJgoLUkZRUXR5UGxhY2USFwoDcXR5GAEgASgLMgoubm9yZC5VMTI4Ij0KDUZlZVRpZXJDb25maWcSFQoNbWFrZXJfZmVlX3BwbRgBIAEoDRIVCg10YWtlcl9mZWVfcHBtGAIgASgNIvcBCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRIlCgttYXJrZXRfbW9kZRgJIAEoDjIQLm5vcmQuTWFya2V0TW9kZRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIrYBCgtWYXVsdEhlYWx0aBIqChFyYXdfYWNjb3VudF92YWx1ZRgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgBiAEBEiEKBnN0YXR1cxgDIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXNCFAoSX3Jhd19hY2NvdW50X3ZhbHVlQhUKE19zYWZlX2FjY291bnRfdmFsdWUisAEKC1ZhdWx0Q29uZmlnEh8KC2RlcG9zaXRfY2FwGAEgASgLMgoubm9yZC5VMTI4EiIKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNEh8KF2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzGAMgASgNEhsKE2RyYXdkb3duX2ZyZWV6ZV9icHMYBCABKA0SHgoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDSLMAgoQVmF1bHRDb25maWdQYXRjaBIkCgtkZXBvc2l0X2NhcBgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEicKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNSAGIAQESJAoXZHJhd2Rvd25fcHJvdGVjdGlvbl9icHMYAyABKA1IAogBARIgChNkcmF3ZG93bl9mcmVlemVfYnBzGAQgASgNSAOIAQESIwoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDUgEiAEBQg4KDF9kZXBvc2l0X2NhcEIdChtfb3Blbl9wb3NpdGlvbl9kaXNjb3VudF9icHNCGgoYX2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzQhYKFF9kcmF3ZG93bl9mcmVlemVfYnBzQhkKF19lcG9jaF9taW5fZHVyYXRpb25fc2VjIkgKC0NyZWF0ZVZhdWx0EhYKDm1hbmFnZXJfcHVia2V5GAEgASgMEiEKBmNvbmZpZxgCIAEoCzIRLm5vcmQuVmF1bHRDb25maWciUwoRVXBkYXRlVmF1bHRDb25maWcSEAoIdmF1bHRfaWQYASABKA0SLAoMY29uZmlnX3BhdGNoGAIgASgLMhYubm9yZC5WYXVsdENvbmZpZ1BhdGNoIjsKD1NldFZhdWx0TWFuYWdlchIQCgh2YXVsdF9pZBgBIAEoDRIWCg5tYW5hZ2VyX3B1YmtleRgCIAEoDCI3Cg9WYXVsdFN5bmNFcG9jaHMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIQCgh2YXVsdF9pZBgCIAEoDSJOChFTdGFnZWRBZG1pbkFjdGlvbhIUCgxhZG1pbl9wdWJrZXkYASABKAwSIwoEa2luZBgCIAEoCzIVLm5vcmQuQWRtaW5BY3Rpb25LaW5kIrMECg9BZG1pbkFjdGlvbktpbmQSKQoMY3JlYXRlX3ZhdWx0GAEgASgLMhEubm9yZC5DcmVhdGVWYXVsdEgAEjYKE3VwZGF0ZV92YXVsdF9jb25maWcYAiABKAsyFy5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnSAASMgoRc2V0X3ZhdWx0X21hbmFnZXIYAyABKAsyFS5ub3JkLlNldFZhdWx0TWFuYWdlckgAEjIKEWNyZWF0ZV9yZnFfbWFya2V0GAQgASgLMhUubm9yZC5DcmVhdGVSZnFNYXJrZXRIABJWCiFzZXRfbWFya2V0X21vZGVfY2xvYl90cmFkaW5nX29ubHkYBSABKAsyKS5ub3JkLkFjdGlvbi5TZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5SAASNQoTc2V0X21hcmtldF9tb2RlX3JmcRgGIAEoCzIWLm5vcmQuU2V0TWFya2V0TW9kZVJGUUgAElAKHnNldF9tYXJrZXRfbW9kZV9jbG9iX3Bvc3Rfb25seRgHIAEoCzImLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CUG9zdE9ubHlIABI+ChRzZXRfbWFya2V0X21vZGVfY2xvYhgIIAEoCzIeLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CSAASLAoOc2V0X3JmcV9tYWtlcnMYCSABKAsyEi5ub3JkLlNldFJmcU1ha2Vyc0gAQgYKBGtpbmQiRAoMVmF1bHREZXBvc2l0EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEIvUBCg1WYXVsdFdpdGhkcmF3EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SLgoHcmVxdWVzdBgDIAEoCzIbLm5vcmQuVmF1bHRXaXRoZHJhdy5SZXF1ZXN0SAASKgoFY2xhaW0YBCABKAsyGS5ub3JkLlZhdWx0V2l0aGRyYXcuQ2xhaW1IABpRCgdSZXF1ZXN0EhgKDnF1b3RlX25vdGlvbmFsGAEgASgESAASIgoMc2hhcmVfYW1vdW50GAIgASgLMgoubm9yZC5VMTI4SABCCAoGYW1vdW50GgcKBUNsYWltQgYKBGtpbmQingEKEkNyZWF0ZVZhdWx0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIYChB2YXVsdF9hY2NvdW50X2lkGAIgASgNEhYKDm1hbmFnZXJfcHVia2V5GAMgASgMEiEKBnN0YXR1cxgEIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSIQoGY29uZmlnGAUgASgLMhEubm9yZC5WYXVsdENvbmZpZyJyChhVcGRhdGVWYXVsdENvbmZpZ1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SIQoGY29uZmlnGAIgASgLMhEubm9yZC5WYXVsdENvbmZpZxIhCgZzdGF0dXMYAyABKA4yES5ub3JkLlZhdWx0U3RhdHVzIkIKFlNldFZhdWx0TWFuYWdlclJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFgoObWFuYWdlcl9wdWJrZXkYAiABKAwi4QEKFlZhdWx0U3luY0Vwb2Noc1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPY2xvc2VkX2Vwb2NoX2lkGAIgASgNEhgKEGNsYWltYWJsZV9hbW91bnQYAyABKAQSIQoGc3RhdHVzGAQgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIhCgZlcG9jaHMYBSABKAsyES5ub3JkLlZhdWx0RXBvY2hzEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EhUKDXF1b3RlX2JhbGFuY2UYByABKAMijwIKE1ZhdWx0RGVwb3NpdFJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBIhCg1zaGFyZXNfaXNzdWVkGAQgASgLMgoubm9yZC5VMTI4Eh8KC3VzZXJfc2hhcmVzGAUgASgLMgoubm9yZC5VMTI4EiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EiEKBnN0YXR1cxgHIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDRIVCg1xdW90ZV9iYWxhbmNlGAkgASgDIlUKEVdpdGhkcmF3YWxCdWNrZXRzEhUKDWN1cnJlbnRfZXBvY2gYASABKAQSFgoOcHJldmlvdXNfZXBvY2gYAiABKAQSEQoJY2xhaW1hYmxlGAMgASgEIoUBCgtWYXVsdFBwc1JlZhIQCghlcG9jaF9pZBgBIAEoDRIrChJzYWZlX2FjY291bnRfdmFsdWUYAiABKAsyCi5ub3JkLlUxMjhIAIgBARIgCgxzaGFyZV9zdXBwbHkYAyABKAsyCi5ub3JkLlUxMjhCFQoTX3NhZmVfYWNjb3VudF92YWx1ZSKWAgoLVmF1bHRFcG9jaHMSGAoQY3VycmVudF9lcG9jaF9pZBgBIAEoDRIgChhjdXJyZW50X2Vwb2NoX3N0YXJ0ZWRfYXQYAiABKAMSIgoVcGFpZF90aHJvdWdoX2Vwb2NoX2lkGAMgASgNSACIAQESLAoLd2l0aGRyYXdhbHMYBCABKAsyFy5ub3JkLldpdGhkcmF3YWxCdWNrZXRzEi8KFGxhdGVzdF9lcG9jaF9wcHNfcmVmGAUgASgLMhEubm9yZC5WYXVsdFBwc1JlZhIuChNwcmlvcl9lcG9jaF9wcHNfcmVmGAYgASgLMhEubm9yZC5WYXVsdFBwc1JlZkIYChZfcGFpZF90aHJvdWdoX2Vwb2NoX2lkIo8BCg5WYXVsdFVzZXJTdGF0ZRIaCgZzaGFyZXMYASABKAsyCi5ub3JkLlUxMjgSLAoLd2l0aGRyYXdhbHMYAiABKAsyFy5ub3JkLldpdGhkcmF3YWxCdWNrZXRzEhgKEGN1cnJlbnRfZXBvY2hfaWQYAyABKA0SGQoRcHJldmlvdXNfZXBvY2hfaWQYBCABKA0itgMKFFZhdWx0V2l0aGRyYXdSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEhUKDXRvX2FjY291bnRfaWQYAiABKA0SOQoJcmVxdWVzdGVkGAMgASgLMiQubm9yZC5WYXVsdFdpdGhkcmF3UmVjZWlwdC5SZXF1ZXN0ZWRIABI1CgdjbGFpbWVkGAQgASgLMiIubm9yZC5WYXVsdFdpdGhkcmF3UmVjZWlwdC5DbGFpbWVkSAASLQoPcG9zdF91c2VyX3N0YXRlGAUgASgLMhQubm9yZC5WYXVsdFVzZXJTdGF0ZRIlChFsaXZlX3NoYXJlX3N1cHBseRgGIAEoCzIKLm5vcmQuVTEyOBIhCgZzdGF0dXMYByABKA4yES5ub3JkLlZhdWx0U3RhdHVzEhgKEHZhdWx0X2FjY291bnRfaWQYCCABKA0SFQoNcXVvdGVfYmFsYW5jZRgJIAEoAxo2CglSZXF1ZXN0ZWQSDQoFcXVvdGUYASABKAQSGgoGYnVybmVkGAIgASgLMgoubm9yZC5VMTI4GhkKB0NsYWltZWQSDgoGYW1vdW50GAEgASgEQgYKBGtpbmQiSQoKT3JkZXJMaW1pdBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgiuQEKCVBsYWNlVHlwZRIYCgRzaWRlGAMgASgOMgoubm9yZC5TaWRlEiEKCWZpbGxfbW9kZRgEIAEoDjIOLm5vcmQuRmlsbE1vZGUSFgoOaXNfcmVkdWNlX29ubHkYBSABKAgSPQoVc2VsZl90cmFkZV9wcmV2ZW50aW9uGAYgASgOMhkubm9yZC5TZWxmVHJhZGVQcmV2ZW50aW9uSACIAQFCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbiLJAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpwbGFjZV90eXBlGAMgASgLMg8ubm9yZC5QbGFjZVR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQESIQoIcmVmZXJyZXIYIiABKAsyCi5ub3JkLlUxMjhIAYgBAUISChBfY2xpZW50X29yZGVyX2lkQgsKCV9yZWZlcnJlciIpChVBdG9taWNDYW5jZWxPcmRlckJ5SWQSEAoIb3JkZXJfaWQYAiABKAQiNgobQXRvbWljQ2FuY2VsT3JkZXJCeUNsaWVudElkEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBCKGAQoQQXRvbWljQWRkVHJpZ2dlchIkCgd0cmlnZ2VyGAEgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgCIAEoDjIMLm5vcmQuSW50ZW50EiEKCHJlZmVycmVyGAMgASgLMgoubm9yZC5VMTI4SACIAQFCCwoJX3JlZmVycmVyIlEKEUF0b21pY0VkaXRUcmlnZ2VyEhIKCnRyaWdnZXJfaWQYASABKAQSKAoLbmV3X3RyaWdnZXIYAiABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQiPAoTQXRvbWljUmVtb3ZlVHJpZ2dlchIRCgltYXJrZXRfaWQYASABKA0SEgoKdHJpZ2dlcl9pZBgCIAEoBCJGChZSZWR1Y2VPcmRlckxpcXVpZGF0aW9uEhkKEXRhcmdldF9hY2NvdW50X2lkGAEgASgNEhEKCW1hcmtldF9pZBgCIAEoDSLPAQoVQXRvbWljU3ViYWN0aW9uS2luZFYxEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIzCgxjYW5jZWxfb3JkZXIYByABKAsyGy5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlJZEgAEkYKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYCCABKAsyIS5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlDbGllbnRJZEgAOgIYAUIHCgVpbm5lciKwAQoIQXRvbWljVjESEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESLAoHYWN0aW9ucxgGIAMoCzIbLm5vcmQuQXRvbWljU3ViYWN0aW9uS2luZFYxOgIYAUINCgtfYWNjb3VudF9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkIlcKFkF0b21pY1BsYWNlbWVudFJlcXVlc3QSEgoIdmF1bHRfaWQYASABKA1IABIgChZsaXF1aWRhdGlvbl9hY2NvdW50X2lkGAIgASgNSABCBwoFaW5uZXIiqwQKD0F0b21pY1N1YmFjdGlvbhIhChRkZWxlZ2F0b3JfYWNjb3VudF9pZBggIAEoDUgBiAEBEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIzCgxjYW5jZWxfb3JkZXIYByABKAsyGy5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlJZEgAEkYKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYCCABKAsyIS5ub3JkLkF0b21pY0NhbmNlbE9yZGVyQnlDbGllbnRJZEgAEi0KC2FkZF90cmlnZ2VyGAkgASgLMhYubm9yZC5BdG9taWNBZGRUcmlnZ2VySAASLwoMZWRpdF90cmlnZ2VyGAogASgLMhcubm9yZC5BdG9taWNFZGl0VHJpZ2dlckgAEjMKDnJlbW92ZV90cmlnZ2VyGAsgASgLMhkubm9yZC5BdG9taWNSZW1vdmVUcmlnZ2VySAASQAoYcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uGAwgASgLMhwubm9yZC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uSAASLAoOcmZxX3BsYWNlX29ubHkYDSABKAsyEi5ub3JkLlJmcVBsYWNlT25seUgAEiMKCXJmcV90cmFkZRgOIAEoCzIOLm5vcmQuUmZxVHJhZGVIAEIHCgVpbm5lckIXChVfZGVsZWdhdG9yX2FjY291bnRfaWQigQEKEUF0b21pY1N1YmFjdGlvblYyEjQKCXBsYWNlbWVudBgBIAEoCzIcLm5vcmQuQXRvbWljUGxhY2VtZW50UmVxdWVzdEgAiAEBEigKCXN1YmFjdGlvbhgCIAEoCzIVLm5vcmQuQXRvbWljU3ViYWN0aW9uQgwKCl9wbGFjZW1lbnQipAEKBkF0b21pYxISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYAyABKARIAYgBARImCgdhY3Rpb25zGAYgAygLMhUubm9yZC5BdG9taWNTdWJhY3Rpb25CDQoLX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZCKoAQoIQXRvbWljVjISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESKAoHYWN0aW9ucxgGIAMoCzIXLm5vcmQuQXRvbWljU3ViYWN0aW9uVjJCDQoLX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZCI8ChZQeXRoTGF6ZXJUcnVzdGVkU2lnbmVyEg4KBnB1YmtleRgBIAEoDBISCgpleHBpcmVzX2F0GAIgASgDIpYBCg1UcmlnZ2VyUmVjb3JkEhUKDXRyaWdnZXJfcHJpY2UYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEiAKBmxpbWl0cxgDIAEoCzIQLm5vcmQuT3JkZXJMaW1pdBIfCgRraW5kGAQgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIYCgRzaWRlGAUgASgOMgoubm9yZC5TaWRlIpsBCgdUcmlnZ2VyEhUKDXRyaWdnZXJfcHJpY2UYASABKAQSHwoEa2luZBgCIAEoDjIRLm5vcmQuVHJpZ2dlcktpbmQSGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIgCgZsaW1pdHMYBCABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoGaW50ZW50GAUgASgOMgwubm9yZC5JbnRlbnQi/zMKBkFjdGlvbhIZChFjdXJyZW50X3RpbWVzdGFtcBgBIAEoAxINCgVub25jZRgCIAEoDRI0Cg5jcmVhdGVfc2Vzc2lvbhgEIAEoCzIaLm5vcmQuQWN0aW9uLkNyZWF0ZVNlc3Npb25IABIwCgxjcmVhdGVfdG9rZW4YBSABKAsyGC5ub3JkLkFjdGlvbi5DcmVhdGVUb2tlbkgAEjIKDWNyZWF0ZV9tYXJrZXQYBiABKAsyGS5ub3JkLkFjdGlvbi5DcmVhdGVNYXJrZXRIABIuCgtwbGFjZV9vcmRlchgHIAEoCzIXLm5vcmQuQWN0aW9uLlBsYWNlT3JkZXJIABI6ChJjYW5jZWxfb3JkZXJfYnlfaWQYCCABKAsyHC5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5SWRIABInCgdkZXBvc2l0GAkgASgLMhQubm9yZC5BY3Rpb24uRGVwb3NpdEgAEikKCHdpdGhkcmF3GAogASgLMhUubm9yZC5BY3Rpb24uV2l0aGRyYXdIABJMChtweXRoX3NldF93b3JtaG9sZV9ndWFyZGlhbnMYCyABKAsyJS5ub3JkLkFjdGlvbi5QeXRoU2V0V29ybWhvbGVHdWFyZGlhbnNIABI+ChRweXRoX3NldF9zeW1ib2xfZmVlZBgMIAEoCzIeLm5vcmQuQWN0aW9uLlB5dGhTZXRTeW1ib2xGZWVkSAASQgoWcHl0aF9wcmljZV9mZWVkX3VwZGF0ZRgNIAEoCzIgLm5vcmQuQWN0aW9uLlB5dGhQcmljZUZlZWRVcGRhdGVIABI0Cg5yZXZva2Vfc2Vzc2lvbhgPIAEoCzIaLm5vcmQuQWN0aW9uLlJldm9rZVNlc3Npb25IABIjCgVwYXVzZRgQIAEoCzISLm5vcmQuQWN0aW9uLlBhdXNlSAASJwoHdW5wYXVzZRgRIAEoCzIULm5vcmQuQWN0aW9uLlVucGF1c2VIABIpCgh0cmFuc2ZlchgSIAEoCzIVLm5vcmQuQWN0aW9uLlRyYW5zZmVySAASLgoLYWRkX3RyaWdnZXIYICABKAsyFy5ub3JkLkFjdGlvbi5BZGRUcmlnZ2VySAASNAoOcmVtb3ZlX3RyaWdnZXIYISABKAsyGi5ub3JkLkFjdGlvbi5SZW1vdmVUcmlnZ2VySAASJwoJYXRvbWljX3YxGCMgASgLMg4ubm9yZC5BdG9taWNWMUICGAFIABIyCg1mcmVlemVfbWFya2V0GCQgASgLMhkubm9yZC5BY3Rpb24uRnJlZXplTWFya2V0SAASNgoPdW5mcmVlemVfbWFya2V0GCUgASgLMhsubm9yZC5BY3Rpb24uVW5mcmVlemVNYXJrZXRIABIvCgxhZGRfZmVlX3RpZXIYJiABKAsyFy5ub3JkLkFjdGlvbi5BZGRGZWVUaWVySAASNQoPdXBkYXRlX2ZlZV90aWVyGCcgASgLMhoubm9yZC5BY3Rpb24uVXBkYXRlRmVlVGllckgAEj8KFHVwZGF0ZV9hY2NvdW50c190aWVyGCggASgLMh8ubm9yZC5BY3Rpb24uVXBkYXRlQWNjb3VudHNUaWVySAASLAoKdXBkYXRlX2FjbBgpIAEoCzIWLm5vcmQuQWN0aW9uLlVwZGF0ZUFjbEgAEjsKEmZlZV92YXVsdF90cmFuc2ZlchgqIAEoCzIdLm5vcmQuQWN0aW9uLkZlZVZhdWx0VHJhbnNmZXJIABI7ChJ0YWtlX2FsbF9wb3NpdGlvbnMYKyABKAsyHS5ub3JkLkFjdGlvbi5UYWtlQWxsUG9zaXRpb25zSAASRwoZY2FuY2VsX29yZGVyX2J5X2NsaWVudF9pZBgsIAEoCzIiLm5vcmQuQWN0aW9uLkNhbmNlbE9yZGVyQnlDbGllbnRJZEgAEjYKD2V4ZWN1dGVfdHJpZ2dlchgtIAEoCzIbLm5vcmQuQWN0aW9uLkV4ZWN1dGVUcmlnZ2VySAASPwoUc2V0X2JhY2tzdG9wX2FjY291bnQYLiABKAsyHy5ub3JkLkFjdGlvbi5TZXRCYWNrc3RvcEFjY291bnRIABIwCgxlZGl0X3RyaWdnZXIYLyABKAsyGC5ub3JkLkFjdGlvbi5FZGl0VHJpZ2dlckgAEh4KBmF0b21pYxgwIAEoCzIMLm5vcmQuQXRvbWljSAASKAoFYWRtaW4YMSABKAsyFy5ub3JkLlN0YWdlZEFkbWluQWN0aW9uSAASMAoMY2xlYXJfbWFya2V0GDIgASgLMhgubm9yZC5BY3Rpb24uQ2xlYXJNYXJrZXRIABIyChF2YXVsdF9zeW5jX2Vwb2Nocxg1IAEoCzIVLm5vcmQuVmF1bHRTeW5jRXBvY2hzSAASKwoNdmF1bHRfZGVwb3NpdBg2IAEoCzISLm5vcmQuVmF1bHREZXBvc2l0SAASLQoOdmF1bHRfd2l0aGRyYXcYNyABKAsyEy5ub3JkLlZhdWx0V2l0aGRyYXdIABIjCglhdG9taWNfdjIYOCABKAsyDi5ub3JkLkF0b21pY1YySAASUQoecHl0aF9sYXplcl9zZXRfdHJ1c3RlZF9zaWduZXJzGDkgASgLMicubm9yZC5BY3Rpb24uUHl0aExhemVyU2V0VHJ1c3RlZFNpZ25lcnNIABJJChpweXRoX2xhemVyX3NldF9mZWVkX3N5bWJvbBg6IAEoCzIjLm5vcmQuQWN0aW9uLlB5dGhMYXplclNldEZlZWRTeW1ib2xIABJNChxweXRoX2xhemVyX3ByaWNlX2ZlZWRfdXBkYXRlGDsgASgLMiUubm9yZC5BY3Rpb24uUHl0aExhemVyUHJpY2VGZWVkVXBkYXRlSAASNgoPcmVmcmVzaF9zZXNzaW9uGDwgASgLMhsubm9yZC5BY3Rpb24uUmVmcmVzaFNlc3Npb25IABI9ChNzZWxmX3Jldm9rZV9zZXNzaW9uGD0gASgLMh4ubm9yZC5BY3Rpb24uU2VsZlJldm9rZVNlc3Npb25IABrjAQoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBIWCg5zZXNzaW9uX3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDEkEKEXNpZ25hdHVyZV9mcmFtaW5nGAQgASgOMiEubm9yZC5BY3Rpb24uVXNlclNpZ25hdHVyZUZyYW1pbmdIAIgBARIdChByZWZyZXNoX2RlYWRsaW5lGAUgASgDSAGIAQFCFAoSX3NpZ25hdHVyZV9mcmFtaW5nQhMKEV9yZWZyZXNoX2RlYWRsaW5lGosBCgtDcmVhdGVUb2tlbhIWCg50b2tlbl9kZWNpbWFscxgBIAEoDRISCgp3ZWlnaHRfYnBzGAMgASgNEhMKC3ZpZXdfc3ltYm9sGAQgASgJEhUKDW9yYWNsZV9zeW1ib2wYBSABKAkSEAoIc29sX2FkZHIYBiABKAwSEgoKYWNsX3B1YmtleRgHIAEoDBoxChxTZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRouChlTZXRNYXJrZXRNb2RlQ0xPQlBvc3RPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRomChFTZXRNYXJrZXRNb2RlQ0xPQhIRCgltYXJrZXRfaWQYASABKA0a7gEKDENyZWF0ZU1hcmtldBIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEg8KB2ltZl9icHMYAyABKA0SDwoHY21mX2JwcxgEIAEoDRIPCgdtbWZfYnBzGAUgASgNEiUKC21hcmtldF90eXBlGAYgASgOMhAubm9yZC5NYXJrZXRUeXBlEhMKC3ZpZXdfc3ltYm9sGAcgASgJEhUKDW9yYWNsZV9zeW1ib2wYCCABKAkSFQoNYmFzZV90b2tlbl9pZBgJIAEoDRISCgphY2xfcHVia2V5GAogASgMGqoECgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAYgBARIeChFzZW5kZXJfYWNjb3VudF9pZBgiIAEoDUgCiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgjIAEoBEgDiAEBEj0KFXNlbGZfdHJhZGVfcHJldmVudGlvbhgkIAEoDjIZLm5vcmQuU2VsZlRyYWRlUHJldmVudGlvbkgEiAEBEiEKCHJlZmVycmVyGCUgASgLMgoubm9yZC5VMTI4SAWIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbkILCglfcmVmZXJyZXIaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGnoKFUNhbmNlbE9yZGVyQnlDbGllbnRJZBISCgpzZXNzaW9uX2lkGAEgASgEEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBBIeChFzZW5kZXJfYWNjb3VudF9pZBgDIAEoDUgAiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZBpvCgdEZXBvc2l0EhQKDGFjdGlvbl9ub25jZRgBIAEoBBISCgp0b2tlbl9hZGRyGAIgASgMEg4KBmFtb3VudBgDIAEoBBITCgt1c2VyX3B1YmtleRgEIAEoDBIVCg1zZW5kZXJfcHVia2V5GAUgASgMGmoKCFdpdGhkcmF3EhAKCHRva2VuX2lkGAEgASgNEhIKCnNlc3Npb25faWQYAiABKAQSDgoGYW1vdW50GAMgASgEEhgKC2Rlc3RfcHVia2V5GAQgASgMSACIAQFCDgoMX2Rlc3RfcHVia2V5Gl0KGFB5dGhTZXRXb3JtaG9sZUd1YXJkaWFucxIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMEhIKCmFjbF9wdWJrZXkYAyABKAwaVQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMEhIKCmFjbF9wdWJrZXkYAyABKAwaLwoTUHl0aFByaWNlRmVlZFVwZGF0ZRIYChByYXdfcHl0aG5ldF9kYXRhGAEgASgMGlIKGFB5dGhMYXplclByaWNlRmVlZFVwZGF0ZRIPCgdwYXlsb2FkGAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDBISCgpwdWJsaWNfa2V5GAMgASgMGmcKGlB5dGhMYXplclNldFRydXN0ZWRTaWduZXJzEhIKCmFjbF9wdWJrZXkYASABKAwSNQoPdHJ1c3RlZF9zaWduZXJzGAIgAygLMhwubm9yZC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyGqsBChZQeXRoTGF6ZXJTZXRGZWVkU3ltYm9sEhIKCmFjbF9wdWJrZXkYASABKAwSQgoFZmVlZHMYAiADKAsyMy5ub3JkLkFjdGlvbi5QeXRoTGF6ZXJTZXRGZWVkU3ltYm9sLkZlZWRTeW1ib2xJbnB1dBo5Cg9GZWVkU3ltYm9sSW5wdXQSDwoHZmVlZF9pZBgBIAEoDRIVCg1vcmFjbGVfc3ltYm9sGAIgASgJGiMKDVJldm9rZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoBBo0Cg5SZWZyZXNoU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxonChFTZWxmUmV2b2tlU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEGhsKBVBhdXNlEhIKCmFjbF9wdWJrZXkYASABKAwaHQoHVW5wYXVzZRISCgphY2xfcHVia2V5GAEgASgMGjwKElNldEJhY2tzdG9wQWNjb3VudBISCgphY2xfcHVia2V5GAEgASgMEhIKCmFjY291bnRfaWQYAiABKA0a+QEKCVJlY2lwaWVudBIxCgdzcGVjaWFsGAEgASgLMh4ubm9yZC5BY3Rpb24uUmVjaXBpZW50LlNwZWNpYWxIABItCgVvd25lZBgCIAEoCzIcLm5vcmQuQWN0aW9uLlJlY2lwaWVudC5Pd25lZEgAEjEKB3Vub3duZWQYAyABKAsyHi5ub3JkLkFjdGlvbi5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUanwEKCFRyYW5zZmVyEhIKCnNlc3Npb25faWQYASABKAQSFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIyCg10b19hY2NvdW50X2lkGAggASgLMhYubm9yZC5BY3Rpb24uUmVjaXBpZW50SACIAQFCEAoOX3RvX2FjY291bnRfaWQaWwoQRmVlVmF1bHRUcmFuc2ZlchISCgphY2xfcHVia2V5GAEgASgMEhEKCXJlY2lwaWVudBgCIAEoDRIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQavAEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIkCgd0cmlnZ2VyGAIgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgDIAEoDjIMLm5vcmQuSW50ZW50EhcKCmFjY291bnRfaWQYCiABKA1IAIgBARIhCghyZWZlcnJlchgLIAEoCzIKLm5vcmQuVTEyOEgBiAEBQg0KC19hY2NvdW50X2lkQgsKCV9yZWZlcnJlchqHAQoLRWRpdFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBISCgp0cmlnZ2VyX2lkGAIgASgEEigKC25ld190cmlnZ2VyGAMgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBpyCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhIKCnRyaWdnZXJfaWQYAyABKAQSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGkUKCkFkZEZlZVRpZXISEgoKYWNsX3B1YmtleRgBIAEoDBIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaVAoNVXBkYXRlRmVlVGllchIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcSEgoKYWNsX3B1YmtleRgDIAEoDBpLChJVcGRhdGVBY2NvdW50c1RpZXISDwoHdGllcl9pZBgBIAEoDRIQCghhY2NvdW50cxgCIAMoDRISCgphY2xfcHVia2V5GAMgASgMGl8KCVVwZGF0ZUFjbBISCgphY2xfcHVia2V5GAEgASgMEhUKDXRhcmdldF9wdWJrZXkYAiABKAwSEgoKcm9sZXNfbWFzaxgDIAEoDRITCgtyb2xlc192YWx1ZRgEIAEoDRo1CgxGcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aNwoOVW5mcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aTQoLQ2xlYXJNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0SFwoPY2xlYXJhbmNlX3ByaWNlGAMgASgEGmEKDkV4ZWN1dGVUcmlnZ2VyEhQKDGV4ZWN1dG9yX3NpZBgBIAEoBBISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRISCgp0cmlnZ2VyX2lkGAQgASgEGkEKEFRha2VBbGxQb3NpdGlvbnMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIZChF0YXJnZXRfYWNjb3VudF9pZBgCIAEoDSI3ChRVc2VyU2lnbmF0dXJlRnJhbWluZxIHCgNIRVgQABIWChJTT0xBTkFfVFJBTlNBQ1RJT04QAUIGCgRraW5kIstCCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI4Cg50cmFkZV9vcl9wbGFjZRgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI3Cg9zZXNzaW9uX3Jldm9rZWQYLCABKAsyHC5ub3JkLlJlY2VpcHQuU2Vzc2lvblJldm9rZWRIABImCgZwYXVzZWQYLSABKAsyFC5ub3JkLlJlY2VpcHQuUGF1c2VkSAASKgoIdW5wYXVzZWQYLiABKAsyFi5ub3JkLlJlY2VpcHQuVW5wYXVzZWRIABIwCgt0cmFuc2ZlcnJlZBgvIAEoCzIZLm5vcmQuUmVjZWlwdC5UcmFuc2ZlcnJlZEgAEjMKDXRyaWdnZXJfYWRkZWQYQCABKAsyGi5ub3JkLlJlY2VpcHQuVHJpZ2dlckFkZGVkSAASNwoPdHJpZ2dlcl9yZW1vdmVkGEEgASgLMhwubm9yZC5SZWNlaXB0LlRyaWdnZXJSZW1vdmVkSAASLAoGYXRvbWljGEMgASgLMhoubm9yZC5SZWNlaXB0LkF0b21pY1Jlc3VsdEgAEkIKFW1hcmtldF9mcmVlemVfdXBkYXRlZBhEIAEoCzIhLm5vcmQuUmVjZWlwdC5NYXJrZXRGcmVlemVVcGRhdGVkSAASNAoOZmVlX3RpZXJfYWRkZWQYRSABKAsyGi5ub3JkLlJlY2VpcHQuRmVlVGllckFkZGVkSAASOAoQZmVlX3RpZXJfdXBkYXRlZBhGIAEoCzIcLm5vcmQuUmVjZWlwdC5GZWVUaWVyVXBkYXRlZEgAEkIKFWFjY291bnRzX3RpZXJfdXBkYXRlZBhHIAEoCzIhLm5vcmQuUmVjZWlwdC5BY2NvdW50c1RpZXJVcGRhdGVkSAASLwoLYWNsX3VwZGF0ZWQYSCABKAsyGC5ub3JkLlJlY2VpcHQuQWNsVXBkYXRlZEgAEkIKFWZlZV92YXVsdF90cmFuc2ZlcnJlZBhJIAEoCzIhLm5vcmQuUmVjZWlwdC5GZWVWYXVsdFRyYW5zZmVycmVkSAASOQoQdHJpZ2dlcl9leGVjdXRlZBhKIAEoCzIdLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRXhlY3V0ZWRIABJJChl0YWtlX2FsbF9wb3NpdGlvbnNfcmVzdWx0GEsgASgLMiQubm9yZC5SZWNlaXB0LlRha2VBbGxQb3NpdGlvbnNSZXN1bHRIABJAChRiYWNrc3RvcF9hY2NvdW50X3NldBhMIAEoCzIgLm5vcmQuUmVjZWlwdC5CYWNrc3RvcEFjY291bnRTZXRIABI1Cg50cmlnZ2VyX2VkaXRlZBhNIAEoCzIbLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRWRpdGVkSAASMQoNdmF1bHRfY3JlYXRlZBhOIAEoCzIYLm5vcmQuQ3JlYXRlVmF1bHRSZWNlaXB0SAASPgoUdmF1bHRfY29uZmlnX3VwZGF0ZWQYTyABKAsyHi5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnUmVjZWlwdEgAEj0KFXZhdWx0X21hbmFnZXJfdXBkYXRlZBhQIAEoCzIcLm5vcmQuU2V0VmF1bHRNYW5hZ2VyUmVjZWlwdEgAEjsKE3ZhdWx0X2Vwb2Noc19zeW5jZWQYUSABKAsyHC5ub3JkLlZhdWx0U3luY0Vwb2Noc1JlY2VpcHRIABI0Cg92YXVsdF9kZXBvc2l0ZWQYUiABKAsyGS5ub3JkLlZhdWx0RGVwb3NpdFJlY2VpcHRIABI1Cg92YXVsdF93aXRoZHJhd24YUyABKAsyGi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0SAASPgoTY2xlYXJfbWFya2V0X3Jlc3VsdBhUIAEoCzIfLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldFJlc3VsdEgAElQKH3B5dGhfbGF6ZXJfb3JhY2xlX3VwZGF0ZV9yZXN1bHQYVSABKAsyKS5ub3JkLlJlY2VpcHQuUHl0aExhemVyT3JhY2xlVXBkYXRlUmVzdWx0SAASXwolcHl0aF9sYXplcl90cnVzdGVkX3NpZ25lcnNfc2V0X3Jlc3VsdBhWIAEoCzIuLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyc1NldFJlc3VsdEgAElcKIXB5dGhfbGF6ZXJfZmVlZF9zeW1ib2xfc2V0X3Jlc3VsdBhXIAEoCzIqLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0SAASVQofcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uX3Jlc3VsdBhYIAEoCzIqLm5vcmQuUmVjZWlwdC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uUmVzdWx0SAASPgoTbWFya2V0X21vZGVfdXBkYXRlZBhZIAEoCzIfLm5vcmQuUmVjZWlwdC5NYXJrZXRNb2RlVXBkYXRlZEgAEiwKDnJmcV9tYWtlcnNfc2V0GFogASgLMhIubm9yZC5SZnFNYWtlcnNTZXRIABI7ChFzZXNzaW9uX3JlZnJlc2hlZBhbIAEoCzIeLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmVmcmVzaGVkSAASQAoUc2VsZl9zZXNzaW9uX3Jldm9rZWQYXCABKAsyIC5ub3JkLlJlY2VpcHQuU2VsZlNlc3Npb25SZXZva2VkSAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpwCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0SEQoJbWFrZXJfZmVlGAcgASgEEhEKCXRha2VyX2ZlZRgIIAEoBBptChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQSDgoGZXhwaXJ5GAIgASgDEh0KEHJlZnJlc2hfZGVhZGxpbmUYAyABKANIAIgBAUITChFfcmVmcmVzaF9kZWFkbGluZRpMChBDYW5jZWxsZWRUcmlnZ2VyEhIKCmFjY291bnRfaWQYASABKA0SJAoHdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZBraAQoLT3JkZXJVcGRhdGUSMAoGcmVhc29uGAEgASgOMiAubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlLlJlYXNvbhISCgphY2NvdW50X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEhYKDnJlbWFpbmluZ19zaXplGAQgASgEEhYKDmNhbmNlbGxlZF9zaXplGAUgASgEEg0KBXByaWNlGAYgASgEIjQKBlJlYXNvbhIPCgtSRURVQ0VfT05MWRAAEhkKFVNFTEZfVFJBREVfUFJFVkVOVElPThABGvcCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARI6ChJjYW5jZWxsZWRfdHJpZ2dlcnMYBSADKAsyHi5ub3JkLlJlY2VpcHQuQ2FuY2VsbGVkVHJpZ2dlchIwCg1vcmRlcl91cGRhdGVzGAYgAygLMhkubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlEjEKCXBsYWNlbWVudBgHIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZW1lbnRSZWNlaXB0QgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGnoKHFJlZHVjZU9yZGVyTGlxdWlkYXRpb25SZXN1bHQSNgoOdHJhZGVfb3JfcGxhY2UYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdBIiCgZhY3Rpb24YAiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZRqvAQoQUGxhY2VtZW50UmVjZWlwdBIhCgRyb2xlGAEgASgOMhMubm9yZC5QbGFjZW1lbnRSb2xlEjgKB2FjY291bnQYAiABKAsyJS5ub3JkLlJlY2VpcHQuQWNjb3VudFBsYWNlbWVudFJlY2VpcHRIABI0CgV2YXVsdBgDIAEoCzIjLm5vcmQuUmVjZWlwdC5WYXVsdFBsYWNlbWVudFJlY2VpcHRIAEIICgZ0YXJnZXQaGQoXQWNjb3VudFBsYWNlbWVudFJlY2VpcHQaTAoVVmF1bHRQbGFjZW1lbnRSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEiEKBmhlYWx0aBgCIAEoCzIRLm5vcmQuVmF1bHRIZWFsdGga/gEKD1RyaWdnZXJFeGVjdXRlZBITCgtleGVjdXRvcl9pZBgBIAEoDRISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRIeCgd0cmlnZ2VyGAQgASgLMg0ubm9yZC5UcmlnZ2VyEhIKCnRyaWdnZXJfaWQYCCABKAQSMQoHc3VjY2VzcxgFIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASKQoHZmFpbHVyZRgGIAEoDjIWLm5vcmQuVHJpZ2dlckV4ZWNFcnJvckgAEhMKCWNhbmNlbGxlZBgHIAEoCEgAQggKBnN0YXR1cxoyCg5UYWtlQWxsQmFsYW5jZRIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQadwoPVGFrZUFsbFBvc2l0aW9uEhEKCW1hcmtldF9pZBgBIAEoDRIRCgliYXNlX3NpemUYAiABKAMSGAoQc2V0dGxlbWVudF9wcmljZRgDIAEoBBIkChBiYW5rcnVwdGN5X3F1b3RlGAQgASgLMgoubm9yZC5VMTI4GlMKE1Rha2VBbGxPcmRlclVwZGF0ZXMSEQoJbWFya2V0X2lkGAEgASgNEikKBm9yZGVycxgCIAMoCzIZLm5vcmQuUmVjZWlwdC5PcmRlclVwZGF0ZRraAQoWVGFrZUFsbFBvc2l0aW9uc1Jlc3VsdBIYChB0YWtlcl9hY2NvdW50X2lkGAEgASgNEjQKDnRha2VuX2JhbGFuY2VzGAMgAygLMhwubm9yZC5SZWNlaXB0LlRha2VBbGxCYWxhbmNlEjYKD3Rha2VuX3Bvc2l0aW9ucxgEIAMoCzIdLm5vcmQuUmVjZWlwdC5UYWtlQWxsUG9zaXRpb24SOAoNb3JkZXJfdXBkYXRlcxgFIAMoCzIhLm5vcmQuUmVjZWlwdC5UYWtlQWxsT3JkZXJVcGRhdGVzGnMKGUNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXISEgoKYWNjb3VudF9pZBgBIAEoDRIQCghvcmRlcl9pZBgCIAEoBBIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBAUISChBfY2xpZW50X29yZGVyX2lkGq0BChlDbGVhck1hcmtldENsb3NlZFBvc2l0aW9uEhIKCmFjY291bnRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEhgKEHNldHRsZW1lbnRfcHJpY2UYAyABKAQSGQoFcXVvdGUYBCABKAsyCi5ub3JkLlUxMjgSGQoRdHJhZGluZ19wbmxfZGVsdGEYBSABKAMSGQoRZnVuZGluZ19wbmxfZGVsdGEYBiABKAMaxQEKEUNsZWFyTWFya2V0UmVzdWx0EhEKCW1hcmtldF9pZBgBIAEoDRIXCg9jbGVhcmFuY2VfcHJpY2UYBSABKAQSQQoQY2FuY2VsbGVkX29yZGVycxgDIAMoCzInLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldENhbmNlbGxlZE9yZGVyEkEKEGNsb3NlZF9wb3NpdGlvbnMYBCADKAsyJy5ub3JkLlJlY2VpcHQuQ2xlYXJNYXJrZXRDbG9zZWRQb3NpdGlvbhqeAQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBARIxCglwbGFjZW1lbnQYBCABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VtZW50UmVjZWlwdEISChBfY2xpZW50X29yZGVyX2lkGnAKDURlcG9zaXRSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEhIKCmFjY291bnRfaWQYAyABKA0SFAoMdXNlcl9jcmVhdGVkGAQgASgIEhMKC3VzZXJfcHVia2V5GAUgASgMGkMKEUluc2VydFRva2VuUmVzdWx0EhIKCmNoYWluX2FkZHIYASABKAwSGgoFdG9rZW4YAiABKAsyCy5ub3JkLlRva2VuGjIKEkluc2VydE1hcmtldFJlc3VsdBIcCgZtYXJrZXQYASABKAsyDC5ub3JkLk1hcmtldBp5Cg5XaXRoZHJhd1Jlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSDwoHYmFsYW5jZRgDIAEoBBISCgphY2NvdW50X2lkGAQgASgNEgsKA2ZlZRgFIAEoBBITCgt1c2VyX3B1YmtleRgGIAEoDBpAChZPcmFjbGVTeW1ib2xGZWVkUmVzdWx0EhUKDW9yYWNsZV9zeW1ib2wYASABKAkSDwoHZmVlZF9pZBgCIAEoDBonChJPcmFjbGVVcGRhdGVSZXN1bHQSEQoJdGltZXN0YW1wGAEgASgDGjcKG1B5dGhMYXplck9yYWNsZVVwZGF0ZVJlc3VsdBIYChB0aW1lc3RhbXBfbWlsbGlzGAEgASgEGlkKIFB5dGhMYXplclRydXN0ZWRTaWduZXJzU2V0UmVzdWx0EjUKD3RydXN0ZWRfc2lnbmVycxgBIAMoCzIcLm5vcmQuUHl0aExhemVyVHJ1c3RlZFNpZ25lchqaAQocUHl0aExhemVyRmVlZFN5bWJvbFNldFJlc3VsdBJECgVmZWVkcxgBIAMoCzI1Lm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0LkZlZWRTeW1ib2waNAoKRmVlZFN5bWJvbBIPCgdmZWVkX2lkGAEgASgNEhUKDW9yYWNsZV9zeW1ib2wYAiABKAkaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBoQCg5TZXNzaW9uUmV2b2tlZBoUChJTZWxmU2Vzc2lvblJldm9rZWQaNgoQU2Vzc2lvblJlZnJlc2hlZBISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxoICgZQYXVzZWQaCgoIVW5wYXVzZWQaKAoSQmFja3N0b3BBY2NvdW50U2V0EhIKCmFjY291bnRfaWQYASABKA0a/AEKCVJlY2lwaWVudBIyCgdzcGVjaWFsGAEgASgLMh8ubm9yZC5SZWNlaXB0LlJlY2lwaWVudC5TcGVjaWFsSAASLgoFb3duZWQYAiABKAsyHS5ub3JkLlJlY2VpcHQuUmVjaXBpZW50Lk93bmVkSAASMgoHdW5vd25lZBgDIAEoCzIfLm5vcmQuUmVjZWlwdC5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUaowEKC1RyYW5zZmVycmVkEhcKD2Zyb21fYWNjb3VudF9pZBgBIAEoDRIrCgp0b19hY2NvdW50GAIgASgLMhcubm9yZC5SZWNlaXB0LlJlY2lwaWVudBIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQSFwoPYWNjb3VudF9jcmVhdGVkGAUgASgIEhMKC3VzZXJfcHVia2V5GAYgASgMGkoKE0ZlZVZhdWx0VHJhbnNmZXJyZWQSEQoJcmVjaXBpZW50GAEgASgNEhAKCHRva2VuX2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBp6CgxUcmlnZ2VyQWRkZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQafAoOVHJpZ2dlclJlbW92ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQagAEKDVRyaWdnZXJFZGl0ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEicKEHByZXZpb3VzX3RyaWdnZXIYAyABKAsyDS5ub3JkLlRyaWdnZXISHgoHdHJpZ2dlchgEIAEoCzINLm5vcmQuVHJpZ2dlcho4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgakAEKEU1hcmtldE1vZGVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIlCgttYXJrZXRfbW9kZRgCIAEoDjIQLm5vcmQuTWFya2V0TW9kZRJBChBjYW5jZWxsZWRfb3JkZXJzGAMgAygLMicubm9yZC5SZWNlaXB0LkNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXIaPwoMRmVlVGllckFkZGVkEiMKBmNvbmZpZxgBIAEoCzITLm5vcmQuRmVlVGllckNvbmZpZxIKCgJpZBgCIAEoDRpBCg5GZWVUaWVyVXBkYXRlZBIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaOAoTQWNjb3VudHNUaWVyVXBkYXRlZBIPCgd0aWVyX2lkGAEgASgNEhAKCGFjY291bnRzGAIgAygNGmAKCkFjbFVwZGF0ZWQSEgoKYWNsX3B1YmtleRgBIAEoDBISCgpyb2xlc19tYXNrGAIgASgEEhUKDXRhcmdldF9wdWJrZXkYAyABKAwSEwoLcm9sZXNfdmFsdWUYBCABKAQa7AMKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABIzCg10cmlnZ2VyX2FkZGVkGAMgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBgEIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEjUKDnRyaWdnZXJfZWRpdGVkGAUgASgLMhsubm9yZC5SZWNlaXB0LlRyaWdnZXJFZGl0ZWRIABJOChhyZWR1Y2Vfb3JkZXJfbGlxdWlkYXRpb24YBiABKAsyKi5ub3JkLlJlY2VpcHQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvblJlc3VsdEgAEioKCnJmcV9yZXN1bHQYByABKAsyFC5ub3JkLlBsYWNlUkZRUmVzdWx0SAASLgoPcmZxX2ZpbGxfcmVzdWx0GAggASgLMhMubm9yZC5GaWxsUkZRUmVzdWx0SABCBwoFaW5uZXIaSAoMQXRvbWljUmVzdWx0EjgKB3Jlc3VsdHMYASADKAsyJy5ub3JkLlJlY2VpcHQuQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZEIGCgRraW5kKhgKBFNpZGUSBwoDQVNLEAASBwoDQklEEAEqHwoKTWFya2V0TW9kZRIICgRDTE9CEAASBwoDUkZREAEqYwoMTWFya2V0UmVnaW1lEhgKFE1BUktFVF9SRUdJTUVfTk9STUFMEAASGwoXTUFSS0VUX1JFR0lNRV9QT1NUX09OTFkQARIcChhNQVJLRVRfUkVHSU1FX1RSQURFX09OTFkQAiotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKiQKBkludGVudBIMCghERUNSRUFTRRAAEgwKCElOQ1JFQVNFEAEqTwoIRmlsbE1vZGUSCQoFTElNSVQQABINCglQT1NUX09OTFkQARIXChNJTU1FRElBVEVfT1JfQ0FOQ0VMEAISEAoMRklMTF9PUl9LSUxMEAMqrgEKDVBsYWNlbWVudFJvbGUSIAocUExBQ0VNRU5UX1JPTEVfQUNDT1VOVF9PV05FUhAAEiAKHFBMQUNFTUVOVF9ST0xFX1ZBVUxUX01BTkFHRVIQARIeChpQTEFDRU1FTlRfUk9MRV9TVVBFUl9BRE1JThACEhoKFlBMQUNFTUVOVF9ST0xFX1RSSUdHRVIQAxIdChlQTEFDRU1FTlRfUk9MRV9MSVFVSURBVE9SEAQqMQoTU2VsZlRyYWRlUHJldmVudGlvbhIICgROT05FEAASEAoMRVhQSVJFX01BS0VSEAEqJgoKTWFya2V0VHlwZRIICgRTUE9UEAASDgoKUEVSUEVUVUFMUxABKn0KEFRyaWdnZXJFeGVjRXJyb3ISDwoLTk9fUE9TSVRJT04QABITCg9QTEFOTklOR19GQUlMRUQQARIOCgpCQU5LUlVQVENZEAISFQoRUklTS19DSEVDS19GQUlMRUQQAxIcChhSRURVQ0VfT05MWV9DSEVDS19GQUlMRUQQBCofCg5TcGVjaWFsQWNjb3VudBINCglGRUVfVkFVTFQQACpdCgtWYXVsdFN0YXR1cxIXChNWQVVMVF9TVEFUVVNfQUNUSVZFEAASHAoYVkFVTFRfU1RBVFVTX0RFUklTS19PTkxZEAESFwoTVkFVTFRfU1RBVFVTX0ZST1pFThACKugpCgVFcnJvchINCglEVVBMSUNBVEUQABIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSDgoKQVJJVEhNRVRJQxALEhcKE0FSSVRITUVUSUNfT1ZFUkZMT1cQDBIYChRBUklUSE1FVElDX1VOREVSRkxPVxANEh8KG0FSSVRITUVUSUNfRElWSVNJT05fQllfWkVSTxAOEhoKFktFWV9BTFJFQURZX1JFR0lTVEVSRUQQDxIcChhVUERBVEVfVElNRVNUQU1QX0lOX1BBU1QQERIYChRUT09fTUFOWV9PUEVOX09SREVSUxASEh0KGVdJVEhEUkFXX0FNT1VOVF9UT09fU01BTEwQFRIpCiVTT1VSQ0VfQU5EX1RBUkdFVF9TSE9VTERfTk9UX0JFX0VRVUFMEBgSEgoOREVDT0RFX0ZBSUxVUkUQIBIgChxERUNPREVfRkFJTFVSRV9MRU5HVEhfUFJFRklYECESFgoSREVDT0RFX0ZBSUxVUkVfUkFXECISGQoVREVDT0RFX0ZBSUxVUkVfRE9NQUlOECMSHwobVVBEQVRFX1BVQkxJU0hfVElNRV9JTl9QQVNUECQSCwoHU0VTU0lPThAwEh8KG1NFU1NJT05fUkVGUkVTSF9OT1RfRU5BQkxFRBAxEioKJlNFU1NJT05fUkVGUkVTSF9ERUFETElORV9CRUZPUkVfRVhQSVJZEDISFwoTUFlUSF9GRUVEX05PVF9BRERFRBBdEhUKEVBZVEhfRkVFRF9NSVNTSU5HEF4SGwoXUFlUSF9GRUVEX0FMUkVBRFlfQURERUQQXxIjCh9QWVRIX0dVQVJESUFOX1NFVF9VTklOSVRJQUxJWkVEEGASHQoZUFlUSF9HVUFSRElBTl9TRVRfSU5WQUxJRBBhEiMKH1BZVEhfRkVFRF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQYhIgChxQWVRIX0ZFRURfUFJJQ0VfT1VUX09GX1JBTkdFEGMSIwofUFlUSF9GRUVEX1ZBUklBTkNFX09VVF9PRl9SQU5HRRBkEjUKMVBZVEhfR1VBUkRJQU5fU0VUX0FORF9QWVRIX1NJR05BVFVSRV9ET19OT1RfTUFUQ0gQZRIcChhJTlZBTElEX1RPS0VOX1BBUkFNRVRFUlMQZhIcChhJTkRFWF9QUklDRV9PVVRfT0ZfUkFOR0UQZxIfChtJTkRFWF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQaBIZChVJTlZBTElEX1NUQVRFX1ZFUlNJT04QaRITCg9JTlZBTElEX01BUkdJTlMQbBIhCh1NQVJLRVRfREVDSU1BTFNfRVhDRUVEX0xJTUlUUxBtEhMKD1RPT19NQU5ZX1RPS0VOUxBuEggKBFRJRVIQcxIZChVUSUVSX0ZFRV9PVVRfT0ZfUkFOR0UQdBIYChRUSUVSX0lEX09VVF9PRl9SQU5HRRB1EhIKDlRJRVJfTk9UX0ZPVU5EEHYSFAoQRlVORElOR19PVkVSRkxPVxB7EjcKM0NBTl9SRURVQ0VfUE9TSVRJT05fT05MWV9JRl9BTExfT1JERVJTX0FSRV9DQU5DRUxFRBB8EhcKE1VORVhQRUNURURfVE9LRU5fSUQQfxIWChFSRVBFQVRFRF9PUkRFUl9JRBCAARIeChlDTElFTlRfT1JERVJfSURfVE9PX0xBUkdFEIEBEhQKD1RPS0VOX05PVF9SRUFEWRCCARIdChhUT0tFTl9BTFJFQURZX1JFR0lTVEVSRUQQgwESIQocSU1NRURJQVRFX09SREVSX0dPVF9OT19GSUxMUxCFARIZChRGQUlMRURfVE9fRklMTF9MSU1JVBCGARIwCitQT1NUX09OTFlfTVVTVF9OT1RfRklMTF9BTllfT1BQT1NJVEVfT1JERVJTEIcBEgwKB0lOVkFMSUQQiAESEAoLTUFJTlRFTkFOQ0UQiQESGgoVTUlOSU1VTV9TSVpFX0RFQ0lNQUxTEIoBEjIKLVBBUkFNRVRFUlNfV0lMTF9DUkVBVEVfTk9OX09QRVJBVElPTkFMX01BUktFVBCLARIiCh1PTkxZX0lNTUVESUFURV9PUkRFUlNfQUxMT1dFRBCMARIbChZUT09fTUFOWV9VU0VSX0FDQ09VTlRTEI0BEhYKEUFDQ09VTlRfTk9UX0ZPVU5EEI4BEhoKFUFDQ09VTlRfSU5WQUxJRF9PV05FUhCPARIbChZTVUJBQ1RJT05fT1VUX09GX1JBTkdFEJABEhEKDERVU1RfQUNDT1VOVBCRARIMCgdCQUxBTkNFEKABEh0KGEJBTEFOQ0VfREVQT1NJVF9PVkVSRkxPVxChARIcChdCQUxBTkNFX0NIQU5HRV9PVkVSRkxPVxCiARIiCh1CQUxBTkNFX0NIQU5HRV9MSU1JVF9FWENFRURFRBCjARIZChRCQUxBTkNFX0lOU1VGRklDSUVOVBCkARIeChlVTkFVVEhFTlRJQ0FURURfTDFfQUNUSU9OEKUBEh0KGEVOQ09ERURfQUNUSU9OX1RPT19MQVJHRRCmARIMCgdUUklHR0VSEKgBEhoKFVRSSUdHRVJfSU5WQUxJRF9QUklDRRCpARIWChFUUklHR0VSX05PVF9GT1VORBCqARIrCiZUUklHR0VSX09OTFlfREVDUkVBU0VfT1JERVJTX1NVUFBPUlRFRBCrARIoCiNUUklHR0VSX01BWF9TSVpFX1BMQUNFTUVOVF9FWENFRURFRBCsARIYChNUUklHR0VSX05PVF9DSEFOR0VEEK0BEg4KCVRJTUVTVEFNUBCwARIfChpUSU1FU1RBTVBfT1VUX09GX1RIUkVTSE9MRBCxARIUCg9USU1FU1RBTVBfU1RBTEUQsgESHAoYRVhQSVJZX1RJTUVTVEFNUF9JTl9QQVNUEBASJQogQkFOS1JVUFRDWV9JTlNVRkZJQ0lFTlRfQ09WRVJBR0UQuQESGQoUQkFOS1JVUFRDWV9OT1RfRk9VTkQQugESGwoWQkFOS1JVUFRDWV9OT1RfQUxMT1dFRBC7ARIVChBNQVJLRVRfTk9UX1JFQURZEMABEhIKDU1BUktFVF9GUk9aRU4QwQESEQoMTUFSS0VUX0VNUFRZEMIBEjAKK01BUktFVF9NT0RFX0RPRVNfTk9UX1NVUFBPUlRfVEhJU19PUEVSQVRJT04QwwESDQoIUE9TSVRJT04QyAESFwoSUE9TSVRJT05fTk9UX0ZPVU5EEMkBEhkKFFBPU0lUSU9OX1NUQVRFX09SREVSEMoBEh8KGlBPU0lUSU9OX1NUQVRFX09SREVSX1BSSUNFEMsBEh4KGVBPU0lUSU9OX1NUQVRFX09SREVSX1NJWkUQzAESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0lERRDNARIYChNQT1NJVElPTl9TSVpFX0xJTUlUEM4BEhgKE1BPU0lUSU9OX1NUQVRFX1BFUlAQzwESJAofUE9TSVRJT05fU1RBVEVfT1JERVJfREVMRUdBVElPThDQARIKCgVQUklDRRDRARIbChZTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OENkBEjAKK1NJR05BVFVSRV9WRVJJRklDQVRJT05fTUFMRk9STUVEX1BVQkxJQ19LRVkQ2gESKgolU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9JTlZBTElEX0xFTkdUSBDbARIJCgRSSVNLEOABEjQKL1JJU0tfREVMRUdBVElPTl9NRl9UT19CRV9MRVNTX1RIQU5fT1JfRVFVQUxfTU1GEOEBEiQKH1JJU0tfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9JTUYQ4gESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDjARI1CjBSSVNLX1VOSEVBTFRIWV9NRl9BTkRfUE9OX0FGVEVSX0JFVFRFUl9PRl9CRUZPUkUQ5AESKgolUklTS19UUkFERV9PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDlARIUCg9SSVNLX05PVF9FTk9VR0gQ5gESFAoPT1JERVJfRVhFQ1VUSU9OEPABEhoKFU9SREVSX0VYRUNVVElPTl9FTVBUWRDxARIhChxPUkRFUl9FWEVDVVRJT05fRklMTF9PUl9LSUxMEPIBEiMKHk9SREVSX0VYRUNVVElPTl9NSVNTSU5HX0xJTUlUUxDzARIiCh1PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19QUklDRRD0ARIfChpPUkRFUl9FWEVDVVRJT05fU0laRV9MSU1JVBD1ARIgChtPUkRFUl9FWEVDVVRJT05fTElNSVRfUFJJQ0UQ9gESHgoZT1JERVJfUkVEVUNFX0lTX1BPU1RfT05MWRD3ARIfChpPUkRFUl9FWEVDVVRJT05fU0VMTF9QUklDRRD4ARIlCiBPUkRFUl9TSVpFX0VYQ0VFRFNfUE9TSVRJT05fU0laRRD5ARIMCgdBVE9NSUNTEIACEigKI0FUT01JQ1NfVFJBREVTX0NBTk5PVF9GT0xMT1dfUExBQ0VTEIECEjAKK0FUT01JQ1NfQ0FOQ0VMU19DQU5OT1RfRk9MTE9XX1RSQURFU19QTEFDRVMQggISHQoYQVRPTUlDU19EVVBMSUNBVEVfQ0FOQ0VMEIMCEhgKE1JGUV9PUkRFUl9USU1FT1VURUQQ+gESJgohQUNUSU9OX1BPU0lUSU9OX1NIT1VMRF9CRV9DT1ZFUkVEEJECEhkKFEFDVElPTl9JTlZBTElEX05PTkNFEJICEikKJEFDVElPTl9QUk9QT1NFRF9QUklDRV9NVVNUX0JFX0hJR0hFUhCTAhIcChdBRE1JTl9ST0xFX0lOU1VGRklDSUVOVBCUAhIUCg9BRE1JTl9OT1RfRk9VTkQQlQISKQokVU5JUVVFX1NVUEVSX0FETUlOX0NBTk5PVF9CRV9SRU1PVkVEEJYCEh8KGlNVUEVSX0FETUlOX0FMUkVBRFlfRVhJU1RTEJcCEhUKEFRSSUdHRVJfQ09ORkxJQ1QQmAISGgoVVFJJR0dFUl9FRElUX0NPTkZMSUNUEJkCEhwKF1RSSUdHRVJfUkVNT1ZFX0NPTkZMSUNUEJoCEg0KCFRSQU5TRkVSEKACEi4KKVRSQU5TRkVSX1RPX1VOT1dORURfQUNDT1VOVF9JU19QUk9ISUJJVEVEEKECEiwKJ1RSQU5TRkVSX1RPX09XTkVEX0FDQ09VTlRfV0FTX1JFUVVFU1RFRBCiAhIKCgVWQVVMVBCoAhIUCg9WQVVMVF9OT1RfRk9VTkQQqQISHQoYVkFVTFRfQUNUSU9OX05PVF9BTExPV0VEEKoCEhkKFFZBVUxUX1NUQVRVU19JTlZBTElEEKsCEiUKIFZBVUxUX1JFRFVDRV9PTkxZX09SREVSX1JFUVVJUkVEEKwCEiYKIVZBVUxUX0FDVElPTl9XT1VMRF9ERUdSQURFX1NUQVRVUxCtAhIZChRWQVVMVF9VU0VSX05PVF9GT1VORBCuAhIdChhWQVVMVF9VU0VSX0hBU19OT19TSEFSRVMQrwISHAoXVkFVTFRfUEVSTUlTU0lPTl9ERU5JRUQQtgISEgoNVkFVTFRfREVQT1NJVBCwAhIxCixWQVVMVF9ERVBPU0lUX0JPT1RTVFJBUF9SRVFVSVJFU19FTVBUWV9WQVVMVBCxAhIfChpWQVVMVF9ERVBPU0lUX0NBUF9FWENFRURFRBCyAhIpCiRWQVVMVF9ERVBPU0lUX1JFUVVJUkVTX0FDVElWRV9TVEFUVVMQswISLwoqVkFVTFRfREVQT1NJVF9DQVBfQkVMT1dfQ1VSUkVOVF9SQVdfRVFVSVRZELQCEhwKF1ZBVUxUX0RFUE9TSVRfVE9PX1NNQUxMELUCEhMKDlZBVUxUX1dJVEhEUkFXELgCEh4KGVZBVUxUX0lOU1VGRklDSUVOVF9TSEFSRVMQuQISLgopVkFVTFRfV0lUSERSQVdfUkVRVUlSRVNfTk9OX0ZST1pFTl9TVEFUVVMQugISIgodVkFVTFRfTk9fQ0xBSU1BQkxFX1dJVEhEUkFXQUwQuwISJQogVkFVTFRfV0lUSERSQVdfUVVPVEVfVU5BVkFJTEFCTEUQvAISLQooVkFVTFRfRFVTVF9FWElUX1JFUVVJUkVTX0ZVTExfU0hBUkVfRVhJVBC9AhI1CjBWQVVMVF9MQVNUX1NIQVJFX1dJVEhEUkFXX1JFUVVJUkVTX0VNUFRZX0FDQ09VTlQQvgISKAojVkFVTFRfV0lUSERSQVdfUkVRVUlSRVNfTElWRV9TSEFSRVMQvwISEgoNVkFVTFRfQ09OVFJPTBDAAhIdChhWQVVMVF9FUE9DSF9OT1RfRUxJR0lCTEUQwQISMQosVkFVTFRfUFJFVklPVVNfRVBPQ0hfV0lUSERSQVdBTFNfTk9UX1BBWUFCTEUQwgISMgotVkFVTFRfRlJFRVpFX1RIUkVTSE9MRF9NVVNUX0VYQ0VFRF9QUk9URUNUSU9OEMMCEh0KGFZBVUxUX0NPTkZJR19QQVRDSF9FTVBUWRDEAhIoCiNWQVVMVF9OT19TVEFUVVNfVFJBTlNJVElPTl9SRVFVSVJFRBDFAhItCihWQVVMVF9GUk9aRU5fU1RBVFVTX1JFUVVJUkVTX1NVUEVSX0FETUlOEMYCEioKJVZBVUxUX05FV19DT05GSUdfV09VTERfREVHUkFERV9TVEFUVVMQxwISDgoJUkZRX0VSUk9SEMgCEhAKC1JGUV9USU1FT1VUEMkCEhQKD05PVF9JTVBMRU1FTlRFRBD0AxIXChJBQ1RJT05fTk9UX0FMTE9XRUQQ9QMSGAoTTk9UX1NVUFBPUlRFRF9JTlBVVBD2AxIMCgdEUk9QUEVEEOcHYgZwcm90bzM");
57299
+ var file_nord = /* @__PURE__ */ fileDesc("Cgpub3JkLnByb3RvEgRub3JkIh4KBFUxMjgSCgoCbG8YASABKAQSCgoCaGkYAiABKAQiqwEKCFJmcVRyYWRlEhsKDnRpbWVvdXRfbWlsbGlzGAEgASgNSACIAQESEQoJbWFya2V0X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEg0KBXByaWNlGAQgASgEEhgKEHRpbWVzdGFtcF9taWxsaXMYBSABKAMSIQoJZmlsbF90eXBlGAYgASgLMg4ubm9yZC5GaWxsVHlwZUIRCg9fdGltZW91dF9taWxsaXMiOQoLUGFydGlhbEZpbGwSFAoMbWluaW11bV9zaXplGAEgASgEEhQKDG1heGltdW1fc2l6ZRgCIAEoBCJ5CghGaWxsVHlwZRIbCg5pc19yZWR1Y2Vfb25seRgBIAEoCEgAiAEBEiwKDHBhcnRpYWxfZmlsbBgCIAEoCzIRLm5vcmQuUGFydGlhbEZpbGxIAYgBAUIRCg9faXNfcmVkdWNlX29ubHlCDwoNX3BhcnRpYWxfZmlsbCL3AQoMUmZxUGxhY2VPbmx5EhEKCW1hcmtldF9pZBgHIAEoDRIbCg50aW1lb3V0X21pbGxpcxgBIAEoDUgAiAEBEhwKD2NsaWVudF9vcmRlcl9pZBgCIAEoBEgBiAEBEg0KBXByaWNlGAMgASgEEhgKBHNpZGUYBCABKA4yCi5ub3JkLlNpZGUSDAoEYmFzZRgFIAEoBBIYChB0aW1lc3RhbXBfbWlsbGlzGAYgASgDEiEKCWZpbGxfdHlwZRgIIAEoCzIOLm5vcmQuRmlsbFR5cGVCEQoPX3RpbWVvdXRfbWlsbGlzQhIKEF9jbGllbnRfb3JkZXJfaWQiIwoMU2V0UmZxTWFrZXJzEhMKC2FjY291bnRfaWRzGAEgAygNIiUKEFNldE1hcmtldE1vZGVSRlESEQoJbWFya2V0X2lkGAEgASgNItMCCg9DcmVhdGVSZnFNYXJrZXQSMAoIZGVjaW1hbHMYASABKAsyHi5ub3JkLkNyZWF0ZVJmcU1hcmtldC5EZWNpbWFscxIuCgdtYXJnaW5zGAIgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuTWFyZ2lucxIuCgdzeW1ib2xzGAMgASgLMh0ubm9yZC5DcmVhdGVSZnFNYXJrZXQuU3ltYm9scxo5CghEZWNpbWFscxIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNGjwKB01hcmdpbnMSDwoHaW1mX2JwcxgDIAEoDRIPCgdjbWZfYnBzGAQgASgNEg8KB21tZl9icHMYBSABKA0aNQoHU3ltYm9scxITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJIpQBCg5SZnFUcmFkZUFjdGlvbhIQCghvcmRlcl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIcChRxdW90ZV90aW1lb3V0X21pbGxpcxgEIAEoDRITCgliYXNlX3NpemUYBSABKANIAEIKCghxdWFudGl0eUoECAYQByLbAgoPUmZxVHJhZGVSZWNlaXB0EhAKCG9yZGVyX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIwCgdzdWNjZXNzGAMgASgLMh0ubm9yZC5SZnFUcmFkZVJlY2VpcHQuU3VjY2Vzc0gAEjYKB2ZhaWx1cmUYBCABKA4yIy5ub3JkLlJmcVRyYWRlUmVjZWlwdC5GYWlsdXJlUmVhc29uSAAaggEKB1N1Y2Nlc3MSEAoIcXVvdGVfaWQYASABKAQSGAoEc2lkZRgCIAEoDjIKLm5vcmQuU2lkZRIYChBmaWxsZWRfYmFzZV9zaXplGAMgASgEEiIKDnF1b3RlX25vdGlvbmFsGAQgASgLMgoubm9yZC5VMTI4Eg0KBXByaWNlGAUgASgEIioKDUZhaWx1cmVSZWFzb24SCwoHVElNRU9VVBAAEgwKCFJFSkVDVEVEEAFCCAoGcmVzdWx0IjoKDlBsYWNlUkZRUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhYKDnRpbWVvdXRfbWlsbGlzGAIgASgNIk4KDFJGUUV4ZWN1dGlvbhITCgtmaWxsZWRfc2l6ZRgBIAEoBBIQCgh0cmFkZV9pZBgCIAEoBBIXCg9leGVjdXRpb25fcHJpY2UYAyABKAQioQEKDUZpbGxSRlFSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSGAoQbWFrZXJfYWNjb3VudF9pZBgCIAEoDRIYChB0YWtlcl9hY2NvdW50X2lkGAMgASgNEiUKCWV4ZWN1dGlvbhgEIAEoCzISLm5vcmQuUkZRRXhlY3V0aW9uEiMKBnN0YXR1cxgFIAEoDjITLm5vcmQuUmZxRmlsbFN0YXR1cyIjCgxSZnFNYWtlcnNTZXQSEwoLYWNjb3VudF9pZHMYASADKA0iJgoLUkZRUXR5UGxhY2USFwoDcXR5GAEgASgLMgoubm9yZC5VMTI4Ij0KDUZlZVRpZXJDb25maWcSFQoNbWFrZXJfZmVlX3BwbRgBIAEoDRIVCg10YWtlcl9mZWVfcHBtGAIgASgNIvcBCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRIlCgttYXJrZXRfbW9kZRgJIAEoDjIQLm5vcmQuTWFya2V0TW9kZRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIrYBCgtWYXVsdEhlYWx0aBIqChFyYXdfYWNjb3VudF92YWx1ZRgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgBiAEBEiEKBnN0YXR1cxgDIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXNCFAoSX3Jhd19hY2NvdW50X3ZhbHVlQhUKE19zYWZlX2FjY291bnRfdmFsdWUisAEKC1ZhdWx0Q29uZmlnEh8KC2RlcG9zaXRfY2FwGAEgASgLMgoubm9yZC5VMTI4EiIKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNEh8KF2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzGAMgASgNEhsKE2RyYXdkb3duX2ZyZWV6ZV9icHMYBCABKA0SHgoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDSLMAgoQVmF1bHRDb25maWdQYXRjaBIkCgtkZXBvc2l0X2NhcBgBIAEoCzIKLm5vcmQuVTEyOEgAiAEBEicKGm9wZW5fcG9zaXRpb25fZGlzY291bnRfYnBzGAIgASgNSAGIAQESJAoXZHJhd2Rvd25fcHJvdGVjdGlvbl9icHMYAyABKA1IAogBARIgChNkcmF3ZG93bl9mcmVlemVfYnBzGAQgASgNSAOIAQESIwoWZXBvY2hfbWluX2R1cmF0aW9uX3NlYxgFIAEoDUgEiAEBQg4KDF9kZXBvc2l0X2NhcEIdChtfb3Blbl9wb3NpdGlvbl9kaXNjb3VudF9icHNCGgoYX2RyYXdkb3duX3Byb3RlY3Rpb25fYnBzQhYKFF9kcmF3ZG93bl9mcmVlemVfYnBzQhkKF19lcG9jaF9taW5fZHVyYXRpb25fc2VjIkgKC0NyZWF0ZVZhdWx0EhYKDm1hbmFnZXJfcHVia2V5GAEgASgMEiEKBmNvbmZpZxgCIAEoCzIRLm5vcmQuVmF1bHRDb25maWciUwoRVXBkYXRlVmF1bHRDb25maWcSEAoIdmF1bHRfaWQYASABKA0SLAoMY29uZmlnX3BhdGNoGAIgASgLMhYubm9yZC5WYXVsdENvbmZpZ1BhdGNoIjsKD1NldFZhdWx0TWFuYWdlchIQCgh2YXVsdF9pZBgBIAEoDRIWCg5tYW5hZ2VyX3B1YmtleRgCIAEoDCI3Cg9WYXVsdFN5bmNFcG9jaHMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIQCgh2YXVsdF9pZBgCIAEoDSJOChFTdGFnZWRBZG1pbkFjdGlvbhIUCgxhZG1pbl9wdWJrZXkYASABKAwSIwoEa2luZBgCIAEoCzIVLm5vcmQuQWRtaW5BY3Rpb25LaW5kIrMECg9BZG1pbkFjdGlvbktpbmQSKQoMY3JlYXRlX3ZhdWx0GAEgASgLMhEubm9yZC5DcmVhdGVWYXVsdEgAEjYKE3VwZGF0ZV92YXVsdF9jb25maWcYAiABKAsyFy5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnSAASMgoRc2V0X3ZhdWx0X21hbmFnZXIYAyABKAsyFS5ub3JkLlNldFZhdWx0TWFuYWdlckgAEjIKEWNyZWF0ZV9yZnFfbWFya2V0GAQgASgLMhUubm9yZC5DcmVhdGVSZnFNYXJrZXRIABJWCiFzZXRfbWFya2V0X21vZGVfY2xvYl90cmFkaW5nX29ubHkYBSABKAsyKS5ub3JkLkFjdGlvbi5TZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5SAASNQoTc2V0X21hcmtldF9tb2RlX3JmcRgGIAEoCzIWLm5vcmQuU2V0TWFya2V0TW9kZVJGUUgAElAKHnNldF9tYXJrZXRfbW9kZV9jbG9iX3Bvc3Rfb25seRgHIAEoCzImLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CUG9zdE9ubHlIABI+ChRzZXRfbWFya2V0X21vZGVfY2xvYhgIIAEoCzIeLm5vcmQuQWN0aW9uLlNldE1hcmtldE1vZGVDTE9CSAASLAoOc2V0X3JmcV9tYWtlcnMYCSABKAsyEi5ub3JkLlNldFJmcU1ha2Vyc0gAQgYKBGtpbmQiRAoMVmF1bHREZXBvc2l0EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEIvUBCg1WYXVsdFdpdGhkcmF3EhIKCnNlc3Npb25faWQYASABKAQSEAoIdmF1bHRfaWQYAiABKA0SLgoHcmVxdWVzdBgDIAEoCzIbLm5vcmQuVmF1bHRXaXRoZHJhdy5SZXF1ZXN0SAASKgoFY2xhaW0YBCABKAsyGS5ub3JkLlZhdWx0V2l0aGRyYXcuQ2xhaW1IABpRCgdSZXF1ZXN0EhgKDnF1b3RlX25vdGlvbmFsGAEgASgESAASIgoMc2hhcmVfYW1vdW50GAIgASgLMgoubm9yZC5VMTI4SABCCAoGYW1vdW50GgcKBUNsYWltQgYKBGtpbmQingEKEkNyZWF0ZVZhdWx0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIYChB2YXVsdF9hY2NvdW50X2lkGAIgASgNEhYKDm1hbmFnZXJfcHVia2V5GAMgASgMEiEKBnN0YXR1cxgEIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSIQoGY29uZmlnGAUgASgLMhEubm9yZC5WYXVsdENvbmZpZyJyChhVcGRhdGVWYXVsdENvbmZpZ1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SIQoGY29uZmlnGAIgASgLMhEubm9yZC5WYXVsdENvbmZpZxIhCgZzdGF0dXMYAyABKA4yES5ub3JkLlZhdWx0U3RhdHVzIkIKFlNldFZhdWx0TWFuYWdlclJlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFgoObWFuYWdlcl9wdWJrZXkYAiABKAwi+wEKFlZhdWx0U3luY0Vwb2Noc1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFwoPY2xvc2VkX2Vwb2NoX2lkGAIgASgNEhgKEGNsYWltYWJsZV9hbW91bnQYAyABKAQSIQoGc3RhdHVzGAQgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIhCgZlcG9jaHMYBSABKAsyES5ub3JkLlZhdWx0RXBvY2hzEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EhUKDXF1b3RlX2JhbGFuY2UYByABKAMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDSKPAgoTVmF1bHREZXBvc2l0UmVjZWlwdBIQCgh2YXVsdF9pZBgBIAEoDRIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SDgoGYW1vdW50GAMgASgEEiEKDXNoYXJlc19pc3N1ZWQYBCABKAsyCi5ub3JkLlUxMjgSHwoLdXNlcl9zaGFyZXMYBSABKAsyCi5ub3JkLlUxMjgSJQoRbGl2ZV9zaGFyZV9zdXBwbHkYBiABKAsyCi5ub3JkLlUxMjgSIQoGc3RhdHVzGAcgASgOMhEubm9yZC5WYXVsdFN0YXR1cxIYChB2YXVsdF9hY2NvdW50X2lkGAggASgNEhUKDXF1b3RlX2JhbGFuY2UYCSABKAMiVQoRV2l0aGRyYXdhbEJ1Y2tldHMSFQoNY3VycmVudF9lcG9jaBgBIAEoBBIWCg5wcmV2aW91c19lcG9jaBgCIAEoBBIRCgljbGFpbWFibGUYAyABKAQihQEKC1ZhdWx0UHBzUmVmEhAKCGVwb2NoX2lkGAEgASgNEisKEnNhZmVfYWNjb3VudF92YWx1ZRgCIAEoCzIKLm5vcmQuVTEyOEgAiAEBEiAKDHNoYXJlX3N1cHBseRgDIAEoCzIKLm5vcmQuVTEyOEIVChNfc2FmZV9hY2NvdW50X3ZhbHVlIpYCCgtWYXVsdEVwb2NocxIYChBjdXJyZW50X2Vwb2NoX2lkGAEgASgNEiAKGGN1cnJlbnRfZXBvY2hfc3RhcnRlZF9hdBgCIAEoAxIiChVwYWlkX3Rocm91Z2hfZXBvY2hfaWQYAyABKA1IAIgBARIsCgt3aXRoZHJhd2FscxgEIAEoCzIXLm5vcmQuV2l0aGRyYXdhbEJ1Y2tldHMSLwoUbGF0ZXN0X2Vwb2NoX3Bwc19yZWYYBSABKAsyES5ub3JkLlZhdWx0UHBzUmVmEi4KE3ByaW9yX2Vwb2NoX3Bwc19yZWYYBiABKAsyES5ub3JkLlZhdWx0UHBzUmVmQhgKFl9wYWlkX3Rocm91Z2hfZXBvY2hfaWQijwEKDlZhdWx0VXNlclN0YXRlEhoKBnNoYXJlcxgBIAEoCzIKLm5vcmQuVTEyOBIsCgt3aXRoZHJhd2FscxgCIAEoCzIXLm5vcmQuV2l0aGRyYXdhbEJ1Y2tldHMSGAoQY3VycmVudF9lcG9jaF9pZBgDIAEoDRIZChFwcmV2aW91c19lcG9jaF9pZBgEIAEoDSK2AwoUVmF1bHRXaXRoZHJhd1JlY2VpcHQSEAoIdmF1bHRfaWQYASABKA0SFQoNdG9fYWNjb3VudF9pZBgCIAEoDRI5CglyZXF1ZXN0ZWQYAyABKAsyJC5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0LlJlcXVlc3RlZEgAEjUKB2NsYWltZWQYBCABKAsyIi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0LkNsYWltZWRIABItCg9wb3N0X3VzZXJfc3RhdGUYBSABKAsyFC5ub3JkLlZhdWx0VXNlclN0YXRlEiUKEWxpdmVfc2hhcmVfc3VwcGx5GAYgASgLMgoubm9yZC5VMTI4EiEKBnN0YXR1cxgHIAEoDjIRLm5vcmQuVmF1bHRTdGF0dXMSGAoQdmF1bHRfYWNjb3VudF9pZBgIIAEoDRIVCg1xdW90ZV9iYWxhbmNlGAkgASgDGjYKCVJlcXVlc3RlZBINCgVxdW90ZRgBIAEoBBIaCgZidXJuZWQYAiABKAsyCi5ub3JkLlUxMjgaGQoHQ2xhaW1lZBIOCgZhbW91bnQYASABKARCBgoEa2luZCJJCgpPcmRlckxpbWl0Eg0KBXByaWNlGAYgASgEEgwKBHNpemUYByABKAQSHgoKcXVvdGVfc2l6ZRgIIAEoCzIKLm5vcmQuVTEyOCK5AQoJUGxhY2VUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBI9ChVzZWxmX3RyYWRlX3ByZXZlbnRpb24YBiABKA4yGS5ub3JkLlNlbGZUcmFkZVByZXZlbnRpb25IAIgBAUIYChZfc2VsZl90cmFkZV9wcmV2ZW50aW9uIskBCgxUcmFkZU9yUGxhY2USEQoJbWFya2V0X2lkGAIgASgNEiMKCnBsYWNlX3R5cGUYAyABKAsyDy5ub3JkLlBsYWNlVHlwZRIfCgVsaW1pdBgGIAEoCzIQLm5vcmQuT3JkZXJMaW1pdBIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAIgBARIhCghyZWZlcnJlchgiIAEoCzIKLm5vcmQuVTEyOEgBiAEBQhIKEF9jbGllbnRfb3JkZXJfaWRCCwoJX3JlZmVycmVyIikKFUF0b21pY0NhbmNlbE9yZGVyQnlJZBIQCghvcmRlcl9pZBgCIAEoBCI2ChtBdG9taWNDYW5jZWxPcmRlckJ5Q2xpZW50SWQSFwoPY2xpZW50X29yZGVyX2lkGAIgASgEIoYBChBBdG9taWNBZGRUcmlnZ2VyEiQKB3RyaWdnZXIYASABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAIgASgOMgwubm9yZC5JbnRlbnQSIQoIcmVmZXJyZXIYAyABKAsyCi5ub3JkLlUxMjhIAIgBAUILCglfcmVmZXJyZXIiUQoRQXRvbWljRWRpdFRyaWdnZXISEgoKdHJpZ2dlcl9pZBgBIAEoBBIoCgtuZXdfdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZCI8ChNBdG9taWNSZW1vdmVUcmlnZ2VyEhEKCW1hcmtldF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEIisKFlJlZHVjZU9yZGVyTGlxdWlkYXRpb24SEQoJbWFya2V0X2lkGAIgASgNIs8BChVBdG9taWNTdWJhY3Rpb25LaW5kVjESLAoOdHJhZGVfb3JfcGxhY2UYBiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZUgAEjMKDGNhbmNlbF9vcmRlchgHIAEoCzIbLm5vcmQuQXRvbWljQ2FuY2VsT3JkZXJCeUlkSAASRgoZY2FuY2VsX29yZGVyX2J5X2NsaWVudF9pZBgIIAEoCzIhLm5vcmQuQXRvbWljQ2FuY2VsT3JkZXJCeUNsaWVudElkSAA6AhgBQgcKBWlubmVyIrABCghBdG9taWNWMRISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYAyABKARIAYgBARIsCgdhY3Rpb25zGAYgAygLMhsubm9yZC5BdG9taWNTdWJhY3Rpb25LaW5kVjE6AhgBQg0KC19hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQixwQKD0F0b21pY1N1YmFjdGlvbhIUCgd1c2Vfa2V5GAEgASgISAGIAQESHgoRdGFyZ2V0X2FjY291bnRfaWQYICABKA1IAogBARIsCg50cmFkZV9vcl9wbGFjZRgGIAEoCzISLm5vcmQuVHJhZGVPclBsYWNlSAASMwoMY2FuY2VsX29yZGVyGAcgASgLMhsubm9yZC5BdG9taWNDYW5jZWxPcmRlckJ5SWRIABJGChljYW5jZWxfb3JkZXJfYnlfY2xpZW50X2lkGAggASgLMiEubm9yZC5BdG9taWNDYW5jZWxPcmRlckJ5Q2xpZW50SWRIABItCgthZGRfdHJpZ2dlchgJIAEoCzIWLm5vcmQuQXRvbWljQWRkVHJpZ2dlckgAEi8KDGVkaXRfdHJpZ2dlchgKIAEoCzIXLm5vcmQuQXRvbWljRWRpdFRyaWdnZXJIABIzCg5yZW1vdmVfdHJpZ2dlchgLIAEoCzIZLm5vcmQuQXRvbWljUmVtb3ZlVHJpZ2dlckgAEkAKGHJlZHVjZV9vcmRlcl9saXF1aWRhdGlvbhgMIAEoCzIcLm5vcmQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvbkgAEiwKDnJmcV9wbGFjZV9vbmx5GA0gASgLMhIubm9yZC5SZnFQbGFjZU9ubHlIABIjCglyZnFfdHJhZGUYDiABKAsyDi5ub3JkLlJmcVRyYWRlSABCBwoFaW5uZXJCCgoIX3VzZV9rZXlCFAoSX3RhcmdldF9hY2NvdW50X2lkIqQBCgZBdG9taWMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCgphY2NvdW50X2lkGAIgASgNSACIAQESHwoSc2VuZGVyX3RyYWNraW5nX2lkGAMgASgESAGIAQESJgoHYWN0aW9ucxgGIAMoCzIVLm5vcmQuQXRvbWljU3ViYWN0aW9uQg0KC19hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWQiPAoWUHl0aExhemVyVHJ1c3RlZFNpZ25lchIOCgZwdWJrZXkYASABKAwSEgoKZXhwaXJlc19hdBgCIAEoAyKWAQoNVHJpZ2dlclJlY29yZBIVCg10cmlnZ2VyX3ByaWNlGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIgCgZsaW1pdHMYAyABKAsyEC5ub3JkLk9yZGVyTGltaXQSHwoEa2luZBgEIAEoDjIRLm5vcmQuVHJpZ2dlcktpbmQSGAoEc2lkZRgFIAEoDjIKLm5vcmQuU2lkZSKbAQoHVHJpZ2dlchIVCg10cmlnZ2VyX3ByaWNlGAEgASgEEh8KBGtpbmQYAiABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIAoGbGltaXRzGAQgASgLMhAubm9yZC5PcmRlckxpbWl0EhwKBmludGVudBgFIAEoDjIMLm5vcmQuSW50ZW50ItozCgZBY3Rpb24SGQoRY3VycmVudF90aW1lc3RhbXAYASABKAMSDQoFbm9uY2UYAiABKA0SNAoOY3JlYXRlX3Nlc3Npb24YBCABKAsyGi5ub3JkLkFjdGlvbi5DcmVhdGVTZXNzaW9uSAASMAoMY3JlYXRlX3Rva2VuGAUgASgLMhgubm9yZC5BY3Rpb24uQ3JlYXRlVG9rZW5IABIyCg1jcmVhdGVfbWFya2V0GAYgASgLMhkubm9yZC5BY3Rpb24uQ3JlYXRlTWFya2V0SAASLgoLcGxhY2Vfb3JkZXIYByABKAsyFy5ub3JkLkFjdGlvbi5QbGFjZU9yZGVySAASOgoSY2FuY2VsX29yZGVyX2J5X2lkGAggASgLMhwubm9yZC5BY3Rpb24uQ2FuY2VsT3JkZXJCeUlkSAASJwoHZGVwb3NpdBgJIAEoCzIULm5vcmQuQWN0aW9uLkRlcG9zaXRIABIpCgh3aXRoZHJhdxgKIAEoCzIVLm5vcmQuQWN0aW9uLldpdGhkcmF3SAASTAobcHl0aF9zZXRfd29ybWhvbGVfZ3VhcmRpYW5zGAsgASgLMiUubm9yZC5BY3Rpb24uUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zSAASPgoUcHl0aF9zZXRfc3ltYm9sX2ZlZWQYDCABKAsyHi5ub3JkLkFjdGlvbi5QeXRoU2V0U3ltYm9sRmVlZEgAEkIKFnB5dGhfcHJpY2VfZmVlZF91cGRhdGUYDSABKAsyIC5ub3JkLkFjdGlvbi5QeXRoUHJpY2VGZWVkVXBkYXRlSAASNAoOcmV2b2tlX3Nlc3Npb24YDyABKAsyGi5ub3JkLkFjdGlvbi5SZXZva2VTZXNzaW9uSAASIwoFcGF1c2UYECABKAsyEi5ub3JkLkFjdGlvbi5QYXVzZUgAEicKB3VucGF1c2UYESABKAsyFC5ub3JkLkFjdGlvbi5VbnBhdXNlSAASKQoIdHJhbnNmZXIYEiABKAsyFS5ub3JkLkFjdGlvbi5UcmFuc2ZlckgAEi4KC2FkZF90cmlnZ2VyGCAgASgLMhcubm9yZC5BY3Rpb24uQWRkVHJpZ2dlckgAEjQKDnJlbW92ZV90cmlnZ2VyGCEgASgLMhoubm9yZC5BY3Rpb24uUmVtb3ZlVHJpZ2dlckgAEicKCWF0b21pY192MRgjIAEoCzIOLm5vcmQuQXRvbWljVjFCAhgBSAASMgoNZnJlZXplX21hcmtldBgkIAEoCzIZLm5vcmQuQWN0aW9uLkZyZWV6ZU1hcmtldEgAEjYKD3VuZnJlZXplX21hcmtldBglIAEoCzIbLm5vcmQuQWN0aW9uLlVuZnJlZXplTWFya2V0SAASLwoMYWRkX2ZlZV90aWVyGCYgASgLMhcubm9yZC5BY3Rpb24uQWRkRmVlVGllckgAEjUKD3VwZGF0ZV9mZWVfdGllchgnIAEoCzIaLm5vcmQuQWN0aW9uLlVwZGF0ZUZlZVRpZXJIABI/ChR1cGRhdGVfYWNjb3VudHNfdGllchgoIAEoCzIfLm5vcmQuQWN0aW9uLlVwZGF0ZUFjY291bnRzVGllckgAEiwKCnVwZGF0ZV9hY2wYKSABKAsyFi5ub3JkLkFjdGlvbi5VcGRhdGVBY2xIABI7ChJmZWVfdmF1bHRfdHJhbnNmZXIYKiABKAsyHS5ub3JkLkFjdGlvbi5GZWVWYXVsdFRyYW5zZmVySAASOwoSdGFrZV9hbGxfcG9zaXRpb25zGCsgASgLMh0ubm9yZC5BY3Rpb24uVGFrZUFsbFBvc2l0aW9uc0gAEkcKGWNhbmNlbF9vcmRlcl9ieV9jbGllbnRfaWQYLCABKAsyIi5ub3JkLkFjdGlvbi5DYW5jZWxPcmRlckJ5Q2xpZW50SWRIABI2Cg9leGVjdXRlX3RyaWdnZXIYLSABKAsyGy5ub3JkLkFjdGlvbi5FeGVjdXRlVHJpZ2dlckgAEj8KFHNldF9iYWNrc3RvcF9hY2NvdW50GC4gASgLMh8ubm9yZC5BY3Rpb24uU2V0QmFja3N0b3BBY2NvdW50SAASMAoMZWRpdF90cmlnZ2VyGC8gASgLMhgubm9yZC5BY3Rpb24uRWRpdFRyaWdnZXJIABIeCgZhdG9taWMYMCABKAsyDC5ub3JkLkF0b21pY0gAEigKBWFkbWluGDEgASgLMhcubm9yZC5TdGFnZWRBZG1pbkFjdGlvbkgAEjAKDGNsZWFyX21hcmtldBgyIAEoCzIYLm5vcmQuQWN0aW9uLkNsZWFyTWFya2V0SAASMgoRdmF1bHRfc3luY19lcG9jaHMYNSABKAsyFS5ub3JkLlZhdWx0U3luY0Vwb2Noc0gAEisKDXZhdWx0X2RlcG9zaXQYNiABKAsyEi5ub3JkLlZhdWx0RGVwb3NpdEgAEi0KDnZhdWx0X3dpdGhkcmF3GDcgASgLMhMubm9yZC5WYXVsdFdpdGhkcmF3SAASUQoecHl0aF9sYXplcl9zZXRfdHJ1c3RlZF9zaWduZXJzGDkgASgLMicubm9yZC5BY3Rpb24uUHl0aExhemVyU2V0VHJ1c3RlZFNpZ25lcnNIABJJChpweXRoX2xhemVyX3NldF9mZWVkX3N5bWJvbBg6IAEoCzIjLm5vcmQuQWN0aW9uLlB5dGhMYXplclNldEZlZWRTeW1ib2xIABJNChxweXRoX2xhemVyX3ByaWNlX2ZlZWRfdXBkYXRlGDsgASgLMiUubm9yZC5BY3Rpb24uUHl0aExhemVyUHJpY2VGZWVkVXBkYXRlSAASNgoPcmVmcmVzaF9zZXNzaW9uGDwgASgLMhsubm9yZC5BY3Rpb24uUmVmcmVzaFNlc3Npb25IABI9ChNzZWxmX3Jldm9rZV9zZXNzaW9uGD0gASgLMh4ubm9yZC5BY3Rpb24uU2VsZlJldm9rZVNlc3Npb25IABrjAQoNQ3JlYXRlU2Vzc2lvbhITCgt1c2VyX3B1YmtleRgBIAEoDBIWCg5zZXNzaW9uX3B1YmtleRgCIAEoDBIYChBleHBpcnlfdGltZXN0YW1wGAMgASgDEkEKEXNpZ25hdHVyZV9mcmFtaW5nGAQgASgOMiEubm9yZC5BY3Rpb24uVXNlclNpZ25hdHVyZUZyYW1pbmdIAIgBARIdChByZWZyZXNoX2RlYWRsaW5lGAUgASgDSAGIAQFCFAoSX3NpZ25hdHVyZV9mcmFtaW5nQhMKEV9yZWZyZXNoX2RlYWRsaW5lGosBCgtDcmVhdGVUb2tlbhIWCg50b2tlbl9kZWNpbWFscxgBIAEoDRISCgp3ZWlnaHRfYnBzGAMgASgNEhMKC3ZpZXdfc3ltYm9sGAQgASgJEhUKDW9yYWNsZV9zeW1ib2wYBSABKAkSEAoIc29sX2FkZHIYBiABKAwSEgoKYWNsX3B1YmtleRgHIAEoDBoxChxTZXRNYXJrZXRNb2RlQ0xPQlRyYWRpbmdPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRouChlTZXRNYXJrZXRNb2RlQ0xPQlBvc3RPbmx5EhEKCW1hcmtldF9pZBgBIAEoDRomChFTZXRNYXJrZXRNb2RlQ0xPQhIRCgltYXJrZXRfaWQYASABKA0a7gEKDENyZWF0ZU1hcmtldBIVCg1zaXplX2RlY2ltYWxzGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEg8KB2ltZl9icHMYAyABKA0SDwoHY21mX2JwcxgEIAEoDRIPCgdtbWZfYnBzGAUgASgNEiUKC21hcmtldF90eXBlGAYgASgOMhAubm9yZC5NYXJrZXRUeXBlEhMKC3ZpZXdfc3ltYm9sGAcgASgJEhUKDW9yYWNsZV9zeW1ib2wYCCABKAkSFQoNYmFzZV90b2tlbl9pZBgJIAEoDRISCgphY2xfcHVia2V5GAogASgMGqoECgpQbGFjZU9yZGVyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCBINCgVwcmljZRgGIAEoBBIMCgRzaXplGAcgASgEEh4KCnF1b3RlX3NpemUYCCABKAsyCi5ub3JkLlUxMjgSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIcCg9jbGllbnRfb3JkZXJfaWQYISABKARIAYgBARIeChFzZW5kZXJfYWNjb3VudF9pZBgiIAEoDUgCiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgjIAEoBEgDiAEBEj0KFXNlbGZfdHJhZGVfcHJldmVudGlvbhgkIAEoDjIZLm5vcmQuU2VsZlRyYWRlUHJldmVudGlvbkgEiAEBEiEKCHJlZmVycmVyGCUgASgLMgoubm9yZC5VMTI4SAWIAQFCFwoVX2RlbGVnYXRvcl9hY2NvdW50X2lkQhIKEF9jbGllbnRfb3JkZXJfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkQhUKE19zZW5kZXJfdHJhY2tpbmdfaWRCGAoWX3NlbGZfdHJhZGVfcHJldmVudGlvbkILCglfcmVmZXJyZXIaqQEKD0NhbmNlbE9yZGVyQnlJZBISCgpzZXNzaW9uX2lkGAEgASgEEhAKCG9yZGVyX2lkGAIgASgEEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYISABKA1IAYgBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCFAoSX3NlbmRlcl9hY2NvdW50X2lkGnoKFUNhbmNlbE9yZGVyQnlDbGllbnRJZBISCgpzZXNzaW9uX2lkGAEgASgEEhcKD2NsaWVudF9vcmRlcl9pZBgCIAEoBBIeChFzZW5kZXJfYWNjb3VudF9pZBgDIAEoDUgAiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZBpvCgdEZXBvc2l0EhQKDGFjdGlvbl9ub25jZRgBIAEoBBISCgp0b2tlbl9hZGRyGAIgASgMEg4KBmFtb3VudBgDIAEoBBITCgt1c2VyX3B1YmtleRgEIAEoDBIVCg1zZW5kZXJfcHVia2V5GAUgASgMGmoKCFdpdGhkcmF3EhAKCHRva2VuX2lkGAEgASgNEhIKCnNlc3Npb25faWQYAiABKAQSDgoGYW1vdW50GAMgASgEEhgKC2Rlc3RfcHVia2V5GAQgASgMSACIAQFCDgoMX2Rlc3RfcHVia2V5Gl0KGFB5dGhTZXRXb3JtaG9sZUd1YXJkaWFucxIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMEhIKCmFjbF9wdWJrZXkYAyABKAwaVQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMEhIKCmFjbF9wdWJrZXkYAyABKAwaLwoTUHl0aFByaWNlRmVlZFVwZGF0ZRIYChByYXdfcHl0aG5ldF9kYXRhGAEgASgMGlIKGFB5dGhMYXplclByaWNlRmVlZFVwZGF0ZRIPCgdwYXlsb2FkGAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDBISCgpwdWJsaWNfa2V5GAMgASgMGmcKGlB5dGhMYXplclNldFRydXN0ZWRTaWduZXJzEhIKCmFjbF9wdWJrZXkYASABKAwSNQoPdHJ1c3RlZF9zaWduZXJzGAIgAygLMhwubm9yZC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyGqsBChZQeXRoTGF6ZXJTZXRGZWVkU3ltYm9sEhIKCmFjbF9wdWJrZXkYASABKAwSQgoFZmVlZHMYAiADKAsyMy5ub3JkLkFjdGlvbi5QeXRoTGF6ZXJTZXRGZWVkU3ltYm9sLkZlZWRTeW1ib2xJbnB1dBo5Cg9GZWVkU3ltYm9sSW5wdXQSDwoHZmVlZF9pZBgBIAEoDRIVCg1vcmFjbGVfc3ltYm9sGAIgASgJGiMKDVJldm9rZVNlc3Npb24SEgoKc2Vzc2lvbl9pZBgBIAEoBBo0Cg5SZWZyZXNoU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxonChFTZWxmUmV2b2tlU2Vzc2lvbhISCgpzZXNzaW9uX2lkGAEgASgEGhsKBVBhdXNlEhIKCmFjbF9wdWJrZXkYASABKAwaHQoHVW5wYXVzZRISCgphY2xfcHVia2V5GAEgASgMGjwKElNldEJhY2tzdG9wQWNjb3VudBISCgphY2xfcHVia2V5GAEgASgMEhIKCmFjY291bnRfaWQYAiABKA0a+QEKCVJlY2lwaWVudBIxCgdzcGVjaWFsGAEgASgLMh4ubm9yZC5BY3Rpb24uUmVjaXBpZW50LlNwZWNpYWxIABItCgVvd25lZBgCIAEoCzIcLm5vcmQuQWN0aW9uLlJlY2lwaWVudC5Pd25lZEgAEjEKB3Vub3duZWQYAyABKAsyHi5ub3JkLkFjdGlvbi5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUanwEKCFRyYW5zZmVyEhIKCnNlc3Npb25faWQYASABKAQSFwoPZnJvbV9hY2NvdW50X2lkGAIgASgNEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIyCg10b19hY2NvdW50X2lkGAggASgLMhYubm9yZC5BY3Rpb24uUmVjaXBpZW50SACIAQFCEAoOX3RvX2FjY291bnRfaWQaWwoQRmVlVmF1bHRUcmFuc2ZlchISCgphY2xfcHVia2V5GAEgASgMEhEKCXJlY2lwaWVudBgCIAEoDRIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQavAEKCkFkZFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIkCgd0cmlnZ2VyGAIgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhwKBmludGVudBgDIAEoDjIMLm5vcmQuSW50ZW50EhcKCmFjY291bnRfaWQYCiABKA1IAIgBARIhCghyZWZlcnJlchgLIAEoCzIKLm5vcmQuVTEyOEgBiAEBQg0KC19hY2NvdW50X2lkQgsKCV9yZWZlcnJlchqHAQoLRWRpdFRyaWdnZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBISCgp0cmlnZ2VyX2lkGAIgASgEEigKC25ld190cmlnZ2VyGAMgASgLMhMubm9yZC5UcmlnZ2VyUmVjb3JkEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBpyCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEhIKCnRyaWdnZXJfaWQYAyABKAQSFwoKYWNjb3VudF9pZBgKIAEoDUgAiAEBQg0KC19hY2NvdW50X2lkGkUKCkFkZEZlZVRpZXISEgoKYWNsX3B1YmtleRgBIAEoDBIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaVAoNVXBkYXRlRmVlVGllchIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcSEgoKYWNsX3B1YmtleRgDIAEoDBpLChJVcGRhdGVBY2NvdW50c1RpZXISDwoHdGllcl9pZBgBIAEoDRIQCghhY2NvdW50cxgCIAMoDRISCgphY2xfcHVia2V5GAMgASgMGl8KCVVwZGF0ZUFjbBISCgphY2xfcHVia2V5GAEgASgMEhUKDXRhcmdldF9wdWJrZXkYAiABKAwSEgoKcm9sZXNfbWFzaxgDIAEoDRITCgtyb2xlc192YWx1ZRgEIAEoDRo1CgxGcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aNwoOVW5mcmVlemVNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0aTQoLQ2xlYXJNYXJrZXQSEgoKYWNsX3B1YmtleRgBIAEoDBIRCgltYXJrZXRfaWQYAiABKA0SFwoPY2xlYXJhbmNlX3ByaWNlGAMgASgEGmEKDkV4ZWN1dGVUcmlnZ2VyEhQKDGV4ZWN1dG9yX3NpZBgBIAEoBBISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRISCgp0cmlnZ2VyX2lkGAQgASgEGkEKEFRha2VBbGxQb3NpdGlvbnMSEgoKc2Vzc2lvbl9pZBgBIAEoBBIZChF0YXJnZXRfYWNjb3VudF9pZBgCIAEoDSI3ChRVc2VyU2lnbmF0dXJlRnJhbWluZxIHCgNIRVgQABIWChJTT0xBTkFfVFJBTlNBQ1RJT04QAUIGCgRraW5kIstCCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI4Cg50cmFkZV9vcl9wbGFjZRgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI3Cg9zZXNzaW9uX3Jldm9rZWQYLCABKAsyHC5ub3JkLlJlY2VpcHQuU2Vzc2lvblJldm9rZWRIABImCgZwYXVzZWQYLSABKAsyFC5ub3JkLlJlY2VpcHQuUGF1c2VkSAASKgoIdW5wYXVzZWQYLiABKAsyFi5ub3JkLlJlY2VpcHQuVW5wYXVzZWRIABIwCgt0cmFuc2ZlcnJlZBgvIAEoCzIZLm5vcmQuUmVjZWlwdC5UcmFuc2ZlcnJlZEgAEjMKDXRyaWdnZXJfYWRkZWQYQCABKAsyGi5ub3JkLlJlY2VpcHQuVHJpZ2dlckFkZGVkSAASNwoPdHJpZ2dlcl9yZW1vdmVkGEEgASgLMhwubm9yZC5SZWNlaXB0LlRyaWdnZXJSZW1vdmVkSAASLAoGYXRvbWljGEMgASgLMhoubm9yZC5SZWNlaXB0LkF0b21pY1Jlc3VsdEgAEkIKFW1hcmtldF9mcmVlemVfdXBkYXRlZBhEIAEoCzIhLm5vcmQuUmVjZWlwdC5NYXJrZXRGcmVlemVVcGRhdGVkSAASNAoOZmVlX3RpZXJfYWRkZWQYRSABKAsyGi5ub3JkLlJlY2VpcHQuRmVlVGllckFkZGVkSAASOAoQZmVlX3RpZXJfdXBkYXRlZBhGIAEoCzIcLm5vcmQuUmVjZWlwdC5GZWVUaWVyVXBkYXRlZEgAEkIKFWFjY291bnRzX3RpZXJfdXBkYXRlZBhHIAEoCzIhLm5vcmQuUmVjZWlwdC5BY2NvdW50c1RpZXJVcGRhdGVkSAASLwoLYWNsX3VwZGF0ZWQYSCABKAsyGC5ub3JkLlJlY2VpcHQuQWNsVXBkYXRlZEgAEkIKFWZlZV92YXVsdF90cmFuc2ZlcnJlZBhJIAEoCzIhLm5vcmQuUmVjZWlwdC5GZWVWYXVsdFRyYW5zZmVycmVkSAASOQoQdHJpZ2dlcl9leGVjdXRlZBhKIAEoCzIdLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRXhlY3V0ZWRIABJJChl0YWtlX2FsbF9wb3NpdGlvbnNfcmVzdWx0GEsgASgLMiQubm9yZC5SZWNlaXB0LlRha2VBbGxQb3NpdGlvbnNSZXN1bHRIABJAChRiYWNrc3RvcF9hY2NvdW50X3NldBhMIAEoCzIgLm5vcmQuUmVjZWlwdC5CYWNrc3RvcEFjY291bnRTZXRIABI1Cg50cmlnZ2VyX2VkaXRlZBhNIAEoCzIbLm5vcmQuUmVjZWlwdC5UcmlnZ2VyRWRpdGVkSAASMQoNdmF1bHRfY3JlYXRlZBhOIAEoCzIYLm5vcmQuQ3JlYXRlVmF1bHRSZWNlaXB0SAASPgoUdmF1bHRfY29uZmlnX3VwZGF0ZWQYTyABKAsyHi5ub3JkLlVwZGF0ZVZhdWx0Q29uZmlnUmVjZWlwdEgAEj0KFXZhdWx0X21hbmFnZXJfdXBkYXRlZBhQIAEoCzIcLm5vcmQuU2V0VmF1bHRNYW5hZ2VyUmVjZWlwdEgAEjsKE3ZhdWx0X2Vwb2Noc19zeW5jZWQYUSABKAsyHC5ub3JkLlZhdWx0U3luY0Vwb2Noc1JlY2VpcHRIABI0Cg92YXVsdF9kZXBvc2l0ZWQYUiABKAsyGS5ub3JkLlZhdWx0RGVwb3NpdFJlY2VpcHRIABI1Cg92YXVsdF93aXRoZHJhd24YUyABKAsyGi5ub3JkLlZhdWx0V2l0aGRyYXdSZWNlaXB0SAASPgoTY2xlYXJfbWFya2V0X3Jlc3VsdBhUIAEoCzIfLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldFJlc3VsdEgAElQKH3B5dGhfbGF6ZXJfb3JhY2xlX3VwZGF0ZV9yZXN1bHQYVSABKAsyKS5ub3JkLlJlY2VpcHQuUHl0aExhemVyT3JhY2xlVXBkYXRlUmVzdWx0SAASXwolcHl0aF9sYXplcl90cnVzdGVkX3NpZ25lcnNfc2V0X3Jlc3VsdBhWIAEoCzIuLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJUcnVzdGVkU2lnbmVyc1NldFJlc3VsdEgAElcKIXB5dGhfbGF6ZXJfZmVlZF9zeW1ib2xfc2V0X3Jlc3VsdBhXIAEoCzIqLm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0SAASVQofcmVkdWNlX29yZGVyX2xpcXVpZGF0aW9uX3Jlc3VsdBhYIAEoCzIqLm5vcmQuUmVjZWlwdC5SZWR1Y2VPcmRlckxpcXVpZGF0aW9uUmVzdWx0SAASPgoTbWFya2V0X21vZGVfdXBkYXRlZBhZIAEoCzIfLm5vcmQuUmVjZWlwdC5NYXJrZXRNb2RlVXBkYXRlZEgAEiwKDnJmcV9tYWtlcnNfc2V0GFogASgLMhIubm9yZC5SZnFNYWtlcnNTZXRIABI7ChFzZXNzaW9uX3JlZnJlc2hlZBhbIAEoCzIeLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmVmcmVzaGVkSAASQAoUc2VsZl9zZXNzaW9uX3Jldm9rZWQYXCABKAsyIC5ub3JkLlJlY2VpcHQuU2VsZlNlc3Npb25SZXZva2VkSAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpwCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0SEQoJbWFrZXJfZmVlGAcgASgEEhEKCXRha2VyX2ZlZRgIIAEoBBptChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQSDgoGZXhwaXJ5GAIgASgDEh0KEHJlZnJlc2hfZGVhZGxpbmUYAyABKANIAIgBAUITChFfcmVmcmVzaF9kZWFkbGluZRpMChBDYW5jZWxsZWRUcmlnZ2VyEhIKCmFjY291bnRfaWQYASABKA0SJAoHdHJpZ2dlchgCIAEoCzITLm5vcmQuVHJpZ2dlclJlY29yZBraAQoLT3JkZXJVcGRhdGUSMAoGcmVhc29uGAEgASgOMiAubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlLlJlYXNvbhISCgphY2NvdW50X2lkGAIgASgNEhAKCG9yZGVyX2lkGAMgASgEEhYKDnJlbWFpbmluZ19zaXplGAQgASgEEhYKDmNhbmNlbGxlZF9zaXplGAUgASgEEg0KBXByaWNlGAYgASgEIjQKBlJlYXNvbhIPCgtSRURVQ0VfT05MWRAAEhkKFVNFTEZfVFJBREVfUFJFVkVOVElPThABGvcCChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBARI6ChJjYW5jZWxsZWRfdHJpZ2dlcnMYBSADKAsyHi5ub3JkLlJlY2VpcHQuQ2FuY2VsbGVkVHJpZ2dlchIwCg1vcmRlcl91cGRhdGVzGAYgAygLMhkubm9yZC5SZWNlaXB0Lk9yZGVyVXBkYXRlEjEKCXBsYWNlbWVudBgHIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZW1lbnRSZWNlaXB0QgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGnoKHFJlZHVjZU9yZGVyTGlxdWlkYXRpb25SZXN1bHQSNgoOdHJhZGVfb3JfcGxhY2UYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdBIiCgZhY3Rpb24YAiABKAsyEi5ub3JkLlRyYWRlT3JQbGFjZRqvAQoQUGxhY2VtZW50UmVjZWlwdBIhCgRyb2xlGAEgASgOMhMubm9yZC5QbGFjZW1lbnRSb2xlEjgKB2FjY291bnQYAiABKAsyJS5ub3JkLlJlY2VpcHQuQWNjb3VudFBsYWNlbWVudFJlY2VpcHRIABI0CgV2YXVsdBgDIAEoCzIjLm5vcmQuUmVjZWlwdC5WYXVsdFBsYWNlbWVudFJlY2VpcHRIAEIICgZ0YXJnZXQaGQoXQWNjb3VudFBsYWNlbWVudFJlY2VpcHQaTAoVVmF1bHRQbGFjZW1lbnRSZWNlaXB0EhAKCHZhdWx0X2lkGAEgASgNEiEKBmhlYWx0aBgCIAEoCzIRLm5vcmQuVmF1bHRIZWFsdGga/gEKD1RyaWdnZXJFeGVjdXRlZBITCgtleGVjdXRvcl9pZBgBIAEoDRISCgphY2NvdW50X2lkGAIgASgNEhEKCW1hcmtldF9pZBgDIAEoDRIeCgd0cmlnZ2VyGAQgASgLMg0ubm9yZC5UcmlnZ2VyEhIKCnRyaWdnZXJfaWQYCCABKAQSMQoHc3VjY2VzcxgFIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASKQoHZmFpbHVyZRgGIAEoDjIWLm5vcmQuVHJpZ2dlckV4ZWNFcnJvckgAEhMKCWNhbmNlbGxlZBgHIAEoCEgAQggKBnN0YXR1cxoyCg5UYWtlQWxsQmFsYW5jZRIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQadwoPVGFrZUFsbFBvc2l0aW9uEhEKCW1hcmtldF9pZBgBIAEoDRIRCgliYXNlX3NpemUYAiABKAMSGAoQc2V0dGxlbWVudF9wcmljZRgDIAEoBBIkChBiYW5rcnVwdGN5X3F1b3RlGAQgASgLMgoubm9yZC5VMTI4GlMKE1Rha2VBbGxPcmRlclVwZGF0ZXMSEQoJbWFya2V0X2lkGAEgASgNEikKBm9yZGVycxgCIAMoCzIZLm5vcmQuUmVjZWlwdC5PcmRlclVwZGF0ZRraAQoWVGFrZUFsbFBvc2l0aW9uc1Jlc3VsdBIYChB0YWtlcl9hY2NvdW50X2lkGAEgASgNEjQKDnRha2VuX2JhbGFuY2VzGAMgAygLMhwubm9yZC5SZWNlaXB0LlRha2VBbGxCYWxhbmNlEjYKD3Rha2VuX3Bvc2l0aW9ucxgEIAMoCzIdLm5vcmQuUmVjZWlwdC5UYWtlQWxsUG9zaXRpb24SOAoNb3JkZXJfdXBkYXRlcxgFIAMoCzIhLm5vcmQuUmVjZWlwdC5UYWtlQWxsT3JkZXJVcGRhdGVzGnMKGUNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXISEgoKYWNjb3VudF9pZBgBIAEoDRIQCghvcmRlcl9pZBgCIAEoBBIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBAUISChBfY2xpZW50X29yZGVyX2lkGq0BChlDbGVhck1hcmtldENsb3NlZFBvc2l0aW9uEhIKCmFjY291bnRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEhgKEHNldHRsZW1lbnRfcHJpY2UYAyABKAQSGQoFcXVvdGUYBCABKAsyCi5ub3JkLlUxMjgSGQoRdHJhZGluZ19wbmxfZGVsdGEYBSABKAMSGQoRZnVuZGluZ19wbmxfZGVsdGEYBiABKAMaxQEKEUNsZWFyTWFya2V0UmVzdWx0EhEKCW1hcmtldF9pZBgBIAEoDRIXCg9jbGVhcmFuY2VfcHJpY2UYBSABKAQSQQoQY2FuY2VsbGVkX29yZGVycxgDIAMoCzInLm5vcmQuUmVjZWlwdC5DbGVhck1hcmtldENhbmNlbGxlZE9yZGVyEkEKEGNsb3NlZF9wb3NpdGlvbnMYBCADKAsyJy5ub3JkLlJlY2VpcHQuQ2xlYXJNYXJrZXRDbG9zZWRQb3NpdGlvbhqeAQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAIgBARIxCglwbGFjZW1lbnQYBCABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VtZW50UmVjZWlwdEISChBfY2xpZW50X29yZGVyX2lkGnAKDURlcG9zaXRSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEhIKCmFjY291bnRfaWQYAyABKA0SFAoMdXNlcl9jcmVhdGVkGAQgASgIEhMKC3VzZXJfcHVia2V5GAUgASgMGkMKEUluc2VydFRva2VuUmVzdWx0EhIKCmNoYWluX2FkZHIYASABKAwSGgoFdG9rZW4YAiABKAsyCy5ub3JkLlRva2VuGjIKEkluc2VydE1hcmtldFJlc3VsdBIcCgZtYXJrZXQYASABKAsyDC5ub3JkLk1hcmtldBp5Cg5XaXRoZHJhd1Jlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSDwoHYmFsYW5jZRgDIAEoBBISCgphY2NvdW50X2lkGAQgASgNEgsKA2ZlZRgFIAEoBBITCgt1c2VyX3B1YmtleRgGIAEoDBpAChZPcmFjbGVTeW1ib2xGZWVkUmVzdWx0EhUKDW9yYWNsZV9zeW1ib2wYASABKAkSDwoHZmVlZF9pZBgCIAEoDBonChJPcmFjbGVVcGRhdGVSZXN1bHQSEQoJdGltZXN0YW1wGAEgASgDGjcKG1B5dGhMYXplck9yYWNsZVVwZGF0ZVJlc3VsdBIYChB0aW1lc3RhbXBfbWlsbGlzGAEgASgEGlkKIFB5dGhMYXplclRydXN0ZWRTaWduZXJzU2V0UmVzdWx0EjUKD3RydXN0ZWRfc2lnbmVycxgBIAMoCzIcLm5vcmQuUHl0aExhemVyVHJ1c3RlZFNpZ25lchqaAQocUHl0aExhemVyRmVlZFN5bWJvbFNldFJlc3VsdBJECgVmZWVkcxgBIAMoCzI1Lm5vcmQuUmVjZWlwdC5QeXRoTGF6ZXJGZWVkU3ltYm9sU2V0UmVzdWx0LkZlZWRTeW1ib2waNAoKRmVlZFN5bWJvbBIPCgdmZWVkX2lkGAEgASgNEhUKDW9yYWNsZV9zeW1ib2wYAiABKAkaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBoQCg5TZXNzaW9uUmV2b2tlZBoUChJTZWxmU2Vzc2lvblJldm9rZWQaNgoQU2Vzc2lvblJlZnJlc2hlZBISCgpzZXNzaW9uX2lkGAEgASgEEg4KBmV4cGlyeRgCIAEoAxoICgZQYXVzZWQaCgoIVW5wYXVzZWQaKAoSQmFja3N0b3BBY2NvdW50U2V0EhIKCmFjY291bnRfaWQYASABKA0a/AEKCVJlY2lwaWVudBIyCgdzcGVjaWFsGAEgASgLMh8ubm9yZC5SZWNlaXB0LlJlY2lwaWVudC5TcGVjaWFsSAASLgoFb3duZWQYAiABKAsyHS5ub3JkLlJlY2VpcHQuUmVjaXBpZW50Lk93bmVkSAASMgoHdW5vd25lZBgDIAEoCzIfLm5vcmQuUmVjZWlwdC5SZWNpcGllbnQuVW5vd25lZEgAGgkKB1NwZWNpYWwaGwoFT3duZWQSEgoKYWNjb3VudF9pZBgBIAEoDRodCgdVbm93bmVkEhIKCmFjY291bnRfaWQYASABKA1CEAoOcmVjaXBpZW50X3R5cGUaowEKC1RyYW5zZmVycmVkEhcKD2Zyb21fYWNjb3VudF9pZBgBIAEoDRIrCgp0b19hY2NvdW50GAIgASgLMhcubm9yZC5SZWNlaXB0LlJlY2lwaWVudBIQCgh0b2tlbl9pZBgDIAEoDRIOCgZhbW91bnQYBCABKAQSFwoPYWNjb3VudF9jcmVhdGVkGAUgASgIEhMKC3VzZXJfcHVia2V5GAYgASgMGkoKE0ZlZVZhdWx0VHJhbnNmZXJyZWQSEQoJcmVjaXBpZW50GAEgASgNEhAKCHRva2VuX2lkGAIgASgNEg4KBmFtb3VudBgDIAEoBBp6CgxUcmlnZ2VyQWRkZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQafAoOVHJpZ2dlclJlbW92ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEiQKB3RyaWdnZXIYAyABKAsyEy5ub3JkLlRyaWdnZXJSZWNvcmQSHAoGaW50ZW50GAQgASgOMgwubm9yZC5JbnRlbnQagAEKDVRyaWdnZXJFZGl0ZWQSEgoKYWNjb3VudF9pZBgBIAEoDRISCgp0cmlnZ2VyX2lkGAIgASgEEicKEHByZXZpb3VzX3RyaWdnZXIYAyABKAsyDS5ub3JkLlRyaWdnZXISHgoHdHJpZ2dlchgEIAEoCzINLm5vcmQuVHJpZ2dlcho4ChNNYXJrZXRGcmVlemVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIOCgZmcm96ZW4YAiABKAgakAEKEU1hcmtldE1vZGVVcGRhdGVkEhEKCW1hcmtldF9pZBgBIAEoDRIlCgttYXJrZXRfbW9kZRgCIAEoDjIQLm5vcmQuTWFya2V0TW9kZRJBChBjYW5jZWxsZWRfb3JkZXJzGAMgAygLMicubm9yZC5SZWNlaXB0LkNsZWFyTWFya2V0Q2FuY2VsbGVkT3JkZXIaPwoMRmVlVGllckFkZGVkEiMKBmNvbmZpZxgBIAEoCzITLm5vcmQuRmVlVGllckNvbmZpZxIKCgJpZBgCIAEoDRpBCg5GZWVUaWVyVXBkYXRlZBIKCgJpZBgBIAEoDRIjCgZjb25maWcYAiABKAsyEy5ub3JkLkZlZVRpZXJDb25maWcaOAoTQWNjb3VudHNUaWVyVXBkYXRlZBIPCgd0aWVyX2lkGAEgASgNEhAKCGFjY291bnRzGAIgAygNGmAKCkFjbFVwZGF0ZWQSEgoKYWNsX3B1YmtleRgBIAEoDBISCgpyb2xlc19tYXNrGAIgASgEEhUKDXRhcmdldF9wdWJrZXkYAyABKAwSEwoLcm9sZXNfdmFsdWUYBCABKAQa7AMKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABIzCg10cmlnZ2VyX2FkZGVkGAMgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBgEIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEjUKDnRyaWdnZXJfZWRpdGVkGAUgASgLMhsubm9yZC5SZWNlaXB0LlRyaWdnZXJFZGl0ZWRIABJOChhyZWR1Y2Vfb3JkZXJfbGlxdWlkYXRpb24YBiABKAsyKi5ub3JkLlJlY2VpcHQuUmVkdWNlT3JkZXJMaXF1aWRhdGlvblJlc3VsdEgAEioKCnJmcV9yZXN1bHQYByABKAsyFC5ub3JkLlBsYWNlUkZRUmVzdWx0SAASLgoPcmZxX2ZpbGxfcmVzdWx0GAggASgLMhMubm9yZC5GaWxsUkZRUmVzdWx0SABCBwoFaW5uZXIaSAoMQXRvbWljUmVzdWx0EjgKB3Jlc3VsdHMYASADKAsyJy5ub3JkLlJlY2VpcHQuQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZEIGCgRraW5kKhgKBFNpZGUSBwoDQVNLEAASBwoDQklEEAEqHwoKTWFya2V0TW9kZRIICgRDTE9CEAASBwoDUkZREAEqYwoMTWFya2V0UmVnaW1lEhgKFE1BUktFVF9SRUdJTUVfTk9STUFMEAASGwoXTUFSS0VUX1JFR0lNRV9QT1NUX09OTFkQARIcChhNQVJLRVRfUkVHSU1FX1RSQURFX09OTFkQAipqCg1SZnFGaWxsU3RhdHVzEh0KGVJGUV9GSUxMX1NUQVRVU19DT01QTEVURUQQABIdChlSRlFfRklMTF9TVEFUVVNfVFJVTkNBVEVEEAESGwoXUkZRX0ZJTExfU1RBVFVTX1BBUlRJQUwQAiotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKiQKBkludGVudBIMCghERUNSRUFTRRAAEgwKCElOQ1JFQVNFEAEqTwoIRmlsbE1vZGUSCQoFTElNSVQQABINCglQT1NUX09OTFkQARIXChNJTU1FRElBVEVfT1JfQ0FOQ0VMEAISEAoMRklMTF9PUl9LSUxMEAMqrgEKDVBsYWNlbWVudFJvbGUSIAocUExBQ0VNRU5UX1JPTEVfQUNDT1VOVF9PV05FUhAAEiAKHFBMQUNFTUVOVF9ST0xFX1ZBVUxUX01BTkFHRVIQARIeChpQTEFDRU1FTlRfUk9MRV9TVVBFUl9BRE1JThACEhoKFlBMQUNFTUVOVF9ST0xFX1RSSUdHRVIQAxIdChlQTEFDRU1FTlRfUk9MRV9MSVFVSURBVE9SEAQqMQoTU2VsZlRyYWRlUHJldmVudGlvbhIICgROT05FEAASEAoMRVhQSVJFX01BS0VSEAEqJgoKTWFya2V0VHlwZRIICgRTUE9UEAASDgoKUEVSUEVUVUFMUxABKn0KEFRyaWdnZXJFeGVjRXJyb3ISDwoLTk9fUE9TSVRJT04QABITCg9QTEFOTklOR19GQUlMRUQQARIOCgpCQU5LUlVQVENZEAISFQoRUklTS19DSEVDS19GQUlMRUQQAxIcChhSRURVQ0VfT05MWV9DSEVDS19GQUlMRUQQBCowCg5TcGVjaWFsQWNjb3VudBINCglGRUVfVkFVTFQQABIPCgtDTEFJTV9WQVVMVBABKl0KC1ZhdWx0U3RhdHVzEhcKE1ZBVUxUX1NUQVRVU19BQ1RJVkUQABIcChhWQVVMVF9TVEFUVVNfREVSSVNLX09OTFkQARIXChNWQVVMVF9TVEFUVVNfRlJPWkVOEAIq4SkKBUVycm9yEg0KCURVUExJQ0FURRAAEhUKEUlOVkFMSURfU0lHTkFUVVJFEAMSFAoQTUFSS0VUX05PVF9GT1VORBAEEhMKD1RPS0VOX05PVF9GT1VORBAFEhIKDlVTRVJfTk9UX0ZPVU5EEAYSFQoRU0VTU0lPTl9OT1RfRk9VTkQQBxITCg9PUkRFUl9OT1RfRk9VTkQQCBITCg9PUkRFUl9TSVpFX1pFUk8QCRIOCgpBUklUSE1FVElDEAsSFwoTQVJJVEhNRVRJQ19PVkVSRkxPVxAMEhgKFEFSSVRITUVUSUNfVU5ERVJGTE9XEA0SHwobQVJJVEhNRVRJQ19ESVZJU0lPTl9CWV9aRVJPEA4SGgoWS0VZX0FMUkVBRFlfUkVHSVNURVJFRBAPEhwKGFVQREFURV9USU1FU1RBTVBfSU5fUEFTVBAREhgKFFRPT19NQU5ZX09QRU5fT1JERVJTEBISHQoZV0lUSERSQVdfQU1PVU5UX1RPT19TTUFMTBAVEikKJVNPVVJDRV9BTkRfVEFSR0VUX1NIT1VMRF9OT1RfQkVfRVFVQUwQGBISCg5ERUNPREVfRkFJTFVSRRAgEiAKHERFQ09ERV9GQUlMVVJFX0xFTkdUSF9QUkVGSVgQIRIWChJERUNPREVfRkFJTFVSRV9SQVcQIhIZChVERUNPREVfRkFJTFVSRV9ET01BSU4QIxIfChtVUERBVEVfUFVCTElTSF9USU1FX0lOX1BBU1QQJBILCgdTRVNTSU9OEDASHwobU0VTU0lPTl9SRUZSRVNIX05PVF9FTkFCTEVEEDESKgomU0VTU0lPTl9SRUZSRVNIX0RFQURMSU5FX0JFRk9SRV9FWFBJUlkQMhIXChNQWVRIX0ZFRURfTk9UX0FEREVEEF0SFQoRUFlUSF9GRUVEX01JU1NJTkcQXhIbChdQWVRIX0ZFRURfQUxSRUFEWV9BRERFRBBfEiMKH1BZVEhfR1VBUkRJQU5fU0VUX1VOSU5JVElBTElaRUQQYBIdChlQWVRIX0dVQVJESUFOX1NFVF9JTlZBTElEEGESIwofUFlUSF9GRUVEX0RFQ0lNQUxTX09VVF9PRl9SQU5HRRBiEiAKHFBZVEhfRkVFRF9QUklDRV9PVVRfT0ZfUkFOR0UQYxIjCh9QWVRIX0ZFRURfVkFSSUFOQ0VfT1VUX09GX1JBTkdFEGQSNQoxUFlUSF9HVUFSRElBTl9TRVRfQU5EX1BZVEhfU0lHTkFUVVJFX0RPX05PVF9NQVRDSBBlEhwKGElOVkFMSURfVE9LRU5fUEFSQU1FVEVSUxBmEhwKGElOREVYX1BSSUNFX09VVF9PRl9SQU5HRRBnEh8KG0lOREVYX0RFQ0lNQUxTX09VVF9PRl9SQU5HRRBoEhkKFUlOVkFMSURfU1RBVEVfVkVSU0lPThBpEhMKD0lOVkFMSURfTUFSR0lOUxBsEiEKHU1BUktFVF9ERUNJTUFMU19FWENFRURfTElNSVRTEG0SEwoPVE9PX01BTllfVE9LRU5TEG4SCAoEVElFUhBzEhkKFVRJRVJfRkVFX09VVF9PRl9SQU5HRRB0EhgKFFRJRVJfSURfT1VUX09GX1JBTkdFEHUSEgoOVElFUl9OT1RfRk9VTkQQdhIUChBGVU5ESU5HX09WRVJGTE9XEHsSNwozQ0FOX1JFRFVDRV9QT1NJVElPTl9PTkxZX0lGX0FMTF9PUkRFUlNfQVJFX0NBTkNFTEVEEHwSFwoTVU5FWFBFQ1RFRF9UT0tFTl9JRBB/EhYKEVJFUEVBVEVEX09SREVSX0lEEIABEh4KGUNMSUVOVF9PUkRFUl9JRF9UT09fTEFSR0UQgQESFAoPVE9LRU5fTk9UX1JFQURZEIIBEh0KGFRPS0VOX0FMUkVBRFlfUkVHSVNURVJFRBCDARIhChxJTU1FRElBVEVfT1JERVJfR09UX05PX0ZJTExTEIUBEhkKFEZBSUxFRF9UT19GSUxMX0xJTUlUEIYBEjAKK1BPU1RfT05MWV9NVVNUX05PVF9GSUxMX0FOWV9PUFBPU0lURV9PUkRFUlMQhwESDAoHSU5WQUxJRBCIARIQCgtNQUlOVEVOQU5DRRCJARIaChVNSU5JTVVNX1NJWkVfREVDSU1BTFMQigESMgotUEFSQU1FVEVSU19XSUxMX0NSRUFURV9OT05fT1BFUkFUSU9OQUxfTUFSS0VUEIsBEiIKHU9OTFlfSU1NRURJQVRFX09SREVSU19BTExPV0VEEIwBEhsKFlRPT19NQU5ZX1VTRVJfQUNDT1VOVFMQjQESFgoRQUNDT1VOVF9OT1RfRk9VTkQQjgESGgoVQUNDT1VOVF9JTlZBTElEX09XTkVSEI8BEhsKFlNVQkFDVElPTl9PVVRfT0ZfUkFOR0UQkAESEQoMRFVTVF9BQ0NPVU5UEJEBEgwKB0JBTEFOQ0UQoAESHQoYQkFMQU5DRV9ERVBPU0lUX09WRVJGTE9XEKEBEhwKF0JBTEFOQ0VfQ0hBTkdFX09WRVJGTE9XEKIBEiIKHUJBTEFOQ0VfQ0hBTkdFX0xJTUlUX0VYQ0VFREVEEKMBEhkKFEJBTEFOQ0VfSU5TVUZGSUNJRU5UEKQBEh4KGVVOQVVUSEVOVElDQVRFRF9MMV9BQ1RJT04QpQESHQoYRU5DT0RFRF9BQ1RJT05fVE9PX0xBUkdFEKYBEgwKB1RSSUdHRVIQqAESGgoVVFJJR0dFUl9JTlZBTElEX1BSSUNFEKkBEhYKEVRSSUdHRVJfTk9UX0ZPVU5EEKoBEisKJlRSSUdHRVJfT05MWV9ERUNSRUFTRV9PUkRFUlNfU1VQUE9SVEVEEKsBEigKI1RSSUdHRVJfTUFYX1NJWkVfUExBQ0VNRU5UX0VYQ0VFREVEEKwBEhgKE1RSSUdHRVJfTk9UX0NIQU5HRUQQrQESDgoJVElNRVNUQU1QELABEh8KGlRJTUVTVEFNUF9PVVRfT0ZfVEhSRVNIT0xEELEBEhQKD1RJTUVTVEFNUF9TVEFMRRCyARIcChhFWFBJUllfVElNRVNUQU1QX0lOX1BBU1QQEBIlCiBCQU5LUlVQVENZX0lOU1VGRklDSUVOVF9DT1ZFUkFHRRC5ARIZChRCQU5LUlVQVENZX05PVF9GT1VORBC6ARIbChZCQU5LUlVQVENZX05PVF9BTExPV0VEELsBEhUKEE1BUktFVF9OT1RfUkVBRFkQwAESEgoNTUFSS0VUX0ZST1pFThDBARIRCgxNQVJLRVRfRU1QVFkQwgESMAorTUFSS0VUX01PREVfRE9FU19OT1RfU1VQUE9SVF9USElTX09QRVJBVElPThDDARINCghQT1NJVElPThDIARIXChJQT1NJVElPTl9OT1RfRk9VTkQQyQESGQoUUE9TSVRJT05fU1RBVEVfT1JERVIQygESHwoaUE9TSVRJT05fU1RBVEVfT1JERVJfUFJJQ0UQywESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0laRRDMARIeChlQT1NJVElPTl9TVEFURV9PUkRFUl9TSURFEM0BEhgKE1BPU0lUSU9OX1NJWkVfTElNSVQQzgESGAoTUE9TSVRJT05fU1RBVEVfUEVSUBDPARIkCh9QT1NJVElPTl9TVEFURV9PUkRFUl9ERUxFR0FUSU9OENABEgoKBVBSSUNFENEBEhsKFlNJR05BVFVSRV9WRVJJRklDQVRJT04Q2QESMAorU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9NQUxGT1JNRURfUFVCTElDX0tFWRDaARIqCiVTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0lOVkFMSURfTEVOR1RIENsBEgkKBFJJU0sQ4AESNAovUklTS19ERUxFR0FUSU9OX01GX1RPX0JFX0xFU1NfVEhBTl9PUl9FUVVBTF9NTUYQ4QESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0lNRhDiARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOMBEjUKMFJJU0tfVU5IRUFMVEhZX01GX0FORF9QT05fQUZURVJfQkVUVEVSX09GX0JFRk9SRRDkARIqCiVSSVNLX1RSQURFX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOUBEhQKD1JJU0tfTk9UX0VOT1VHSBDmARIUCg9PUkRFUl9FWEVDVVRJT04Q8AESGgoVT1JERVJfRVhFQ1VUSU9OX0VNUFRZEPEBEiEKHE9SREVSX0VYRUNVVElPTl9GSUxMX09SX0tJTEwQ8gESIwoeT1JERVJfRVhFQ1VUSU9OX01JU1NJTkdfTElNSVRTEPMBEiIKHU9SREVSX0VYRUNVVElPTl9NSVNTSU5HX1BSSUNFEPQBEh8KGk9SREVSX0VYRUNVVElPTl9TSVpFX0xJTUlUEPUBEiAKG09SREVSX0VYRUNVVElPTl9MSU1JVF9QUklDRRD2ARIeChlPUkRFUl9SRURVQ0VfSVNfUE9TVF9PTkxZEPcBEh8KGk9SREVSX0VYRUNVVElPTl9TRUxMX1BSSUNFEPgBEiUKIE9SREVSX1NJWkVfRVhDRUVEU19QT1NJVElPTl9TSVpFEPkBEgwKB0FUT01JQ1MQgAISKAojQVRPTUlDU19UUkFERVNfQ0FOTk9UX0ZPTExPV19QTEFDRVMQgQISMAorQVRPTUlDU19DQU5DRUxTX0NBTk5PVF9GT0xMT1dfVFJBREVTX1BMQUNFUxCCAhIdChhBVE9NSUNTX0RVUExJQ0FURV9DQU5DRUwQgwISGAoTUkZRX09SREVSX1RJTUVPVVRFRBD6ARImCiFBQ1RJT05fUE9TSVRJT05fU0hPVUxEX0JFX0NPVkVSRUQQkQISGQoUQUNUSU9OX0lOVkFMSURfTk9OQ0UQkgISKQokQUNUSU9OX1BST1BPU0VEX1BSSUNFX01VU1RfQkVfSElHSEVSEJMCEhwKF0FETUlOX1JPTEVfSU5TVUZGSUNJRU5UEJQCEhQKD0FETUlOX05PVF9GT1VORBCVAhIpCiRVTklRVUVfU1VQRVJfQURNSU5fQ0FOTk9UX0JFX1JFTU9WRUQQlgISHwoaU1VQRVJfQURNSU5fQUxSRUFEWV9FWElTVFMQlwISFQoQVFJJR0dFUl9DT05GTElDVBCYAhIaChVUUklHR0VSX0VESVRfQ09ORkxJQ1QQmQISHAoXVFJJR0dFUl9SRU1PVkVfQ09ORkxJQ1QQmgISDQoIVFJBTlNGRVIQoAISLgopVFJBTlNGRVJfVE9fVU5PV05FRF9BQ0NPVU5UX0lTX1BST0hJQklURUQQoQISLAonVFJBTlNGRVJfVE9fT1dORURfQUNDT1VOVF9XQVNfUkVRVUVTVEVEEKICEioKJVRSQU5TRkVSX1RPX0NMQUlNX1ZBVUxUX0lTX1BST0hJQklURUQQowISCgoFVkFVTFQQqAISFAoPVkFVTFRfTk9UX0ZPVU5EEKkCEh0KGFZBVUxUX0FDVElPTl9OT1RfQUxMT1dFRBCqAhIZChRWQVVMVF9TVEFUVVNfSU5WQUxJRBCrAhIlCiBWQVVMVF9SRURVQ0VfT05MWV9PUkRFUl9SRVFVSVJFRBCsAhImCiFWQVVMVF9BQ1RJT05fV09VTERfREVHUkFERV9TVEFUVVMQrQISGQoUVkFVTFRfVVNFUl9OT1RfRk9VTkQQrgISHQoYVkFVTFRfVVNFUl9IQVNfTk9fU0hBUkVTEK8CEhwKF1ZBVUxUX1BFUk1JU1NJT05fREVOSUVEELYCEhIKDVZBVUxUX0RFUE9TSVQQsAISMQosVkFVTFRfREVQT1NJVF9CT09UU1RSQVBfUkVRVUlSRVNfRU1QVFlfVkFVTFQQsQISHwoaVkFVTFRfREVQT1NJVF9DQVBfRVhDRUVERUQQsgISKQokVkFVTFRfREVQT1NJVF9SRVFVSVJFU19BQ1RJVkVfU1RBVFVTELMCEi8KKlZBVUxUX0RFUE9TSVRfQ0FQX0JFTE9XX0NVUlJFTlRfUkFXX0VRVUlUWRC0AhIcChdWQVVMVF9ERVBPU0lUX1RPT19TTUFMTBC1AhITCg5WQVVMVF9XSVRIRFJBVxC4AhIeChlWQVVMVF9JTlNVRkZJQ0lFTlRfU0hBUkVTELkCEi4KKVZBVUxUX1dJVEhEUkFXX1JFUVVJUkVTX05PTl9GUk9aRU5fU1RBVFVTELoCEiIKHVZBVUxUX05PX0NMQUlNQUJMRV9XSVRIRFJBV0FMELsCEiUKIFZBVUxUX1dJVEhEUkFXX1FVT1RFX1VOQVZBSUxBQkxFELwCEi0KKFZBVUxUX0RVU1RfRVhJVF9SRVFVSVJFU19GVUxMX1NIQVJFX0VYSVQQvQISNQowVkFVTFRfTEFTVF9TSEFSRV9XSVRIRFJBV19SRVFVSVJFU19FTVBUWV9BQ0NPVU5UEL4CEigKI1ZBVUxUX1dJVEhEUkFXX1JFUVVJUkVTX0xJVkVfU0hBUkVTEL8CEhIKDVZBVUxUX0NPTlRST0wQwAISHQoYVkFVTFRfRVBPQ0hfTk9UX0VMSUdJQkxFEMECEjIKLVZBVUxUX0ZSRUVaRV9USFJFU0hPTERfTVVTVF9FWENFRURfUFJPVEVDVElPThDDAhIdChhWQVVMVF9DT05GSUdfUEFUQ0hfRU1QVFkQxAISKAojVkFVTFRfTk9fU1RBVFVTX1RSQU5TSVRJT05fUkVRVUlSRUQQxQISLQooVkFVTFRfRlJPWkVOX1NUQVRVU19SRVFVSVJFU19TVVBFUl9BRE1JThDGAhIqCiVWQVVMVF9ORVdfQ09ORklHX1dPVUxEX0RFR1JBREVfU1RBVFVTEMcCEg4KCVJGUV9FUlJPUhDIAhIQCgtSRlFfVElNRU9VVBDJAhIUCg9OT1RfSU1QTEVNRU5URUQQ9AMSFwoSQUNUSU9OX05PVF9BTExPV0VEEPUDEhgKE05PVF9TVVBQT1JURURfSU5QVVQQ9gMSDAoHRFJPUFBFRBDnB2IGcHJvdG8z");
57298
57300
  var U128Schema = /* @__PURE__ */ messageDesc(file_nord, 0);
57299
57301
  var RfqTradeSchema = /* @__PURE__ */ messageDesc(file_nord, 1);
57300
- var RfqPlaceOnlySchema = /* @__PURE__ */ messageDesc(file_nord, 2);
57301
- var SetRfqMakersSchema = /* @__PURE__ */ messageDesc(file_nord, 3);
57302
- var SetMarketModeRFQSchema = /* @__PURE__ */ messageDesc(file_nord, 4);
57303
- var CreateRfqMarketSchema = /* @__PURE__ */ messageDesc(file_nord, 5);
57304
- var CreateRfqMarket_DecimalsSchema = /* @__PURE__ */ messageDesc(file_nord, 5, 0);
57305
- var CreateRfqMarket_MarginsSchema = /* @__PURE__ */ messageDesc(file_nord, 5, 1);
57306
- var CreateRfqMarket_SymbolsSchema = /* @__PURE__ */ messageDesc(file_nord, 5, 2);
57307
- var RfqTradeActionSchema = /* @__PURE__ */ messageDesc(file_nord, 6);
57308
- var RfqTradeReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 7);
57309
- var RfqTradeReceipt_SuccessSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 0);
57302
+ var PartialFillSchema = /* @__PURE__ */ messageDesc(file_nord, 2);
57303
+ var FillTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 3);
57304
+ var RfqPlaceOnlySchema = /* @__PURE__ */ messageDesc(file_nord, 4);
57305
+ var SetRfqMakersSchema = /* @__PURE__ */ messageDesc(file_nord, 5);
57306
+ var SetMarketModeRFQSchema = /* @__PURE__ */ messageDesc(file_nord, 6);
57307
+ var CreateRfqMarketSchema = /* @__PURE__ */ messageDesc(file_nord, 7);
57308
+ var CreateRfqMarket_DecimalsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 0);
57309
+ var CreateRfqMarket_MarginsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 1);
57310
+ var CreateRfqMarket_SymbolsSchema = /* @__PURE__ */ messageDesc(file_nord, 7, 2);
57311
+ var RfqTradeActionSchema = /* @__PURE__ */ messageDesc(file_nord, 8);
57312
+ var RfqTradeReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 9);
57313
+ var RfqTradeReceipt_SuccessSchema = /* @__PURE__ */ messageDesc(file_nord, 9, 0);
57310
57314
  var RfqTradeReceipt_FailureReason;
57311
57315
  ((RfqTradeReceipt_FailureReason2) => {
57312
57316
  RfqTradeReceipt_FailureReason2[RfqTradeReceipt_FailureReason2["TIMEOUT"] = 0] = "TIMEOUT";
57313
57317
  RfqTradeReceipt_FailureReason2[RfqTradeReceipt_FailureReason2["REJECTED"] = 1] = "REJECTED";
57314
57318
  })(RfqTradeReceipt_FailureReason ||= {});
57315
- var RfqTradeReceipt_FailureReasonSchema = /* @__PURE__ */ enumDesc(file_nord, 7, 0);
57316
- var PlaceRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 8);
57317
- var FillRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 9);
57318
- var RfqMakersSetSchema = /* @__PURE__ */ messageDesc(file_nord, 10);
57319
- var RFQQtyPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 11);
57320
- var FeeTierConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 12);
57321
- var MarketSchema = /* @__PURE__ */ messageDesc(file_nord, 13);
57322
- var TokenSchema = /* @__PURE__ */ messageDesc(file_nord, 14);
57323
- var VaultHealthSchema = /* @__PURE__ */ messageDesc(file_nord, 15);
57324
- var VaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 16);
57325
- var VaultConfigPatchSchema = /* @__PURE__ */ messageDesc(file_nord, 17);
57326
- var CreateVaultSchema = /* @__PURE__ */ messageDesc(file_nord, 18);
57327
- var UpdateVaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 19);
57328
- var SetVaultManagerSchema = /* @__PURE__ */ messageDesc(file_nord, 20);
57329
- var VaultSyncEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 21);
57330
- var StagedAdminActionSchema = /* @__PURE__ */ messageDesc(file_nord, 22);
57331
- var AdminActionKindSchema = /* @__PURE__ */ messageDesc(file_nord, 23);
57332
- var VaultDepositSchema = /* @__PURE__ */ messageDesc(file_nord, 24);
57333
- var VaultWithdrawSchema = /* @__PURE__ */ messageDesc(file_nord, 25);
57334
- var VaultWithdraw_RequestSchema = /* @__PURE__ */ messageDesc(file_nord, 25, 0);
57335
- var VaultWithdraw_ClaimSchema = /* @__PURE__ */ messageDesc(file_nord, 25, 1);
57336
- var CreateVaultReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 26);
57337
- var UpdateVaultConfigReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 27);
57338
- var SetVaultManagerReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 28);
57339
- var VaultSyncEpochsReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 29);
57340
- var VaultDepositReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 30);
57341
- var WithdrawalBucketsSchema = /* @__PURE__ */ messageDesc(file_nord, 31);
57342
- var VaultPpsRefSchema = /* @__PURE__ */ messageDesc(file_nord, 32);
57343
- var VaultEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 33);
57344
- var VaultUserStateSchema = /* @__PURE__ */ messageDesc(file_nord, 34);
57345
- var VaultWithdrawReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 35);
57346
- var VaultWithdrawReceipt_RequestedSchema = /* @__PURE__ */ messageDesc(file_nord, 35, 0);
57347
- var VaultWithdrawReceipt_ClaimedSchema = /* @__PURE__ */ messageDesc(file_nord, 35, 1);
57348
- var OrderLimitSchema = /* @__PURE__ */ messageDesc(file_nord, 36);
57349
- var PlaceTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 37);
57350
- var TradeOrPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 38);
57351
- var AtomicCancelOrderByIdSchema = /* @__PURE__ */ messageDesc(file_nord, 39);
57352
- var AtomicCancelOrderByClientIdSchema = /* @__PURE__ */ messageDesc(file_nord, 40);
57353
- var AtomicAddTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 41);
57354
- var AtomicEditTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 42);
57355
- var AtomicRemoveTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 43);
57356
- var ReduceOrderLiquidationSchema = /* @__PURE__ */ messageDesc(file_nord, 44);
57357
- var AtomicSubactionKindV1Schema = /* @__PURE__ */ messageDesc(file_nord, 45);
57358
- var AtomicV1Schema = /* @__PURE__ */ messageDesc(file_nord, 46);
57359
- var AtomicPlacementRequestSchema = /* @__PURE__ */ messageDesc(file_nord, 47);
57360
- var AtomicSubactionSchema = /* @__PURE__ */ messageDesc(file_nord, 48);
57361
- var AtomicSubactionV2Schema = /* @__PURE__ */ messageDesc(file_nord, 49);
57362
- var AtomicSchema = /* @__PURE__ */ messageDesc(file_nord, 50);
57363
- var AtomicV2Schema = /* @__PURE__ */ messageDesc(file_nord, 51);
57319
+ var RfqTradeReceipt_FailureReasonSchema = /* @__PURE__ */ enumDesc(file_nord, 9, 0);
57320
+ var PlaceRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 10);
57321
+ var RFQExecutionSchema = /* @__PURE__ */ messageDesc(file_nord, 11);
57322
+ var FillRFQResultSchema = /* @__PURE__ */ messageDesc(file_nord, 12);
57323
+ var RfqMakersSetSchema = /* @__PURE__ */ messageDesc(file_nord, 13);
57324
+ var RFQQtyPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 14);
57325
+ var FeeTierConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 15);
57326
+ var MarketSchema = /* @__PURE__ */ messageDesc(file_nord, 16);
57327
+ var TokenSchema = /* @__PURE__ */ messageDesc(file_nord, 17);
57328
+ var VaultHealthSchema = /* @__PURE__ */ messageDesc(file_nord, 18);
57329
+ var VaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 19);
57330
+ var VaultConfigPatchSchema = /* @__PURE__ */ messageDesc(file_nord, 20);
57331
+ var CreateVaultSchema = /* @__PURE__ */ messageDesc(file_nord, 21);
57332
+ var UpdateVaultConfigSchema = /* @__PURE__ */ messageDesc(file_nord, 22);
57333
+ var SetVaultManagerSchema = /* @__PURE__ */ messageDesc(file_nord, 23);
57334
+ var VaultSyncEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 24);
57335
+ var StagedAdminActionSchema = /* @__PURE__ */ messageDesc(file_nord, 25);
57336
+ var AdminActionKindSchema = /* @__PURE__ */ messageDesc(file_nord, 26);
57337
+ var VaultDepositSchema = /* @__PURE__ */ messageDesc(file_nord, 27);
57338
+ var VaultWithdrawSchema = /* @__PURE__ */ messageDesc(file_nord, 28);
57339
+ var VaultWithdraw_RequestSchema = /* @__PURE__ */ messageDesc(file_nord, 28, 0);
57340
+ var VaultWithdraw_ClaimSchema = /* @__PURE__ */ messageDesc(file_nord, 28, 1);
57341
+ var CreateVaultReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 29);
57342
+ var UpdateVaultConfigReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 30);
57343
+ var SetVaultManagerReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 31);
57344
+ var VaultSyncEpochsReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 32);
57345
+ var VaultDepositReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 33);
57346
+ var WithdrawalBucketsSchema = /* @__PURE__ */ messageDesc(file_nord, 34);
57347
+ var VaultPpsRefSchema = /* @__PURE__ */ messageDesc(file_nord, 35);
57348
+ var VaultEpochsSchema = /* @__PURE__ */ messageDesc(file_nord, 36);
57349
+ var VaultUserStateSchema = /* @__PURE__ */ messageDesc(file_nord, 37);
57350
+ var VaultWithdrawReceiptSchema = /* @__PURE__ */ messageDesc(file_nord, 38);
57351
+ var VaultWithdrawReceipt_RequestedSchema = /* @__PURE__ */ messageDesc(file_nord, 38, 0);
57352
+ var VaultWithdrawReceipt_ClaimedSchema = /* @__PURE__ */ messageDesc(file_nord, 38, 1);
57353
+ var OrderLimitSchema = /* @__PURE__ */ messageDesc(file_nord, 39);
57354
+ var PlaceTypeSchema = /* @__PURE__ */ messageDesc(file_nord, 40);
57355
+ var TradeOrPlaceSchema = /* @__PURE__ */ messageDesc(file_nord, 41);
57356
+ var AtomicCancelOrderByIdSchema = /* @__PURE__ */ messageDesc(file_nord, 42);
57357
+ var AtomicCancelOrderByClientIdSchema = /* @__PURE__ */ messageDesc(file_nord, 43);
57358
+ var AtomicAddTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 44);
57359
+ var AtomicEditTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 45);
57360
+ var AtomicRemoveTriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 46);
57361
+ var ReduceOrderLiquidationSchema = /* @__PURE__ */ messageDesc(file_nord, 47);
57362
+ var AtomicSubactionKindV1Schema = /* @__PURE__ */ messageDesc(file_nord, 48);
57363
+ var AtomicV1Schema = /* @__PURE__ */ messageDesc(file_nord, 49);
57364
+ var AtomicSubactionSchema = /* @__PURE__ */ messageDesc(file_nord, 50);
57365
+ var AtomicSchema = /* @__PURE__ */ messageDesc(file_nord, 51);
57364
57366
  var PythLazerTrustedSignerSchema = /* @__PURE__ */ messageDesc(file_nord, 52);
57365
57367
  var TriggerRecordSchema = /* @__PURE__ */ messageDesc(file_nord, 53);
57366
57368
  var TriggerSchema = /* @__PURE__ */ messageDesc(file_nord, 54);
@@ -57493,18 +57495,25 @@ var MarketRegime;
57493
57495
  MarketRegime2[MarketRegime2["TRADE_ONLY"] = 2] = "TRADE_ONLY";
57494
57496
  })(MarketRegime ||= {});
57495
57497
  var MarketRegimeSchema = /* @__PURE__ */ enumDesc(file_nord, 2);
57498
+ var RfqFillStatus;
57499
+ ((RfqFillStatus2) => {
57500
+ RfqFillStatus2[RfqFillStatus2["COMPLETED"] = 0] = "COMPLETED";
57501
+ RfqFillStatus2[RfqFillStatus2["TRUNCATED"] = 1] = "TRUNCATED";
57502
+ RfqFillStatus2[RfqFillStatus2["PARTIAL"] = 2] = "PARTIAL";
57503
+ })(RfqFillStatus ||= {});
57504
+ var RfqFillStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 3);
57496
57505
  var TriggerKind;
57497
57506
  ((TriggerKind2) => {
57498
57507
  TriggerKind2[TriggerKind2["STOP_LOSS"] = 0] = "STOP_LOSS";
57499
57508
  TriggerKind2[TriggerKind2["TAKE_PROFIT"] = 1] = "TAKE_PROFIT";
57500
57509
  })(TriggerKind ||= {});
57501
- var TriggerKindSchema = /* @__PURE__ */ enumDesc(file_nord, 3);
57510
+ var TriggerKindSchema = /* @__PURE__ */ enumDesc(file_nord, 4);
57502
57511
  var Intent;
57503
57512
  ((Intent2) => {
57504
57513
  Intent2[Intent2["DECREASE"] = 0] = "DECREASE";
57505
57514
  Intent2[Intent2["INCREASE"] = 1] = "INCREASE";
57506
57515
  })(Intent ||= {});
57507
- var IntentSchema = /* @__PURE__ */ enumDesc(file_nord, 4);
57516
+ var IntentSchema = /* @__PURE__ */ enumDesc(file_nord, 5);
57508
57517
  var FillMode;
57509
57518
  ((FillMode2) => {
57510
57519
  FillMode2[FillMode2["LIMIT"] = 0] = "LIMIT";
@@ -57512,7 +57521,7 @@ var FillMode;
57512
57521
  FillMode2[FillMode2["IMMEDIATE_OR_CANCEL"] = 2] = "IMMEDIATE_OR_CANCEL";
57513
57522
  FillMode2[FillMode2["FILL_OR_KILL"] = 3] = "FILL_OR_KILL";
57514
57523
  })(FillMode ||= {});
57515
- var FillModeSchema = /* @__PURE__ */ enumDesc(file_nord, 5);
57524
+ var FillModeSchema = /* @__PURE__ */ enumDesc(file_nord, 6);
57516
57525
  var PlacementRole;
57517
57526
  ((PlacementRole2) => {
57518
57527
  PlacementRole2[PlacementRole2["ACCOUNT_OWNER"] = 0] = "ACCOUNT_OWNER";
@@ -57521,19 +57530,19 @@ var PlacementRole;
57521
57530
  PlacementRole2[PlacementRole2["TRIGGER"] = 3] = "TRIGGER";
57522
57531
  PlacementRole2[PlacementRole2["LIQUIDATOR"] = 4] = "LIQUIDATOR";
57523
57532
  })(PlacementRole ||= {});
57524
- var PlacementRoleSchema = /* @__PURE__ */ enumDesc(file_nord, 6);
57533
+ var PlacementRoleSchema = /* @__PURE__ */ enumDesc(file_nord, 7);
57525
57534
  var SelfTradePrevention;
57526
57535
  ((SelfTradePrevention2) => {
57527
57536
  SelfTradePrevention2[SelfTradePrevention2["NONE"] = 0] = "NONE";
57528
57537
  SelfTradePrevention2[SelfTradePrevention2["EXPIRE_MAKER"] = 1] = "EXPIRE_MAKER";
57529
57538
  })(SelfTradePrevention ||= {});
57530
- var SelfTradePreventionSchema = /* @__PURE__ */ enumDesc(file_nord, 7);
57539
+ var SelfTradePreventionSchema = /* @__PURE__ */ enumDesc(file_nord, 8);
57531
57540
  var MarketType;
57532
57541
  ((MarketType2) => {
57533
57542
  MarketType2[MarketType2["SPOT"] = 0] = "SPOT";
57534
57543
  MarketType2[MarketType2["PERPETUALS"] = 1] = "PERPETUALS";
57535
57544
  })(MarketType ||= {});
57536
- var MarketTypeSchema = /* @__PURE__ */ enumDesc(file_nord, 8);
57545
+ var MarketTypeSchema = /* @__PURE__ */ enumDesc(file_nord, 9);
57537
57546
  var TriggerExecError;
57538
57547
  ((TriggerExecError2) => {
57539
57548
  TriggerExecError2[TriggerExecError2["NO_POSITION"] = 0] = "NO_POSITION";
@@ -57542,19 +57551,20 @@ var TriggerExecError;
57542
57551
  TriggerExecError2[TriggerExecError2["RISK_CHECK_FAILED"] = 3] = "RISK_CHECK_FAILED";
57543
57552
  TriggerExecError2[TriggerExecError2["REDUCE_ONLY_CHECK_FAILED"] = 4] = "REDUCE_ONLY_CHECK_FAILED";
57544
57553
  })(TriggerExecError ||= {});
57545
- var TriggerExecErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 9);
57554
+ var TriggerExecErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 10);
57546
57555
  var SpecialAccount;
57547
57556
  ((SpecialAccount2) => {
57548
57557
  SpecialAccount2[SpecialAccount2["FEE_VAULT"] = 0] = "FEE_VAULT";
57558
+ SpecialAccount2[SpecialAccount2["CLAIM_VAULT"] = 1] = "CLAIM_VAULT";
57549
57559
  })(SpecialAccount ||= {});
57550
- var SpecialAccountSchema = /* @__PURE__ */ enumDesc(file_nord, 10);
57560
+ var SpecialAccountSchema = /* @__PURE__ */ enumDesc(file_nord, 11);
57551
57561
  var VaultStatus;
57552
57562
  ((VaultStatus2) => {
57553
57563
  VaultStatus2[VaultStatus2["ACTIVE"] = 0] = "ACTIVE";
57554
57564
  VaultStatus2[VaultStatus2["DERISK_ONLY"] = 1] = "DERISK_ONLY";
57555
57565
  VaultStatus2[VaultStatus2["FROZEN"] = 2] = "FROZEN";
57556
57566
  })(VaultStatus ||= {});
57557
- var VaultStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 11);
57567
+ var VaultStatusSchema = /* @__PURE__ */ enumDesc(file_nord, 12);
57558
57568
  var Error2;
57559
57569
  ((Error3) => {
57560
57570
  Error3[Error3["DUPLICATE"] = 0] = "DUPLICATE";
@@ -57694,6 +57704,7 @@ var Error2;
57694
57704
  Error3[Error3["TRANSFER"] = 288] = "TRANSFER";
57695
57705
  Error3[Error3["TRANSFER_TO_UNOWNED_ACCOUNT_IS_PROHIBITED"] = 289] = "TRANSFER_TO_UNOWNED_ACCOUNT_IS_PROHIBITED";
57696
57706
  Error3[Error3["TRANSFER_TO_OWNED_ACCOUNT_WAS_REQUESTED"] = 290] = "TRANSFER_TO_OWNED_ACCOUNT_WAS_REQUESTED";
57707
+ Error3[Error3["TRANSFER_TO_CLAIM_VAULT_IS_PROHIBITED"] = 291] = "TRANSFER_TO_CLAIM_VAULT_IS_PROHIBITED";
57697
57708
  Error3[Error3["VAULT"] = 296] = "VAULT";
57698
57709
  Error3[Error3["VAULT_NOT_FOUND"] = 297] = "VAULT_NOT_FOUND";
57699
57710
  Error3[Error3["VAULT_ACTION_NOT_ALLOWED"] = 298] = "VAULT_ACTION_NOT_ALLOWED";
@@ -57719,7 +57730,6 @@ var Error2;
57719
57730
  Error3[Error3["VAULT_WITHDRAW_REQUIRES_LIVE_SHARES"] = 319] = "VAULT_WITHDRAW_REQUIRES_LIVE_SHARES";
57720
57731
  Error3[Error3["VAULT_CONTROL"] = 320] = "VAULT_CONTROL";
57721
57732
  Error3[Error3["VAULT_EPOCH_NOT_ELIGIBLE"] = 321] = "VAULT_EPOCH_NOT_ELIGIBLE";
57722
- Error3[Error3["VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE"] = 322] = "VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE";
57723
57733
  Error3[Error3["VAULT_FREEZE_THRESHOLD_MUST_EXCEED_PROTECTION"] = 323] = "VAULT_FREEZE_THRESHOLD_MUST_EXCEED_PROTECTION";
57724
57734
  Error3[Error3["VAULT_CONFIG_PATCH_EMPTY"] = 324] = "VAULT_CONFIG_PATCH_EMPTY";
57725
57735
  Error3[Error3["VAULT_NO_STATUS_TRANSITION_REQUIRED"] = 325] = "VAULT_NO_STATUS_TRANSITION_REQUIRED";
@@ -57732,7 +57742,7 @@ var Error2;
57732
57742
  Error3[Error3["NOT_SUPPORTED_INPUT"] = 502] = "NOT_SUPPORTED_INPUT";
57733
57743
  Error3[Error3["DROPPED"] = 999] = "DROPPED";
57734
57744
  })(Error2 ||= {});
57735
- var ErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 12);
57745
+ var ErrorSchema = /* @__PURE__ */ enumDesc(file_nord, 13);
57736
57746
 
57737
57747
  // src/types.ts
57738
57748
  var TOPIC_INFO_NAMES = {
@@ -92458,18 +92468,34 @@ class Nord {
92458
92468
  markets = [];
92459
92469
  tokens = [];
92460
92470
  symbolToMarketId = new Map;
92461
- protonClient;
92471
+ protonConfig;
92472
+ protonClientPromise;
92462
92473
  httpClient;
92463
92474
  constructor({
92464
92475
  solanaConnection,
92465
92476
  webServerUrl,
92466
- protonClient
92477
+ protonConfig
92467
92478
  }) {
92468
92479
  this.webServerUrl = webServerUrl;
92469
92480
  this.solanaConnection = solanaConnection;
92470
- this.protonClient = protonClient;
92481
+ this.protonConfig = protonConfig;
92471
92482
  this.httpClient = createClient({ baseUrl: webServerUrl });
92472
92483
  }
92484
+ getProtonClient() {
92485
+ if (this.protonClientPromise === undefined) {
92486
+ const initialization = ProtonClient.init({
92487
+ ...this.protonConfig,
92488
+ solConn: this.solanaConnection
92489
+ });
92490
+ this.protonClientPromise = initialization;
92491
+ initialization.catch(() => {
92492
+ if (this.protonClientPromise === initialization) {
92493
+ this.protonClientPromise = undefined;
92494
+ }
92495
+ });
92496
+ }
92497
+ return this.protonClientPromise;
92498
+ }
92473
92499
  createWebSocketClient({
92474
92500
  trades,
92475
92501
  deltas,
@@ -92596,15 +92622,13 @@ class Nord {
92596
92622
  webServerUrl,
92597
92623
  protonUrl
92598
92624
  }) {
92599
- const protonClient = await ProtonClient.init({
92600
- protonUrl: protonUrl ?? webServerUrl,
92601
- app: new import_web39.PublicKey(app),
92602
- solConn: solanaConnection
92603
- });
92604
92625
  const nord = new Nord({
92605
- protonClient,
92606
92626
  solanaConnection,
92607
- webServerUrl
92627
+ webServerUrl,
92628
+ protonConfig: {
92629
+ protonUrl: protonUrl ?? webServerUrl,
92630
+ app: new import_web39.PublicKey(app)
92631
+ }
92608
92632
  });
92609
92633
  await nord.init();
92610
92634
  return nord;
@@ -93730,7 +93754,25 @@ function normalizeAtomicReceipt(resp, actionCount) {
93730
93754
  }
93731
93755
  return;
93732
93756
  }
93733
- function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = false) {
93757
+ function buildFillType(minimumSize, maximumSize, isReduceOnly) {
93758
+ if (minimumSize === undefined && maximumSize === undefined) {
93759
+ return isReduceOnly === undefined ? undefined : create(FillTypeSchema, { isReduceOnly });
93760
+ }
93761
+ assert3(minimumSize !== undefined && maximumSize !== undefined, "partial-fill RFQ requires both minimumSize and maximumSize");
93762
+ const partialFill = create(PartialFillSchema, {
93763
+ minimumSize: BigInt(minimumSize),
93764
+ maximumSize: BigInt(maximumSize)
93765
+ });
93766
+ return create(FillTypeSchema, {
93767
+ isReduceOnly,
93768
+ partialFill
93769
+ });
93770
+ }
93771
+ function atomicSubactionToProto(currentTimestamp, a2) {
93772
+ const target = {
93773
+ targetAccountId: a2.targetAccountId,
93774
+ useKey: a2.useKey
93775
+ };
93734
93776
  if (a2.kind === "place") {
93735
93777
  const price = toScaledU64(a2.price ?? 0, a2.priceDecimals);
93736
93778
  const size = toScaledU64(a2.size ?? 0, a2.sizeDecimals);
@@ -93752,16 +93794,16 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93752
93794
  referrer: a2.referrer === undefined ? undefined : toProtoU128(a2.referrer)
93753
93795
  });
93754
93796
  return create(AtomicSubactionSchema, {
93755
- delegatorAccountId: omitDelegatorAccountId ? undefined : a2.delegatorAccountId,
93797
+ ...target,
93756
93798
  inner: { case: "tradeOrPlace", value: tradeOrPlace }
93757
93799
  });
93758
93800
  }
93759
93801
  if (a2.kind === "reduceOrderLiquidation") {
93760
93802
  return create(AtomicSubactionSchema, {
93803
+ ...target,
93761
93804
  inner: {
93762
93805
  case: "reduceOrderLiquidation",
93763
93806
  value: create(ReduceOrderLiquidationSchema, {
93764
- targetAccountId: a2.targetAccountId,
93765
93807
  marketId: a2.marketId
93766
93808
  })
93767
93809
  }
@@ -93771,8 +93813,9 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93771
93813
  const price = toScaledU64(a2.price, a2.priceDecimals);
93772
93814
  const size = toScaledU64(a2.size, a2.sizeDecimals);
93773
93815
  const timestampMillis = currentTimestamp * 1000n;
93816
+ const fillType = buildFillType(a2.minimumSize, a2.maximumSize, a2.isReduceOnly);
93774
93817
  return create(AtomicSubactionSchema, {
93775
- delegatorAccountId: omitDelegatorAccountId ? undefined : a2.delegatorAccountId,
93818
+ ...target,
93776
93819
  inner: {
93777
93820
  case: "rfqPlaceOnly",
93778
93821
  value: create(RfqPlaceOnlySchema, {
@@ -93782,7 +93825,8 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93782
93825
  price,
93783
93826
  side: a2.side === "bid" /* Bid */ ? 1 /* BID */ : 0 /* ASK */,
93784
93827
  base: size,
93785
- timestampMillis
93828
+ timestampMillis,
93829
+ fillType
93786
93830
  })
93787
93831
  }
93788
93832
  });
@@ -93790,8 +93834,9 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93790
93834
  if (a2.kind === "rfqFill") {
93791
93835
  const price = toScaledU64(a2.price, a2.priceDecimals);
93792
93836
  const timestampMillis = currentTimestamp * 1000n;
93837
+ const fillType = buildFillType(a2.minimumSize, a2.maximumSize, a2.isReduceOnly);
93793
93838
  return create(AtomicSubactionSchema, {
93794
- delegatorAccountId: omitDelegatorAccountId ? undefined : a2.delegatorAccountId,
93839
+ ...target,
93795
93840
  inner: {
93796
93841
  case: "rfqTrade",
93797
93842
  value: create(RfqTradeSchema, {
@@ -93799,14 +93844,15 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93799
93844
  marketId: a2.marketId,
93800
93845
  orderId: BigInt(a2.orderId),
93801
93846
  price,
93802
- timestampMillis
93847
+ timestampMillis,
93848
+ fillType
93803
93849
  })
93804
93850
  }
93805
93851
  });
93806
93852
  }
93807
93853
  if (a2.kind === "cancelByClientId") {
93808
93854
  return create(AtomicSubactionSchema, {
93809
- delegatorAccountId: omitDelegatorAccountId ? undefined : a2.delegatorAccountId,
93855
+ ...target,
93810
93856
  inner: {
93811
93857
  case: "cancelOrderByClientId",
93812
93858
  value: create(AtomicCancelOrderByClientIdSchema, {
@@ -93820,6 +93866,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93820
93866
  assert3(triggerPrice > 0n, "Trigger price must be positive");
93821
93867
  const limits = buildLimits(a2.priceDecimals, a2.sizeDecimals, a2.limitPrice, a2.limitBaseSize, a2.limitQuoteSize);
93822
93868
  return create(AtomicSubactionSchema, {
93869
+ ...target,
93823
93870
  inner: {
93824
93871
  case: "addTrigger",
93825
93872
  value: create(AtomicAddTriggerSchema, {
@@ -93841,6 +93888,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93841
93888
  assert3(triggerPrice > 0n, "Trigger price must be positive");
93842
93889
  const limits = buildLimits(a2.priceDecimals, a2.sizeDecimals, a2.limitPrice, a2.limitBaseSize, a2.limitQuoteSize);
93843
93890
  return create(AtomicSubactionSchema, {
93891
+ ...target,
93844
93892
  inner: {
93845
93893
  case: "editTrigger",
93846
93894
  value: create(AtomicEditTriggerSchema, {
@@ -93858,6 +93906,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93858
93906
  }
93859
93907
  if (a2.kind === "removeTrigger") {
93860
93908
  return create(AtomicSubactionSchema, {
93909
+ ...target,
93861
93910
  inner: {
93862
93911
  case: "removeTrigger",
93863
93912
  value: create(AtomicRemoveTriggerSchema, {
@@ -93868,7 +93917,7 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93868
93917
  });
93869
93918
  }
93870
93919
  return create(AtomicSubactionSchema, {
93871
- delegatorAccountId: omitDelegatorAccountId ? undefined : a2.delegatorAccountId,
93920
+ ...target,
93872
93921
  inner: {
93873
93922
  case: "cancelOrder",
93874
93923
  value: create(AtomicCancelOrderByIdSchema, {
@@ -93877,53 +93926,10 @@ function atomicSubactionToProto(currentTimestamp, a2, omitDelegatorAccountId = f
93877
93926
  }
93878
93927
  });
93879
93928
  }
93880
- function atomicPlacement(a2) {
93881
- return "placement" in a2 ? a2.placement : undefined;
93882
- }
93883
- async function atomic(client2, signFn, currentTimestamp, nonce, params) {
93929
+ function createAtomicAction(currentTimestamp, nonce, params) {
93884
93930
  assert3(params.actions.length > 0 && params.actions.length <= 10, "Atomic action must contain between 1 and 10 sub-actions");
93885
- const useAtomicV2 = params.actions.some((a2) => a2.kind === "reduceOrderLiquidation" || atomicPlacement(a2) !== undefined);
93886
- const subactions = params.actions.map((a2) => atomicSubactionToProto(currentTimestamp, a2, useAtomicV2));
93887
- const action = createAction(currentTimestamp, nonce, useAtomicV2 ? {
93888
- case: "atomicV2",
93889
- value: create(AtomicV2Schema, {
93890
- sessionId: BigInt(params.sessionId),
93891
- accountId: params.accountId,
93892
- actions: params.actions.map((a2, index) => {
93893
- const subaction = subactions[index];
93894
- assert3(subaction !== undefined, "Atomic subaction missing");
93895
- let placement;
93896
- const placementRequest = atomicPlacement(a2);
93897
- if (placementRequest === undefined) {
93898
- if ("delegatorAccountId" in a2 && a2.delegatorAccountId !== undefined) {
93899
- placement = create(AtomicPlacementRequestSchema, {
93900
- inner: {
93901
- case: "liquidationAccountId",
93902
- value: a2.delegatorAccountId
93903
- }
93904
- });
93905
- }
93906
- } else if (placementRequest !== "accountOwner") {
93907
- if ("vault" in placementRequest) {
93908
- placement = create(AtomicPlacementRequestSchema, {
93909
- inner: { case: "vaultId", value: placementRequest.vault }
93910
- });
93911
- } else {
93912
- placement = create(AtomicPlacementRequestSchema, {
93913
- inner: {
93914
- case: "liquidationAccountId",
93915
- value: placementRequest.liquidation
93916
- }
93917
- });
93918
- }
93919
- }
93920
- return create(AtomicSubactionV2Schema, {
93921
- placement,
93922
- subaction
93923
- });
93924
- })
93925
- })
93926
- } : {
93931
+ const subactions = params.actions.map((a2) => atomicSubactionToProto(currentTimestamp, a2));
93932
+ return createAction(currentTimestamp, nonce, {
93927
93933
  case: "atomic",
93928
93934
  value: create(AtomicSchema, {
93929
93935
  sessionId: BigInt(params.sessionId),
@@ -93931,6 +93937,9 @@ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
93931
93937
  actions: subactions
93932
93938
  })
93933
93939
  });
93940
+ }
93941
+ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
93942
+ const action = createAtomicAction(currentTimestamp, nonce, params);
93934
93943
  const resp = await sendAction(client2, (m2) => sessionSign(signFn, m2), action);
93935
93944
  const results = normalizeAtomicReceipt(resp, params.actions.length);
93936
93945
  if (results !== undefined) {
@@ -93943,17 +93952,25 @@ async function atomic(client2, signFn, currentTimestamp, nonce, params) {
93943
93952
  }
93944
93953
 
93945
93954
  // src/client/NordUser.ts
93955
+ function withAtomicTarget(target, action) {
93956
+ const targetFields = target.targetAccountId === undefined ? {} : target.useKey === true ? { targetAccountId: target.targetAccountId, useKey: true } : { targetAccountId: target.targetAccountId };
93957
+ return { ...targetFields, ...action };
93958
+ }
93946
93959
  function decodeRfqFillResult(actionId, result) {
93947
93960
  if (result?.case !== "rfqFillResult") {
93948
93961
  throw new NordError("RFQ fill did not return an RFQ fill result");
93949
93962
  }
93963
+ const execution = result.value.execution;
93950
93964
  return {
93951
93965
  actionId,
93952
93966
  orderId: result.value.orderId,
93953
93967
  makerAccountId: result.value.makerAccountId,
93954
93968
  takerAccountId: result.value.takerAccountId,
93955
- filledSize: result.value.filledSize ?? null,
93956
- tradeId: result.value.tradeId ?? null
93969
+ execution: execution === undefined ? null : {
93970
+ filledSize: execution.filledSize,
93971
+ tradeId: execution.tradeId,
93972
+ executionPrice: execution.executionPrice
93973
+ }
93957
93974
  };
93958
93975
  }
93959
93976
 
@@ -94078,7 +94095,8 @@ class NordUser {
94078
94095
  const mint = new import_web310.PublicKey(tokenInfo.mint);
94079
94096
  const fromAccount = await this.getAssociatedTokenAccount(mint);
94080
94097
  const payer = this.publicKey;
94081
- const { ix, extraSigner } = await this.nord.protonClient.buildDepositIx({
94098
+ const protonClient = await this.nord.getProtonClient();
94099
+ const { ix, extraSigner } = await protonClient.buildDepositIx({
94082
94100
  payer,
94083
94101
  recipient: recipient ?? payer,
94084
94102
  quantAmount: floatToScaledBigIntLossy(amount, tokenInfo.precision),
@@ -94478,7 +94496,10 @@ class NordUser {
94478
94496
  price,
94479
94497
  timeout,
94480
94498
  accountId,
94481
- clientOrderId
94499
+ clientOrderId,
94500
+ minimumSize,
94501
+ maximumSize,
94502
+ isReduceOnly
94482
94503
  }) {
94483
94504
  try {
94484
94505
  const result = await this.atomic([
@@ -94489,7 +94510,10 @@ class NordUser {
94489
94510
  size,
94490
94511
  price,
94491
94512
  timeout,
94492
- clientOrderId
94513
+ clientOrderId,
94514
+ minimumSize,
94515
+ maximumSize,
94516
+ isReduceOnly
94493
94517
  }
94494
94518
  ], accountId);
94495
94519
  const rfqResult = result.results[0]?.inner;
@@ -94509,7 +94533,10 @@ class NordUser {
94509
94533
  orderId,
94510
94534
  price,
94511
94535
  timeout,
94512
- accountId
94536
+ accountId,
94537
+ minimumSize,
94538
+ maximumSize,
94539
+ isReduceOnly
94513
94540
  }) {
94514
94541
  try {
94515
94542
  const result = await this.atomic([
@@ -94518,7 +94545,10 @@ class NordUser {
94518
94545
  marketId,
94519
94546
  orderId,
94520
94547
  price,
94521
- timeout
94548
+ timeout,
94549
+ minimumSize,
94550
+ maximumSize,
94551
+ isReduceOnly
94522
94552
  }
94523
94553
  ], accountId);
94524
94554
  return decodeRfqFillResult(result.actionId, result.results[0]?.inner);
@@ -94848,7 +94878,7 @@ class NordUser {
94848
94878
  if (!market) {
94849
94879
  throw new NordError(`Market ${act.marketId} not found`);
94850
94880
  }
94851
- return {
94881
+ return withAtomicTarget(act, {
94852
94882
  kind: "place",
94853
94883
  marketId: act.marketId,
94854
94884
  side: act.side,
@@ -94860,34 +94890,27 @@ class NordUser {
94860
94890
  price: act.price,
94861
94891
  quoteSize: act.quoteSize,
94862
94892
  clientOrderId: act.clientOrderId,
94863
- delegatorAccountId: act.delegatorAccountId,
94864
- placement: act.placement,
94865
94893
  referrer: act.referrer
94866
- };
94894
+ });
94867
94895
  }
94868
94896
  if (act.kind === "cancel") {
94869
- return {
94897
+ return withAtomicTarget(act, {
94870
94898
  kind: "cancel",
94871
- orderId: act.orderId,
94872
- delegatorAccountId: act.delegatorAccountId,
94873
- placement: act.placement
94874
- };
94899
+ orderId: act.orderId
94900
+ });
94875
94901
  }
94876
94902
  if (act.kind === "reduceOrderLiquidation") {
94877
- return {
94903
+ return withAtomicTarget(act, {
94878
94904
  kind: "reduceOrderLiquidation",
94879
- targetAccountId: act.targetAccountId,
94880
- marketId: act.marketId,
94881
- delegatorAccountId: act.delegatorAccountId,
94882
- placement: act.placement
94883
- };
94905
+ marketId: act.marketId
94906
+ });
94884
94907
  }
94885
94908
  if (act.kind === "rfq") {
94886
94909
  const market = findMarket(this.nord.markets, act.marketId);
94887
94910
  if (!market) {
94888
94911
  throw new NordError(`Market ${act.marketId} not found`);
94889
94912
  }
94890
- return {
94913
+ return withAtomicTarget(act, {
94891
94914
  kind: "rfq",
94892
94915
  marketId: act.marketId,
94893
94916
  side: act.side,
@@ -94897,30 +94920,34 @@ class NordUser {
94897
94920
  size: act.size,
94898
94921
  timeout: act.timeout,
94899
94922
  clientOrderId: act.clientOrderId,
94900
- delegatorAccountId: act.delegatorAccountId
94901
- };
94923
+ minimumSize: act.minimumSize,
94924
+ maximumSize: act.maximumSize,
94925
+ isReduceOnly: act.isReduceOnly
94926
+ });
94902
94927
  }
94903
94928
  if (act.kind === "rfqFill") {
94904
94929
  const market = findMarket(this.nord.markets, act.marketId);
94905
94930
  if (!market) {
94906
94931
  throw new NordError(`Market ${act.marketId} not found`);
94907
94932
  }
94908
- return {
94933
+ return withAtomicTarget(act, {
94909
94934
  kind: "rfqFill",
94910
94935
  marketId: act.marketId,
94911
94936
  orderId: act.orderId,
94912
94937
  priceDecimals: market.priceDecimals,
94913
94938
  price: act.price,
94914
94939
  timeout: act.timeout,
94915
- delegatorAccountId: act.delegatorAccountId
94916
- };
94940
+ minimumSize: act.minimumSize,
94941
+ maximumSize: act.maximumSize,
94942
+ isReduceOnly: act.isReduceOnly
94943
+ });
94917
94944
  }
94918
94945
  if (act.kind === "addTrigger") {
94919
94946
  const market = findMarket(this.nord.markets, act.marketId);
94920
94947
  if (!market) {
94921
94948
  throw new NordError(`Market ${act.marketId} not found`);
94922
94949
  }
94923
- return {
94950
+ return withAtomicTarget(act, {
94924
94951
  kind: "addTrigger",
94925
94952
  marketId: act.marketId,
94926
94953
  side: act.side,
@@ -94931,16 +94958,15 @@ class NordUser {
94931
94958
  limitPrice: act.limitPrice,
94932
94959
  limitBaseSize: act.limitBaseSize,
94933
94960
  limitQuoteSize: act.limitQuoteSize,
94934
- placement: act.placement,
94935
94961
  referrer: act.referrer
94936
- };
94962
+ });
94937
94963
  }
94938
94964
  if (act.kind === "editTrigger") {
94939
94965
  const market = findMarket(this.nord.markets, act.marketId);
94940
94966
  if (!market) {
94941
94967
  throw new NordError(`Market ${act.marketId} not found`);
94942
94968
  }
94943
- return {
94969
+ return withAtomicTarget(act, {
94944
94970
  kind: "editTrigger",
94945
94971
  triggerId: act.triggerId,
94946
94972
  marketId: act.marketId,
@@ -94951,24 +94977,20 @@ class NordUser {
94951
94977
  sizeDecimals: market.sizeDecimals,
94952
94978
  limitPrice: act.limitPrice,
94953
94979
  limitBaseSize: act.limitBaseSize,
94954
- limitQuoteSize: act.limitQuoteSize,
94955
- placement: act.placement
94956
- };
94980
+ limitQuoteSize: act.limitQuoteSize
94981
+ });
94957
94982
  }
94958
94983
  if (act.kind === "removeTrigger") {
94959
- return {
94984
+ return withAtomicTarget(act, {
94960
94985
  kind: "removeTrigger",
94961
94986
  marketId: act.marketId,
94962
- triggerId: act.triggerId,
94963
- placement: act.placement
94964
- };
94987
+ triggerId: act.triggerId
94988
+ });
94965
94989
  }
94966
- return {
94990
+ return withAtomicTarget(act, {
94967
94991
  kind: "cancelByClientId",
94968
- clientOrderId: act.clientOrderId,
94969
- delegatorAccountId: act.delegatorAccountId,
94970
- placement: act.placement
94971
- };
94992
+ clientOrderId: act.clientOrderId
94993
+ });
94972
94994
  });
94973
94995
  const result = await atomic(this.nord.httpClient, this.signSessionMessage, await this.nord.getTimestamp(), this.getNonce(), {
94974
94996
  sessionId: optExpect(this.sessionId, "No session"),