@snabcentr/client-core 2.65.2 → 2.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/banners/dto/sc-banner.d.ts +2 -2
  2. package/cart/classes/index.d.ts +1 -0
  3. package/cart/{dto → classes}/sc-cart.d.ts +7 -7
  4. package/cart/classes/sc-sum.d.ts +1 -1
  5. package/cart/index.d.ts +0 -1
  6. package/cart/internal/index.d.ts +1 -2
  7. package/cart/internal/{sc-i-cart-dto.d.ts → sc-i-cart.d.ts} +4 -6
  8. package/cart/services/sc-cart.service.d.ts +32 -30
  9. package/catalog/classes/sc-cached-item.d.ts +25 -5
  10. package/catalog/dto/sc-product.d.ts +2 -2
  11. package/catalog/interfaces/sc-i-category-product-params.d.ts +2 -10
  12. package/catalog/interfaces/sc-property-filters.d.ts +2 -4
  13. package/esm2022/banners/dto/sc-banner.mjs +12 -12
  14. package/esm2022/cart/classes/index.mjs +2 -1
  15. package/esm2022/cart/classes/sc-cart.mjs +18 -0
  16. package/esm2022/cart/classes/sc-sum.mjs +2 -2
  17. package/esm2022/cart/index.mjs +1 -2
  18. package/esm2022/cart/internal/index.mjs +2 -3
  19. package/esm2022/cart/internal/sc-i-cart.mjs +2 -0
  20. package/esm2022/cart/services/sc-cart.service.mjs +50 -52
  21. package/esm2022/catalog/classes/sc-cached-item.mjs +31 -6
  22. package/esm2022/catalog/dto/sc-product.mjs +1 -1
  23. package/esm2022/catalog/interfaces/sc-i-category-product-params.mjs +1 -1
  24. package/esm2022/catalog/interfaces/sc-property-filters.mjs +1 -1
  25. package/esm2022/catalog/services/sc-catalog.service.mjs +6 -6
  26. package/esm2022/catalog/services/sc-recommendation.service.mjs +8 -7
  27. package/esm2022/contragent/services/sc-contragent.service.mjs +3 -3
  28. package/esm2022/delivery-address/services/sc-delivery-address.service.mjs +4 -2
  29. package/esm2022/order/classes/index.mjs +11 -0
  30. package/esm2022/order/classes/sc-delivery-cost.mjs +19 -0
  31. package/esm2022/order/classes/sc-order-base.mjs +28 -0
  32. package/esm2022/order/classes/sc-order-delivery.mjs +2 -0
  33. package/esm2022/order/classes/sc-order-draft-short.mjs +17 -0
  34. package/esm2022/order/classes/sc-order-draft.mjs +59 -0
  35. package/esm2022/order/classes/sc-order-history.mjs +2 -0
  36. package/esm2022/order/classes/sc-order-item.mjs +60 -0
  37. package/esm2022/order/classes/sc-order-payment.mjs +2 -0
  38. package/esm2022/order/classes/sc-order-short.mjs +30 -0
  39. package/esm2022/order/classes/sc-order.mjs +100 -0
  40. package/esm2022/order/enums/index.mjs +2 -1
  41. package/esm2022/order/enums/sc-order-draft-type.mjs +16 -0
  42. package/esm2022/order/index.mjs +5 -3
  43. package/esm2022/order/internal/index.mjs +14 -3
  44. package/esm2022/order/internal/sc-i-delivery-cost-dto.mjs +1 -1
  45. package/esm2022/order/internal/sc-i-new-order-draft-request.mjs +2 -0
  46. package/esm2022/order/internal/sc-i-new-order-item-base.mjs +2 -0
  47. package/esm2022/order/internal/sc-i-new-order-item-measured.mjs +2 -0
  48. package/esm2022/order/internal/sc-i-new-order.mjs +2 -0
  49. package/esm2022/order/internal/sc-i-order-base.mjs +2 -0
  50. package/esm2022/order/internal/sc-i-order-draft-list-params.mjs +2 -0
  51. package/esm2022/order/internal/sc-i-order-draft-short.mjs +2 -0
  52. package/esm2022/order/internal/sc-i-order-draft.mjs +2 -0
  53. package/esm2022/order/internal/sc-i-order-item.mjs +2 -0
  54. package/esm2022/order/internal/sc-i-order-loader.mjs +2 -0
  55. package/esm2022/order/internal/sc-i-order-short.mjs +2 -0
  56. package/esm2022/order/internal/sc-i-order.mjs +2 -0
  57. package/esm2022/order/internal/sc-i-update-order-order-request.mjs +2 -0
  58. package/esm2022/order/services/index.mjs +3 -0
  59. package/esm2022/order/services/sc-order-drafts.service.mjs +195 -0
  60. package/esm2022/order/services/sc-orders.service.mjs +33 -54
  61. package/esm2022/order/tokens/index.mjs +2 -0
  62. package/esm2022/order/tokens/sc-order-loader.token.mjs +25 -0
  63. package/esm2022/pagination/dto/index.mjs +3 -1
  64. package/esm2022/pagination/dto/sc-i-range-filter.mjs +2 -0
  65. package/esm2022/pagination/dto/sc-i-sort-order.mjs +2 -0
  66. package/esm2022/reclamation/interfaces/sc-i-pagination-params.mjs +1 -1
  67. package/esm2022/references/enums/sc-order-state-status.mjs +1 -5
  68. package/esm2022/seo/classes/schema-org-factory.mjs +41 -2
  69. package/esm2022/seo/interfaces/index.mjs +2 -2
  70. package/esm2022/seo/interfaces/sc-i-breadcrumb-item.mjs +12 -0
  71. package/esm2022/seo/services/sc-seo.service.mjs +11 -2
  72. package/esm2022/ui/services/sc-ui.service.mjs +1 -1
  73. package/esm2022/user/dto/sc-user-metadata.mjs +1 -1
  74. package/esm2022/user-metrika/enums/sc-user-metrika-goals-enum.mjs +19 -1
  75. package/fesm2022/snabcentr-client-core.mjs +1093 -768
  76. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  77. package/order/{dto → classes}/index.d.ts +5 -3
  78. package/order/{dto → classes}/sc-delivery-cost.d.ts +2 -2
  79. package/order/classes/sc-order-base.d.ts +32 -0
  80. package/order/classes/sc-order-draft-short.d.ts +22 -0
  81. package/order/classes/sc-order-draft.d.ts +63 -0
  82. package/order/{dto → classes}/sc-order-history.d.ts +1 -1
  83. package/order/classes/sc-order-item.d.ts +98 -0
  84. package/order/{dto → classes}/sc-order-payment.d.ts +1 -1
  85. package/order/classes/sc-order-short.d.ts +44 -0
  86. package/order/classes/sc-order.d.ts +102 -0
  87. package/order/enums/index.d.ts +1 -0
  88. package/order/enums/sc-order-draft-type.d.ts +13 -0
  89. package/order/index.d.ts +4 -2
  90. package/order/internal/index.d.ts +13 -2
  91. package/order/internal/sc-i-delivery-cost-dto.d.ts +1 -1
  92. package/order/internal/sc-i-new-order-draft-request.d.ts +13 -0
  93. package/{cart/dto/sc-i-new-cart-item-base.d.ts → order/internal/sc-i-new-order-item-base.d.ts} +2 -2
  94. package/order/internal/sc-i-new-order-item-measured.d.ts +10 -0
  95. package/order/{dto → internal}/sc-i-new-order.d.ts +1 -5
  96. package/order/internal/sc-i-order-base.d.ts +25 -0
  97. package/order/internal/sc-i-order-draft-list-params.d.ts +32 -0
  98. package/order/internal/sc-i-order-draft-short.d.ts +15 -0
  99. package/order/internal/sc-i-order-draft.d.ts +43 -0
  100. package/{cart/dto/sc-cart-item.d.ts → order/internal/sc-i-order-item.d.ts} +6 -13
  101. package/order/internal/sc-i-order-loader.d.ts +51 -0
  102. package/order/internal/{sc-i-order-short-dto.d.ts → sc-i-order-short.d.ts} +14 -16
  103. package/order/{dto/sc-order.d.ts → internal/sc-i-order.d.ts} +15 -67
  104. package/order/internal/sc-i-update-order-order-request.d.ts +9 -0
  105. package/order/services/index.d.ts +2 -0
  106. package/order/services/sc-order-drafts.service.d.ts +118 -0
  107. package/order/services/sc-orders.service.d.ts +19 -20
  108. package/order/tokens/index.d.ts +1 -0
  109. package/order/tokens/sc-order-loader.token.d.ts +26 -0
  110. package/package.json +1 -1
  111. package/pagination/dto/index.d.ts +2 -0
  112. package/pagination/dto/sc-i-range-filter.d.ts +15 -0
  113. package/pagination/dto/sc-i-sort-order.d.ts +15 -0
  114. package/reclamation/interfaces/sc-i-pagination-params.d.ts +3 -21
  115. package/references/enums/sc-order-state-status.d.ts +0 -4
  116. package/seo/classes/schema-org-factory.d.ts +9 -2
  117. package/seo/interfaces/index.d.ts +1 -1
  118. package/seo/interfaces/sc-i-breadcrumb-item.d.ts +25 -0
  119. package/seo/services/sc-seo.service.d.ts +1 -1
  120. package/ui/services/sc-ui.service.d.ts +1 -1
  121. package/user/dto/sc-user-metadata.d.ts +1 -1
  122. package/user-metrika/enums/sc-user-metrika-goals-enum.d.ts +18 -0
  123. package/cart/dto/index.d.ts +0 -5
  124. package/cart/dto/sc-i-new-cart-item-measured.d.ts +0 -10
  125. package/cart/dto/sc-i-sales-direction-cart.d.ts +0 -37
  126. package/cart/internal/sc-i-cart-item-dto.d.ts +0 -73
  127. package/esm2022/cart/dto/index.mjs +0 -6
  128. package/esm2022/cart/dto/sc-cart-item.mjs +0 -60
  129. package/esm2022/cart/dto/sc-cart.mjs +0 -18
  130. package/esm2022/cart/dto/sc-i-new-cart-item-base.mjs +0 -2
  131. package/esm2022/cart/dto/sc-i-new-cart-item-measured.mjs +0 -2
  132. package/esm2022/cart/dto/sc-i-sales-direction-cart.mjs +0 -21
  133. package/esm2022/cart/internal/sc-i-cart-dto.mjs +0 -2
  134. package/esm2022/cart/internal/sc-i-cart-item-dto.mjs +0 -2
  135. package/esm2022/order/dto/index.mjs +0 -9
  136. package/esm2022/order/dto/sc-delivery-cost.mjs +0 -19
  137. package/esm2022/order/dto/sc-i-new-order-from-draft.mjs +0 -2
  138. package/esm2022/order/dto/sc-i-new-order.mjs +0 -2
  139. package/esm2022/order/dto/sc-order-delivery.mjs +0 -2
  140. package/esm2022/order/dto/sc-order-history.mjs +0 -2
  141. package/esm2022/order/dto/sc-order-payment.mjs +0 -2
  142. package/esm2022/order/dto/sc-order-short.mjs +0 -46
  143. package/esm2022/order/dto/sc-order.mjs +0 -134
  144. package/esm2022/order/internal/sc-i-order-dto.mjs +0 -2
  145. package/esm2022/order/internal/sc-i-order-short-dto.mjs +0 -2
  146. package/esm2022/seo/interfaces/sc-i-schema-org-breadcrumb-list.mjs +0 -2
  147. package/order/dto/sc-i-new-order-from-draft.d.ts +0 -10
  148. package/order/dto/sc-order-short.d.ts +0 -65
  149. package/order/internal/sc-i-order-dto.d.ts +0 -94
  150. package/seo/interfaces/sc-i-schema-org-breadcrumb-list.d.ts +0 -34
  151. /package/order/{dto → classes}/sc-order-delivery.d.ts +0 -0
@@ -152,7 +152,7 @@ export class ScCatalogService {
152
152
  getVirtualCategoryCached$(slug) {
153
153
  let cachedItem = this.virtualCategoryMap.get(slug);
154
154
  if (!cachedItem) {
155
- cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.http.get(`${this.urls.apiUrl}/catalog/v-categories/${slug}`).pipe(map((category) => new ScVirtualCategory(category))));
155
+ cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.http.get(`${this.urls.apiUrl}/catalog/v-categories/${slug}`).pipe(map((category) => new ScVirtualCategory(category))), null);
156
156
  this.virtualCategoryMap.set(slug, cachedItem);
157
157
  }
158
158
  if (!cachedItem.cachedDataIsActual()) {
@@ -172,7 +172,7 @@ export class ScCatalogService {
172
172
  }
173
173
  let cachedItem = this.categoryMap.get(categoryIdOrSlug?.toString());
174
174
  if (!cachedItem) {
175
- cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.getCategoryData$(categoryIdOrSlug));
175
+ cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.getCategoryData$(categoryIdOrSlug), null);
176
176
  this.categoryMap.set(categoryIdOrSlug?.toString(), cachedItem);
177
177
  }
178
178
  if (!cachedItem.cachedDataIsActual()) {
@@ -218,7 +218,7 @@ export class ScCatalogService {
218
218
  .get(`${this.urls.apiUrl}/catalog/products/${product.id}/price-history`, {
219
219
  context: SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT,
220
220
  })
221
- .pipe(catchError(() => of({}))));
221
+ .pipe(catchError(() => of({}))), null);
222
222
  this.productHistoryMap.set(product.id.toString(), cachedItem);
223
223
  }
224
224
  return cachedItem.item$;
@@ -256,7 +256,7 @@ export class ScCatalogService {
256
256
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
257
257
  let cachedItem = this.categoryProductsMap.get(cachedKey.toString());
258
258
  if (!cachedItem) {
259
- cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.getProducts$(params));
259
+ cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.getProducts$(params), null);
260
260
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-call
261
261
  this.categoryProductsMap.set(cachedKey.toString(), cachedItem);
262
262
  }
@@ -285,7 +285,7 @@ export class ScCatalogService {
285
285
  }
286
286
  let cachedItem = this.productMap.get(productIdOrSlug.toString());
287
287
  if (!cachedItem) {
288
- cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.getProductData$(productIdOrSlug));
288
+ cachedItem = new ScCachedItem(this.cacheLifeTime.categoryData, this.getProductData$(productIdOrSlug), null);
289
289
  this.productMap.set(productIdOrSlug.toString(), cachedItem);
290
290
  }
291
291
  if (!cachedItem.cachedDataIsActual()) {
@@ -338,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
338
338
  type: Inject,
339
339
  args: [SC_CACHE_LIFETIME]
340
340
  }] }, { type: i4.ScUserMetrikaService }] });
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNckksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFNckQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7OztBQUdsRzs7R0FFRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUErRXpCOzs7Ozs7Ozs7T0FTRztJQUNILFlBQ3FCLElBQWdCLEVBQ0MsSUFBYSxFQUM5QixTQUFzQixFQUN0QixpQkFBc0MsRUFDWCxhQUErQixFQUMxRCxrQkFBd0M7UUFMeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNDLFNBQUksR0FBSixJQUFJLENBQVM7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ1gsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQzFELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUE5RjdEOzs7O1dBSUc7UUFDSyxrQkFBYSxHQUFpRCxJQUFJLEdBQUcsRUFBMkMsQ0FBQztRQUV6SDs7V0FFRztRQUNLLHVCQUFrQixHQUFpRCxJQUFJLEdBQUcsRUFBMkMsQ0FBQztRQUU5SDs7V0FFRztRQUNILG1FQUFtRTtRQUMzRCxnQkFBVyxHQUEwRCxJQUFJLEdBQUcsRUFBb0QsQ0FBQztRQUV6STs7V0FFRztRQUNLLGVBQVUsR0FBa0QsSUFBSSxHQUFHLEVBQTRDLENBQUM7UUFFeEg7O1dBRUc7UUFDSyx3QkFBbUIsR0FBb0QsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFNUg7O1dBRUc7UUFDSyxzQkFBaUIsR0FBdUQsSUFBSSxHQUFHLEVBQWlELENBQUM7UUFFekk7O1dBRUc7UUFDYyxpQkFBWSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdkU7O1dBRUc7UUFDYyx3QkFBbUIsR0FBMEMsSUFBSSxHQUFHLEVBQW9DLENBQUM7UUFFMUg7O1dBRUc7UUFDYyx1QkFBa0IsR0FBMEMsSUFBSSxHQUFHLEVBQW9DLENBQUM7UUFFekg7O1dBRUc7UUFDYyxpQ0FBNEIsR0FBVyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUVuRzs7V0FFRztRQUNjLGdCQUFXLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVwRTs7V0FFRztRQUNhLHFCQUFnQixHQUE4QyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUNuRyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQzFKLEVBQ0QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBRUY7O1dBRUc7UUFDYSw2QkFBd0IsR0FBNEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoSTs7V0FFRztRQUNhLDZCQUF3QixHQUF1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQW9CNUgsSUFBSSxDQUFDLFdBQVc7YUFDWCxjQUFjLEVBQUU7YUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxrQkFBa0IsQ0FBQyxnQkFBa0M7UUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUV0RSxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9ILE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXhELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsZ0JBQWtDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sdUJBQXVCLGdCQUFnQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN0RyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQzNDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2IsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDdkgsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7O09BRUc7SUFDSSwwQkFBMEI7UUFDN0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUNqRCxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNsQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQzFCLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUMxRixDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0kseUJBQXlCLENBQUMsSUFBWTtRQUN6QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSx5QkFBeUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FDakosQ0FBQztZQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUNuQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGtCQUFrQixDQUFDLGdCQUFrQztRQUN4RCxJQUFJLGdCQUFnQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3JFLDZDQUE2QztZQUM3QyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFcEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2QsVUFBVSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLGtCQUFrQjtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxzQkFBc0IsQ0FBQyxnQkFBaUM7UUFDM0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ2pELE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsS0FBSyxFQUFFLEVBQ1AsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDaEIsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwSSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQ3BCLEtBQUssRUFBRSxDQUNWLENBQ0o7UUFDRCwwR0FBMEc7UUFDMUcsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFDaEYsT0FBTyxFQUFFO1FBQ1QsK0RBQStEO1FBQy9ELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQzVDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFrQjtRQUN0QyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDZCxVQUFVLEdBQUcsSUFBSSxZQUFZLENBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUMvQixJQUFJLENBQUMsSUFBSTtpQkFDSixHQUFHLENBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLHFCQUFxQixPQUFPLENBQUMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDckYsT0FBTyxFQUFFLHFDQUFxQzthQUNqRCxDQUFDO2lCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDdEMsQ0FBQztZQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFnQkQsNkVBQTZFO0lBQ3RFLFlBQVksQ0FBQyxNQUFxRTtRQUNyRixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUF5QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxtQkFBbUIsRUFBRTtZQUNqRixpRUFBaUU7WUFDakUsTUFBTSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ3BGLENBQUM7YUFDRCxJQUFJO1FBQ0Qsd0RBQXdEO1FBQ3hELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1QsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFeEMsU0FBUyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFbkUsT0FBTyxTQUFtQyxDQUFDO1lBQy9DLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSwwQkFBMEIsQ0FBQyxNQUFnQztRQUM5RCxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCx1SkFBdUo7UUFDdkosTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUUsQ0FBQztRQUU5RCw4SUFBOEk7UUFDOUksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDZCxVQUFVLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzFGLDhJQUE4STtZQUM5SSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDbkMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsZUFBZ0M7UUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxxQkFBcUIsZUFBZSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVGLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDOUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDWixJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sZUFBZSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNsSCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxlQUFnQztRQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxFLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZiw2Q0FBNkM7WUFDN0MsZUFBZSxHQUFHLFlBQVksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2QsVUFBVSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUN0RyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ25DLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxJQUFpQixFQUFFLFVBQW1CO1FBQ3hELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQzlDO1lBQ0ksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUUsV0FBVyxFQUFFLFVBQVUsSUFBSSxJQUFJO1NBQ2xDLEVBQ0QsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQ3hCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLG1CQUFtQixFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZHLEdBQUcsQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ3JELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxvQkFBb0I7Z0JBQ25ELE1BQU0sRUFBRTtvQkFDSixXQUFXLEVBQUUsVUFBVSxJQUFJLE1BQU07b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjthQUNKLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSw0QkFBNEIsQ0FBQyxlQUFnQyxFQUFFLElBQWlDO1FBQ25HLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0scUJBQXFCLGVBQWUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ILENBQUM7K0dBNVpRLGdCQUFnQiw0Q0EyRmIsT0FBTywyRUFHUCxpQkFBaUI7bUhBOUZwQixnQkFBZ0IsY0FGYixNQUFNOzs0RkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkE0RlEsTUFBTTsyQkFBQyxPQUFPOzswQkFHZCxNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVUeXBlc1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZXhwYW5kLCBmaWx0ZXIsIGZpcnN0LCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZVJlcGxheSwgc2tpcCwgc3dpdGNoTWFwLCB0YWtlV2hpbGUsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0lDYWNoZUxpZmV0aW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktY2FjaGUtbGlmZXRpbWUnO1xuaW1wb3J0IHsgU2NJVXJscyB9IGZyb20gJy4uLy4uL2NvbmZpZy9zYy1pLXVybHMnO1xuaW1wb3J0IHsgU2NDb252ZXJ0ZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnZlcnRlcnMvc2VydmljZXMvc2MtY29udmVydGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFNjSVBhZ2luYXRlIH0gZnJvbSAnLi4vLi4vcGFnaW5hdGlvbi9kdG8vc2MtaS1wYWdpbmF0ZSc7XG5pbXBvcnQgeyBTY0lkT3JTbHVnUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NjLWlkLW9yLXNsdWcucGlwZSc7XG5pbXBvcnQgeyBTQ19DQUNIRV9MSUZFVElNRSB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1jYWNoZS1saWZldGltZSc7XG5pbXBvcnQgeyBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhUIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWlzLWhpZGRlbi1lcnJvci1hbGVydCc7XG5pbXBvcnQgeyBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLXVybHMnO1xuaW1wb3J0IHsgU2NVSVNlcnZpY2UgfSBmcm9tICcuLi8uLi91aS9zZXJ2aWNlcy9zYy11aS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3NjLXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtIH0gZnJvbSAnLi4vLi4vdXNlci1tZXRyaWthL2VudW1zL3NjLXVzZXItbWV0cmlrYS1nb2Fscy1lbnVtJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlci1tZXRyaWthL3NlcnZpY2VzL3NjLXVzZXItbWV0cmlrYS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjQ2FjaGVkSXRlbSB9IGZyb20gJy4uL2NsYXNzZXMnO1xuaW1wb3J0IHsgU2NDYXRlZ29yeSB9IGZyb20gJy4uL2R0by9zYy1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2sgfSBmcm9tICcuLi9kdG8vc2MtaS1wcm9kdWN0LW5vdGlmeS13aGVuLWluLXN0b2NrJztcbmltcG9ydCB7IFNjUHJvZHVjdCB9IGZyb20gJy4uL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB7IFNjVmlydHVhbENhdGVnb3J5IH0gZnJvbSAnLi4vZHRvL3NjLXZpcnR1YWwtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NNaW1lVHlwZXMgfSBmcm9tICcuLi9lbnVtcy9zYy1taW1lLXR5cGVzJztcbmltcG9ydCB7IFNjSUNhdGVnb3J5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjSUNhdGVnb3J5UHJvZHVjdFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1jYXRlZ29yeS1wcm9kdWN0LXBhcmFtcyc7XG5pbXBvcnQgeyBTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLWNhdGVnb3J5LXByb2R1Y3RzLXBhZ2luYXRpb24tcGFyYW1zJztcbmltcG9ydCB7IFNjSVByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktcHJvZHVjdCc7XG5pbXBvcnQgeyBTY0lWaXJ0dWFsQ2F0ZWdvcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktdmlydHVhbC1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTQ19DT1VOVF9GSVJTVF9ESVNDT1VOVEVEX1BST0RVQ1RTIH0gZnJvbSAnLi4vdG9rZW5zL3NjLWNvdW50LWZpcnN0LWRpc2NvdW50ZWQtcHJvZHVjdHMnO1xuaW1wb3J0IHsgU2NQcmljZUhpc3RvcnkgfSBmcm9tICcuLi90eXBlcy9zYy1wcmljZS1oaXN0b3J5JztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrQsNGC0LXQs9C+0YDQuNC5INC60LDRgtCw0LvQvtCz0LAuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgaWRDYXRlZ29yeU1hcDogTWFwPG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgU2NDYXRlZ29yeT4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgU2NDYXRlZ29yeT4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LLQuNGA0YLRg9Cw0LvRjNC90YvRhSDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2aXJ0dWFsQ2F0ZWdvcnlNYXA6IE1hcDxzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ZpcnR1YWxDYXRlZ29yeT4+ID0gbmV3IE1hcDxzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ZpcnR1YWxDYXRlZ29yeT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDQutCw0YLQtdCz0L7RgNC40Lkg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG4gICAgcHJpdmF0ZSBjYXRlZ29yeU1hcDogTWFwPG51bWJlciB8IHN0cmluZyB8IHZvaWQsIFNjQ2FjaGVkSXRlbTxTY0NhdGVnb3J5Pj4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZyB8IHZvaWQsIFNjQ2FjaGVkSXRlbTxTY0NhdGVnb3J5Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0L/RgNC+0LTRg9C60YLQvtCyINC60LDRgtCw0LvQvtCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9kdWN0TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0Pj4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdD4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNhdGVnb3J5UHJvZHVjdHNNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+ID0gbmV3IE1hcDxudW1iZXIsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC40Y8g0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvZHVjdEhpc3RvcnlNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ByaWNlSGlzdG9yeT4+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1ByaWNlSGlzdG9yeT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9Cw0LnQvywg0LLQvtC30LLRgNCw0YnQsNGO0YnQuNC5INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCDRgdC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDQuNGB0YXQvtC00Y8g0LjQtyDQvdCw0YHRgtGA0L7QtdC6INC+0LrRgNGD0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlkT3JTbHVnUGlwZTogU2NJZE9yU2x1Z1BpcGUgPSBpbmplY3QoU2NJZE9yU2x1Z1BpcGUpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDRgdC+0L/QvtGB0YLQsNCy0LvQtdC90LjRjyBzbHVnINC4IGlkINC60LDRgtC10LPQvtGA0LjQuSDQv9GA0Lgg0LrQtdGI0LjRgNC+0LLQsNC90LjQuCDQt9Cw0L/RgNC+0YHQvtCyLCDQtdGB0LvQuCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvtGC0LvQuNGH0LDQtdGC0YHRjyDQvtGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L3QvtCz0L4g0LIg0L/RgNC+0LXQutGC0LUgKHNsdWcvaWQpLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlJZE9yU2x1Z01hcDogTWFwPG51bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINGB0L7Qv9C+0YHRgtCw0LLQu9C10L3QuNGPIHNsdWcg0LggaWQg0YLQvtCy0LDRgNC+0LIg0L/RgNC4INC60LXRiNC40YDQvtCy0LDQvdC40Lgg0LfQsNC/0YDQvtGB0L7Qsiwg0LXRgdC70Lgg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L7RgtC70LjRh9Cw0LXRgtGB0Y8g0L7RgiDRg9GB0YLQsNC90L7QstC70LXQvdC90L7Qs9C+INCyINC/0YDQvtC10LrRgtC1IChzbHVnL2lkKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RJZE9yU2x1Z01hcDogTWFwPG51bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nPiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQp9C40YHQu9C+INC/0LXRgNCy0YvRhSDQt9Cw0L/QuNGB0LXQuSDRgtC+0LLQsNGA0L7QsiDRgdC+INGB0LrQuNC00LrQvtC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY291bnRGaXJzdERpc2NvdW50ZWRQcm9kdWN0czogbnVtYmVyID0gaW5qZWN0KFNDX0NPVU5UX0ZJUlNUX0RJU0NPVU5URURfUFJPRFVDVFMpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZXJ2aWNlOiBTY1VzZXJTZXJ2aWNlID0gaW5qZWN0KFNjVXNlclNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0YHQviDRgdC60LjQtNC60L7QuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlyc3REaXNjb3VudGVkJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4gPSBpbmplY3QoU0NfVVNFUl9JTkZPKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXIpID0+XG4gICAgICAgICAgICB1c2VyLmlzR3Vlc3QgPyBvZihudWxsKSA6IHRoaXMuZ2V0UHJvZHVjdHMkKHsgZmlsdGVyczogeyBvbmx5RGlzY291bnRlZDogdHJ1ZSB9LCBwYWdpbmF0ZTogdHJ1ZSwgcGFnZTogMSwgcGVyUGFnZTogdGhpcy5jb3VudEZpcnN0RGlzY291bnRlZFByb2R1Y3RzIH0pXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQv9C40YHQutCwINC40Lcg0L/QtdGA0LLRi9GFINGC0L7QstCw0YDQvtCyINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZpcnN0RGlzY291bnRlZFByb2R1Y3RzJDogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT4gPSB0aGlzLmZpcnN0RGlzY291bnRlZCQucGlwZShtYXAoKGRhdGEpID0+IGRhdGE/LmRhdGEgPz8gW10pKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0L7QsdGJ0LXQs9C+INC60L7Qu9C70LjRh9C10YHRgtCy0LAg0YLQvtCy0LDRgNCwINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvdW50RGlzY291bnRlZFByb2R1Y3RzJDogT2JzZXJ2YWJsZTxudW1iZXI+ID0gdGhpcy5maXJzdERpc2NvdW50ZWQkLnBpcGUobWFwKChkYXRhKSA9PiBkYXRhPy5tZXRhLnRvdGFsID8/IDApKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXRhbG9nU2VydmljZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaHR0cCDQodC10YDQstC40YEg0LTQu9GPINCy0YvQv9C+0LvQvdC10L3QuNGPIEhUVFAt0LfQsNC/0YDQvtGB0L7Qsi5cbiAgICAgKiBAcGFyYW0gdXJscyDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0YDQsNC30LTQtdC70YsgYmFja2VuZCdhLlxuICAgICAqIEBwYXJhbSB1aVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEgVUkuXG4gICAgICogQHBhcmFtIGNvbnZlcnRlcnNTZXJ2aWNlINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKiBAcGFyYW0gY2FjaGVMaWZlVGltZSDQntCx0YrQtdC60YIg0YEg0LjQvdGE0L7RgNC80LDRhtC40LXQuSDQviDQstGA0LXQvNC10L3QuCDQttC40LfQvdC4INC00LDQvdC90YvRhS5cbiAgICAgKiBAcGFyYW0gdXNlck1ldHJpa2FTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1aVNlcnZpY2U6IFNjVUlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX0NBQ0hFX0xJRkVUSU1FKSBwcml2YXRlIHJlYWRvbmx5IGNhY2hlTGlmZVRpbWU6IFNjSUNhY2hlTGlmZXRpbWUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VXNlckNoYW5nZSQoKVxuICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaWRDYXRlZ29yeU1hcC5jbGVhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RIaXN0b3J5TWFwLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0TWFwLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeVByb2R1Y3RzTWFwLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsQ2F0ZWdvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60LDRgtC10LPQvtGA0LjRjiDQuNC3INC60L7Qu9C70LXQutGG0LjQuCDQutCw0YLQsNC70L7Qs9CwLCDQtdGB0LvQuCDQtdGRINGB0YDQvtC6INC20LjQt9C90Lgg0L3QtSDQuNGB0YLRkdC6LlxuICAgICAqXG4gICAgICogQGRlcHJlY2F0ZWQg0KPQtNCw0LvQuNGC0Ywg0LIg0YDQsNC80LrQsNGFINC30LDQtNCw0YfQuCBUQVNLWyMxMDE1M10uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5RnJvbU1hcChjYXRlZ29yeUlkT3JTbHVnPzogbnVtYmVyIHwgc3RyaW5nKTogU2NDYXRlZ29yeSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdGhpcy5pZENhdGVnb3J5TWFwLmdldChjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoY2F0ZWdvcnkgJiYgKCFjYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSB8fCAhY2F0ZWdvcnkubG9hZGVkQXQgfHwgY2F0ZWdvcnkuY2FjaGVkRGF0YUlzQWN0dWFsKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pZENhdGVnb3J5TWFwLmRlbGV0ZShjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC60LDRgtC10LPQvtGA0LjQuSDRgtC+0LLQsNGA0L7QsiDQuNC70Lgg0YHQv9C40YHQvtC6INC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LCDQtdGB0LvQuCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40Lgg0L3QtSDRg9C60LDQt9Cw0L0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDYXRlZ29yeURhdGEkKGNhdGVnb3J5SWRPclNsdWc/OiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjQ2F0ZWdvcnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2NJQ2F0ZWdvcnk+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWRPclNsdWcgPz8gJyd9YCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoY2F0ZWdvcnkpID0+IG5ldyBTY0NhdGVnb3J5KGNhdGVnb3J5KSksXG4gICAgICAgICAgICB0YXAoKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5SWRPclNsdWcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeUlkT3JTbHVnTWFwLnNldCh0eXBlb2YgY2F0ZWdvcnlJZE9yU2x1ZyA9PT0gJ3N0cmluZycgPyBjYXRlZ29yeS5pZCA6IGNhdGVnb3J5LnNsdWcsIGNhdGVnb3J5SWRPclNsdWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5INGBINC90LDRgdGC0YDQvtC50LrQsNC80Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjRjywg0YfRgtC+0LHRiyDRgNC10LDQs9C40YDQvtCy0LDRgtGMINC90LAg0LjQt9C80LXQvdC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGaWx0ZXJlZFJvb3RDYXRlZ29yaWVzJCgpOiBPYnNlcnZhYmxlPFNjSUNhdGVnb3J5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudWlTZXJ2aWNlLmdldEhpZGRlbkNhdGVnb3JpZXNMaXN0JCgpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGZpbHRlcnMpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRSb290Q2F0ZWdvcmllcyQoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChkYXRhKSA9PiBkYXRhLmZpbHRlcigoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LmlkICYmICFmaWx0ZXJzLmluY2x1ZGVzKGNhdGVnb3J5LmlkKSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCy0LjRgNGC0YPQsNC70YzQvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNsdWcg0KHQuNC80LLQvtC70YzQvdGL0Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LLQuNGA0YLRg9Cw0LvRjNC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldFZpcnR1YWxDYXRlZ29yeUNhY2hlZCQoc2x1Zzogc3RyaW5nKTogT2JzZXJ2YWJsZTxTY1ZpcnR1YWxDYXRlZ29yeSB8IG51bGw+IHtcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLnZpcnR1YWxDYXRlZ29yeU1hcC5nZXQoc2x1Zyk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbShcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTGlmZVRpbWUuY2F0ZWdvcnlEYXRhLFxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8U2NJVmlydHVhbENhdGVnb3J5PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3YtY2F0ZWdvcmllcy8ke3NsdWd9YCkucGlwZShtYXAoKGNhdGVnb3J5KSA9PiBuZXcgU2NWaXJ0dWFsQ2F0ZWdvcnkoY2F0ZWdvcnkpKSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMudmlydHVhbENhdGVnb3J5TWFwLnNldChzbHVnLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlDYWNoZWQkKGNhdGVnb3J5SWRPclNsdWc/OiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjQ2F0ZWdvcnkgfCBudWxsPiB7XG4gICAgICAgIGlmIChjYXRlZ29yeUlkT3JTbHVnICYmIHRoaXMuY2F0ZWdvcnlJZE9yU2x1Z01hcC5oYXMoY2F0ZWdvcnlJZE9yU2x1ZykpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgY2F0ZWdvcnlJZE9yU2x1ZyA9IHRoaXMuY2F0ZWdvcnlJZE9yU2x1Z01hcC5nZXQoY2F0ZWdvcnlJZE9yU2x1Zyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMuY2F0ZWdvcnlNYXAuZ2V0KGNhdGVnb3J5SWRPclNsdWc/LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0odGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSwgdGhpcy5nZXRDYXRlZ29yeURhdGEkKGNhdGVnb3J5SWRPclNsdWcpKTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcnlNYXAuc2V0KGNhdGVnb3J5SWRPclNsdWc/LnRvU3RyaW5nKCksIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtLmNhY2hlZERhdGFJc0FjdHVhbCgpKSB7XG4gICAgICAgICAgICBjYWNoZWRJdGVtLnVwZGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0YDQvdC10LLRi9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0TnVsbENhdGVnb3J5JCgpOiBPYnNlcnZhYmxlPFNjQ2F0ZWdvcnkgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENhdGVnb3J5Q2FjaGVkJCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIGdldFJvb3RDYXRlZ29yaWVzJCgpOiBPYnNlcnZhYmxlPFNjSUNhdGVnb3J5W10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE51bGxDYXRlZ29yeSQoKS5waXBlKG1hcCgobnVsbENhdGVnb3J5KSA9PiBudWxsQ2F0ZWdvcnk/LmNhdGVnb3JpZXMgPz8gbnVsbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCg0LDRgdC60YDRi9Cy0LDQtdGCINC60LDRgtCw0LvQvtCzINC00L4g0YPQutCw0LfQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCwg0LTQviDQutC+0YLQvtGA0L7QuSDQvdC10L7QsdGF0L7QtNC40LzQviDRgNCw0YHQutGA0YvRgtGMINC60LDRgtCw0LvQvtCzLlxuICAgICAqIEByZXR1cm5zINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRgNCw0YHQutGA0YvRgtGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkQ2F0YWxvZ1RyZWVDYWNoZWQkKGNhdGVnb3J5SWRPclNsdWc6IG51bWJlciB8IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yeUNhY2hlZCQoY2F0ZWdvcnlJZE9yU2x1ZykucGlwZShcbiAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgIGV4cGFuZCgoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICAgICAgKGNhdGVnb3J5LnBhcmVudENhdGVnb3J5ID8gdGhpcy5nZXRDYXRlZ29yeUNhY2hlZCQodGhpcy5pZE9yU2x1Z1BpcGUudHJhbnNmb3JtKGNhdGVnb3J5LnBhcmVudENhdGVnb3J5KSkgOiB0aGlzLmdldE51bGxDYXRlZ29yeSQoKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0KClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24sc29uYXJqcy9kaWZmZXJlbnQtdHlwZXMtY29tcGFyaXNvblxuICAgICAgICAgICAgdGFrZVdoaWxlKChwYXJlbnRDYXRlZ29yeSkgPT4gcGFyZW50Q2F0ZWdvcnkucGFyZW50Q2F0ZWdvcnkgIT09IHVuZGVmaW5lZCwgdHJ1ZSksXG4gICAgICAgICAgICB0b0FycmF5KCksXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1taXNsZWFkaW5nLWFycmF5LXJldmVyc2VcbiAgICAgICAgICAgIG1hcCgoY2F0ZWdvcmllcykgPT4gY2F0ZWdvcmllcy5yZXZlcnNlKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC/0L7Qu9GD0YfQtdC90LjRjyDQuNGB0YLQvtGA0LjQuCDQuNC30LzQtdC90LXQvdC40Y8g0YbQtdC9INC90LAg0L/RgNC+0LTRg9C60YIg0LTQu9GPINC60LvQuNC10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3Qg0J/RgNC+0LTRg9C60YIsINC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC30LDQv9GA0LDRiNC40LLQsNC10YLRgdGPINGG0LXQvdCwLlxuICAgICAqIEByZXR1cm5zINCY0YHRgtC+0YDQuNGPINC40LfQvNC10L3QtdC90LjRjyDRhtC10L0g0L3QsCDQv9GA0L7QtNGD0LrRgiDQtNC70Y8g0LrQu9C40LXQvdGC0LAg0LIg0YTQvtGA0LzQsNGC0LUge0BsaW5rIE9ic2VydmFibGV9INC40Lcg0LfQsNC/0YDQvtGB0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldFByaWNlSGlzdG9yeSQocHJvZHVjdDogU2NQcm9kdWN0KTogT2JzZXJ2YWJsZTxTY1ByaWNlSGlzdG9yeSB8IG51bGw+IHtcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLnByb2R1Y3RIaXN0b3J5TWFwLmdldChwcm9kdWN0LmlkLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0oXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSxcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgLmdldDxTY1ByaWNlSGlzdG9yeT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0cy8ke3Byb2R1Y3QuaWR9L3ByaWNlLWhpc3RvcnlgLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhULFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKHt9KSkpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RIaXN0b3J5TWFwLnNldChwcm9kdWN0LmlkLnRvU3RyaW5nKCksIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINGC0L7QstCw0YDQvtCyINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHMkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT47XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQsNC70L7Qs9CwINGBINC/0LDQs9C40L3QsNGG0LjQtdC5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0cyQocGFyYW1zOiBTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zKTogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+PjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVkdW5kYW50LXR5cGUtY29uc3RpdHVlbnRzXG4gICAgcHVibGljIGdldFByb2R1Y3RzJChwYXJhbXM6IFNjSUNhdGVnb3J5UHJvZHVjdFBhcmFtcyB8IFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXMpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdIHwgU2NJUGFnaW5hdGU8U2NQcm9kdWN0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSVBhZ2luYXRlPFNjSVByb2R1Y3Q+IHwgU2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzYCwge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnRvSHR0cFBhcmFtcyh7IC4uLnBhcmFtcyB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2Z1bmN0aW9uLXJldHVybi10eXBlXG4gICAgICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgnbWV0YScgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVEYXRhID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZURhdGEuZGF0YSA9IGNsb25lRGF0YS5kYXRhLm1hcCgoaXRlbSkgPT4gbmV3IFNjUHJvZHVjdChpdGVtKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZURhdGEgYXMgU2NJUGFnaW5hdGU8U2NQcm9kdWN0PjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+IG5ldyBTY1Byb2R1Y3QoaXRlbSwgaW5kZXgpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0Lgg0LrRjdGI0LjRgNGD0LXRgiDQtdCz0L4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3RzQ2F0ZWdvcnlDYWNoZWQkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXSB8IG51bGw+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICBpZiAoIXBhcmFtcy5jYXRlZ29yeUlkICYmICFwYXJhbXMuY2F0ZWdvcnlTbHVnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ9Cd0LUg0YPQutCw0LfQsNC9IGlkL3NsdWcg0LrQsNGC0LXQs9C+0YDQuNC4LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24sQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICBjb25zdCBjYWNoZWRLZXkgPSAocGFyYW1zLmNhdGVnb3J5U2x1ZyA/PyBwYXJhbXMuY2F0ZWdvcnlJZCkhO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhdGVnb3J5UHJvZHVjdHNNYXAuZ2V0KGNhY2hlZEtleS50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsIHRoaXMuZ2V0UHJvZHVjdHMkKHBhcmFtcykpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeVByb2R1Y3RzTWFwLnNldChjYWNoZWRLZXkudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQvtCxINGD0LrQsNC30LDQvdC90L7QvCDQv9GA0L7QtNGD0LrRgtC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDRgtC+0LLQsNGA0LAv0YPRgdC70YPQs9C4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0RGF0YSQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lQcm9kdWN0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzLyR7cHJvZHVjdElkT3JTbHVnfWApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHByb2R1Y3REVE8pID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdERUTykpLFxuICAgICAgICAgICAgdGFwKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3RJZE9yU2x1Zykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5zZXQodHlwZW9mIHByb2R1Y3RJZE9yU2x1ZyA9PT0gJ3N0cmluZycgPyBwcm9kdWN0LmlkIDogcHJvZHVjdC5zbHVnLCBwcm9kdWN0SWRPclNsdWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByb2R1Y3REYXRhQ2FjaGVkJChwcm9kdWN0SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NQcm9kdWN0IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCB2YWx1ZUZyb21NYXAgPSB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5nZXQocHJvZHVjdElkT3JTbHVnKTtcblxuICAgICAgICBpZiAodmFsdWVGcm9tTWFwKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIHByb2R1Y3RJZE9yU2x1ZyA9IHZhbHVlRnJvbU1hcDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMucHJvZHVjdE1hcC5nZXQocHJvZHVjdElkT3JTbHVnLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0odGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSwgdGhpcy5nZXRQcm9kdWN0RGF0YSQocHJvZHVjdElkT3JTbHVnKSk7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RNYXAuc2V0KHByb2R1Y3RJZE9yU2x1Zy50b1N0cmluZygpLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdCwINC/0L7Qu9GD0YfQtdC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDRhNCw0LnQu9CwINC/0YDQsNC50YEt0LvQuNGB0YLQsCDQsiDRhNC+0YDQvNCw0YLQtSB7QGxpbmsgQmxvYn0sINC4INCy0YvQs9GA0YPQttCw0LXRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0LIg0LHRgNCw0YPQt9C10YAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSB7QGxpbmsgU2NNaW1lVHlwZXN9INC30LDQv9GA0LDRiNC40LLQsNC10LzQvtCz0L4g0YTQsNC50LvQsC5cbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40LgsINC00LvRjyDQutC+0YLQvtGA0L7QuSDQt9Cw0LPRgNGD0LbQsNC10YLRgdGPINC/0YDQsNC50YEt0LvQuNGB0YIuXG4gICAgICovXG4gICAgcHVibGljIGRvd25sb2FkUHJpY2UkKHR5cGU6IFNjTWltZVR5cGVzLCBjYXRlZ29yeUlkPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29udmVydGVyc1NlcnZpY2UudG9IdHRwUGFyYW1zKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvcm1hdDogT2JqZWN0LmtleXMoU2NNaW1lVHlwZXMpW09iamVjdC52YWx1ZXMoU2NNaW1lVHlwZXMpLmluZGV4T2YodHlwZSldLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBjYXRlZ29yeUlkID8/IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBub25OdWxsYWJsZTogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9kb3dubG9hZGAsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHBhcmFtczogcGFyYW1zIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+IG5ldyBCbG9iKFtibG9iXSwgeyB0eXBlOiB0eXBlIH0pKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2F0YWxvZ1ByaWNlRG93bmxvYWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQgPz8gJ3Jvb3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VfdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNC/0YDQvtGBINC90LAg0YPQstC10LTQvtC80LvQtdC90LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L4g0L/QvtGB0YLRg9C/0LvQtdC90LjQuCDQv9GA0L7QtNGD0LrRgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDRgtC+0LLQsNGA0LAuXG4gICAgICogQHBhcmFtIGRhdGEg0JTQsNC90L3Ri9C1INC00LvRjyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrJChwcm9kdWN0SWRPclNsdWc6IHN0cmluZyB8IG51bWJlciwgZGF0YTogU2NJUHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0cy8ke3Byb2R1Y3RJZE9yU2x1Z30vc3RvY2stbm90aWZ5YCwgZGF0YSk7XG4gICAgfVxufVxuIl19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNckksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMv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QUFFO29CQUNKLFdBQVcsRUFBRSxVQUFVLElBQUksTUFBTTtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ25CO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDRCQUE0QixDQUFDLGVBQWdDLEVBQUUsSUFBaUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxxQkFBcUIsZUFBZSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkgsQ0FBQzsrR0E5WlEsZ0JBQWdCLDRDQTJGYixPQUFPLDJFQUdQLGlCQUFpQjttSEE5RnBCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQTRGUSxNQUFNOzJCQUFDLE9BQU87OzBCQUdkLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZVR5cGVzXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBleHBhbmQsIGZpbHRlciwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBza2lwLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSwgdGFwLCB0b0FycmF5IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjSUNhY2hlTGlmZXRpbWUgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS1jYWNoZS1saWZldGltZSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTY0NvbnZlcnRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udmVydGVycy9zZXJ2aWNlcy9zYy1jb252ZXJ0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NJUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9wYWdpbmF0aW9uL2R0by9zYy1pLXBhZ2luYXRlJztcbmltcG9ydCB7IFNjSWRPclNsdWdQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvc2MtaWQtb3Itc2x1Zy5waXBlJztcbmltcG9ydCB7IFNDX0NBQ0hFX0xJRkVUSU1FIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLWNhY2hlLWxpZmV0aW1lJztcbmltcG9ydCB7IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtaXMtaGlkZGVuLWVycm9yLWFsZXJ0JztcbmltcG9ydCB7IFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtdXJscyc7XG5pbXBvcnQgeyBTY1VJU2VydmljZSB9IGZyb20gJy4uLy4uL3VpL3NlcnZpY2VzL3NjLXVpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXIvc2VydmljZXMvc2MtdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0gfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2EvZW51bXMvc2MtdXNlci1tZXRyaWthLWdvYWxzLWVudW0nO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2Evc2VydmljZXMvc2MtdXNlci1tZXRyaWthLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vY2xhc3Nlcyc7XG5pbXBvcnQgeyBTY0NhdGVnb3J5IH0gZnJvbSAnLi4vZHRvL3NjLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjSVByb2R1Y3ROb3RpZnlXaGVuSW5TdG9jayB9IGZyb20gJy4uL2R0by9zYy1pLXByb2R1Y3Qtbm90aWZ5LXdoZW4taW4tc3RvY2snO1xuaW1wb3J0IHsgU2NQcm9kdWN0IH0gZnJvbSAnLi4vZHRvL3NjLXByb2R1Y3QnO1xuaW1wb3J0IHsgU2NWaXJ0dWFsQ2F0ZWdvcnkgfSBmcm9tICcuLi9kdG8vc2MtdmlydHVhbC1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY01pbWVUeXBlcyB9IGZyb20gJy4uL2VudW1zL3NjLW1pbWUtdHlwZXMnO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYy1pLWNhdGVnb3J5LXByb2R1Y3QtcGFyYW1zJztcbmltcG9ydCB7IFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktY2F0ZWdvcnktcHJvZHVjdHMtcGFnaW5hdGlvbi1wYXJhbXMnO1xuaW1wb3J0IHsgU2NJUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0JztcbmltcG9ydCB7IFNjSVZpcnR1YWxDYXRlZ29yeSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS12aXJ0dWFsLWNhdGVnb3J5JztcbmltcG9ydCB7IFNDX0NPVU5UX0ZJUlNUX0RJU0NPVU5URURfUFJPRFVDVFMgfSBmcm9tICcuLi90b2tlbnMvc2MtY291bnQtZmlyc3QtZGlzY291bnRlZC1wcm9kdWN0cyc7XG5pbXBvcnQgeyBTY1ByaWNlSGlzdG9yeSB9IGZyb20gJy4uL3R5cGVzL3NjLXByaWNlLWhpc3RvcnknO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60LDRgtCw0LvQvtCz0L7QvC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRhbG9nU2VydmljZSB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQutCw0YLQtdCz0L7RgNC40Lkg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBpZENhdGVnb3J5TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBTY0NhdGVnb3J5PiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBTY0NhdGVnb3J5PigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQstC40YDRgtGD0LDQu9GM0L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZpcnR1YWxDYXRlZ29yeU1hcDogTWFwPHN0cmluZywgU2NDYWNoZWRJdGVtPFNjVmlydHVhbENhdGVnb3J5Pj4gPSBuZXcgTWFwPHN0cmluZywgU2NDYWNoZWRJdGVtPFNjVmlydHVhbENhdGVnb3J5Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINC60LDRgtC10LPQvtGA0LjQuSDQutCw0YLQsNC70L7Qs9CwLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbiAgICBwcml2YXRlIGNhdGVnb3J5TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdm9pZCwgU2NDYWNoZWRJdGVtPFNjQ2F0ZWdvcnk+PiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nIHwgdm9pZCwgU2NDYWNoZWRJdGVtPFNjQ2F0ZWdvcnk+PigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQv9GA0L7QtNGD0LrRgtC+0LIg0LrQsNGC0LDQu9C+0LPQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2R1Y3RNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3Q+PiA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9GFINGC0L7QstCw0YDQvtCyINC60LDRgtC10LPQvtGA0LjQuCDQutCw0YLQsNC70L7Qs9CwLlxuICAgICAqL1xuICAgIHByaXZhdGUgY2F0ZWdvcnlQcm9kdWN0c01hcDogTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdPj4gPSBuZXcgTWFwPG51bWJlciwgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdPj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LrRjdGI0LjRgNC+0LLQsNC90LjRjyDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9kdWN0SGlzdG9yeU1hcDogTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJpY2VIaXN0b3J5Pj4gPSBuZXcgTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJpY2VIaXN0b3J5Pj4oKTtcblxuICAgIC8qKlxuICAgICAqINCf0LDQudC/LCDQstC+0LfQstGA0LDRidCw0Y7RidC40Lkg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4INGB0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpINC40YHRhdC+0LTRjyDQuNC3INC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRPclNsdWdQaXBlOiBTY0lkT3JTbHVnUGlwZSA9IGluamVjdChTY0lkT3JTbHVnUGlwZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINGB0L7Qv9C+0YHRgtCw0LLQu9C10L3QuNGPIHNsdWcg0LggaWQg0LrQsNGC0LXQs9C+0YDQuNC5INC/0YDQuCDQutC10YjQuNGA0L7QstCw0L3QuNC4INC30LDQv9GA0L7RgdC+0LIsINC10YHQu9C4INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC+0YLQu9C40YfQsNC10YLRgdGPINC+0YIg0YPRgdGC0LDQvdC+0LLQu9C10L3QvdC+0LPQviDQsiDQv9GA0L7QtdC60YLQtSAoc2x1Zy9pZCkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeUlkT3JTbHVnTWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIG51bWJlciB8IHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0YHQvtC/0L7RgdGC0LDQstC70LXQvdC40Y8gc2x1ZyDQuCBpZCDRgtC+0LLQsNGA0L7QsiDQv9GA0Lgg0LrQtdGI0LjRgNC+0LLQsNC90LjQuCDQt9Cw0L/RgNC+0YHQvtCyLCDQtdGB0LvQuCDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvtGC0LvQuNGH0LDQtdGC0YHRjyDQvtGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L3QvtCz0L4g0LIg0L/RgNC+0LXQutGC0LUgKHNsdWcvaWQpLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdElkT3JTbHVnTWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmc+ID0gbmV3IE1hcDxudW1iZXIgfCBzdHJpbmcsIG51bWJlciB8IHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqINCn0LjRgdC70L4g0L/QtdGA0LLRi9GFINC30LDQv9C40YHQtdC5INGC0L7QstCw0YDQvtCyINGB0L4g0YHQutC40LTQutC+0LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3VudEZpcnN0RGlzY291bnRlZFByb2R1Y3RzOiBudW1iZXIgPSBpbmplY3QoU0NfQ09VTlRfRklSU1RfRElTQ09VTlRFRF9QUk9EVUNUUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclNlcnZpY2U6IFNjVXNlclNlcnZpY2UgPSBpbmplY3QoU2NVc2VyU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDRgdC+INGB0LrQuNC00LrQvtC5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmaXJzdERpc2NvdW50ZWQkOiBPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsPiA9IGluamVjdChTQ19VU0VSX0lORk8pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcikgPT5cbiAgICAgICAgICAgIHVzZXIuaXNHdWVzdCA/IG9mKG51bGwpIDogdGhpcy5nZXRQcm9kdWN0cyQoeyBmaWx0ZXJzOiB7IG9ubHlEaXNjb3VudGVkOiB0cnVlIH0sIHBhZ2luYXRlOiB0cnVlLCBwYWdlOiAxLCBwZXJQYWdlOiB0aGlzLmNvdW50Rmlyc3REaXNjb3VudGVkUHJvZHVjdHMgfSlcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0LjQtyDQv9C10YDQstGL0YUg0YLQvtCy0LDRgNC+0LIg0YHQviDRgdC60LjQtNC60L7QuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZmlyc3REaXNjb3VudGVkUHJvZHVjdHMkOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdPiA9IHRoaXMuZmlyc3REaXNjb3VudGVkJC5waXBlKG1hcCgoZGF0YSkgPT4gZGF0YT8uZGF0YSA/PyBbXSkpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQvtCx0YnQtdCz0L4g0LrQvtC70LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0YHQviDRgdC60LjQtNC60L7QuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY291bnREaXNjb3VudGVkUHJvZHVjdHMkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLmZpcnN0RGlzY291bnRlZCQucGlwZShtYXAoKGRhdGEpID0+IGRhdGE/Lm1ldGEudG90YWwgPz8gMCkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhdGFsb2dTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBodHRwINCh0LXRgNCy0LjRgSDQtNC70Y8g0LLRi9C/0L7Qu9C90LXQvdC40Y8gSFRUUC3Qt9Cw0L/RgNC+0YHQvtCyLlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHVpU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVSS5cbiAgICAgKiBAcGFyYW0gY29udmVydGVyc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqIEBwYXJhbSBjYWNoZUxpZmVUaW1lINCe0LHRitC10LrRgiDRgSDQuNC90YTQvtGA0LzQsNGG0LjQtdC5INC+INCy0YDQtdC80LXQvdC4INC20LjQt9C90Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVpU2VydmljZTogU2NVSVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoU0NfQ0FDSEVfTElGRVRJTUUpIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVMaWZlVGltZTogU2NJQ2FjaGVMaWZldGltZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgICAgICAucGlwZShza2lwKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZENhdGVnb3J5TWFwLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXRlZ29yeU1hcC5jbGVhcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdEhpc3RvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5UHJvZHVjdHNNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxDYXRlZ29yeU1hcC5jbGVhcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrQsNGC0LXQs9C+0YDQuNGOINC40Lcg0LrQvtC70LvQtdC60YbQuNC4INC60LDRgtCw0LvQvtCz0LAsINC10YHQu9C4INC10ZEg0YHRgNC+0Log0LbQuNC30L3QuCDQvdC1INC40YHRgtGR0LouXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCDQo9C00LDQu9C40YLRjCDQsiDRgNCw0LzQutCw0YUg0LfQsNC00LDRh9C4IFRBU0tbIzEwMTUzXS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlGcm9tTWFwKGNhdGVnb3J5SWRPclNsdWc/OiBudW1iZXIgfCBzdHJpbmcpOiBTY0NhdGVnb3J5IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSB0aGlzLmlkQ2F0ZWdvcnlNYXAuZ2V0KGNhdGVnb3J5SWRPclNsdWc/LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmIChjYXRlZ29yeSAmJiAoIWNhdGVnb3J5LnBhcmVudENhdGVnb3J5IHx8ICFjYXRlZ29yeS5sb2FkZWRBdCB8fCBjYXRlZ29yeS5jYWNoZWREYXRhSXNBY3R1YWwodGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlkQ2F0ZWdvcnlNYXAuZGVsZXRlKGNhdGVnb3J5SWRPclNsdWc/LnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LrQsNGC0LXQs9C+0YDQuNC5INGC0L7QstCw0YDQvtCyINC40LvQuCDRgdC/0LjRgdC+0Log0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40LksINC10YHQu9C4INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60LDRgtC10LPQvtGA0LjQuCDQvdC1INGD0LrQsNC30LDQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENhdGVnb3J5RGF0YSQoY2F0ZWdvcnlJZE9yU2x1Zz86IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NDYXRlZ29yeT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lDYXRlZ29yeT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1ZyA/PyAnJ31gKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjYXRlZ29yeSkgPT4gbmV3IFNjQ2F0ZWdvcnkoY2F0ZWdvcnkpKSxcbiAgICAgICAgICAgIHRhcCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1Zykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGVnb3J5SWRPclNsdWdNYXAuc2V0KHR5cGVvZiBjYXRlZ29yeUlkT3JTbHVnID09PSAnc3RyaW5nJyA/IGNhdGVnb3J5LmlkIDogY2F0ZWdvcnkuc2x1ZywgY2F0ZWdvcnlJZE9yU2x1Zyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40Lkg0YEg0L3QsNGB0YLRgNC+0LnQutCw0LzQuCDQvtGC0L7QsdGA0LDQttC10L3QuNGPLCDRh9GC0L7QsdGLINGA0LXQsNCz0LjRgNC+0LLQsNGC0Ywg0L3QsCDQuNC30LzQtdC90LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIGdldEZpbHRlcmVkUm9vdENhdGVnb3JpZXMkKCk6IE9ic2VydmFibGU8U2NJQ2F0ZWdvcnlbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy51aVNlcnZpY2UuZ2V0SGlkZGVuQ2F0ZWdvcmllc0xpc3QkKCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoZmlsdGVycykgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmdldFJvb3RDYXRlZ29yaWVzJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGRhdGEpID0+IGRhdGEuZmlsdGVyKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuaWQgJiYgIWZpbHRlcnMuaW5jbHVkZXMoY2F0ZWdvcnkuaWQpKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7QtNC10YDQttC40LzQvtCz0L4g0LLQuNGA0YLRg9Cw0LvRjNC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2x1ZyDQodC40LzQstC+0LvRjNC90YvQuSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQstC40YDRgtGD0LDQu9GM0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VmlydHVhbENhdGVnb3J5Q2FjaGVkJChzbHVnOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjVmlydHVhbENhdGVnb3J5IHwgbnVsbD4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMudmlydHVhbENhdGVnb3J5TWFwLmdldChzbHVnKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLmdldDxTY0lWaXJ0dWFsQ2F0ZWdvcnk+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvdi1jYXRlZ29yaWVzLyR7c2x1Z31gKS5waXBlKG1hcCgoY2F0ZWdvcnkpID0+IG5ldyBTY1ZpcnR1YWxDYXRlZ29yeShjYXRlZ29yeSkpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxDYXRlZ29yeU1hcC5zZXQoc2x1ZywgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40Lgg0YLQvtCy0LDRgNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5Q2FjaGVkJChjYXRlZ29yeUlkT3JTbHVnPzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxTY0NhdGVnb3J5IHwgbnVsbD4ge1xuICAgICAgICBpZiAoY2F0ZWdvcnlJZE9yU2x1ZyAmJiB0aGlzLmNhdGVnb3J5SWRPclNsdWdNYXAuaGFzKGNhdGVnb3J5SWRPclNsdWcpKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIGNhdGVnb3J5SWRPclNsdWcgPSB0aGlzLmNhdGVnb3J5SWRPclNsdWdNYXAuZ2V0KGNhdGVnb3J5SWRPclNsdWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhdGVnb3J5TWFwLmdldChjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsIHRoaXMuZ2V0Q2F0ZWdvcnlEYXRhJChjYXRlZ29yeUlkT3JTbHVnKSwgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3J5TWFwLnNldChjYXRlZ29yeUlkT3JTbHVnPy50b1N0cmluZygpLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDQtdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtGA0L3QtdCy0YvRhSDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgcHVibGljIGdldE51bGxDYXRlZ29yeSQoKTogT2JzZXJ2YWJsZTxTY0NhdGVnb3J5IHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDYXRlZ29yeUNhY2hlZCQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINC60L7RgNC90LXQstGL0YUg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb290Q2F0ZWdvcmllcyQoKTogT2JzZXJ2YWJsZTxTY0lDYXRlZ29yeVtdIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXROdWxsQ2F0ZWdvcnkkKCkucGlwZShtYXAoKG51bGxDYXRlZ29yeSkgPT4gbnVsbENhdGVnb3J5Py5jYXRlZ29yaWVzID8/IG51bGwpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQoNCw0YHQutGA0YvQstCw0LXRgiDQutCw0YLQsNC70L7QsyDQtNC+INGD0LrQsNC30LDQvdC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDQutCw0YLQtdCz0L7RgNC40LgsINC00L4g0LrQvtGC0L7RgNC+0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0YDQsNGB0LrRgNGL0YLRjCDQutCw0YLQsNC70L7Qsy5cbiAgICAgKiBAcmV0dXJucyDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0YDQsNGB0LrRgNGL0YLRi9GFINC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZENhdGFsb2dUcmVlQ2FjaGVkJChjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2F0ZWdvcnlDYWNoZWQkKGNhdGVnb3J5SWRPclNsdWcpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICBleHBhbmQoKGNhdGVnb3J5KSA9PlxuICAgICAgICAgICAgICAgIChjYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSA/IHRoaXMuZ2V0Q2F0ZWdvcnlDYWNoZWQkKHRoaXMuaWRPclNsdWdQaXBlLnRyYW5zZm9ybShjYXRlZ29yeS5wYXJlbnRDYXRlZ29yeSkpIDogdGhpcy5nZXROdWxsQ2F0ZWdvcnkkKCkpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdCgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uLHNvbmFyanMvZGlmZmVyZW50LXR5cGVzLWNvbXBhcmlzb25cbiAgICAgICAgICAgIHRha2VXaGlsZSgocGFyZW50Q2F0ZWdvcnkpID0+IHBhcmVudENhdGVnb3J5LnBhcmVudENhdGVnb3J5ICE9PSB1bmRlZmluZWQsIHRydWUpLFxuICAgICAgICAgICAgdG9BcnJheSgpLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tbWlzbGVhZGluZy1hcnJheS1yZXZlcnNlXG4gICAgICAgICAgICBtYXAoKGNhdGVnb3JpZXMpID0+IGNhdGVnb3JpZXMucmV2ZXJzZSgpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQv9C+0LvRg9GH0LXQvdC40Y8g0LjRgdGC0L7RgNC40Lgg0LjQt9C80LXQvdC10L3QuNGPINGG0LXQvSDQvdCwINC/0YDQvtC00YPQutGCINC00LvRjyDQutC70LjQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0INCf0YDQvtC00YPQutGCLCDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDQt9Cw0L/RgNCw0YjQuNCy0LDQtdGC0YHRjyDRhtC10L3QsC5cbiAgICAgKiBAcmV0dXJucyDQmNGB0YLQvtGA0LjRjyDQuNC30LzQtdC90LXQvdC40Y8g0YbQtdC9INC90LAg0L/RgNC+0LTRg9C60YIg0LTQu9GPINC60LvQuNC10L3RgtCwINCyINGE0L7RgNC80LDRgtC1IHtAbGluayBPYnNlcnZhYmxlfSDQuNC3INC30LDQv9GA0L7RgdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcmljZUhpc3RvcnkkKHByb2R1Y3Q6IFNjUHJvZHVjdCk6IE9ic2VydmFibGU8U2NQcmljZUhpc3RvcnkgfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5wcm9kdWN0SGlzdG9yeU1hcC5nZXQocHJvZHVjdC5pZC50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKFxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgIC5nZXQ8U2NQcmljZUhpc3Rvcnk+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvcHJvZHVjdHMvJHtwcm9kdWN0LmlkfS9wcmljZS1oaXN0b3J5YCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZih7fSkpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RIaXN0b3J5TWFwLnNldChwcm9kdWN0LmlkLnRvU3RyaW5nKCksIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbXMg0J/QsNGA0LDQvNC10YLRgNGLINC30LDQv9GA0L7RgdCwINGC0L7QstCw0YDQvtCyINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHMkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXT47XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQsNC70L7Qs9CwINGBINC/0LDQs9C40L3QsNGG0LjQtdC5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QsNCz0LjQvdCw0YbQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0cyQocGFyYW1zOiBTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zKTogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+PjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVkdW5kYW50LXR5cGUtY29uc3RpdHVlbnRzXG4gICAgcHVibGljIGdldFByb2R1Y3RzJChwYXJhbXM6IFNjSUNhdGVnb3J5UHJvZHVjdFBhcmFtcyB8IFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXMpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdIHwgU2NJUGFnaW5hdGU8U2NQcm9kdWN0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0PFNjSVBhZ2luYXRlPFNjSVByb2R1Y3Q+IHwgU2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzYCwge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgcGFyYW1zOiB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnRvSHR0cFBhcmFtcyh7IC4uLnBhcmFtcyB9LCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2Z1bmN0aW9uLXJldHVybi10eXBlXG4gICAgICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgnbWV0YScgaW4gZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVEYXRhID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9uZURhdGEuZGF0YSA9IGNsb25lRGF0YS5kYXRhLm1hcCgoaXRlbSkgPT4gbmV3IFNjUHJvZHVjdChpdGVtKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZURhdGEgYXMgU2NJUGFnaW5hdGU8U2NQcm9kdWN0PjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+IG5ldyBTY1Byb2R1Y3QoaXRlbSwgaW5kZXgpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0Lgg0LrRjdGI0LjRgNGD0LXRgiDQtdCz0L4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zINCf0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3RzQ2F0ZWdvcnlDYWNoZWQkKHBhcmFtczogU2NJQ2F0ZWdvcnlQcm9kdWN0UGFyYW1zKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXSB8IG51bGw+IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICBpZiAoIXBhcmFtcy5jYXRlZ29yeUlkICYmICFwYXJhbXMuY2F0ZWdvcnlTbHVnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ9Cd0LUg0YPQutCw0LfQsNC9IGlkL3NsdWcg0LrQsNGC0LXQs9C+0YDQuNC4LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24sQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICBjb25zdCBjYWNoZWRLZXkgPSAocGFyYW1zLmNhdGVnb3J5U2x1ZyA/PyBwYXJhbXMuY2F0ZWdvcnlJZCkhO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLmNhdGVnb3J5UHJvZHVjdHNNYXAuZ2V0KGNhY2hlZEtleS50b1N0cmluZygpKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKHRoaXMuY2FjaGVMaWZlVGltZS5jYXRlZ29yeURhdGEsIHRoaXMuZ2V0UHJvZHVjdHMkKHBhcmFtcyksIG51bGwpO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbFxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yeVByb2R1Y3RzTWFwLnNldChjYWNoZWRLZXkudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0uY2FjaGVkRGF0YUlzQWN0dWFsKCkpIHtcbiAgICAgICAgICAgIGNhY2hlZEl0ZW0udXBkYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQvtCxINGD0LrQsNC30LDQvdC90L7QvCDQv9GA0L7QtNGD0LrRgtC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDRgtC+0LLQsNGA0LAv0YPRgdC70YPQs9C4LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0RGF0YSQocHJvZHVjdElkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxTY0lQcm9kdWN0PihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzLyR7cHJvZHVjdElkT3JTbHVnfWApLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHByb2R1Y3REVE8pID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdERUTykpLFxuICAgICAgICAgICAgdGFwKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3RJZE9yU2x1Zykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5zZXQodHlwZW9mIHByb2R1Y3RJZE9yU2x1ZyA9PT0gJ3N0cmluZycgPyBwcm9kdWN0LmlkIDogcHJvZHVjdC5zbHVnLCBwcm9kdWN0SWRPclNsdWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByb2R1Y3REYXRhQ2FjaGVkJChwcm9kdWN0SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NQcm9kdWN0IHwgbnVsbD4ge1xuICAgICAgICBjb25zdCB2YWx1ZUZyb21NYXAgPSB0aGlzLnByb2R1Y3RJZE9yU2x1Z01hcC5nZXQocHJvZHVjdElkT3JTbHVnKTtcblxuICAgICAgICBpZiAodmFsdWVGcm9tTWFwKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIHByb2R1Y3RJZE9yU2x1ZyA9IHZhbHVlRnJvbU1hcDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMucHJvZHVjdE1hcC5nZXQocHJvZHVjdElkT3JTbHVnLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0odGhpcy5jYWNoZUxpZmVUaW1lLmNhdGVnb3J5RGF0YSwgdGhpcy5nZXRQcm9kdWN0RGF0YSQocHJvZHVjdElkT3JTbHVnKSwgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RNYXAuc2V0KHByb2R1Y3RJZE9yU2x1Zy50b1N0cmluZygpLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbS5jYWNoZWREYXRhSXNBY3R1YWwoKSkge1xuICAgICAgICAgICAgY2FjaGVkSXRlbS51cGRhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdCwINC/0L7Qu9GD0YfQtdC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDRhNCw0LnQu9CwINC/0YDQsNC50YEt0LvQuNGB0YLQsCDQsiDRhNC+0YDQvNCw0YLQtSB7QGxpbmsgQmxvYn0sINC4INCy0YvQs9GA0YPQttCw0LXRgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0LIg0LHRgNCw0YPQt9C10YAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSB7QGxpbmsgU2NNaW1lVHlwZXN9INC30LDQv9GA0LDRiNC40LLQsNC10LzQvtCz0L4g0YTQsNC50LvQsC5cbiAgICAgKiBAcGFyYW0gY2F0ZWdvcnlJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutCw0YLQtdCz0L7RgNC40LgsINC00LvRjyDQutC+0YLQvtGA0L7QuSDQt9Cw0LPRgNGD0LbQsNC10YLRgdGPINC/0YDQsNC50YEt0LvQuNGB0YIuXG4gICAgICovXG4gICAgcHVibGljIGRvd25sb2FkUHJpY2UkKHR5cGU6IFNjTWltZVR5cGVzLCBjYXRlZ29yeUlkPzogbnVtYmVyKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29udmVydGVyc1NlcnZpY2UudG9IdHRwUGFyYW1zKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvcm1hdDogT2JqZWN0LmtleXMoU2NNaW1lVHlwZXMpW09iamVjdC52YWx1ZXMoU2NNaW1lVHlwZXMpLmluZGV4T2YodHlwZSldLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkOiBjYXRlZ29yeUlkID8/IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBub25OdWxsYWJsZTogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9kb3dubG9hZGAsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHBhcmFtczogcGFyYW1zIH0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGJsb2I6IEJsb2IpID0+IG5ldyBCbG9iKFtibG9iXSwgeyB0eXBlOiB0eXBlIH0pKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uY2F0YWxvZ1ByaWNlRG93bmxvYWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQgPz8gJ3Jvb3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VfdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNC/0YDQvtGBINC90LAg0YPQstC10LTQvtC80LvQtdC90LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L4g0L/QvtGB0YLRg9C/0LvQtdC90LjQuCDQv9GA0L7QtNGD0LrRgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2R1Y3RJZE9yU2x1ZyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lggc2x1ZyDRgtC+0LLQsNGA0LAuXG4gICAgICogQHBhcmFtIGRhdGEg0JTQsNC90L3Ri9C1INC00LvRjyDQt9Cw0L/RgNC+0YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrJChwcm9kdWN0SWRPclNsdWc6IHN0cmluZyB8IG51bWJlciwgZGF0YTogU2NJUHJvZHVjdE5vdGlmeVdoZW5JblN0b2NrKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9wcm9kdWN0cy8ke3Byb2R1Y3RJZE9yU2x1Z30vc3RvY2stbm90aWZ5YCwgZGF0YSk7XG4gICAgfVxufVxuIl19
@@ -5,6 +5,7 @@ import { tuiPure } from '@taiga-ui/cdk';
5
5
  import { catchError, distinctUntilChanged, map, of, skip, startWith, switchMap } from 'rxjs';
6
6
  import { ScCartService } from '../../cart';
7
7
  import { ScConvertersService } from '../../converters';
8
+ import { loadingPlaceholder } from '../../order/tokens/sc-order-loader.token';
8
9
  import { SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT } from '../../tokens/sc-is-hidden-error-alert';
9
10
  import { SC_URLS } from '../../tokens/sc-urls';
10
11
  import { SC_USER_INFO } from '../../user/tokens/sc-user-providers';
@@ -63,7 +64,8 @@ export class ScRecommendationService {
63
64
  .get(`${this.urls.apiUrl}/catalog/categories/${categoryIdOrSlug}/recommendations`, {
64
65
  context: SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT,
65
66
  })
66
- .pipe(catchError(() => of([])), map((productsDTO) => productsDTO.map((product) => new ScProduct(product)))));
67
+ .pipe(catchError(() => of([])), map((productsDTO) => productsDTO.map((product) => new ScProduct(product))))
68
+ .pipe(startWith(null)), null);
67
69
  this.productsByCategoryMap.set(categoryIdOrSlug.toString(), cachedItem);
68
70
  }
69
71
  return cachedItem.item$;
@@ -81,7 +83,8 @@ export class ScRecommendationService {
81
83
  .get(`${this.urls.apiUrl}/catalog/products/${productIdOrSlug}/recommendations`, {
82
84
  context: SC_IS_HIDDEN_ERROR_ALERT_HTTP_CONTEXT,
83
85
  })
84
- .pipe(catchError(() => of([])), map((productsDTO) => productsDTO.map((product) => new ScProduct(product)))));
86
+ .pipe(catchError(() => of([])), map((productsDTO) => productsDTO.map((product) => new ScProduct(product))))
87
+ .pipe(startWith(null)), null);
85
88
  this.productsByProductMap.set(productIdOrSlug.toString(), cachedItem);
86
89
  }
87
90
  return cachedItem.item$;
@@ -103,12 +106,10 @@ export class ScRecommendationService {
103
106
  * Создает запрос на получение списка рекомендованных товаров для корзины клиента.
104
107
  */
105
108
  getProductsByCart$() {
106
- return this.cartService.getCartChange$().pipe(
107
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion
108
- map((cart) => cart.items.map((item) => Number(item.product.id))),
109
+ return this.cartService.get$().pipe(map((cart) => (cart !== loadingPlaceholder && 'items' in cart ? cart.items.map((item) => item.product.id) : [])),
109
110
  // Отфильтровываем повторения. Они возникнут если было изменено количество товара без удаления\добавления новых товаров.
110
111
  // eslint-disable-next-line sonarjs/no-misleading-array-reverse
111
- distinctUntilChanged((previous, current) => JSON.stringify(previous.sort((a, b) => a - b)) === JSON.stringify(current.sort((a, b) => a - b))), switchMap((productIds) => this.getProductsByProductIds$(productIds).pipe(startWith(null))));
112
+ distinctUntilChanged((previous, current) => JSON.stringify([...previous].sort((a, b) => a - b)) === JSON.stringify([...current].sort((a, b) => a - b))), switchMap((productIds) => this.getProductsByProductIds$(productIds).pipe(startWith(null))));
112
113
  }
113
114
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScRecommendationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
114
115
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScRecommendationService, providedIn: 'root' }); }
@@ -122,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
122
123
  providedIn: 'root',
123
124
  }]
124
125
  }], ctorParameters: () => [], propDecorators: { getProductsByCart$: [] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcmVjb21tZW5kYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY2F0YWxvZy9zZXJ2aWNlcy9zYy1yZWNvbW1lbmRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUc5Qzs7R0FFRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUErQmhDOztPQUVHO0lBQ0g7UUFqQ0E7O1dBRUc7UUFDYywwQkFBcUIsR0FBb0QsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFdkk7O1dBRUc7UUFDYyx5QkFBb0IsR0FBb0QsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFdEk7O1dBRUc7UUFDYyxTQUFJLEdBQWUs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QUFDLEVBQzdJLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUM3RixDQUFDO0lBQ04sQ0FBQzsrR0EvSFEsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGcEIsTUFBTTs7QUF3SFg7SUFETixPQUFPO2lFQVVQOzRGQS9IUSx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCO3dEQXVIVSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0dWlQdXJlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2NhcnQnO1xuaW1wb3J0IHsgU2NJVXJscyB9IGZyb20gJy4uLy4uL2NvbmZpZy9zYy1pLXVybHMnO1xuaW1wb3J0IHsgU2NDb252ZXJ0ZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnZlcnRlcnMnO1xuaW1wb3J0IHsgU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy1pcy1oaWRkZW4tZXJyb3ItYWxlcnQnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjQ2FjaGVkSXRlbSB9IGZyb20gJy4uL2NsYXNzZXMnO1xuaW1wb3J0IHsgU2NQcm9kdWN0IH0gZnJvbSAnLi4vZHRvL3NjLXByb2R1Y3QnO1xuaW1wb3J0IHsgU2NJUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2MtaS1wcm9kdWN0JztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDRgNC10LrQvtC80LXQvdC00YPQtdC80YvQvNC4INGC0L7QstCw0YDQsNC80LguXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjUmVjb21tZW5kYXRpb25TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDRgNC10LrQvtC80LXQvdC00YPQtdC80YvRhSDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0c0J5Q2F0ZWdvcnlNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+ID0gbmV3IE1hcDxudW1iZXIsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTWFwfSDQutC+0LvQu9C10LrRhtC40Y8g0L/QsNGAINC60LvRjtGHLdC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC60Y3RiNC40YDQvtCy0LDQvdC90YvRhSDRgNC10LrQvtC80LXQvdC00YPQtdC80YvRhSDRgtC+0LLQsNGA0L7QsiDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0c0J5UHJvZHVjdE1hcDogTWFwPG51bWJlciB8IHN0cmluZywgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdPj4gPSBuZXcgTWFwPG51bWJlciwgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdPj4oKTtcblxuICAgIC8qKlxuICAgICAqIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FydFNlcnZpY2U6IFNjQ2FydFNlcnZpY2UgPSBpbmplY3QoU2NDYXJ0U2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjUmVjb21tZW5kYXRpb25TZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluamVjdChTQ19VU0VSX0lORk8pXG4gICAgICAgICAgICAucGlwZShza2lwKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0J5Q2F0ZWdvcnlNYXAuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzQnlQcm9kdWN0TWFwLmNsZWFyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0YHQv9C40YHQutCwINGA0LXQutC+0LzQtdC90LTQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQtNC70Y8g0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3J5SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0LrQsNGC0LXQs9C+0YDQuNC4INGC0L7QstCw0YDQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0c0J5Q2F0ZWdvcnkkKGNhdGVnb3J5SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NQcm9kdWN0W10gfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5wcm9kdWN0c0J5Q2F0ZWdvcnlNYXAuZ2V0KGNhdGVnb3J5SWRPclNsdWcudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQstGA0LXQvNGPINC20LjQt9C90LggY2FjaGVkSXRlbSDRgNCw0LLQvdC+0LUsINC/0L7RgtC+0LzRgyDRh9GC0L4g0L3QsNC8INC90LUg0LLQsNC20L3QviDQstGA0LXQvNGPINC20LjQt9C90LguINCd0LDQvCDQvdGD0LbQtdC9INGE0YPQvdC60YbQuNC+0L3QsNC7IHVwZGF0ZSgpLlxuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW0oXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgLmdldDxTY0lQcm9kdWN0W10+KGAke3RoaXMudXJscy5hcGlVcmx9L2NhdGFsb2cvY2F0ZWdvcmllcy8ke2NhdGVnb3J5SWRPclNsdWd9L3JlY29tbWVuZGF0aW9uc2AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQsXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChwcm9kdWN0c0RUTykgPT4gcHJvZHVjdHNEVE8ubWFwKChwcm9kdWN0KSA9PiBuZXcgU2NQcm9kdWN0KHByb2R1Y3QpKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdHNCeUNhdGVnb3J5TWFwLnNldChjYXRlZ29yeUlkT3JTbHVnLnRvU3RyaW5nKCksIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC90LAg0L/QvtC70YPRh9C10L3QuNC1INGB0L/QuNGB0LrQsCDRgNC10LrQvtC80LXQvdC00L7QstCw0L3QvdGL0YUg0YLQvtCy0LDRgNC+0LIg0LTQu9GPINC/0YDQvtC00YPQutGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdElkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINGC0L7QstCw0YDQsC/Rg9GB0LvRg9Cz0LguXG4gICAgICovXG4gICAgcHVibGljIGdldFByb2R1Y3RzQnlQcm9kdWN0JChwcm9kdWN0SWRPclNsdWc6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8U2NQcm9kdWN0W10gfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5wcm9kdWN0c0J5UHJvZHVjdE1hcC5nZXQocHJvZHVjdElkT3JTbHVnLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgLy8g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LLRgNC10LzRjyDQttC40LfQvdC4IGNhY2hlZEl0ZW0g0YDQsNCy0L3QvtC1LCDQv9C+0YLQvtC80YMg0YfRgtC+INC90LDQvCDQvdC1INCy0LDQttC90L4g0LLRgNC10LzRjyDQttC40LfQvdC4LiDQndCw0Lwg0L3Rg9C20LXQvSDRhNGD0L3QutGG0LjQvtC90LDQuyB1cGRhdGUoKS5cbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtKFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgIC5nZXQ8U2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzLyR7cHJvZHVjdElkT3JTbHVnfS9yZWNvbW1lbmRhdGlvbnNgLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhULFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocHJvZHVjdHNEVE8pID0+IHByb2R1Y3RzRFRPLm1hcCgocHJvZHVjdCkgPT4gbmV3IFNjUHJvZHVjdChwcm9kdWN0KSkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RzQnlQcm9kdWN0TWFwLnNldChwcm9kdWN0SWRPclNsdWcudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0YHQv9C40YHQutCwINGA0LXQutC+0LzQtdC90LTQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQtNC70Y8g0YHQv9C40YHQutCwINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QsiDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRzINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0Ysg0L/RgNC+0LTRg9C60YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0c0J5UHJvZHVjdElkcyQocHJvZHVjdElkczogbnVtYmVyW10pOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8U2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzL3JlY29tbWVuZGF0aW9uc2AsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHRoaXMuY29udmVydGVyc1NlcnZpY2UudG9IdHRwUGFyYW1zKHsgcHJvZHVjdHM6IHByb2R1Y3RJZHMgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhULFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSxcbiAgICAgICAgICAgICAgICBtYXAoKHByb2R1Y3RzRFRPKSA9PiBwcm9kdWN0c0RUTy5tYXAoKHByb2R1Y3QpID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdCkpKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0YHQv9C40YHQutCwINGA0LXQutC+0LzQtdC90LTQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQtNC70Y8g0LrQvtGA0LfQuNC90Ysg0LrQu9C40LXQvdGC0LAuXG4gICAgICovXG4gICAgQHR1aVB1cmVcbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHNCeUNhcnQkKCk6IE9ic2VydmFibGU8U2NQcm9kdWN0W10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRDaGFuZ2UkKCkucGlwZShcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1jb252ZXJzaW9uXG4gICAgICAgICAgICBtYXAoKGNhcnQpID0+IGNhcnQuaXRlbXMubWFwKChpdGVtKSA9PiBOdW1iZXIoaXRlbS5wcm9kdWN0LmlkKSkpLFxuICAgICAgICAgICAgLy8g0J7RgtGE0LjQu9GM0YLRgNC+0LLRi9Cy0LDQtdC8INC/0L7QstGC0L7RgNC10L3QuNGPLiDQntC90Lgg0LLQvtC30L3QuNC60L3Rg9GCINC10YHQu9C4INCx0YvQu9C+INC40LfQvNC10L3QtdC90L4g0LrQvtC70LjRh9C10YHRgtCy0L4g0YLQvtCy0LDRgNCwINCx0LXQtyDRg9C00LDQu9C10L3QuNGPXFzQtNC+0LHQsNCy0LvQtdC90LjRjyDQvdC+0LLRi9GFINGC0L7QstCw0YDQvtCyLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tbWlzbGVhZGluZy1hcnJheS1yZXZlcnNlXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IEpTT04uc3RyaW5naWZ5KHByZXZpb3VzLnNvcnQoKGEsIGIpID0+IGEgLSBiKSkgPT09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnQuc29ydCgoYSwgYikgPT4gYSAtIGIpKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHByb2R1Y3RJZHMpID0+IHRoaXMuZ2V0UHJvZHVjdHNCeVByb2R1Y3RJZHMkKHByb2R1Y3RJZHMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcmVjb21tZW5kYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY2F0YWxvZy9zZXJ2aWNlcy9zYy1yZWNvbW1lbmRhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUc5Qzs7R0FFRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUErQmhDOztPQUVHO0lBQ0g7UUFqQ0E7O1dBRUc7UUFDYywwQkFBcUIsR0FBb0QsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFdkk7O1dBRUc7UUFDYyx5QkFBb0IsR0FBb0QsSUFB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dEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ2pKLEVBQ0QsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQzdGLENBQUM7SUFDTixDQUFDOytHQXJJUSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZwQixNQUFNOztBQTRIWDtJQUROLE9BQU87aUVBWVA7NEZBcklRLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7d0RBMkhVLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIG9mLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0NhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FydCc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTY0NvbnZlcnRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udmVydGVycyc7XG5pbXBvcnQgeyBsb2FkaW5nUGxhY2Vob2xkZXIgfSBmcm9tICcuLi8uLi9vcmRlci90b2tlbnMvc2Mtb3JkZXItbG9hZGVyLnRva2VuJztcbmltcG9ydCB7IFNDX0lTX0hJRERFTl9FUlJPUl9BTEVSVF9IVFRQX0NPTlRFWFQgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtaXMtaGlkZGVuLWVycm9yLWFsZXJ0JztcbmltcG9ydCB7IFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMvc2MtdXJscyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY0NhY2hlZEl0ZW0gfSBmcm9tICcuLi9jbGFzc2VzJztcbmltcG9ydCB7IFNjUHJvZHVjdCB9IGZyb20gJy4uL2R0by9zYy1wcm9kdWN0JztcbmltcG9ydCB7IFNjSVByb2R1Y3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjLWktcHJvZHVjdCc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0YDQtdC60L7QvNC10L3QtNGD0LXQvNGL0LzQuCDRgtC+0LLQsNGA0LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1JlY29tbWVuZGF0aW9uU2VydmljZSB7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQutGN0YjQuNGA0L7QstCw0L3QvdGL0YUg0YDQtdC60L7QvNC10L3QtNGD0LXQvNGL0YUg0YLQvtCy0LDRgNC+0LIg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdHNCeUNhdGVnb3J5TWFwOiBNYXA8bnVtYmVyIHwgc3RyaW5nLCBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0W10+PiA9IG5ldyBNYXA8bnVtYmVyLCBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0W10+PigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INC00LvRjyDQutGN0YjQuNGA0L7QstCw0L3QvdGL0YUg0YDQtdC60L7QvNC10L3QtNGD0LXQvNGL0YUg0YLQvtCy0LDRgNC+0LIg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdHNCeVByb2R1Y3RNYXA6IE1hcDxudW1iZXIgfCBzdHJpbmcsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+ID0gbmV3IE1hcDxudW1iZXIsIFNjQ2FjaGVkSXRlbTxTY1Byb2R1Y3RbXT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRlcnNTZXJ2aWNlOiBTY0NvbnZlcnRlcnNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udmVydGVyc1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtGA0LfQuNC90L7QuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhcnRTZXJ2aWNlOiBTY0NhcnRTZXJ2aWNlID0gaW5qZWN0KFNjQ2FydFNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1JlY29tbWVuZGF0aW9uU2VydmljZX0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpbmplY3QoU0NfVVNFUl9JTkZPKVxuICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHNCeUNhdGVnb3J5TWFwLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0J5UHJvZHVjdE1hcC5jbGVhcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNC10YIg0LfQsNC/0YDQvtGBINC90LAg0L/QvtC70YPRh9C10L3QuNC1INGB0L/QuNGB0LrQsCDRgNC10LrQvtC80LXQvdC00L7QstCw0L3QvdGL0YUg0YLQvtCy0LDRgNC+0LIg0LTQu9GPINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeUlkT3JTbHVnINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC40LvQuCBzbHVnINC60LDRgtC10LPQvtGA0LjQuCDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHNCeUNhdGVnb3J5JChjYXRlZ29yeUlkT3JTbHVnOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdIHwgbnVsbD4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMucHJvZHVjdHNCeUNhdGVnb3J5TWFwLmdldChjYXRlZ29yeUlkT3JTbHVnLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgLy8g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LLRgNC10LzRjyDQttC40LfQvdC4IGNhY2hlZEl0ZW0g0YDQsNCy0L3QvtC1LCDQv9C+0YLQvtC80YMg0YfRgtC+INC90LDQvCDQvdC1INCy0LDQttC90L4g0LLRgNC10LzRjyDQttC40LfQvdC4LiDQndCw0Lwg0L3Rg9C20LXQvSDRhNGD0L3QutGG0LjQvtC90LDQuyB1cGRhdGUoKS5cbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtPFNjUHJvZHVjdFtdLCBudWxsPihcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgICAgICAuZ2V0PFNjSVByb2R1Y3RbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vY2F0YWxvZy9jYXRlZ29yaWVzLyR7Y2F0ZWdvcnlJZE9yU2x1Z30vcmVjb21tZW5kYXRpb25zYCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogU0NfSVNfSElEREVOX0VSUk9SX0FMRVJUX0hUVFBfQ09OVEVYVCxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHByb2R1Y3RzRFRPKSA9PiBwcm9kdWN0c0RUTy5tYXAoKHByb2R1Y3QpID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdCkpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aDxTY1Byb2R1Y3RbXSB8IG51bGw+KG51bGwpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5wcm9kdWN0c0J5Q2F0ZWdvcnlNYXAuc2V0KGNhdGVnb3J5SWRPclNsdWcudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0YHQv9C40YHQutCwINGA0LXQutC+0LzQtdC90LTQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQtNC70Y8g0L/RgNC+0LTRg9C60YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRPclNsdWcg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LjQu9C4IHNsdWcg0YLQvtCy0LDRgNCwL9GD0YHQu9GD0LPQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHNCeVByb2R1Y3QkKHByb2R1Y3RJZE9yU2x1ZzogbnVtYmVyIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxTY1Byb2R1Y3RbXSB8IG51bGw+IHtcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLnByb2R1Y3RzQnlQcm9kdWN0TWFwLmdldChwcm9kdWN0SWRPclNsdWcudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQstGA0LXQvNGPINC20LjQt9C90LggY2FjaGVkSXRlbSDRgNCw0LLQvdC+0LUsINC/0L7RgtC+0LzRgyDRh9GC0L4g0L3QsNC8INC90LUg0LLQsNC20L3QviDQstGA0LXQvNGPINC20LjQt9C90LguINCd0LDQvCDQvdGD0LbQtdC9INGE0YPQvdC60YbQuNC+0L3QsNC7IHVwZGF0ZSgpLlxuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW08U2NQcm9kdWN0W10+KFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgIC5nZXQ8U2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzLyR7cHJvZHVjdElkT3JTbHVnfS9yZWNvbW1lbmRhdGlvbnNgLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhULFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocHJvZHVjdHNEVE8pID0+IHByb2R1Y3RzRFRPLm1hcCgocHJvZHVjdCkgPT4gbmV3IFNjUHJvZHVjdChwcm9kdWN0KSkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoPFNjUHJvZHVjdFtdIHwgbnVsbD4obnVsbCkpLFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RzQnlQcm9kdWN0TWFwLnNldChwcm9kdWN0SWRPclNsdWcudG9TdHJpbmcoKSwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0YHQv9C40YHQutCwINGA0LXQutC+0LzQtdC90LTQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQtNC70Y8g0YHQv9C40YHQutCwINC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QsiDRgtC+0LLQsNGA0L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0SWRzINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0Ysg0L/RgNC+0LTRg9C60YLQvtCyLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQcm9kdWN0c0J5UHJvZHVjdElkcyQocHJvZHVjdElkczogbnVtYmVyW10pOiBPYnNlcnZhYmxlPFNjUHJvZHVjdFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8U2NJUHJvZHVjdFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS9jYXRhbG9nL3Byb2R1Y3RzL3JlY29tbWVuZGF0aW9uc2AsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHRoaXMuY29udmVydGVyc1NlcnZpY2UudG9IdHRwUGFyYW1zKHsgcHJvZHVjdHM6IHByb2R1Y3RJZHMgfSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBTQ19JU19ISURERU5fRVJST1JfQUxFUlRfSFRUUF9DT05URVhULFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSxcbiAgICAgICAgICAgICAgICBtYXAoKHByb2R1Y3RzRFRPKSA9PiBwcm9kdWN0c0RUTy5tYXAoKHByb2R1Y3QpID0+IG5ldyBTY1Byb2R1Y3QocHJvZHVjdCkpKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0LXRgiDQt9Cw0L/RgNC+0YEg0L3QsCDQv9C+0LvRg9GH0LXQvdC40LUg0YHQv9C40YHQutCwINGA0LXQutC+0LzQtdC90LTQvtCy0LDQvdC90YvRhSDRgtC+0LLQsNGA0L7QsiDQtNC70Y8g0LrQvtGA0LfQuNC90Ysg0LrQu9C40LXQvdGC0LAuXG4gICAgICovXG4gICAgQHR1aVB1cmVcbiAgICBwdWJsaWMgZ2V0UHJvZHVjdHNCeUNhcnQkKCk6IE9ic2VydmFibGU8U2NQcm9kdWN0W10gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcnRTZXJ2aWNlLmdldCQoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChjYXJ0KTogbnVtYmVyW10gPT4gKGNhcnQgIT09IGxvYWRpbmdQbGFjZWhvbGRlciAmJiAnaXRlbXMnIGluIGNhcnQgPyBjYXJ0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5wcm9kdWN0LmlkKSA6IFtdKSksXG4gICAgICAgICAgICAvLyDQntGC0YTQuNC70YzRgtGA0L7QstGL0LLQsNC10Lwg0L/QvtCy0YLQvtGA0LXQvdC40Y8uINCe0L3QuCDQstC+0LfQvdC40LrQvdGD0YIg0LXRgdC70Lgg0LHRi9C70L4g0LjQt9C80LXQvdC10L3QviDQutC+0LvQuNGH0LXRgdGC0LLQviDRgtC+0LLQsNGA0LAg0LHQtdC3INGD0LTQsNC70LXQvdC40Y9cXNC00L7QsdCw0LLQu9C10L3QuNGPINC90L7QstGL0YUg0YLQvtCy0LDRgNC+0LIuXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1taXNsZWFkaW5nLWFycmF5LXJldmVyc2VcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgIChwcmV2aW91czogbnVtYmVyW10sIGN1cnJlbnQ6IG51bWJlcltdKSA9PlxuICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShbLi4ucHJldmlvdXNdLnNvcnQoKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiBhIC0gYikpID09PSBKU09OLnN0cmluZ2lmeShbLi4uY3VycmVudF0uc29ydCgoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IGEgLSBiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHByb2R1Y3RJZHMpID0+IHRoaXMuZ2V0UHJvZHVjdHNCeVByb2R1Y3RJZHMkKHByb2R1Y3RJZHMpLnBpcGUoc3RhcnRXaXRoKG51bGwpKSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -93,7 +93,7 @@ export class ScContragentService {
93
93
  let cachedItem = this.contactsService.contragentContactsMap.get(contragentId);
94
94
  if (!cachedItem) {
95
95
  // Устанавливаем время жизни cachedItem равное, потому что нам не важно время жизни. Нам нужен функционал update() в будущем.
96
- cachedItem = new ScCachedItem(0, this.http.get(`${this.urls.apiUrl}/user/contragents/${contragentId}/contacts`));
96
+ cachedItem = new ScCachedItem(0, this.http.get(`${this.urls.apiUrl}/user/contragents/${contragentId}/contacts`).pipe(startWith(null)), null);
97
97
  this.contactsService.contragentContactsMap.set(contragentId, cachedItem);
98
98
  }
99
99
  return cachedItem.item$;
@@ -126,7 +126,7 @@ export class ScContragentService {
126
126
  let cachedItem = this.contragentBankAccountsMap.get(contragentId);
127
127
  if (!cachedItem) {
128
128
  // Устанавливаем время жизни cachedItem равное, потому что нам не важно время жизни. Нам нужен функционал update().
129
- cachedItem = new ScCachedItem(0, this.http.get(`${this.urls.apiUrl}/user/contragents/${contragentId}/bank-accounts`));
129
+ cachedItem = new ScCachedItem(0, this.http.get(`${this.urls.apiUrl}/user/contragents/${contragentId}/bank-accounts`).pipe(startWith(null)), null);
130
130
  this.contragentBankAccountsMap.set(contragentId, cachedItem);
131
131
  }
132
132
  return cachedItem.item$;
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
163
163
  providedIn: 'root',
164
164
  }]
165
165
  }], ctorParameters: () => [] });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udHJhZ2VudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb250cmFnZW50L3NlcnZpY2VzL3NjLWNvbnRyYWdlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFJM0Y7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBNkM1Qjs7O09BR0c7SUFDSDtRQWhEQTs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsVUFBSyxHQUF1QixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYyx1QkFBa0IsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7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SSxDQUFDLE1BQU0scUJBQXFCLFlBQVksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLDRCQUE0QixDQUFDLFlBQW9CLEVBQUUsY0FBMEM7UUFDaEcsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNYLElBQUksQ0FBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0scUJBQXFCLFlBQVksZ0JBQWdCLEVBQUUsY0FBYyxDQUFDO2FBQzFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksNEJBQTRCLENBQUMsWUFBb0IsRUFBRSxhQUFxQjtRQUMzRSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsTUFBTSxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLHFCQUFxQixZQUFZLGtCQUFrQixhQUFhLEVBQUUsQ0FBQzthQUN4RyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7K0dBNUtRLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzRGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQ2FjaGVkSXRlbSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvY2xhc3Nlcy9zYy1jYWNoZWQtaXRlbSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTY0NvbnRhY3RzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRhY3RzL3NlcnZpY2VzL3NjLWNvbnRhY3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjSUNvbnRhY3QgfSBmcm9tICcuLi8uLi91c2VyL2R0by9zYy1pLWNvbnRhY3QnO1xuaW1wb3J0IHsgU2NJQ29udGFjdE9uRGF0YUNyZWF0ZSB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLWktY29udGFjdC1vbi1kYXRhLWNyZWF0ZSc7XG5pbXBvcnQgeyBTY0lDb250YWN0V2l0aFJlbGF0aW9ucyB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLWktY29udGFjdC13aXRoLXJlbGF0aW9ucyc7XG5pbXBvcnQgeyBTY1VzZXIgfSBmcm9tICcuLi8uLi91c2VyL2R0by9zYy11c2VyJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0gfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2EvZW51bXMvc2MtdXNlci1tZXRyaWthLWdvYWxzLWVudW0nO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2Evc2VydmljZXMvc2MtdXNlci1tZXRyaWthLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NDb250cmFnZW50LCBTY0NvbnRyYWdlbnRPbkRhdGFDcmVhdGUsIFNjSUJhbmtBY2NvdW50T25EYXRhQ3JlYXRlIH0gZnJvbSAnLi4vZHRvJztcbmltcG9ydCB7IFNjSUJhbmtBY2NvdW50IH0gZnJvbSAnLi4vZHRvL3NjLWktYmFuay1hY2NvdW50JztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0YDQsNCz0LXQvdGC0LDQvNC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NvbnRyYWdlbnRTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPiA9IGluamVjdChTQ19VU0VSX0lORk8pO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0LDQutGC0L3Ri9C80Lgg0LvQuNGG0LDQvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFjdHNTZXJ2aWNlOiBTY0NvbnRhY3RzU2VydmljZSA9IGluamVjdChTY0NvbnRhY3RzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQvtCx0L3QvtCy0LvQtdC90LjRjyDQutC+0L3RgtGA0LDQs9C10L3RgtC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cmFnZW50c1VwZGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBNYXB9INC60L7Qu9C70LXQutGG0LjRjyDQv9Cw0YAg0LrQu9GO0Yct0LfQvdCw0YfQtdC90LjQtSDRgSDQtNCw0L3QvdGL0LzQuCDQviDQsdCw0L3QutC+0LLRgdC60LjRhSDRgdGH0LXRgtCw0YUg0LrQvtC90YLRgNCw0LPQtdC90YLQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udHJhZ2VudEJhbmtBY2NvdW50c01hcDogTWFwPG51bWJlciwgU2NDYWNoZWRJdGVtPFNjSUJhbmtBY2NvdW50W10+PiA9IG5ldyBNYXA8bnVtYmVyLCBTY0NhY2hlZEl0ZW08U2NJQmFua0FjY291bnRbXT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LDRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyYWdlbnRzJDogT2JzZXJ2YWJsZTxTY0NvbnRyYWdlbnRbXSB8IG51bGw+ID0gdGhpcy5jb250cmFnZW50c1VwZGF0ZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlciQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXIpID0+ICh1c2VyLmlzR3Vlc3QgPyBvZihudWxsKSA6IHRoaXMuaHR0cC5nZXQ8U2NDb250cmFnZW50W10+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvY29udHJhZ2VudHNgKS5waXBlKHN0YXJ0V2l0aChudWxsKSkpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NvbnRyYWdlbnRTZXJ2aWNlfS5cbiAgICAgKlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51c2VyJC5waXBlKGZpbHRlcigodXNlcikgPT4gdXNlci5pc0d1ZXN0KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29udGFjdHNTZXJ2aWNlLmNvbnRyYWdlbnRDb250YWN0c01hcC5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5jb250cmFnZW50QmFua0FjY291bnRzTWFwLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0LPQviDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld0NvbnRyYWdlbnQg0JTQsNC90L3Ri9C1INC90L7QstC+0LPQviDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVDb250cmFnZW50JChuZXdDb250cmFnZW50OiBTY0NvbnRyYWdlbnRPbkRhdGFDcmVhdGUpOiBPYnNlcnZhYmxlPFNjQ29udHJhZ2VudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NDb250cmFnZW50PihgJHt0aGlzLnVybHMuYXBpVXJsfS91c2VyL2NvbnRyYWdlbnRzYCwgbmV3Q29udHJhZ2VudCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0udXNlclByb2ZpbGVDb250cmFnZW50QWRkZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cmFnZW50c1VwZGF0ZSQubmV4dCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L3QsCDRg9C00LDQu9C10L3QuNC1INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJhZ2VudElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0YDQsNCz0LXQvdGC0LAsINC60L7RgtC+0YDQvtCz0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0YPQtNCw0LvQuNGC0YwuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUNvbnRyYWdlbnQkKGNvbnRyYWdlbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS91c2VyL2NvbnRyYWdlbnRzLyR7Y29udHJhZ2VudElkfWApLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnVzZXJQcm9maWxlQ29udHJhZ2VudERlbGV0ZWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyBjb250cmFnZW50X2lkOiBjb250cmFnZW50SWQgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyYWdlbnRzVXBkYXRlJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cmFnZW50QmFua0FjY291bnRzTWFwLmRlbGV0ZShjb250cmFnZW50SWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDQutC+0L3RgtCw0LrRgtC90YvRhSDQu9C40YYg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udHJhZ2VudENvbnRhY3RzJChjb250cmFnZW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8U2NJQ29udGFjdFtdIHwgbnVsbD4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMuY29udGFjdHNTZXJ2aWNlLmNvbnRyYWdlbnRDb250YWN0c01hcC5nZXQoY29udHJhZ2VudElkKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIC8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INCy0YDQtdC80Y8g0LbQuNC30L3QuCBjYWNoZWRJdGVtINGA0LDQstC90L7QtSwg0L/QvtGC0L7QvNGDINGH0YLQviDQvdCw0Lwg0L3QtSDQstCw0LbQvdC+INCy0YDQtdC80Y8g0LbQuNC30L3QuC4g0J3QsNC8INC90YPQttC10L0g0YTRg9C90LrRhtC40L7QvdCw0LsgdXBkYXRlKCkg0LIg0LHRg9C00YPRidC10LwuXG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbSgwLCB0aGlzLmh0dHAuZ2V0PFNjSUNvbnRhY3RbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9jb250cmFnZW50cy8ke2NvbnRyYWdlbnRJZH0vY29udGFjdHNgKSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhY3RzU2VydmljZS5jb250cmFnZW50Q29udGFjdHNNYXAuc2V0KGNvbnRyYWdlbnRJZCwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0YMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJhZ2VudElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICogQHBhcmFtIG5ld0NvbnRhY3Qg0JTQsNC90L3Ri9C1INGC0YDQtdCx0YPQtdC80YvQtSDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqIEByZXR1cm5zINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0LfQtNCw0L3QvdC+0LPQviDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVDb250cmFnZW50Q29udGFjdCQoY29udHJhZ2VudElkOiBudW1iZXIsIG5ld0NvbnRhY3Q6IFNjSUNvbnRhY3RPbkRhdGFDcmVhdGUpOiBPYnNlcnZhYmxlPFNjSUNvbnRhY3RXaXRoUmVsYXRpb25zPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhY3RzU2VydmljZS5jcmVhdGVDb250YWN0JCh7IC4uLm5ld0NvbnRhY3QsIGNvbnRyYWdlbnRzOiBbeyBpZDogY29udHJhZ2VudElkIH1dIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDRg9C00LDQu9C10L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gY29udGFjdElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUNvbnRyYWdlbnRDb250YWN0JChjb250cmFnZW50SWQ6IG51bWJlciwgY29udGFjdElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWN0c1NlcnZpY2UuZGVsZXRlQ29udGFjdCQoY29udGFjdElkKS5waXBlKHRhcCgoKSA9PiB0aGlzLmNvbnRhY3RzU2VydmljZS5jb250cmFnZW50Q29udGFjdHNNYXAuZ2V0KGNvbnRyYWdlbnRJZCk/LnVwZGF0ZSgpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LHQsNC90LrQvtCy0YHQutC40YUg0YHRh9C10YLQvtCyINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJhZ2VudElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbnRyYWdlbnRCYW5rQWNjb3VudHMkKGNvbnRyYWdlbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0lCYW5rQWNjb3VudFtdIHwgbnVsbD4ge1xuICAgICAgICBsZXQgY2FjaGVkSXRlbSA9IHRoaXMuY29udHJhZ2VudEJhbmtBY2NvdW50c01hcC5nZXQoY29udHJhZ2VudElkKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIC8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INCy0YDQtdC80Y8g0LbQuNC30L3QuCBjYWNoZWRJdGVtINGA0LDQstC90L7QtSwg0L/QvtGC0L7QvNGDINGH0YLQviDQvdCw0Lwg0L3QtSDQstCw0LbQvdC+INCy0YDQtdC80Y8g0LbQuNC30L3QuC4g0J3QsNC8INC90YPQttC10L0g0YTRg9C90LrRhtC40L7QvdCw0LsgdXBkYXRlKCkuXG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbSgwLCB0aGlzLmh0dHAuZ2V0PFNjSUJhbmtBY2NvdW50W10+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvY29udHJhZ2VudHMvJHtjb250cmFnZW50SWR9L2JhbmstYWNjb3VudHNgKSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyYWdlbnRCYW5rQWNjb3VudHNNYXAuc2V0KGNvbnRyYWdlbnRJZCwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0YHQvtC30LTQsNC90LjRjyDQsdCw0L3QutC+0LLRgdC60L7Qs9C+INGB0YfRkdGC0LAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gbmV3QmFua0FjY291bnQg0JTQsNC90L3Ri9C1INGC0YDQtdCx0YPQtdC80YvQtSDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQsdCw0L3QutC+0LLRgdC60L7Qs9C+INGB0YfQtdGC0LAuXG4gICAgICogQHJldHVybnMg0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7Qt9C00LDQvdC90L7Qs9C+INGB0YfRkdGC0LAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlQ29udHJhZ2VudEJhbmtBY2NvdW50JChjb250cmFnZW50SWQ6IG51bWJlciwgbmV3QmFua0FjY291bnQ6IFNjSUJhbmtBY2NvdW50T25EYXRhQ3JlYXRlKTogT2JzZXJ2YWJsZTxTY0lCYW5rQWNjb3VudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdDxTY0lCYW5rQWNjb3VudD4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9jb250cmFnZW50cy8ke2NvbnRyYWdlbnRJZH0vYmFuay1hY2NvdW50c2AsIG5ld0JhbmtBY2NvdW50KVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuY29udHJhZ2VudEJhbmtBY2NvdW50c01hcC5nZXQoY29udHJhZ2VudElkKT8udXBkYXRlKCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0YPQtNCw0LvQtdC90LjRjyDQsdCw0L3QutC+0LLRgdC60L7Qs9C+INGB0YfQtdGC0LAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gYmFua0FjY291bnRJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQsdCw0L3QutC+0LLRgdC60L7Qs9C+INGB0YfQtdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUNvbnRyYWdlbnRCYW5rQWNjb3VudCQoY29udHJhZ2VudElkOiBudW1iZXIsIGJhbmtBY2NvdW50SWQ6IG51bWJlcik6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5kZWxldGU8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS91c2VyL2NvbnRyYWdlbnRzLyR7Y29udHJhZ2VudElkfS9iYW5rLWFjY291bnRzLyR7YmFua0FjY291bnRJZH1gKVxuICAgICAgICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuY29udHJhZ2VudEJhbmtBY2NvdW50c01hcC5nZXQoY29udHJhZ2VudElkKT8udXBkYXRlKCkpKTtcbiAgICB9XG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udHJhZ2VudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb250cmFnZW50L3NlcnZpY2VzL3NjLWNvbnRyYWdlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFJM0Y7O0dBRUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBNkM1Qjs7O09BR0c7SUFDSDtRQWhEQTs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsVUFBSyxHQUF1QixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYyx1QkFBa0IsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFekY7O1dBRUc7UUFDYyxvQkFBZSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVoRjs7V0FFRztRQUNjLHVCQUFrQixHQUEwQixJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUVsRzs7V0FFRztRQUNjLDhCQUF5QixHQUFnRCxJQUFJLEdBQUcsRUFBMEMsQ0FBQztRQUU1STs7V0FFRztRQUNhLGlCQUFZLEdBQXNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzFGLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzNCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzVJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztRQU9FLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUMzRCxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsYUFBdUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxtQkFBbUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQywwQkFBMEI7YUFDNUQsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxZQUFvQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLHFCQUFxQixZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLDRCQUE0QjtnQkFDM0QsTUFBTSxFQUFFLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRTthQUMxQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksc0JBQXNCLENBQUMsWUFBb0I7UUFDOUMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2QsNkhBQTZIO1lBQzdILFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FDekIsQ0FBQyxFQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLHFCQUFxQixZQUFZLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQXNCLElBQUksQ0FBQyxDQUFDLEVBQ3ZJLElBQUksQ0FDUCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLHdCQUF3QixDQUFDLFlBQW9CLEVBQUUsVUFBa0M7UUFDcEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHdCQUF3QixDQUFDLFlBQW9CLEVBQUUsU0FBaUI7UUFDbkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLDBCQUEwQixDQUFDLFlBQW9CO1FBQ2xELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2QsbUhBQW1IO1lBQ25ILFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FDekIsQ0FBQyxFQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxxQkFBcUIsWUFBWSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQTBCLElBQUksQ0FBQyxDQUFDLEVBQ3BKLElBQUksQ0FDUCxDQUFDO1lBQ0YsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksNEJBQTRCLENBQUMsWUFBb0IsRUFBRSxjQUEwQztRQUNoRyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsSUFBSSxDQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxxQkFBcUIsWUFBWSxnQkFBZ0IsRUFBRSxjQUFjLENBQUM7YUFDMUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSw0QkFBNEIsQ0FBQyxZQUFvQixFQUFFLGFBQXFCO1FBQzNFLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxNQUFNLENBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0scUJBQXFCLFlBQVksa0JBQWtCLGFBQWEsRUFBRSxDQUFDO2FBQ3hHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQzsrR0FwTFEsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGaEIsTUFBTTs7NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jbGFzc2VzL3NjLWNhY2hlZC1pdGVtJztcbmltcG9ydCB7IFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS11cmxzJztcbmltcG9ydCB7IFNjQ29udGFjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udGFjdHMvc2VydmljZXMvc2MtY29udGFjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLXVybHMnO1xuaW1wb3J0IHsgU2NJQ29udGFjdCB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLWktY29udGFjdCc7XG5pbXBvcnQgeyBTY0lDb250YWN0T25EYXRhQ3JlYXRlIH0gZnJvbSAnLi4vLi4vdXNlci9kdG8vc2MtaS1jb250YWN0LW9uLWRhdGEtY3JlYXRlJztcbmltcG9ydCB7IFNjSUNvbnRhY3RXaXRoUmVsYXRpb25zIH0gZnJvbSAnLi4vLi4vdXNlci9kdG8vc2MtaS1jb250YWN0LXdpdGgtcmVsYXRpb25zJztcbmltcG9ydCB7IFNjVXNlciB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLXVzZXInO1xuaW1wb3J0IHsgU0NfVVNFUl9JTkZPIH0gZnJvbSAnLi4vLi4vdXNlci90b2tlbnMvc2MtdXNlci1wcm92aWRlcnMnO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYUdvYWxzRW51bSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYS9lbnVtcy9zYy11c2VyLW1ldHJpa2EtZ29hbHMtZW51bSc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXItbWV0cmlrYS9zZXJ2aWNlcy9zYy11c2VyLW1ldHJpa2Euc2VydmljZSc7XG5pbXBvcnQgeyBTY0NvbnRyYWdlbnQsIFNjQ29udHJhZ2VudE9uRGF0YUNyZWF0ZSwgU2NJQmFua0FjY291bnRPbkRhdGFDcmVhdGUgfSBmcm9tICcuLi9kdG8nO1xuaW1wb3J0IHsgU2NJQmFua0FjY291bnQgfSBmcm9tICcuLi9kdG8vc2MtaS1iYW5rLWFjY291bnQnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LrQvtC90YLRgNCw0LPQtdC90YLQsNC80LguXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29udHJhZ2VudFNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNDX1VTRVJfSU5GTyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtC90YLQsNC60YLQvdGL0LzQuCDQu9C40YbQsNC80LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250YWN0c1NlcnZpY2U6IFNjQ29udGFjdHNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udGFjdHNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBCZWhhdmlvclN1YmplY3R9INC+0LHQvdC+0LLQu9C10L3QuNGPINC60L7QvdGC0YDQsNCz0LXQvdGC0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyYWdlbnRzVXBkYXRlJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE1hcH0g0LrQvtC70LvQtdC60YbQuNGPINC/0LDRgCDQutC70Y7Rhy3Qt9C90LDRh9C10L3QuNC1INGBINC00LDQvdC90YvQvNC4INC+INCx0LDQvdC60L7QstGB0LrQuNGFINGB0YfQtdGC0LDRhSDQutC+0L3RgtGA0LDQs9C10L3RgtC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250cmFnZW50QmFua0FjY291bnRzTWFwOiBNYXA8bnVtYmVyLCBTY0NhY2hlZEl0ZW08U2NJQmFua0FjY291bnRbXT4+ID0gbmV3IE1hcDxudW1iZXIsIFNjQ2FjaGVkSXRlbTxTY0lCYW5rQWNjb3VudFtdPj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsNGFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJhZ2VudHMkOiBPYnNlcnZhYmxlPFNjQ29udHJhZ2VudFtdIHwgbnVsbD4gPSB0aGlzLmNvbnRyYWdlbnRzVXBkYXRlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyJCksXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcikgPT4gKHVzZXIuaXNHdWVzdCA/IG9mKG51bGwpIDogdGhpcy5odHRwLmdldDxTY0NvbnRyYWdlbnRbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9jb250cmFnZW50c2ApLnBpcGUoc3RhcnRXaXRoKG51bGwpKSkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjQ29udHJhZ2VudFNlcnZpY2V9LlxuICAgICAqXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVzZXIkLnBpcGUoZmlsdGVyKCh1c2VyKSA9PiB1c2VyLmlzR3Vlc3QpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb250YWN0c1NlcnZpY2UuY29udHJhZ2VudENvbnRhY3RzTWFwLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyYWdlbnRCYW5rQWNjb3VudHNNYXAuY2xlYXIoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7Qs9C+INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3Q29udHJhZ2VudCDQlNCw0L3QvdGL0LUg0L3QvtCy0L7Qs9C+INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUNvbnRyYWdlbnQkKG5ld0NvbnRyYWdlbnQ6IFNjQ29udHJhZ2VudE9uRGF0YUNyZWF0ZSk6IE9ic2VydmFibGU8U2NDb250cmFnZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTY0NvbnRyYWdlbnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvY29udHJhZ2VudHNgLCBuZXdDb250cmFnZW50KS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS51c2VyUHJvZmlsZUNvbnRyYWdlbnRBZGRlZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyYWdlbnRzVXBkYXRlJC5uZXh0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdCwINGD0LTQsNC70LXQvdC40LUg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsCwg0LrQvtGC0L7RgNC+0LPQviDQvdC10L7QsdGF0L7QtNC40LzQviDRg9C00LDQu9C40YLRjC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlQ29udHJhZ2VudCQoY29udHJhZ2VudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvY29udHJhZ2VudHMvJHtjb250cmFnZW50SWR9YCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0udXNlclByb2ZpbGVDb250cmFnZW50RGVsZXRlZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGNvbnRyYWdlbnRfaWQ6IGNvbnRyYWdlbnRJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJhZ2VudHNVcGRhdGUkLm5leHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyYWdlbnRCYW5rQWNjb3VudHNNYXAuZGVsZXRlKGNvbnRyYWdlbnRJZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC60L7QvdGC0LDQutGC0L3Ri9GFINC70LjRhiDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyYWdlbnRJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb250cmFnZW50Q29udGFjdHMkKGNvbnRyYWdlbnRJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0lDb250YWN0W10gfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5jb250YWN0c1NlcnZpY2UuY29udHJhZ2VudENvbnRhY3RzTWFwLmdldChjb250cmFnZW50SWQpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgLy8g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LLRgNC10LzRjyDQttC40LfQvdC4IGNhY2hlZEl0ZW0g0YDQsNCy0L3QvtC1LCDQv9C+0YLQvtC80YMg0YfRgtC+INC90LDQvCDQvdC1INCy0LDQttC90L4g0LLRgNC10LzRjyDQttC40LfQvdC4LiDQndCw0Lwg0L3Rg9C20LXQvSDRhNGD0L3QutGG0LjQvtC90LDQuyB1cGRhdGUoKSDQsiDQsdGD0LTRg9GJ0LXQvC5cbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtPFNjSUNvbnRhY3RbXSwgbnVsbD4oXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHAuZ2V0PFNjSUNvbnRhY3RbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9jb250cmFnZW50cy8ke2NvbnRyYWdlbnRJZH0vY29udGFjdHNgKS5waXBlKHN0YXJ0V2l0aDxTY0lDb250YWN0W10gfCBudWxsPihudWxsKSksXG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY29udGFjdHNTZXJ2aWNlLmNvbnRyYWdlbnRDb250YWN0c01hcC5zZXQoY29udHJhZ2VudElkLCBjYWNoZWRJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjYWNoZWRJdGVtLml0ZW0kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDRgdC+0LfQtNCw0L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0LrQvtC90YLRgNCw0LPQtdC90YLRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKiBAcGFyYW0gbmV3Q29udGFjdCDQlNCw0L3QvdGL0LUg0YLRgNC10LHRg9C10LzRi9C1INC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICogQHJldHVybnMg0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7Qt9C00LDQvdC90L7Qs9C+INC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUNvbnRyYWdlbnRDb250YWN0JChjb250cmFnZW50SWQ6IG51bWJlciwgbmV3Q29udGFjdDogU2NJQ29udGFjdE9uRGF0YUNyZWF0ZSk6IE9ic2VydmFibGU8U2NJQ29udGFjdFdpdGhSZWxhdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFjdHNTZXJ2aWNlLmNyZWF0ZUNvbnRhY3QkKHsgLi4ubmV3Q29udGFjdCwgY29udHJhZ2VudHM6IFt7IGlkOiBjb250cmFnZW50SWQgfV0gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsCDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbnRyYWdlbnRJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqIEBwYXJhbSBjb250YWN0SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlQ29udHJhZ2VudENvbnRhY3QkKGNvbnRyYWdlbnRJZDogbnVtYmVyLCBjb250YWN0SWQ6IG51bWJlcik6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhY3RzU2VydmljZS5kZWxldGVDb250YWN0JChjb250YWN0SWQpLnBpcGUodGFwKCgpID0+IHRoaXMuY29udGFjdHNTZXJ2aWNlLmNvbnRyYWdlbnRDb250YWN0c01hcC5nZXQoY29udHJhZ2VudElkKT8udXBkYXRlKCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDQsdCw0L3QutC+0LLRgdC60LjRhSDRgdGH0LXRgtC+0LIg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cmFnZW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29udHJhZ2VudEJhbmtBY2NvdW50cyQoY29udHJhZ2VudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUJhbmtBY2NvdW50W10gfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5jb250cmFnZW50QmFua0FjY291bnRzTWFwLmdldChjb250cmFnZW50SWQpO1xuXG4gICAgICAgIGlmICghY2FjaGVkSXRlbSkge1xuICAgICAgICAgICAgLy8g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LLRgNC10LzRjyDQttC40LfQvdC4IGNhY2hlZEl0ZW0g0YDQsNCy0L3QvtC1LCDQv9C+0YLQvtC80YMg0YfRgtC+INC90LDQvCDQvdC1INCy0LDQttC90L4g0LLRgNC10LzRjyDQttC40LfQvdC4LiDQndCw0Lwg0L3Rg9C20LXQvSDRhNGD0L3QutGG0LjQvtC90LDQuyB1cGRhdGUoKS5cbiAgICAgICAgICAgIGNhY2hlZEl0ZW0gPSBuZXcgU2NDYWNoZWRJdGVtPFNjSUJhbmtBY2NvdW50W10sIG51bGw+KFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwLmdldDxTY0lCYW5rQWNjb3VudFtdPihgJHt0aGlzLnVybHMuYXBpVXJsfS91c2VyL2NvbnRyYWdlbnRzLyR7Y29udHJhZ2VudElkfS9iYW5rLWFjY291bnRzYCkucGlwZShzdGFydFdpdGg8U2NJQmFua0FjY291bnRbXSB8IG51bGw+KG51bGwpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jb250cmFnZW50QmFua0FjY291bnRzTWFwLnNldChjb250cmFnZW50SWQsIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGB0L7Qt9C00LDQvdC40Y8g0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0ZHRgtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJhZ2VudElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICogQHBhcmFtIG5ld0JhbmtBY2NvdW50INCU0LDQvdC90YvQtSDRgtGA0LXQsdGD0LXQvNGL0LUg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0LXRgtCwLlxuICAgICAqIEByZXR1cm5zINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0LfQtNCw0L3QvdC+0LPQviDRgdGH0ZHRgtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUNvbnRyYWdlbnRCYW5rQWNjb3VudCQoY29udHJhZ2VudElkOiBudW1iZXIsIG5ld0JhbmtBY2NvdW50OiBTY0lCYW5rQWNjb3VudE9uRGF0YUNyZWF0ZSk6IE9ic2VydmFibGU8U2NJQmFua0FjY291bnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3Q8U2NJQmFua0FjY291bnQ+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvY29udHJhZ2VudHMvJHtjb250cmFnZW50SWR9L2JhbmstYWNjb3VudHNgLCBuZXdCYW5rQWNjb3VudClcbiAgICAgICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLmNvbnRyYWdlbnRCYW5rQWNjb3VudHNNYXAuZ2V0KGNvbnRyYWdlbnRJZCk/LnVwZGF0ZSgpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGD0LTQsNC70LXQvdC40Y8g0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0LXRgtCwINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udHJhZ2VudElkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICogQHBhcmFtIGJhbmtBY2NvdW50SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LHQsNC90LrQvtCy0YHQutC+0LPQviDRgdGH0LXRgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVDb250cmFnZW50QmFua0FjY291bnQkKGNvbnRyYWdlbnRJZDogbnVtYmVyLCBiYW5rQWNjb3VudElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZGVsZXRlPHVuZGVmaW5lZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9jb250cmFnZW50cy8ke2NvbnRyYWdlbnRJZH0vYmFuay1hY2NvdW50cy8ke2JhbmtBY2NvdW50SWR9YClcbiAgICAgICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLmNvbnRyYWdlbnRCYW5rQWNjb3VudHNNYXAuZ2V0KGNvbnRyYWdlbnRJZCk/LnVwZGF0ZSgpKSk7XG4gICAgfVxufVxuIl19
@@ -82,7 +82,9 @@ export class ScDeliveryAddressService {
82
82
  let cachedItem = this.contactsService.deliveryAddressContactsMap.get(addressId);
83
83
  if (!cachedItem) {
84
84
  // Устанавливаем время жизни cachedItem равное, потому что нам не важно время жизни. Нам нужен функционал update().
85
- cachedItem = new ScCachedItem(0, this.http.get(`${this.urls.apiUrl}/user/delivery-addresses/${addressId}/contacts`));
85
+ cachedItem = new ScCachedItem(0, this.http
86
+ .get(`${this.urls.apiUrl}/user/delivery-addresses/${addressId}/contacts`)
87
+ .pipe(startWith(null)), null);
86
88
  this.contactsService.deliveryAddressContactsMap.set(addressId, cachedItem);
87
89
  }
88
90
  return cachedItem.item$;
@@ -115,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
115
117
  providedIn: 'root',
116
118
  }]
117
119
  }] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVsaXZlcnktYWRkcmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kZWxpdmVyeS1hZGRyZXNzL3NlcnZpY2VzL3NjLWRlbGl2ZXJ5LWFkZHJlc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOztBQUczRjs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFJSTs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsVUFBSyxHQUF1QixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYyx1QkFBa0IsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFekY7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LDZCQUE2QixDQUFDLFNBQWlCLEVBQUUsVUFBa0M7UUFDdEYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLDZCQUE2QixDQUFDLFNBQWlCLEVBQUUsU0FBaUI7UUFDckUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwSixDQUFDOytHQW5IUSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZyQixNQUFNOzs0RkFFVCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NDYWNoZWRJdGVtIH0gZnJvbSAnLi4vLi4vY2F0YWxvZy9jbGFzc2VzL3NjLWNhY2hlZC1pdGVtJztcbmltcG9ydCB7IFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS11cmxzJztcbmltcG9ydCB7IFNjQ29udGFjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29udGFjdHMvc2VydmljZXMvc2MtY29udGFjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBTQ19VUkxTIH0gZnJvbSAnLi4vLi4vdG9rZW5zL3NjLXVybHMnO1xuaW1wb3J0IHsgU2NJQ29udGFjdE9uRGF0YUNyZWF0ZSB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLWktY29udGFjdC1vbi1kYXRhLWNyZWF0ZSc7XG5pbXBvcnQgeyBTY0lDb250YWN0V2l0aFJlbGF0aW9ucyB9IGZyb20gJy4uLy4uL3VzZXIvZHRvL3NjLWktY29udGFjdC13aXRoLXJlbGF0aW9ucyc7XG5pbXBvcnQgeyBTY1VzZXIgfSBmcm9tICcuLi8uLi91c2VyL2R0by9zYy11c2VyJztcbmltcG9ydCB7IFNDX1VTRVJfSU5GTyB9IGZyb20gJy4uLy4uL3VzZXIvdG9rZW5zL3NjLXVzZXItcHJvdmlkZXJzJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0gfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2EvZW51bXMvc2MtdXNlci1tZXRyaWthLWdvYWxzLWVudW0nO1xuaW1wb3J0IHsgU2NVc2VyTWV0cmlrYVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLW1ldHJpa2Evc2VydmljZXMvc2MtdXNlci1tZXRyaWthLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NJRGVsaXZlcnlBZGRyZXNzLCBTY0lEZWxpdmVyeUFkZHJlc3NPbkRhdGFDcmVhdGUgfSBmcm9tICcuLi9kdG8nO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEg0LDQtNGA0LXRgdCw0LzQuCDQtNC+0YHRgtCw0LLQutC4LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY0RlbGl2ZXJ5QWRkcmVzc1NlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviDRgtC10LrRg9GJ0LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNDX1VTRVJfSU5GTyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UgPSBpbmplY3QoU2NVc2VyTWV0cmlrYVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtC90YLQsNC60YLQvdGL0LzQuCDQu9C40YbQsNC80LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250YWN0c1NlcnZpY2U6IFNjQ29udGFjdHNTZXJ2aWNlID0gaW5qZWN0KFNjQ29udGFjdHNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBCZWhhdmlvclN1YmplY3R9INC+0LHQvdC+0LLQu9C10L3QuNC1INCw0LTRgNC10YHQvtCyINC00L7RgdGC0LDQstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWxpdmVyeUFkZHJlc3Nlc1VwZGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0LDQtNGA0LXRgdC+0LIg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVsaXZlcnlBZGRyZXNzZXMkOiBPYnNlcnZhYmxlPFNjSURlbGl2ZXJ5QWRkcmVzc1tdIHwgbnVsbD4gPSB0aGlzLmRlbGl2ZXJ5QWRkcmVzc2VzVXBkYXRlJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyJCksXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcikgPT4gKHVzZXIuaXNHdWVzdCA/IG9mKG51bGwpIDogdGhpcy5odHRwLmdldDxTY0lEZWxpdmVyeUFkZHJlc3NbXT4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9kZWxpdmVyeS1hZGRyZXNzZXNgKS5waXBlKHN0YXJ0V2l0aChudWxsKSkpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7Qs9C+INCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld0FkZHJlc3NlcyDQlNCw0L3QvdGL0LUg0L3QvtCy0L7Qs9C+INCw0LTRgNC10YHQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlRGVsaXZlcnlBZGRyZXNzJChuZXdBZGRyZXNzZXM6IFNjSURlbGl2ZXJ5QWRkcmVzc09uRGF0YUNyZWF0ZSk6IE9ic2VydmFibGU8U2NJRGVsaXZlcnlBZGRyZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxTY0lEZWxpdmVyeUFkZHJlc3M+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvZGVsaXZlcnktYWRkcmVzc2VzYCwgbmV3QWRkcmVzc2VzKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS51c2VyUHJvZmlsZURlbGl2ZXJ5QWRkcmVzc0FkZGVkLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzZXNVcGRhdGUkLm5leHQoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC90LAg0YPQtNCw0LvQtdC90LjQtSDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LgsINC60L7RgtC+0YDRi9C5INC90LXQvtCx0YXQvtC00LjQvNC+INGD0LTQsNC70LjRgtGMLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVEZWxpdmVyeUFkZHJlc3MkKGFkZHJlc3NJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGVcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dm9pZD4oYCR7dGhpcy51cmxzLmFwaVVybH0vdXNlci9kZWxpdmVyeS1hZGRyZXNzZXMvJHthZGRyZXNzSWR9YCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0udXNlclByb2ZpbGVEZWxpdmVyeUFkZHJlc3NEZWxldGVkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgZGVsaXZlcnlfYWRkcmVzc19pZDogYWRkcmVzc0lkIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUFkZHJlc3Nlc1VwZGF0ZSQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdHNTZXJ2aWNlLmRlbGl2ZXJ5QWRkcmVzc0NvbnRhY3RzTWFwLmRlbGV0ZShhZGRyZXNzSWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDQutC+0L3RgtCw0LrRgtC90YvRhSDQu9C40YYg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzc0lkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldERlbGl2ZXJ5QWRkcmVzc0NvbnRhY3RzJChhZGRyZXNzSWQ6IG51bWJlcik6IE9ic2VydmFibGU8U2NJQ29udGFjdFdpdGhSZWxhdGlvbnNbXSB8IG51bGw+IHtcbiAgICAgICAgbGV0IGNhY2hlZEl0ZW0gPSB0aGlzLmNvbnRhY3RzU2VydmljZS5kZWxpdmVyeUFkZHJlc3NDb250YWN0c01hcC5nZXQoYWRkcmVzc0lkKTtcblxuICAgICAgICBpZiAoIWNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIC8vINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INCy0YDQtdC80Y8g0LbQuNC30L3QuCBjYWNoZWRJdGVtINGA0LDQstC90L7QtSwg0L/QvtGC0L7QvNGDINGH0YLQviDQvdCw0Lwg0L3QtSDQstCw0LbQvdC+INCy0YDQtdC80Y8g0LbQuNC30L3QuC4g0J3QsNC8INC90YPQttC10L0g0YTRg9C90LrRhtC40L7QvdCw0LsgdXBkYXRlKCkuXG4gICAgICAgICAgICBjYWNoZWRJdGVtID0gbmV3IFNjQ2FjaGVkSXRlbSgwLCB0aGlzLmh0dHAuZ2V0PFNjSUNvbnRhY3RXaXRoUmVsYXRpb25zW10+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvZGVsaXZlcnktYWRkcmVzc2VzLyR7YWRkcmVzc0lkfS9jb250YWN0c2ApKTtcbiAgICAgICAgICAgIHRoaXMuY29udGFjdHNTZXJ2aWNlLmRlbGl2ZXJ5QWRkcmVzc0NvbnRhY3RzTWFwLnNldChhZGRyZXNzSWQsIGNhY2hlZEl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhY2hlZEl0ZW0uaXRlbSQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGB0L7Qt9C00LDQvdC40Y8g0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gICAgICogQHBhcmFtIG5ld0NvbnRhY3Qg0JTQsNC90L3Ri9C1INGC0YDQtdCx0YPQtdC80YvQtSDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqIEByZXR1cm5zINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0LfQtNCw0L3QvdC+0LPQviDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVEZWxpdmVyeUFkZHJlc3NDb250YWN0JChhZGRyZXNzSWQ6IG51bWJlciwgbmV3Q29udGFjdDogU2NJQ29udGFjdE9uRGF0YUNyZWF0ZSk6IE9ic2VydmFibGU8U2NJQ29udGFjdFdpdGhSZWxhdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFjdHNTZXJ2aWNlLmNyZWF0ZUNvbnRhY3QkKHsgLi4ubmV3Q29udGFjdCwgYWRkcmVzc2VzOiBbeyBpZDogYWRkcmVzc0lkIH1dIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDRg9C00LDQu9C10L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzc0lkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqIEBwYXJhbSBjb250YWN0SWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlRGVsaXZlcnlBZGRyZXNzQ29udGFjdCQoYWRkcmVzc0lkOiBudW1iZXIsIGNvbnRhY3RJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhY3RzU2VydmljZS5kZWxldGVDb250YWN0JChjb250YWN0SWQpLnBpcGUodGFwKCgpID0+IHRoaXMuY29udGFjdHNTZXJ2aWNlLmRlbGl2ZXJ5QWRkcmVzc0NvbnRhY3RzTWFwLmdldChhZGRyZXNzSWQpPy51cGRhdGUoKSkpO1xuICAgIH1cbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVsaXZlcnktYWRkcmVzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kZWxpdmVyeS1hZGRyZXNzL3NlcnZpY2VzL3NjLWRlbGl2ZXJ5LWFkZHJlc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOztBQUczRjs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFJSTs7V0FFRztRQUNjLFNBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsVUFBSyxHQUF1QixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYyx1QkFBa0IsR0FBeUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFekY7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T0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSw2QkFBNkIsQ0FBQyxTQUFpQixFQUFFLFVBQWtDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSw2QkFBNkIsQ0FBQyxTQUFpQixFQUFFLFNBQWlCO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEosQ0FBQzsrR0F6SFEsd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGckIsTUFBTTs7NEZBRVQsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQ2FjaGVkSXRlbSB9IGZyb20gJy4uLy4uL2NhdGFsb2cvY2xhc3Nlcy9zYy1jYWNoZWQtaXRlbSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTY0NvbnRhY3RzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRhY3RzL3NlcnZpY2VzL3NjLWNvbnRhY3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zYy11cmxzJztcbmltcG9ydCB7IFNjSUNvbnRhY3RPbkRhdGFDcmVhdGUgfSBmcm9tICcuLi8uLi91c2VyL2R0by9zYy1pLWNvbnRhY3Qtb24tZGF0YS1jcmVhdGUnO1xuaW1wb3J0IHsgU2NJQ29udGFjdFdpdGhSZWxhdGlvbnMgfSBmcm9tICcuLi8uLi91c2VyL2R0by9zYy1pLWNvbnRhY3Qtd2l0aC1yZWxhdGlvbnMnO1xuaW1wb3J0IHsgU2NVc2VyIH0gZnJvbSAnLi4vLi4vdXNlci9kdG8vc2MtdXNlcic7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8gfSBmcm9tICcuLi8uLi91c2VyL3Rva2Vucy9zYy11c2VyLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBTY1VzZXJNZXRyaWthR29hbHNFbnVtIH0gZnJvbSAnLi4vLi4vdXNlci1tZXRyaWthL2VudW1zL3NjLXVzZXItbWV0cmlrYS1nb2Fscy1lbnVtJztcbmltcG9ydCB7IFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlci1tZXRyaWthL3NlcnZpY2VzL3NjLXVzZXItbWV0cmlrYS5zZXJ2aWNlJztcbmltcG9ydCB7IFNjSURlbGl2ZXJ5QWRkcmVzcywgU2NJRGVsaXZlcnlBZGRyZXNzT25EYXRhQ3JlYXRlIH0gZnJvbSAnLi4vZHRvJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0YDQsNCx0L7RgtGLINGBINCw0LTRgNC10YHQsNC80Lgg0LTQvtGB0YLQsNCy0LrQuC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NEZWxpdmVyeUFkZHJlc3NTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyPiA9IGluamVjdChTQ19VU0VSX0lORk8pO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyTWV0cmlrYVNlcnZpY2U6IFNjVXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7QvdGC0LDQutGC0L3Ri9C80Lgg0LvQuNGG0LDQvNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFjdHNTZXJ2aWNlOiBTY0NvbnRhY3RzU2VydmljZSA9IGluamVjdChTY0NvbnRhY3RzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgQmVoYXZpb3JTdWJqZWN0fSDQvtCx0L3QvtCy0LvQtdC90LjQtSDQsNC00YDQtdGB0L7QsiDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVsaXZlcnlBZGRyZXNzZXNVcGRhdGUkOiBCZWhhdmlvclN1YmplY3Q8dm9pZD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINCw0LTRgNC10YHQvtCyINC00L7RgdGC0LDQstC60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRlbGl2ZXJ5QWRkcmVzc2VzJDogT2JzZXJ2YWJsZTxTY0lEZWxpdmVyeUFkZHJlc3NbXSB8IG51bGw+ID0gdGhpcy5kZWxpdmVyeUFkZHJlc3Nlc1VwZGF0ZSQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlciQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXIpID0+ICh1c2VyLmlzR3Vlc3QgPyBvZihudWxsKSA6IHRoaXMuaHR0cC5nZXQ8U2NJRGVsaXZlcnlBZGRyZXNzW10+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvZGVsaXZlcnktYWRkcmVzc2VzYCkucGlwZShzdGFydFdpdGgobnVsbCkpKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0LPQviDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdBZGRyZXNzZXMg0JTQsNC90L3Ri9C1INC90L7QstC+0LPQviDQsNC00YDQtdGB0LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZURlbGl2ZXJ5QWRkcmVzcyQobmV3QWRkcmVzc2VzOiBTY0lEZWxpdmVyeUFkZHJlc3NPbkRhdGFDcmVhdGUpOiBPYnNlcnZhYmxlPFNjSURlbGl2ZXJ5QWRkcmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8U2NJRGVsaXZlcnlBZGRyZXNzPihgJHt0aGlzLnVybHMuYXBpVXJsfS91c2VyL2RlbGl2ZXJ5LWFkZHJlc3Nlc2AsIG5ld0FkZHJlc3NlcykucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0udXNlclByb2ZpbGVEZWxpdmVyeUFkZHJlc3NBZGRlZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGl2ZXJ5QWRkcmVzc2VzVXBkYXRlJC5uZXh0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINC30LDQv9GA0L7RgSDQvdCwINGD0LTQsNC70LXQvdC40LUg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWRkcmVzc0lkINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4LCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDRg9C00LDQu9C40YLRjC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlRGVsaXZlcnlBZGRyZXNzJChhZGRyZXNzSWQ6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L3VzZXIvZGVsaXZlcnktYWRkcmVzc2VzLyR7YWRkcmVzc0lkfWApLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnVzZXJQcm9maWxlRGVsaXZlcnlBZGRyZXNzRGVsZXRlZCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGRlbGl2ZXJ5X2FkZHJlc3NfaWQ6IGFkZHJlc3NJZCB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlBZGRyZXNzZXNVcGRhdGUkLm5leHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhY3RzU2VydmljZS5kZWxpdmVyeUFkZHJlc3NDb250YWN0c01hcC5kZWxldGUoYWRkcmVzc0lkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINC/0L7Qu9GD0YfQtdC90LjRjyDRgdC/0LjRgdC60LAg0LrQvtC90YLQsNC60YLQvdGL0YUg0LvQuNGGINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGFkZHJlc3NJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutC+0L3RgtGA0LDQs9C10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREZWxpdmVyeUFkZHJlc3NDb250YWN0cyQoYWRkcmVzc0lkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUNvbnRhY3RXaXRoUmVsYXRpb25zW10gfCBudWxsPiB7XG4gICAgICAgIGxldCBjYWNoZWRJdGVtID0gdGhpcy5jb250YWN0c1NlcnZpY2UuZGVsaXZlcnlBZGRyZXNzQ29udGFjdHNNYXAuZ2V0KGFkZHJlc3NJZCk7XG5cbiAgICAgICAgaWYgKCFjYWNoZWRJdGVtKSB7XG4gICAgICAgICAgICAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQstGA0LXQvNGPINC20LjQt9C90LggY2FjaGVkSXRlbSDRgNCw0LLQvdC+0LUsINC/0L7RgtC+0LzRgyDRh9GC0L4g0L3QsNC8INC90LUg0LLQsNC20L3QviDQstGA0LXQvNGPINC20LjQt9C90LguINCd0LDQvCDQvdGD0LbQtdC9INGE0YPQvdC60YbQuNC+0L3QsNC7IHVwZGF0ZSgpLlxuICAgICAgICAgICAgY2FjaGVkSXRlbSA9IG5ldyBTY0NhY2hlZEl0ZW08U2NJQ29udGFjdFdpdGhSZWxhdGlvbnNbXSwgbnVsbD4oXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgLmdldDxTY0lDb250YWN0V2l0aFJlbGF0aW9uc1tdPihgJHt0aGlzLnVybHMuYXBpVXJsfS91c2VyL2RlbGl2ZXJ5LWFkZHJlc3Nlcy8ke2FkZHJlc3NJZH0vY29udGFjdHNgKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGg8U2NJQ29udGFjdFdpdGhSZWxhdGlvbnNbXSB8IG51bGw+KG51bGwpKSxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jb250YWN0c1NlcnZpY2UuZGVsaXZlcnlBZGRyZXNzQ29udGFjdHNNYXAuc2V0KGFkZHJlc3NJZCwgY2FjaGVkSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FjaGVkSXRlbS5pdGVtJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LfQtNCw0ZHRgiDQt9Cw0L/RgNC+0YEg0YHQvtC30LTQsNC90LjRjyDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwINCw0LTRgNC10YHQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGFkZHJlc3NJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKiBAcGFyYW0gbmV3Q29udGFjdCDQlNCw0L3QvdGL0LUg0YLRgNC10LHRg9C10LzRi9C1INC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICogQHJldHVybnMg0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7Qt9C00LDQvdC90L7Qs9C+INC60L7QvdGC0LDQutGC0L3QvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZURlbGl2ZXJ5QWRkcmVzc0NvbnRhY3QkKGFkZHJlc3NJZDogbnVtYmVyLCBuZXdDb250YWN0OiBTY0lDb250YWN0T25EYXRhQ3JlYXRlKTogT2JzZXJ2YWJsZTxTY0lDb250YWN0V2l0aFJlbGF0aW9ucz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWN0c1NlcnZpY2UuY3JlYXRlQ29udGFjdCQoeyAuLi5uZXdDb250YWN0LCBhZGRyZXNzZXM6IFt7IGlkOiBhZGRyZXNzSWQgfV0gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQvtC30LTQsNGR0YIg0LfQsNC/0YDQvtGBINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YLQsNC60YLQvdC+0LPQviDQu9C40YbQsCDQsNC00YDQtdGB0LAg0LTQvtGB0YLQsNCy0LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhZGRyZXNzSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LDQtNGA0LXRgdCwINC00L7RgdGC0LDQstC60LguXG4gICAgICogQHBhcmFtIGNvbnRhY3RJZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQutC+0L3RgtCw0LrRgtC90L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVEZWxpdmVyeUFkZHJlc3NDb250YWN0JChhZGRyZXNzSWQ6IG51bWJlciwgY29udGFjdElkOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFjdHNTZXJ2aWNlLmRlbGV0ZUNvbnRhY3QkKGNvbnRhY3RJZCkucGlwZSh0YXAoKCkgPT4gdGhpcy5jb250YWN0c1NlcnZpY2UuZGVsaXZlcnlBZGRyZXNzQ29udGFjdHNNYXAuZ2V0KGFkZHJlc3NJZCk/LnVwZGF0ZSgpKSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,11 @@
1
+ export * from './sc-delivery-cost';
2
+ export * from './sc-order-base';
3
+ export * from './sc-order-draft';
4
+ export * from './sc-order-draft-short';
5
+ export * from './sc-order-delivery';
6
+ export * from './sc-order-history';
7
+ export * from './sc-order-item';
8
+ export * from './sc-order-payment';
9
+ export * from './sc-order-short';
10
+ export * from './sc-order';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL29yZGVyL2NsYXNzZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLWRlbGl2ZXJ5LWNvc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1vcmRlci1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2Mtb3JkZXItZHJhZnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1vcmRlci1kcmFmdC1zaG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLW9yZGVyLWRlbGl2ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vc2Mtb3JkZXItaGlzdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLW9yZGVyLWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1vcmRlci1wYXltZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2Mtb3JkZXItc2hvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1vcmRlcic7XG4iXX0=
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Данные о стоимости доставки.
3
+ */
4
+ export class ScDeliveryCost {
5
+ /**
6
+ * Инициализирует экземпляр класса {@link ScDeliveryCost}.
7
+ *
8
+ * @param deliveryCost Данные о стоимости доставки (DTO).
9
+ * @param deliveryDate Дата доставки.
10
+ */
11
+ constructor(deliveryCost, deliveryDate) {
12
+ if (deliveryCost.freeShippingTerms?.minOrdersSum !== undefined && deliveryCost.freeShippingTerms.currentOrdersSum !== undefined) {
13
+ this.freeShippingTerms = { minOrdersSum: deliveryCost.freeShippingTerms.minOrdersSum, currentOrdersSum: deliveryCost.freeShippingTerms.currentOrdersSum };
14
+ this.message = `Для оформления бесплатной доставки сумма заказов на ${deliveryDate} должна быть более ${this.freeShippingTerms.minOrdersSum.toLocaleString()} руб.<br>
15
+ Текущая сумма заказов составляет ${this.freeShippingTerms.currentOrdersSum.toLocaleString()} руб`;
16
+ }
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZGVsaXZlcnktY29zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvb3JkZXIvY2xhc3Nlcy9zYy1kZWxpdmVyeS1jb3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUEwQnZCOzs7OztPQUtHO0lBQ0gsWUFBbUIsWUFBZ0MsRUFBRSxZQUFvQjtRQUNyRSxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLEtBQUssU0FBUyxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5SCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxSixJQUFJLENBQUMsT0FBTyxHQUFHLHVEQUF1RCxZQUFZLHNCQUFzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRTttREFDckgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7UUFDMUcsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjSURlbGl2ZXJ5Q29zdERUTyB9IGZyb20gJy4uL2ludGVybmFsJztcblxuLyoqXG4gKiDQlNCw0L3QvdGL0LUg0L4g0YHRgtC+0LjQvNC+0YHRgtC4INC00L7RgdGC0LDQstC60LguXG4gKi9cbmV4cG9ydCBjbGFzcyBTY0RlbGl2ZXJ5Q29zdCB7XG4gICAgLyoqXG4gICAgICog0JTQsNC90L3Ri9C1INC+INCx0LXRgdC/0LvQsNGC0L3QvtC5INC00L7RgdGC0LDQstC60LUuXG4gICAgICovXG4gICAgcHVibGljIGZyZWVTaGlwcGluZ1Rlcm1zPzoge1xuICAgICAgICAvKipcbiAgICAgICAgICog0JzQuNC90LjQvNCw0LvRjNC90LDRjyDRgdGD0LzQvNCwINCx0LXRgdC/0LvQsNGC0L3QvtC5INC00L7RgdGC0LDQstC60LguXG4gICAgICAgICAqL1xuICAgICAgICBtaW5PcmRlcnNTdW06IG51bWJlcjtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J7QsdGJ0LDRjyDRgdGD0LzQvNCwINCy0YHQtdGFINGC0LXQutGD0YnQuNGFINC30LDQutCw0LfQvtCyINC4INC60L7RgNC30LjQvdGLLlxuICAgICAgICAgKi9cbiAgICAgICAgY3VycmVudE9yZGVyc1N1bTogbnVtYmVyO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiDQodGE0L7RgNC80LjRgNC+0LLQsNC90L3QvtC1INGB0L7QvtCx0YnQtdC90LjQtSDRgSDQtNCw0L3QvdGL0LzQuCDQviDQtNC+0YHRgtCw0LLQutC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICog0KHRhNC+0YDQvNC40YDQvtCy0LDQvdC90L7QtSDRgdC+0L7QsdGJ0LXQvdC40LUg0L7QsSDQvtGI0LjQsdC60LUuXG4gICAgICovXG4gICAgcHVibGljIGVycm9yTWVzc2FnZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NEZWxpdmVyeUNvc3R9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbGl2ZXJ5Q29zdCDQlNCw0L3QvdGL0LUg0L4g0YHRgtC+0LjQvNC+0YHRgtC4INC00L7RgdGC0LDQstC60LggKERUTykuXG4gICAgICogQHBhcmFtIGRlbGl2ZXJ5RGF0ZSDQlNCw0YLQsCDQtNC+0YHRgtCw0LLQutC4LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihkZWxpdmVyeUNvc3Q6IFNjSURlbGl2ZXJ5Q29zdERUTywgZGVsaXZlcnlEYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGRlbGl2ZXJ5Q29zdC5mcmVlU2hpcHBpbmdUZXJtcz8ubWluT3JkZXJzU3VtICE9PSB1bmRlZmluZWQgJiYgZGVsaXZlcnlDb3N0LmZyZWVTaGlwcGluZ1Rlcm1zLmN1cnJlbnRPcmRlcnNTdW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5mcmVlU2hpcHBpbmdUZXJtcyA9IHsgbWluT3JkZXJzU3VtOiBkZWxpdmVyeUNvc3QuZnJlZVNoaXBwaW5nVGVybXMubWluT3JkZXJzU3VtLCBjdXJyZW50T3JkZXJzU3VtOiBkZWxpdmVyeUNvc3QuZnJlZVNoaXBwaW5nVGVybXMuY3VycmVudE9yZGVyc1N1bSB9O1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlID0gYNCU0LvRjyDQvtGE0L7RgNC80LvQtdC90LjRjyDQsdC10YHQv9C70LDRgtC90L7QuSDQtNC+0YHRgtCw0LLQutC4INGB0YPQvNC80LAg0LfQsNC60LDQt9C+0LIg0L3QsCAke2RlbGl2ZXJ5RGF0ZX0g0LTQvtC70LbQvdCwINCx0YvRgtGMINCx0L7Qu9C10LUgJHt0aGlzLmZyZWVTaGlwcGluZ1Rlcm1zLm1pbk9yZGVyc1N1bS50b0xvY2FsZVN0cmluZygpfSDRgNGD0LEuPGJyPlxuICAgICAgICAgICAgICAgINCi0LXQutGD0YnQsNGPINGB0YPQvNC80LAg0LfQsNC60LDQt9C+0LIg0YHQvtGB0YLQsNCy0LvRj9C10YIgJHt0aGlzLmZyZWVTaGlwcGluZ1Rlcm1zLmN1cnJlbnRPcmRlcnNTdW0udG9Mb2NhbGVTdHJpbmcoKX0g0YDRg9CxYDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==