@tiba-spark/client-shared-lib 26.3.0-628 → 26.3.0-628.a11y.13

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 (89) hide show
  1. package/esm2022/libraries/components/cloud-confirm-dialog/cloud-confirm-dialog.component.mjs +3 -3
  2. package/esm2022/libraries/components/common-pages/error-page/error-page.component.mjs +35 -7
  3. package/esm2022/libraries/components/field-label/field-label.component.mjs +39 -6
  4. package/esm2022/libraries/components/field-validations/field-validations.component.mjs +8 -5
  5. package/esm2022/libraries/components/guest-open-ticket-dialog/guest-open-ticket-dialog.component.mjs +2 -2
  6. package/esm2022/libraries/components/intercom/intercom.component.mjs +2 -2
  7. package/esm2022/libraries/components/logo/logo.component.mjs +3 -3
  8. package/esm2022/libraries/components/message-bar/float-message-bar.service.mjs +30 -6
  9. package/esm2022/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.mjs +9 -4
  10. package/esm2022/libraries/components/notification/alert-notification/alert-notification.component.mjs +3 -3
  11. package/esm2022/libraries/components/notification/command-notification/command-notification.component.mjs +3 -3
  12. package/esm2022/libraries/components/notification/notification-type-label/notification-type-label.component.mjs +2 -2
  13. package/esm2022/libraries/components/notification/notification.service.mjs +6 -3
  14. package/esm2022/libraries/components/overlay-loading-container/empty-results/empty-results.component.mjs +3 -3
  15. package/esm2022/libraries/components/overlay-loading-container/error-results/error-results.component.mjs +2 -2
  16. package/esm2022/libraries/components/restart-link/restart-link.component.mjs +2 -2
  17. package/esm2022/libraries/constants/global-constants.mjs +2 -1
  18. package/esm2022/libraries/directives/clear-all-button.directive.mjs +49 -0
  19. package/esm2022/libraries/directives/disabled.directive.mjs +121 -0
  20. package/esm2022/libraries/directives/icon-button.directive.mjs +36 -0
  21. package/esm2022/libraries/directives/index.mjs +4 -1
  22. package/esm2022/libraries/directives/shared-directives.module.mjs +16 -1
  23. package/esm2022/libraries/enums/localization.enum.mjs +45 -5
  24. package/esm2022/libraries/enums/message-bar-duration.enum.mjs +4 -2
  25. package/esm2022/libraries/interfaces/table-column.interface.mjs +1 -1
  26. package/esm2022/libraries/modules/layout/layout.state.mjs +2 -2
  27. package/esm2022/libraries/services/can-deactivate.service.mjs +4 -3
  28. package/esm2022/libraries/services/modal.service.mjs +94 -1
  29. package/esm2022/libraries/utils/error.util.mjs +12 -1
  30. package/fesm2022/tiba-spark-client-shared-lib.mjs +543 -93
  31. package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
  32. package/libraries/components/common-pages/error-page/error-page.component.d.ts +11 -2
  33. package/libraries/components/common-pages/error-page/error-page.component.d.ts.map +1 -1
  34. package/libraries/components/field-label/field-label.component.d.ts +8 -3
  35. package/libraries/components/field-label/field-label.component.d.ts.map +1 -1
  36. package/libraries/components/field-validations/field-validations.component.d.ts +2 -4
  37. package/libraries/components/field-validations/field-validations.component.d.ts.map +1 -1
  38. package/libraries/components/message-bar/float-message-bar.service.d.ts +2 -0
  39. package/libraries/components/message-bar/float-message-bar.service.d.ts.map +1 -1
  40. package/libraries/components/modal-buttons-wrapper/modal-buttons-wrapper.component.d.ts.map +1 -1
  41. package/libraries/components/notification/alert-notification/alert-notification.component.d.ts.map +1 -1
  42. package/libraries/components/notification/command-notification/command-notification.component.d.ts.map +1 -1
  43. package/libraries/components/notification/notification.service.d.ts.map +1 -1
  44. package/libraries/constants/global-constants.d.ts +1 -0
  45. package/libraries/constants/global-constants.d.ts.map +1 -1
  46. package/libraries/directives/clear-all-button.directive.d.ts +19 -0
  47. package/libraries/directives/clear-all-button.directive.d.ts.map +1 -0
  48. package/libraries/directives/disabled.directive.d.ts +30 -0
  49. package/libraries/directives/disabled.directive.d.ts.map +1 -0
  50. package/libraries/directives/icon-button.directive.d.ts +14 -0
  51. package/libraries/directives/icon-button.directive.d.ts.map +1 -0
  52. package/libraries/directives/index.d.ts +3 -0
  53. package/libraries/directives/index.d.ts.map +1 -1
  54. package/libraries/directives/shared-directives.module.d.ts +7 -4
  55. package/libraries/directives/shared-directives.module.d.ts.map +1 -1
  56. package/libraries/enums/localization.enum.d.ts +44 -4
  57. package/libraries/enums/localization.enum.d.ts.map +1 -1
  58. package/libraries/enums/message-bar-duration.enum.d.ts +3 -1
  59. package/libraries/enums/message-bar-duration.enum.d.ts.map +1 -1
  60. package/libraries/interfaces/table-column.interface.d.ts +1 -0
  61. package/libraries/interfaces/table-column.interface.d.ts.map +1 -1
  62. package/libraries/services/can-deactivate.service.d.ts.map +1 -1
  63. package/libraries/services/modal.service.d.ts +8 -0
  64. package/libraries/services/modal.service.d.ts.map +1 -1
  65. package/libraries/utils/error.util.d.ts +6 -0
  66. package/libraries/utils/error.util.d.ts.map +1 -1
  67. package/package.json +1 -1
  68. package/src/libraries/theme/_calendar.scss +2 -1
  69. package/src/libraries/theme/_card.scss +6 -5
  70. package/src/libraries/theme/_forms.scss +1 -1
  71. package/src/libraries/theme/_mixins.scss +0 -1
  72. package/src/libraries/theme/_modals.scss +25 -3
  73. package/src/libraries/theme/_ngx.scss +0 -1
  74. package/src/libraries/theme/_tables.scss +3 -2
  75. package/src/libraries/theme/_tabs.scss +6 -4
  76. package/src/libraries/theme/_utils.scss +196 -4
  77. package/src/libraries/theme/_variables.scss +42 -10
  78. package/src/libraries/theme/components/_carousel.scss +10 -4
  79. package/src/libraries/theme/components/_tb-search.scss +10 -4
  80. package/src/libraries/theme/mat-components/_mat-checkbox.scss +1 -1
  81. package/src/libraries/theme/mat-components/_mat-date-picker.scss +4 -0
  82. package/src/libraries/theme/mat-components/_mat-input.scss +5 -0
  83. package/src/libraries/theme/mat-components/_mat-menu.scss +42 -16
  84. package/src/libraries/theme/mat-components/_mat-radio-group.scss +5 -0
  85. package/src/libraries/theme/mat-components/_mat-select.scss +35 -9
  86. package/src/libraries/theme/mat-components/_mat-selection-list.scss +2 -3
  87. package/src/libraries/theme/mat-components/_mat-slide-toggle.scss +1 -1
  88. package/src/libraries/theme/mat-components/_mat-step.scss +41 -2
  89. package/src/libraries/theme/theme.scss +119 -0
@@ -1,9 +1,11 @@
1
1
  import { ONE_SECOND_IN_MILLISECONDS } from "../constants/global-constants";
2
+ /** Shortest time a message stays up, so it can be read. */
3
+ export const MIN_MESSAGE_DURATION = ONE_SECOND_IN_MILLISECONDS * 5;
2
4
  export var DurationMessageBar;
3
5
  (function (DurationMessageBar) {
4
6
  DurationMessageBar[DurationMessageBar["displayContinuously"] = 0] = "displayContinuously";
5
- DurationMessageBar[DurationMessageBar["defaultDisplayOneMessage"] = 3000] = "defaultDisplayOneMessage";
7
+ DurationMessageBar[DurationMessageBar["defaultDisplayOneMessage"] = 5000] = "defaultDisplayOneMessage";
6
8
  DurationMessageBar[DurationMessageBar["defaultDisplayMultiMessages"] = 5000] = "defaultDisplayMultiMessages";
7
9
  DurationMessageBar[DurationMessageBar["defaultDisplayLongMessage"] = 8000] = "defaultDisplayLongMessage";
8
10
  })(DurationMessageBar || (DurationMessageBar = {}));
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1iYXItZHVyYXRpb24uZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvZW51bXMvbWVzc2FnZS1iYXItZHVyYXRpb24uZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLHlGQUF1QixDQUFBO0lBQ3ZCLHNHQUF5RCxDQUFBO0lBQ3pELDRHQUE0RCxDQUFBO0lBQzVELHdHQUEwRCxDQUFBO0FBQzVELENBQUMsRUFMVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHNcIjtcblxuZXhwb3J0IGVudW0gRHVyYXRpb25NZXNzYWdlQmFyIHtcbiAgZGlzcGxheUNvbnRpbnVvdXNseSA9IDAsXG4gIGRlZmF1bHREaXNwbGF5T25lTWVzc2FnZSA9IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTICogMyxcbiAgZGVmYXVsdERpc3BsYXlNdWx0aU1lc3NhZ2VzID0gT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgKiA1LFxuICBkZWZhdWx0RGlzcGxheUxvbmdNZXNzYWdlID0gT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgKiA4XG59XG4iXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1iYXItZHVyYXRpb24uZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvZW51bXMvbWVzc2FnZS1iYXItZHVyYXRpb24uZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRSwyREFBMkQ7QUFDM0QsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBRW5FLE1BQU0sQ0FBTixJQUFZLGtCQUtYO0FBTEQsV0FBWSxrQkFBa0I7SUFDNUIseUZBQXVCLENBQUE7SUFDdkIsc0dBQXlELENBQUE7SUFDekQsNEdBQTRELENBQUE7SUFDNUQsd0dBQTBELENBQUE7QUFDNUQsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyB9IGZyb20gXCIuLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50c1wiO1xuXG4vKiogU2hvcnRlc3QgdGltZSBhIG1lc3NhZ2Ugc3RheXMgdXAsIHNvIGl0IGNhbiBiZSByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IE1JTl9NRVNTQUdFX0RVUkFUSU9OID0gT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgKiA1O1xuXG5leHBvcnQgZW51bSBEdXJhdGlvbk1lc3NhZ2VCYXIge1xuICBkaXNwbGF5Q29udGludW91c2x5ID0gMCxcbiAgZGVmYXVsdERpc3BsYXlPbmVNZXNzYWdlID0gT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgKiA1LFxuICBkZWZhdWx0RGlzcGxheU11bHRpTWVzc2FnZXMgPSBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyAqIDUsXG4gIGRlZmF1bHREaXNwbGF5TG9uZ01lc3NhZ2UgPSBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyAqIDhcbn1cbiJdfQ==
@@ -13,4 +13,4 @@ export const TableColumnGroupLabel = new Map([
13
13
  [TableColumnGroup.And, 'and'],
14
14
  [TableColumnGroup.Then, 'then'],
15
15
  ]);
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvaW50ZXJmYWNlcy90YWJsZS1jb2x1bW4uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBTixJQUFZLGdCQU1YO0FBTkQsV0FBWSxnQkFBZ0I7SUFDMUIsa0dBQWtHO0lBQ2xHLHdGQUF3RjtJQUN4RixtREFBTSxDQUFBO0lBQ04scURBQU8sQ0FBQTtJQUNQLHVEQUFRLENBQUE7QUFDVixDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUVELG1GQUFtRjtBQUNuRixpR0FBaUc7QUFDakcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQTJCO0lBQ3JFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztJQUMzQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDN0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0NBQ2hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBuZ0NsYXNzID0gc3RyaW5nIHwgc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiB8IHsgW2tsYXNzOiBzdHJpbmddOiBhbnk7IH07XG5cbmV4cG9ydCBlbnVtIFRhYmxlQ29sdW1uR3JvdXAge1xuICAvLyBOdW1lcmljIGlkZW50aWZpZXJzIChtdXN0IHN0YXJ0IGF0IDEg4oCUIGNvbHVtbi5ncm91cCBpcyB0cnV0aGluZXNzLWNoZWNrZWQgaW4gdGhlIHRhYmxlIGhlYWRlcikuXG4gIC8vIFRoZSBkaXNwbGF5IGxhYmVsIGNvbWVzIGZyb20gVGFibGVDb2x1bW5Hcm91cExhYmVsLCBuZXZlciBmcm9tIHRoZSBlbnVtIHZhbHVlIGl0c2VsZi5cbiAgSWYgPSAxLFxuICBBbmQgPSAyLFxuICBUaGVuID0gMyxcbn1cblxuLy8gTWFwcyBhIGNvbHVtbiBncm91cCB0byBpdHMgbG9jYWxpemF0aW9uIGtleSAodHJhbnNsYXRlZCArIHVwcGVyY2FzZWQgb24gcmVuZGVyKS5cbi8vIEtleWVkIGJ5IHRoZSBlbnVtIHNvIHRoZSB0ZW1wbGF0ZSBuZXZlciB1c2VzIGEgcmF3LCBjb2xsaXNpb24tcHJvbmUgc3RyaW5nIGFzIGEgdHJhbnNsYXRlIGtleS5cbmV4cG9ydCBjb25zdCBUYWJsZUNvbHVtbkdyb3VwTGFiZWwgPSBuZXcgTWFwPFRhYmxlQ29sdW1uR3JvdXAsIHN0cmluZz4oW1xuICBbVGFibGVDb2x1bW5Hcm91cC5JZiwgJ2lmJ10sXG4gIFtUYWJsZUNvbHVtbkdyb3VwLkFuZCwgJ2FuZCddLFxuICBbVGFibGVDb2x1bW5Hcm91cC5UaGVuLCAndGhlbiddLFxuXSk7XG5cbi8qKlxuICogRXhwb3J0ZWQgZm9yIGdlbmVyaWMgYmFzZSBjbGFzc2VzOiBhIGxpdGVyYWwgY2Fubm90IGJlIGlubGluZWQgd2hpbGUgVCBpcyB1bnJlc29sdmVkLCBzbyB0aGVcbiAqIGJhc2UgZGVjbGFyZXMgdGhlIGtleSB3aXRoIHRoaXMgdHlwZSBhbmQgaXRzIHN1YmNsYXNzIHN1cHBsaWVzIHRoZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5FeHBhbmRlZEtleTxUPiA9IFQgZXh0ZW5kcyB1bmtub3duXG4gID8gRXh0cmFjdDxcbiAgICAgIHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVF06IE5vbk51bGxhYmxlPFRbS10+IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID8gSyA6IG5ldmVyO1xuICAgICAgfVtrZXlvZiBUXSxcbiAgICAgIHN0cmluZ1xuICAgID5cbiAgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbjxUID0gYW55PiB7XG4gIG5hbWU6IHN0cmluZzsgLy8gdW5pcXVlIGNvbHVtbiBuYW1lXG4gIHRpdGxlPzogc3RyaW5nOyAvLyBoZWFkZXIgdGl0bGVcbiAgY3VzdG9tQ2VsbD86IGJvb2xlYW47IC8vIGlzIGNvbHVtbiBjZWxsIGN1c3RvbS4gZGVmYXVsdDogZmFsc2VcbiAgc29ydGFibGU/OiBib29sZWFuOyAvLyBpcyBjb2x1bW4gc29ydGFibGUuIGRlZmF1bHQ6IGZhbHNlXG4gIC8qKlxuICAgKiBGaWVsZCBuYW1lIHVzZWQgYXMgdGhlIGNlbGwgdmFsdWUuIERlZmF1bHRzIHRvIGBuYW1lYC4gSUdOT1JFRCBpZiBhIHZhbHVlUmVzb2x2ZXIgaXMgcGFzc2VkLFxuICAgKiBvciBpZiBjdXN0b21DZWxsIGlzIHNldC5cbiAgICogRGlzdHJpYnV0ZXMgb3ZlciBhIHVuaW9uIFQ6IGFueSBvbmUgbWVtYmVyJ3Mga2V5IGlzIGFjY2VwdGVkLCBidXQgcmVzb2x2ZXMgdG8gYHVuZGVmaW5lZGAgb25cbiAgICogbWVtYmVycyB0aGF0IGxhY2sgaXQg4oCUIHVzZSB2YWx1ZVJlc29sdmVyIHRoZXJlLlxuICAgKi9cbiAgZmllbGQ/OiBUIGV4dGVuZHMgdW5rbm93biA/IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPiA6IG5ldmVyO1xuICB2YWx1ZVJlc29sdmVyPzogVGFibGVDZWxsVmFsdWVSZXNvbHZlcjxUPjsgLy8gY3VzdG9tIGNvbHVtbiB2YWx1ZSByZXNvbHZlciAoZS5nLiAocm93VmFsdWUpID0+IHJvd1ZhbHVlLmFkZHJlc3Muc3RyZWV0ICkuIE9WRVJSSURFUyBmaWVsZFxuICBmb3JtYXR0ZXI/OiBUYWJsZUNlbGxGb3JtYXR0ZXI8VD47IC8vIG9wdGlvbmFsIGZvcm1hdHRlci4gdXNlIHByZWRlZmluZWQgZm9ybWF0dGVycyBzdWNoIGFzIG1vbWVudEZvcm1hdHRlclxuICBjc3NIZWFkZXJDbGFzcz86IFRhYmxlSGVhZGVyQ2VsbENsYXNzPFQ+OyAvLyBvcHRpb25hbCBjc3MgY2xhc3MgZm9yIDx0aD5cbiAgY3NzQ2xhc3M/OiBUYWJsZUNlbGxDbGFzczxUPjsgLy8gb3B0aW9uYWwgY3NzIGNsYXNzIGZvciA8dGQ+XG4gIGlzQ2xpY2thYmxlPzogVGFibGVDZWxsQ2xpY2thYmxlPFQ+OyAvLyBpcyByb3cgZXZlbnQgY2xpY2sgZW5hYmxlIGZvciA8dHI+XG4gIC8qKlxuICAgKiBSb3cgcHJvcGVydHkgaG9sZGluZyB0aGUgY2hpbGRyZW4gdG8gZXhwYW5kIGludG8uIFJlc3RyaWN0ZWQgdG8gYXJyYXktdmFsdWVkIGtleXMsIHNpbmNlXG4gICAqIGNvbnN1bWVycyBpbmRleCB0aGUgcm93IGFuZCByZWFkIGAubGVuZ3RoYCBvbiB0aGUgcmVzdWx0LlxuICAgKiBEaXN0cmlidXRlcyBvdmVyIGEgdW5pb24gVCBleGFjdGx5IGFzIGBmaWVsZGAgZG9lcy5cbiAgICovXG4gIGV4cGFuZGVkRmllbGQ/OiBUYWJsZUNvbHVtbkV4cGFuZGVkS2V5PFQ+O1xuICBjb21wb25lbnQ/OiBUeXBlPENlbGxDb21wb25lbnQ+OyAvLyBvcHRpb25hbCBjdXN0b20gY29tcG9uZW50XG4gIHdpZHRoPzogbnVtYmVyOyAvLyBvcHRpb25hbCBjdXN0b20gd2lkdGggaW4gcHhcbiAgbWluV2lkdGg/OiBudW1iZXI7IC8vIG9wdGlvbmFsIGN1c3RvbSBtaW4td2lkdGggaW4gcHhcbiAgbWV0YWRhdGE/OiBhbnk7XG4gIGNsaWNrUmVzb2x2ZXI/OiBUYWJsZUNlbGxDbGlja1Jlc29sdmVyPFQ+OyAvLyBjdXRvbSBjb2x1bW4gY2xpY2sgcmVzb2x2ZXIgKGUucS4gKHJvd1ZhbHVlKSA9PiByZXR1cm4gRXZlbnRFbWl0dGVyIG1ldGhvZClcbiAgaXNJbm5lckh0bWw/OiBib29sZWFuO1xuICBpbm5lckh0bWxDbGFzcz86IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgY29tcGFyZT86IFRhYmxlQ2VsbENvbXBhcmVSZXNvbHZlcjxUPjtcbiAgaXNFeHBvcnRhYmxlPzogYm9vbGVhbjsgLy8gaXMgY29sdW1uIGV4cG9ydGFibGUuIGRlZmF1bHQ6IGZhbHNlXG4gIGdyb3VwPzogVGFibGVDb2x1bW5Hcm91cDsgLy8gb3B0aW9uYWwgZ3JvdXBlZC1oZWFkZXIgbGFiZWwgKGlmL2FuZC90aGVuKSByZW5kZXJlZCBhYm92ZSB0aGUgY29sdW1uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVSb3c8VCA9IGFueT4ge1xuICBpc1Jvd0Rpc2FibGVkPzogVGFibGVSb3dEaXNhYmxlPFQ+O1xuICBpc1Jvd0hpZGRlbj86IFRhYmxlUm93RGlzYWJsZTxUPjtcbiAgaXNOZXN0ZWRSb3c/OiBUYWJsZU5lc3RlZFJvdzxUPjtcbiAgaXNBY3RpdmVSb3c/OiBUYWJsZUFjdGl2ZVJvdzxUPjtcbiAgYmVmb3JlUm93Q2xpY2s/OiBUYWJsZUJlZm9yZVJvd0NsaWNrPFQ+O1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbENvbXBvbmVudDxUID0gYW55PiB7XG4gIHZhbHVlPzogYW55O1xuICByb3dWYWx1ZT86IFQ7XG4gIHJvd0luZGV4PzogbnVtYmVyO1xuICBjb2x1bW4/OiBUYWJsZUNvbHVtbjxUPjtcbiAgY2xpY2s/OiAoKSA9PiB2b2lkO1xufVxuXG4vLyBUYWJsZSBIZWFkZXJcbmV4cG9ydCB0eXBlIFRhYmxlSGVhZGVyQ2VsbENsYXNzPFQ+ID0gKGNvbHVtbjogVGFibGVDb2x1bW48VD4pID0+IG5nQ2xhc3M7XG5cbi8vIFRhYmxlIEJvZHlcbmV4cG9ydCB0eXBlIFRhYmxlQ2VsbFZhbHVlUmVzb2x2ZXI8VD4gPSAocm93VmFsdWU6IFQpID0+IGFueTtcblxuZXhwb3J0IHR5cGUgVGFibGVDZWxsRm9ybWF0dGVyPFQ+ID0gKGNlbGxWYWx1ZTogYW55LCByb3dWYWx1ZTogVCwgY29sdW1uOiBUYWJsZUNvbHVtbjxUPikgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBUYWJsZUNlbGxDbGFzczxUPiA9IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IFQsIGNvbHVtbjogVGFibGVDb2x1bW48VD4pID0+IG5nQ2xhc3M7XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ2VsbENsaWNrYWJsZTxUPiA9IChyb3dWYWx1ZTogVCkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgVGFibGVDZWxsQ2xpY2tSZXNvbHZlcjxUPiA9IChyb3dWYWx1ZTogVCkgPT4gRXZlbnRFbWl0dGVyPFQ+O1xuXG5leHBvcnQgdHlwZSBUYWJsZUNlbGxDb21wYXJlUmVzb2x2ZXI8VD4gPSAocm93VmFsdWVBOiBULCByb3dWYWx1ZUI6IFQsIGlzQXNjOiBib29sZWFuKSA9PiBudW1iZXI7XG5cblxuLy8gVGFibGUgUm93XG5leHBvcnQgdHlwZSBUYWJsZVJvd0Rpc2FibGU8VD4gPSAocm93VmFsdWU6IFQpID0+IGJvb2xlYW47XG5leHBvcnQgdHlwZSBUYWJsZU5lc3RlZFJvdzxUPiA9IChyb3dWYWx1ZTogVCkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFRhYmxlQWN0aXZlUm93PFQ+ID0gKHNlbGVjdGVkUm93VmFsdWU6IFQsIHJvd1ZhbHVlOiBUKSA9PiBib29sZWFuO1xuZXhwb3J0IHR5cGUgVGFibGVCZWZvcmVSb3dDbGljazxUPiA9IChyb3dWYWx1ZTogVCkgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvaW50ZXJmYWNlcy90YWJsZS1jb2x1bW4uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBTixJQUFZLGdCQU1YO0FBTkQsV0FBWSxnQkFBZ0I7SUFDMUIsa0dBQWtHO0lBQ2xHLHdGQUF3RjtJQUN4RixtREFBTSxDQUFBO0lBQ04scURBQU8sQ0FBQTtJQUNQLHVEQUFRLENBQUE7QUFDVixDQUFDLEVBTlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU0zQjtBQUVELG1GQUFtRjtBQUNuRixpR0FBaUc7QUFDakcsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQTJCO0lBQ3JFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztJQUMzQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDN0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0NBQ2hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBuZ0NsYXNzID0gc3RyaW5nIHwgc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiB8IHsgW2tsYXNzOiBzdHJpbmddOiBhbnk7IH07XG5cbmV4cG9ydCBlbnVtIFRhYmxlQ29sdW1uR3JvdXAge1xuICAvLyBOdW1lcmljIGlkZW50aWZpZXJzIChtdXN0IHN0YXJ0IGF0IDEg4oCUIGNvbHVtbi5ncm91cCBpcyB0cnV0aGluZXNzLWNoZWNrZWQgaW4gdGhlIHRhYmxlIGhlYWRlcikuXG4gIC8vIFRoZSBkaXNwbGF5IGxhYmVsIGNvbWVzIGZyb20gVGFibGVDb2x1bW5Hcm91cExhYmVsLCBuZXZlciBmcm9tIHRoZSBlbnVtIHZhbHVlIGl0c2VsZi5cbiAgSWYgPSAxLFxuICBBbmQgPSAyLFxuICBUaGVuID0gMyxcbn1cblxuLy8gTWFwcyBhIGNvbHVtbiBncm91cCB0byBpdHMgbG9jYWxpemF0aW9uIGtleSAodHJhbnNsYXRlZCArIHVwcGVyY2FzZWQgb24gcmVuZGVyKS5cbi8vIEtleWVkIGJ5IHRoZSBlbnVtIHNvIHRoZSB0ZW1wbGF0ZSBuZXZlciB1c2VzIGEgcmF3LCBjb2xsaXNpb24tcHJvbmUgc3RyaW5nIGFzIGEgdHJhbnNsYXRlIGtleS5cbmV4cG9ydCBjb25zdCBUYWJsZUNvbHVtbkdyb3VwTGFiZWwgPSBuZXcgTWFwPFRhYmxlQ29sdW1uR3JvdXAsIHN0cmluZz4oW1xuICBbVGFibGVDb2x1bW5Hcm91cC5JZiwgJ2lmJ10sXG4gIFtUYWJsZUNvbHVtbkdyb3VwLkFuZCwgJ2FuZCddLFxuICBbVGFibGVDb2x1bW5Hcm91cC5UaGVuLCAndGhlbiddLFxuXSk7XG5cbi8qKlxuICogRXhwb3J0ZWQgZm9yIGdlbmVyaWMgYmFzZSBjbGFzc2VzOiBhIGxpdGVyYWwgY2Fubm90IGJlIGlubGluZWQgd2hpbGUgVCBpcyB1bnJlc29sdmVkLCBzbyB0aGVcbiAqIGJhc2UgZGVjbGFyZXMgdGhlIGtleSB3aXRoIHRoaXMgdHlwZSBhbmQgaXRzIHN1YmNsYXNzIHN1cHBsaWVzIHRoZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5FeHBhbmRlZEtleTxUPiA9IFQgZXh0ZW5kcyB1bmtub3duXG4gID8gRXh0cmFjdDxcbiAgICAgIHtcbiAgICAgICAgW0sgaW4ga2V5b2YgVF06IE5vbk51bGxhYmxlPFRbS10+IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID8gSyA6IG5ldmVyO1xuICAgICAgfVtrZXlvZiBUXSxcbiAgICAgIHN0cmluZ1xuICAgID5cbiAgOiBuZXZlcjtcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbjxUID0gYW55PiB7XG4gIG5hbWU6IHN0cmluZzsgLy8gdW5pcXVlIGNvbHVtbiBuYW1lXG4gIHRpdGxlPzogc3RyaW5nOyAvLyBoZWFkZXIgdGl0bGVcbiAgY3VzdG9tQ2VsbD86IGJvb2xlYW47IC8vIGlzIGNvbHVtbiBjZWxsIGN1c3RvbS4gZGVmYXVsdDogZmFsc2VcbiAgc29ydGFibGU/OiBib29sZWFuOyAvLyBpcyBjb2x1bW4gc29ydGFibGUuIGRlZmF1bHQ6IGZhbHNlXG4gIC8qKlxuICAgKiBGaWVsZCBuYW1lIHVzZWQgYXMgdGhlIGNlbGwgdmFsdWUuIERlZmF1bHRzIHRvIGBuYW1lYC4gSUdOT1JFRCBpZiBhIHZhbHVlUmVzb2x2ZXIgaXMgcGFzc2VkLFxuICAgKiBvciBpZiBjdXN0b21DZWxsIGlzIHNldC5cbiAgICogRGlzdHJpYnV0ZXMgb3ZlciBhIHVuaW9uIFQ6IGFueSBvbmUgbWVtYmVyJ3Mga2V5IGlzIGFjY2VwdGVkLCBidXQgcmVzb2x2ZXMgdG8gYHVuZGVmaW5lZGAgb25cbiAgICogbWVtYmVycyB0aGF0IGxhY2sgaXQg4oCUIHVzZSB2YWx1ZVJlc29sdmVyIHRoZXJlLlxuICAgKi9cbiAgZmllbGQ/OiBUIGV4dGVuZHMgdW5rbm93biA/IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPiA6IG5ldmVyO1xuICB2YWx1ZVJlc29sdmVyPzogVGFibGVDZWxsVmFsdWVSZXNvbHZlcjxUPjsgLy8gY3VzdG9tIGNvbHVtbiB2YWx1ZSByZXNvbHZlciAoZS5nLiAocm93VmFsdWUpID0+IHJvd1ZhbHVlLmFkZHJlc3Muc3RyZWV0ICkuIE9WRVJSSURFUyBmaWVsZFxuICBmb3JtYXR0ZXI/OiBUYWJsZUNlbGxGb3JtYXR0ZXI8VD47IC8vIG9wdGlvbmFsIGZvcm1hdHRlci4gdXNlIHByZWRlZmluZWQgZm9ybWF0dGVycyBzdWNoIGFzIG1vbWVudEZvcm1hdHRlclxuICBjc3NIZWFkZXJDbGFzcz86IFRhYmxlSGVhZGVyQ2VsbENsYXNzPFQ+OyAvLyBvcHRpb25hbCBjc3MgY2xhc3MgZm9yIDx0aD5cbiAgY3NzQ2xhc3M/OiBUYWJsZUNlbGxDbGFzczxUPjsgLy8gb3B0aW9uYWwgY3NzIGNsYXNzIGZvciA8dGQ+XG4gIGlzQ2xpY2thYmxlPzogVGFibGVDZWxsQ2xpY2thYmxlPFQ+OyAvLyBpcyByb3cgZXZlbnQgY2xpY2sgZW5hYmxlIGZvciA8dHI+XG4gIGZvY3VzZXNSb3c/OiBUYWJsZUNlbGxDbGlja2FibGU8VD47IC8vIHRoZSBjZWxsIGhhcyBhIGNvbnRyb2wgc2hvd24gb24gdGhlIGZvY3VzZWQgcm93OiB0aGUgcm93IGpvaW5zIHRoZSBhcnJvdy1rZXkgcm93c1xuICAvKipcbiAgICogUm93IHByb3BlcnR5IGhvbGRpbmcgdGhlIGNoaWxkcmVuIHRvIGV4cGFuZCBpbnRvLiBSZXN0cmljdGVkIHRvIGFycmF5LXZhbHVlZCBrZXlzLCBzaW5jZVxuICAgKiBjb25zdW1lcnMgaW5kZXggdGhlIHJvdyBhbmQgcmVhZCBgLmxlbmd0aGAgb24gdGhlIHJlc3VsdC5cbiAgICogRGlzdHJpYnV0ZXMgb3ZlciBhIHVuaW9uIFQgZXhhY3RseSBhcyBgZmllbGRgIGRvZXMuXG4gICAqL1xuICBleHBhbmRlZEZpZWxkPzogVGFibGVDb2x1bW5FeHBhbmRlZEtleTxUPjtcbiAgY29tcG9uZW50PzogVHlwZTxDZWxsQ29tcG9uZW50PjsgLy8gb3B0aW9uYWwgY3VzdG9tIGNvbXBvbmVudFxuICB3aWR0aD86IG51bWJlcjsgLy8gb3B0aW9uYWwgY3VzdG9tIHdpZHRoIGluIHB4XG4gIG1pbldpZHRoPzogbnVtYmVyOyAvLyBvcHRpb25hbCBjdXN0b20gbWluLXdpZHRoIGluIHB4XG4gIG1ldGFkYXRhPzogYW55O1xuICBjbGlja1Jlc29sdmVyPzogVGFibGVDZWxsQ2xpY2tSZXNvbHZlcjxUPjsgLy8gY3V0b20gY29sdW1uIGNsaWNrIHJlc29sdmVyIChlLnEuIChyb3dWYWx1ZSkgPT4gcmV0dXJuIEV2ZW50RW1pdHRlciBtZXRob2QpXG4gIGlzSW5uZXJIdG1sPzogYm9vbGVhbjtcbiAgaW5uZXJIdG1sQ2xhc3M/OiBzdHJpbmc7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG4gIGNvbXBhcmU/OiBUYWJsZUNlbGxDb21wYXJlUmVzb2x2ZXI8VD47XG4gIGlzRXhwb3J0YWJsZT86IGJvb2xlYW47IC8vIGlzIGNvbHVtbiBleHBvcnRhYmxlLiBkZWZhdWx0OiBmYWxzZVxuICBncm91cD86IFRhYmxlQ29sdW1uR3JvdXA7IC8vIG9wdGlvbmFsIGdyb3VwZWQtaGVhZGVyIGxhYmVsIChpZi9hbmQvdGhlbikgcmVuZGVyZWQgYWJvdmUgdGhlIGNvbHVtblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUm93PFQgPSBhbnk+IHtcbiAgaXNSb3dEaXNhYmxlZD86IFRhYmxlUm93RGlzYWJsZTxUPjtcbiAgaXNSb3dIaWRkZW4/OiBUYWJsZVJvd0Rpc2FibGU8VD47XG4gIGlzTmVzdGVkUm93PzogVGFibGVOZXN0ZWRSb3c8VD47XG4gIGlzQWN0aXZlUm93PzogVGFibGVBY3RpdmVSb3c8VD47XG4gIGJlZm9yZVJvd0NsaWNrPzogVGFibGVCZWZvcmVSb3dDbGljazxUPjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIENlbGxDb21wb25lbnQ8VCA9IGFueT4ge1xuICB2YWx1ZT86IGFueTtcbiAgcm93VmFsdWU/OiBUO1xuICByb3dJbmRleD86IG51bWJlcjtcbiAgY29sdW1uPzogVGFibGVDb2x1bW48VD47XG4gIGNsaWNrPzogKCkgPT4gdm9pZDtcbn1cblxuLy8gVGFibGUgSGVhZGVyXG5leHBvcnQgdHlwZSBUYWJsZUhlYWRlckNlbGxDbGFzczxUPiA9IChjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KSA9PiBuZ0NsYXNzO1xuXG4vLyBUYWJsZSBCb2R5XG5leHBvcnQgdHlwZSBUYWJsZUNlbGxWYWx1ZVJlc29sdmVyPFQ+ID0gKHJvd1ZhbHVlOiBUKSA9PiBhbnk7XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ2VsbEZvcm1hdHRlcjxUPiA9IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IFQsIGNvbHVtbjogVGFibGVDb2x1bW48VD4pID0+IGFueTtcblxuZXhwb3J0IHR5cGUgVGFibGVDZWxsQ2xhc3M8VD4gPSAoY2VsbFZhbHVlOiBhbnksIHJvd1ZhbHVlOiBULCBjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KSA9PiBuZ0NsYXNzO1xuXG5leHBvcnQgdHlwZSBUYWJsZUNlbGxDbGlja2FibGU8VD4gPSAocm93VmFsdWU6IFQpID0+IGJvb2xlYW47XG5cbmV4cG9ydCB0eXBlIFRhYmxlQ2VsbENsaWNrUmVzb2x2ZXI8VD4gPSAocm93VmFsdWU6IFQpID0+IEV2ZW50RW1pdHRlcjxUPjtcblxuZXhwb3J0IHR5cGUgVGFibGVDZWxsQ29tcGFyZVJlc29sdmVyPFQ+ID0gKHJvd1ZhbHVlQTogVCwgcm93VmFsdWVCOiBULCBpc0FzYzogYm9vbGVhbikgPT4gbnVtYmVyO1xuXG5cbi8vIFRhYmxlIFJvd1xuZXhwb3J0IHR5cGUgVGFibGVSb3dEaXNhYmxlPFQ+ID0gKHJvd1ZhbHVlOiBUKSA9PiBib29sZWFuO1xuZXhwb3J0IHR5cGUgVGFibGVOZXN0ZWRSb3c8VD4gPSAocm93VmFsdWU6IFQpID0+IGJvb2xlYW47XG5leHBvcnQgdHlwZSBUYWJsZUFjdGl2ZVJvdzxUPiA9IChzZWxlY3RlZFJvd1ZhbHVlOiBULCByb3dWYWx1ZTogVCkgPT4gYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFRhYmxlQmVmb3JlUm93Q2xpY2s8VD4gPSAocm93VmFsdWU6IFQpID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG4iXX0=
@@ -16,7 +16,7 @@ let LayoutState = class LayoutState {
16
16
  constructor(mediaMatcher, store) {
17
17
  this.store = store;
18
18
  this.mobileQuerySubject = new Subject();
19
- this.mobileQuery = mediaMatcher.matchMedia('(max-width: 600px)');
19
+ this.mobileQuery = mediaMatcher.matchMedia('(max-width: 640px)');
20
20
  this.mobileQuery.onchange = (event) => this.mobileQuerySubject.next(event.matches);
21
21
  this.mobileQuerySubject
22
22
  .pipe(distinctUntilChanged())
@@ -51,4 +51,4 @@ export { LayoutState };
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LayoutState, decorators: [{
52
52
  type: Injectable
53
53
  }], ctorParameters: () => [{ type: i1.MediaMatcher }, { type: i2.Store }], propDecorators: { updateMobileMode: [] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL2xheW91dC9sYXlvdXQuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBYyxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXRELE1BQU0sT0FBTyxnQkFBZ0I7YUFDWCxTQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFbkQsWUFBbUIsUUFBaUI7UUFBakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUNwQyxDQUFDOztBQVFJLElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7SUFLdEIsWUFBWSxZQUEwQixFQUFVLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBRjNDLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFHM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUEwQixFQUFFLEVBQUUsQ0FDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RSxxRUFBcUU7UUFDckUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQXVCO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXVCO0lBQ2xDLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxHQUFtQyxFQUFFLEVBQUUsUUFBUSxFQUFvQjtRQUNsRixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDOytHQTdCVSxXQUFXO21IQUFYLFdBQVc7O0FBMkJ0QjtJQURDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzttREFHeEI7QUFWTTtJQUROLFFBQVEsRUFBRTtpQ0FHVjtBQXJCVSxXQUFXO0lBTHZCLEtBQUssQ0FBbUI7UUFDdkIsSUFBSSxFQUFFLFFBQVE7UUFDZCxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0tBQzlCLENBQUM7R0FFVyxXQUFXLENBOEJ2Qjs7NEZBOUJZLFdBQVc7a0JBRHZCLFVBQVU7cUdBNEJULGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBOZ3hzT25Jbml0LCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRTdGF0ZU1vZGVsIHtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVNb2JpbGVNb2RlIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xheW91dF0gVXBkYXRlTW9iaWxlTW9kZSc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGlzTW9iaWxlOiBib29sZWFuKSB7XG4gIH1cbn1cblxuQFN0YXRlPExheW91dFN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ2xheW91dCcsXG4gIGRlZmF1bHRzOiB7IGlzTW9iaWxlOiBmYWxzZSB9LFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYXlvdXRTdGF0ZSBpbXBsZW1lbnRzIE5neHNPbkluaXQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlUXVlcnk6IE1lZGlhUXVlcnlMaXN0O1xuICBwcml2YXRlIHJlYWRvbmx5IG1vYmlsZVF1ZXJ5U3ViamVjdCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gICAgdGhpcy5tb2JpbGVRdWVyeSA9IG1lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA2MDBweCknKTtcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5Lm9uY2hhbmdlID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PlxuICAgICAgdGhpcy5tb2JpbGVRdWVyeVN1YmplY3QubmV4dChldmVudC5tYXRjaGVzKTtcblxuICAgIHRoaXMubW9iaWxlUXVlcnlTdWJqZWN0XG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZShpc01vYmlsZSA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVNb2JpbGVNb2RlKGlzTW9iaWxlKSkpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbW9iaWxlIG1vZGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbWVkaWEgcXVlcnkgc3RhdHVzXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vYmlsZVF1ZXJ5U3ViamVjdC5uZXh0KHRoaXMubW9iaWxlUXVlcnkubWF0Y2hlcyksIDApO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGlzTW9iaWxlKHN0YXRlOiBMYXlvdXRTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzTW9iaWxlO1xuICB9XG5cbiAgbmd4c09uSW5pdChjdHg/OiBTdGF0ZUNvbnRleHQ8YW55Pik6IGFueSB7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZU1vYmlsZU1vZGUpXG4gIHVwZGF0ZU1vYmlsZU1vZGUoY3R4OiBTdGF0ZUNvbnRleHQ8TGF5b3V0U3RhdGVNb2RlbD4sIHsgaXNNb2JpbGUgfTogVXBkYXRlTW9iaWxlTW9kZSk6IHZvaWQge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgaXNNb2JpbGUgfSk7XG4gIH1cbn1cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL2xheW91dC9sYXlvdXQuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBYyxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUN2RixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXRELE1BQU0sT0FBTyxnQkFBZ0I7YUFDWCxTQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFbkQsWUFBbUIsUUFBaUI7UUFBakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUNwQyxDQUFDOztBQVFJLElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7SUFLdEIsWUFBWSxZQUEwQixFQUFVLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBRjNDLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFHM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUEwQixFQUFFLEVBQUUsQ0FDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLGtCQUFrQjthQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RSxxRUFBcUU7UUFDckUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQXVCO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXVCO0lBQ2xDLENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxHQUFtQyxFQUFFLEVBQUUsUUFBUSxFQUFvQjtRQUNsRixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDOytHQTdCVSxXQUFXO21IQUFYLFdBQVc7O0FBMkJ0QjtJQURDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzttREFHeEI7QUFWTTtJQUROLFFBQVEsRUFBRTtpQ0FHVjtBQXJCVSxXQUFXO0lBTHZCLEtBQUssQ0FBbUI7UUFDdkIsSUFBSSxFQUFFLFFBQVE7UUFDZCxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0tBQzlCLENBQUM7R0FFVyxXQUFXLENBOEJ2Qjs7NEZBOUJZLFdBQVc7a0JBRHZCLFVBQVU7cUdBNEJULGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBOZ3hzT25Jbml0LCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRTdGF0ZU1vZGVsIHtcbiAgaXNNb2JpbGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVNb2JpbGVNb2RlIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW0xheW91dF0gVXBkYXRlTW9iaWxlTW9kZSc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGlzTW9iaWxlOiBib29sZWFuKSB7XG4gIH1cbn1cblxuQFN0YXRlPExheW91dFN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ2xheW91dCcsXG4gIGRlZmF1bHRzOiB7IGlzTW9iaWxlOiBmYWxzZSB9LFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYXlvdXRTdGF0ZSBpbXBsZW1lbnRzIE5neHNPbkluaXQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlUXVlcnk6IE1lZGlhUXVlcnlMaXN0O1xuICBwcml2YXRlIHJlYWRvbmx5IG1vYmlsZVF1ZXJ5U3ViamVjdCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsIHByaXZhdGUgc3RvcmU6IFN0b3JlKSB7XG4gICAgdGhpcy5tb2JpbGVRdWVyeSA9IG1lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA2NDBweCknKTtcbiAgICB0aGlzLm1vYmlsZVF1ZXJ5Lm9uY2hhbmdlID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PlxuICAgICAgdGhpcy5tb2JpbGVRdWVyeVN1YmplY3QubmV4dChldmVudC5tYXRjaGVzKTtcblxuICAgIHRoaXMubW9iaWxlUXVlcnlTdWJqZWN0XG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZShpc01vYmlsZSA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBVcGRhdGVNb2JpbGVNb2RlKGlzTW9iaWxlKSkpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbW9iaWxlIG1vZGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbWVkaWEgcXVlcnkgc3RhdHVzXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1vYmlsZVF1ZXJ5U3ViamVjdC5uZXh0KHRoaXMubW9iaWxlUXVlcnkubWF0Y2hlcyksIDApO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGlzTW9iaWxlKHN0YXRlOiBMYXlvdXRTdGF0ZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmlzTW9iaWxlO1xuICB9XG5cbiAgbmd4c09uSW5pdChjdHg/OiBTdGF0ZUNvbnRleHQ8YW55Pik6IGFueSB7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZU1vYmlsZU1vZGUpXG4gIHVwZGF0ZU1vYmlsZU1vZGUoY3R4OiBTdGF0ZUNvbnRleHQ8TGF5b3V0U3RhdGVNb2RlbD4sIHsgaXNNb2JpbGUgfTogVXBkYXRlTW9iaWxlTW9kZSk6IHZvaWQge1xuICAgIGN0eC5wYXRjaFN0YXRlKHsgaXNNb2JpbGUgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Injectable, signal } from '@angular/core';
2
2
  import { MatDialogState } from '@angular/material/dialog';
3
- import { of, tap } from 'rxjs';
3
+ import { map, of, tap } from 'rxjs';
4
4
  import { CloudConfirmDialogComponent } from '../components/cloud-confirm-dialog/cloud-confirm-dialog.component';
5
5
  import { Localization } from '../enums/localization.enum';
6
6
  import * as i0 from "@angular/core";
@@ -15,7 +15,8 @@ export class CanDeactivateService {
15
15
  canDeactivate() {
16
16
  const isDialogClosed = this.isDialogClosed();
17
17
  if (this.hasUnsavedChanges() && isDialogClosed) {
18
- return this.displayDialog().pipe(tap(value => {
18
+ // X and Esc close the dialog without a result: stay, like Cancel.
19
+ return this.displayDialog().pipe(map(value => value === true), tap(value => {
19
20
  if (value) {
20
21
  this.hasUnsavedChanges.set(false);
21
22
  }
@@ -46,4 +47,4 @@ export class CanDeactivateService {
46
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CanDeactivateService, decorators: [{
47
48
  type: Injectable
48
49
  }], ctorParameters: () => [{ type: i1.ModalService }, { type: i2.TranslateService }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRlYWN0aXZhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvY2FuLWRlYWN0aXZhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUcxRCxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLFlBQW9CLFlBQTBCLEVBQVUsZ0JBQWtDO1FBQXRFLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUZuRixzQkFBaUIsR0FBNEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBR2xFLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksY0FBYyxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsMkVBQTJFO1FBQzNFLHdFQUF3RTtRQUN4RSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFVLDJCQUEyQixFQUFFO1lBQ2xFLElBQUksRUFBRTtnQkFDSixlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNuRixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7YUFDaEY7WUFDRCxVQUFVLEVBQUUsZUFBZTtZQUMzQixFQUFFLEVBQUUsaUJBQWlCO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDcEQsQ0FBQzsrR0FyQ1Usb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4vbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYW5EZWFjdGl2YXRlU2VydmljZSB7XG5cbiAgcHVibGljIGhhc1Vuc2F2ZWRDaGFuZ2VzOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gIH1cblxuICBjYW5EZWFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGlzRGlhbG9nQ2xvc2VkID0gdGhpcy5pc0RpYWxvZ0Nsb3NlZCgpO1xuICAgIGlmICh0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgJiYgaXNEaWFsb2dDbG9zZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlEaWFsb2coKS5waXBlKHRhcCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHRoaXMuaGFzVW5zYXZlZENoYW5nZXMuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8vIGFsbG93IHRvIGRlYWN0aXZhdGUgd2hlbjpcbiAgICAvLyB0aGUgdW5zYXZlZC1jaGFuZ2VzIGRpYWxvZyBpcyBub3QgY2xvc2VkIGFuZCB1c2VyIGNsaWNrIG9uIFggdG8gY2xvc2UgaXRcbiAgICAvLyB0aGUgdW5zYXZlZC1jaGFuZ2VzIGRpYWxvZyBpcyBjbG9zZWQgYnV0IHRoZXJlIGFyZSBubyB1bnNhdmVkIGNoYW5nZXNcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlEaWFsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW48Ym9vbGVhbj4oQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbmZpcm1NZXNzYWdlczogW3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi51bnNhdmVkX2NoYW5nZXNfYm9keSldLFxuICAgICAgICBjb25maXJtVGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi51bnNhdmVkX2NoYW5nZXNfdGl0bGUpLFxuICAgICAgfSxcbiAgICAgIHBhbmVsQ2xhc3M6ICd0Yi1tb2RhbC1iYXNlJyxcbiAgICAgIGlkOiAndW5zYXZlZC1jaGFuZ2VzJ1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RpYWxvZ0Nsb3NlZCgpIHtcbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLm1vZGFsU2VydmljZS5nZXRPcGVuRGlhbG9ncygpLmZpbmQoZGlhbG9nID0+IGRpYWxvZy5pZCA9PT0gJ3Vuc2F2ZWQtY2hhbmdlcycpO1xuICAgIHJldHVybiBkaWFsb2c/LmdldFN0YXRlKCkgIT09IE1hdERpYWxvZ1N0YXRlLk9QRU47XG4gIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRlYWN0aXZhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvY2FuLWRlYWN0aXZhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFHMUQsTUFBTSxPQUFPLG9CQUFvQjtJQUkvQixZQUFvQixZQUEwQixFQUFVLGdCQUFrQztRQUF0RSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFGbkYsc0JBQWlCLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUdsRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQy9DLGtFQUFrRTtZQUNsRSxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekUsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsMkVBQTJFO1FBQzNFLHdFQUF3RTtRQUN4RSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU8sYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFVLDJCQUEyQixFQUFFO1lBQ2xFLElBQUksRUFBRTtnQkFDSixlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNuRixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7YUFDaEY7WUFDRCxVQUFVLEVBQUUsZUFBZTtZQUMzQixFQUFFLEVBQUUsaUJBQWlCO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDcEQsQ0FBQzsrR0F0Q1Usb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBtYXAsIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IENsb3VkQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY2xvdWQtY29uZmlybS1kaWFsb2cvY2xvdWQtY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbkRlYWN0aXZhdGVTZXJ2aWNlIHtcblxuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXM6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgfVxuXG4gIGNhbkRlYWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgaXNEaWFsb2dDbG9zZWQgPSB0aGlzLmlzRGlhbG9nQ2xvc2VkKCk7XG4gICAgaWYgKHRoaXMuaGFzVW5zYXZlZENoYW5nZXMoKSAmJiBpc0RpYWxvZ0Nsb3NlZCkge1xuICAgICAgLy8gWCBhbmQgRXNjIGNsb3NlIHRoZSBkaWFsb2cgd2l0aG91dCBhIHJlc3VsdDogc3RheSwgbGlrZSBDYW5jZWwuXG4gICAgICByZXR1cm4gdGhpcy5kaXNwbGF5RGlhbG9nKCkucGlwZShtYXAodmFsdWUgPT4gdmFsdWUgPT09IHRydWUpLCB0YXAodmFsdWUgPT4ge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyB0byBkZWFjdGl2YXRlIHdoZW46XG4gICAgLy8gdGhlIHVuc2F2ZWQtY2hhbmdlcyBkaWFsb2cgaXMgbm90IGNsb3NlZCBhbmQgdXNlciBjbGljayBvbiBYIHRvIGNsb3NlIGl0XG4gICAgLy8gdGhlIHVuc2F2ZWQtY2hhbmdlcyBkaWFsb2cgaXMgY2xvc2VkIGJ1dCB0aGVyZSBhcmUgbm8gdW5zYXZlZCBjaGFuZ2VzXG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5RGlhbG9nKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGFsU2VydmljZS5vcGVuPGJvb2xlYW4+KENsb3VkQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICBjb25maXJtTWVzc2FnZXM6IFt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24udW5zYXZlZF9jaGFuZ2VzX2JvZHkpXSxcbiAgICAgICAgY29uZmlybVRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24udW5zYXZlZF9jaGFuZ2VzX3RpdGxlKSxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAndGItbW9kYWwtYmFzZScsXG4gICAgICBpZDogJ3Vuc2F2ZWQtY2hhbmdlcydcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEaWFsb2dDbG9zZWQoKSB7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5tb2RhbFNlcnZpY2UuZ2V0T3BlbkRpYWxvZ3MoKS5maW5kKGRpYWxvZyA9PiBkaWFsb2cuaWQgPT09ICd1bnNhdmVkLWNoYW5nZXMnKTtcbiAgICByZXR1cm4gZGlhbG9nPy5nZXRTdGF0ZSgpICE9PSBNYXREaWFsb2dTdGF0ZS5PUEVOO1xuICB9XG59XG4iXX0=
@@ -5,6 +5,58 @@ import { finalize, take, takeUntil } from 'rxjs/operators';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/material/dialog";
7
7
  import * as i2 from "@angular/material/snack-bar";
8
+ const FOCUSABLE = 'input:not([type=hidden]), select, textarea, button, [tabindex]:not([tabindex="-1"])';
9
+ const isShown = (el) => el.getClientRects().length > 0;
10
+ /** Focuses the first visible invalid field in `container`, else its first error message; false when there is neither. */
11
+ export function focusFirstProblem(container) {
12
+ if (focusFirstInvalidField(container)) {
13
+ return true;
14
+ }
15
+ // A rule over several fields (one of Card, Car Plate or Mobile) marks no single field: read its message.
16
+ const message = Array.from(container.querySelectorAll('[role="alert"]')).find((el) => isShown(el) && !el.closest('mat-dialog-actions'));
17
+ if (!message) {
18
+ return false;
19
+ }
20
+ message.tabIndex = -1;
21
+ message.focus();
22
+ return true;
23
+ }
24
+ /** As focusFirstProblem; when the open tab has none but the form is invalid, opens the first other tab that has one. */
25
+ export async function focusFirstProblemInTabs(container, settle = () => new Promise((resolve) => setTimeout(resolve, 300))) {
26
+ if (focusFirstProblem(container)) {
27
+ return true;
28
+ }
29
+ // Valid form = a save in progress: never flip through its tabs.
30
+ if (!container.querySelector('.ng-invalid, [aria-invalid="true"]')) {
31
+ return false;
32
+ }
33
+ const tabs = Array.from(container.querySelectorAll('[role="tab"]'));
34
+ const current = tabs.find((tab) => tab.getAttribute('aria-selected') === 'true');
35
+ for (const tab of tabs.filter((t) => t !== current)) {
36
+ tab.click();
37
+ await settle();
38
+ if (focusFirstProblem(container)) {
39
+ return true;
40
+ }
41
+ }
42
+ current?.click();
43
+ return false;
44
+ }
45
+ /** Focuses the first visible invalid field in `container`; false when there is none. */
46
+ export function focusFirstInvalidField(container) {
47
+ for (const el of Array.from(container.querySelectorAll('.ng-invalid, [aria-invalid="true"]'))) {
48
+ // A form or group is invalid because of a field inside it: that field comes next in page order.
49
+ if (el.matches('form, [formGroupName], [formgroupname], [formGroup], [formgroup], [formArrayName], [formarrayname]')) {
50
+ continue;
51
+ }
52
+ const target = el.matches(FOCUSABLE) ? el : el.querySelector(FOCUSABLE);
53
+ if (target && isShown(target) && !target.closest('[inert]')) {
54
+ target.focus();
55
+ return true;
56
+ }
57
+ }
58
+ return false;
59
+ }
8
60
  const Z_INDEX_FRONT = '1000';
9
61
  const Z_INDEX_BACK = '999';
10
62
  export class ModalService {
@@ -29,6 +81,8 @@ export class ModalService {
29
81
  const dialogRef = this.dialog.open(modalComponent, this.buildDialogConfig(modalConfig));
30
82
  this.createBackdrop(dialogRef.id);
31
83
  this.attachButtonWrapper(dialogRef, modalConfig);
84
+ this.closeOnEscape(dialogRef);
85
+ this.keepFocusInDialog(dialogRef);
32
86
  // take(1), not first(): router teardown can complete these subjects without ever emitting,
33
87
  // and first() turns that benign completion into an unhandled EmptyError (SPRK3-14821).
34
88
  //
@@ -184,6 +238,45 @@ export class ModalService {
184
238
  }
185
239
  });
186
240
  }
241
+ // Esc does what the dialog's X does; a dialog without an X stays open. Listened on the dialog itself:
242
+ // the overlay keyboard dispatcher gives keys only to the top overlay, often a tooltip left on the opener.
243
+ closeOnEscape(dialogRef) {
244
+ dialogRef.afterOpened().pipe(take(1)).subscribe(() => {
245
+ const container = document.getElementById(dialogRef.id);
246
+ container?.addEventListener('keydown', (event) => {
247
+ if (event.key === 'Escape' && !event.defaultPrevented) {
248
+ container.querySelector('.modal-close-icon')?.click();
249
+ }
250
+ });
251
+ });
252
+ }
253
+ // A wizard swaps Next for Save (or drops Back on the first step) under the keyboard focus; the browser
254
+ // then drops focus to <body>, outside the dialog, where Tab and Esc no longer reach it.
255
+ keepFocusInDialog(dialogRef) {
256
+ dialogRef.afterOpened().pipe(take(1)).subscribe(() => {
257
+ const container = document.getElementById(dialogRef.id);
258
+ if (!container) {
259
+ return;
260
+ }
261
+ let focused = null;
262
+ container.addEventListener('focusin', (event) => (focused = event.target));
263
+ const observer = new MutationObserver(() => {
264
+ if (focused && !focused.isConnected && (!document.activeElement || document.activeElement === document.body)) {
265
+ focused = null;
266
+ (container.querySelector('mat-dialog-actions .tb-primary-button:not([disabled])') ?? container).focus();
267
+ }
268
+ });
269
+ // Create / Next / Save pressed but the dialog stayed on an invalid form: take the keyboard to the problem.
270
+ container.addEventListener('click', (event) => {
271
+ const button = event.target.closest('mat-dialog-actions .tb-primary-button');
272
+ if (button) {
273
+ setTimeout(() => document.activeElement === button && focusFirstProblemInTabs(container));
274
+ }
275
+ });
276
+ observer.observe(container, { childList: true, subtree: true });
277
+ dialogRef.afterClosed().pipe(take(1)).subscribe(() => observer.disconnect());
278
+ });
279
+ }
187
280
  detachButtonWrapper(dialogId) {
188
281
  const ref = this._buttonWrapperRefs[dialogId];
189
282
  if (ref) {
@@ -199,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
199
292
  type: Injectable,
200
293
  args: [{ providedIn: 'root' }]
201
294
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.MatSnackBar }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }] });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdDLGVBQWUsRUFBd0MsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBYSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUczRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFDN0IsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBRzNCLE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQ1UsTUFBaUIsRUFDakIsUUFBcUIsRUFDckIsTUFBc0IsRUFDdEIsbUJBQXdDO1FBSHhDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBVDFDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwQyx1QkFBa0IsR0FBc0MsRUFBRSxDQUFDO1FBQzNELGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBYSxFQUFFLENBQUM7SUFPNUIsQ0FBQztJQUVMLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLENBQWEsY0FB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UmVmLCBDb21wb25lbnRSZWYsIGNyZWF0ZUNvbXBvbmVudCwgRW1iZWRkZWRWaWV3UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUaWJhTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aWJhLW1hdC1kaWFsb2ctY29uZmlnLmludGVyZmFjZSc7XG5cbmNvbnN0IFpfSU5ERVhfRlJPTlQgPSAnMTAwMCc7XG5jb25zdCBaX0lOREVYX0JBQ0sgPSAnOTk5JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgX21vZGFsT3BlbmVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2J1dHRvbldyYXBwZXJSZWZzOiBSZWNvcmQ8c3RyaW5nLCBDb21wb25lbnRSZWY8YW55Pj4gPSB7fTtcbiAgcHJpdmF0ZSBfbWluaW1pemVkSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9vcGVuSWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvclxuICApIHsgfVxuXG4gIG9uTW9kYWxPcGVuZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGFsT3BlbmVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldE9wZW5EaWFsb2dzKCkge1xuICAgIHJldHVybiB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncztcbiAgfVxuXG4gIG9wZW48VCwgSiA9IGFueT4obW9kYWxDb21wb25lbnQ6IFR5cGU8YW55PiwgbW9kYWxDb25maWc/OiBUaWJhTWF0RGlhbG9nQ29uZmlnPEo+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgdGhpcy5zbmFja0Jhci5kaXNtaXNzKCk7XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKG1vZGFsQ29tcG9uZW50LCB0aGlzLmJ1aWxkRGlhbG9nQ29uZmlnKG1vZGFsQ29uZmlnKSk7XG4gICAgdGhpcy5jcmVhdGVCYWNrZHJvcChkaWFsb2dSZWYuaWQpO1xuICAgIHRoaXMuYXR0YWNoQnV0dG9uV3JhcHBlcihkaWFsb2dSZWYsIG1vZGFsQ29uZmlnKTtcblxuICAgIC8vIHRha2UoMSksIG5vdCBmaXJzdCgpOiByb3V0ZXIgdGVhcmRvd24gY2FuIGNvbXBsZXRlIHRoZXNlIHN1YmplY3RzIHdpdGhvdXQgZXZlciBlbWl0dGluZyxcbiAgICAvLyBhbmQgZmlyc3QoKSB0dXJucyB0aGF0IGJlbmlnbiBjb21wbGV0aW9uIGludG8gYW4gdW5oYW5kbGVkIEVtcHR5RXJyb3IgKFNQUkszLTE0ODIxKS5cbiAgICAvL1xuICAgIC8vIGFmdGVyT3BlbmVkIHJ1bnMgaXRzIGJvb2trZWVwaW5nIG9uIGVtaXNzaW9uIG9ubHkg4oCUIGEgZGlhbG9nIHRoYXQgbmV2ZXIgb3BlbmVkIG11c3Qgbm90IGJlXG4gICAgLy8gdHJhY2tlZCBhcyBvcGVuLiBhZnRlckNsb3NlZCBydW5zIGl0cyB0ZWFyZG93biBmcm9tIGZpbmFsaXplIGluc3RlYWQsIHNvIHRoZSBiYWNrZHJvcCBhbmRcbiAgICAvLyB0aGUgYnV0dG9uIHdyYXBwZXIgYXJlIGNsZWFuZWQgdXAgd2hldGhlciB0aGUgZGlhbG9nIGNsb3NlZCBub3JtYWxseSBvciB3YXMgZGlzcG9zZWRcbiAgICAvLyBiZWZvcmUgaXQgZXZlciBlbWl0dGVkOyB0aGUgYmFja2Ryb3AgbGl2ZXMgb24gLmNkay1vdmVybGF5LWNvbnRhaW5lciwgb3V0c2lkZSB0aGUgZGlhbG9nJ3NcbiAgICAvLyBvd24gb3ZlcmxheSBwYW5lLCBzbyBub3RoaW5nIGVsc2UgcmVtb3ZlcyBpdC5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJPcGVuZWQoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmFmdGVyT3BlbmVkKGRpYWxvZ1JlZikpO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnBpcGUodGFrZSgxKSwgZmluYWxpemUoKCkgPT4gdGhpcy5hZnRlckNsb3NlZChkaWFsb2dSZWYpKSkuc3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpO1xuICB9XG5cbiAgY2xvc2VBbGwoeyBleGNsdWRlTWluaW1pemVkID0gdHJ1ZSB9ID0ge30pIHtcbiAgICBpZiAoZXhjbHVkZU1pbmltaXplZCkge1xuICAgICAgZm9yIChjb25zdCBvcGVuRGlhbG9nIG9mIHRoaXMuZ2V0T3BlbkRpYWxvZ3MoKSkge1xuICAgICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbb3BlbkRpYWxvZy5pZF07XG4gICAgICAgIGlmICghd3JhcHBlciB8fCAhd3JhcHBlci5pbnN0YW5jZS5pc01pbmltaXplZCkge1xuICAgICAgICAgIG9wZW5EaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIGRpc2FibGVDbG9zZShkaXNhYmxlOiBib29sZWFuLCBkaWFsb2dJZDogbnVtYmVyID0gMCkge1xuICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzW2RpYWxvZ0lkXS5kaXNhYmxlQ2xvc2UgPSBkaXNhYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBhZnRlck9wZW5lZDxULCBSPihkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxULCBSPikge1xuICAgIHRoaXMudHJhY2tNb2RhbChkaWFsb2dSZWYuaWQpO1xuICAgIHRoaXMuc2V0VG9wTW9kYWwoZGlhbG9nUmVmLmlkKTtcbiAgICB0aGlzLnJlcG9zaXRpb25NaW5pbWl6ZWRNb2RhbHMoKTtcbiAgICB0aGlzLl9tb2RhbE9wZW5lZCQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZnRlckNsb3NlZDxULCBSPihkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxULCBSPikge1xuICAgIHRoaXMudW50cmFja01vZGFsKGRpYWxvZ1JlZi5pZCk7XG4gICAgY29uc3QgbmV3VG9wSWQgPSB0aGlzLl9vcGVuSWRzW3RoaXMuX29wZW5JZHMubGVuZ3RoIC0gMV07XG4gICAgaWYgKG5ld1RvcElkKSB7XG4gICAgICB0aGlzLnNldFRvcE1vZGFsKG5ld1RvcElkKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvc2l0aW9uTWluaW1pemVkTW9kYWxzKGRpYWxvZ1JlZi5pZCk7XG4gICAgdGhpcy5kZXN0cm95QmFja2Ryb3AoZGlhbG9nUmVmLmlkKTtcbiAgICB0aGlzLmRldGFjaEJ1dHRvbldyYXBwZXIoZGlhbG9nUmVmLmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhY2tNb2RhbChkaWFsb2dJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3Blbklkcy5wdXNoKGRpYWxvZ0lkKTtcbiAgfVxuXG4gIHByaXZhdGUgdW50cmFja01vZGFsKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9vcGVuSWRzID0gdGhpcy5fb3Blbklkcy5maWx0ZXIoaWQgPT4gaWQgIT09IGRpYWxvZ0lkKTtcbiAgfVxuXG4gIHByaXZhdGUgYmFja2Ryb3BJZChkaWFsb2dJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2JhY2tkcm9wLScgKyBkaWFsb2dJZDtcbiAgfVxuXG4gIC8vIFJlbGllcyBvbiB0aGUgQ0RLLWludGVybmFsICcuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXInIGNsYXNzIGFkZGVkIGJ5IE1hdERpYWxvZzsgbWF5IGJyZWFrIG9uIEFuZ3VsYXIgTWF0ZXJpYWwgdXBncmFkZXMuXG4gIHByaXZhdGUgZ2V0V3JhcHBlcihkaWFsb2dJZDogc3RyaW5nKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBkaWFsb2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpYWxvZ0lkKTtcbiAgICByZXR1cm4gZGlhbG9nRWwgPyBkaWFsb2dFbC5jbG9zZXN0PEhUTUxFbGVtZW50PignLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyJykgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUb3BNb2RhbChkaWFsb2dJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fb3Blbklkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmdldFdyYXBwZXIoaWQpO1xuICAgICAgY29uc3QgYmFja2Ryb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmJhY2tkcm9wSWQoaWQpKTtcbiAgICAgIGlmIChpZCA9PT0gZGlhbG9nSWQpIHtcbiAgICAgICAgaWYgKHdyYXBwZXIpIHdyYXBwZXIuc3R5bGUuekluZGV4ID0gWl9JTkRFWF9GUk9OVDtcbiAgICAgICAgaWYgKGJhY2tkcm9wKSBiYWNrZHJvcC5zdHlsZS56SW5kZXggPSBaX0lOREVYX0JBQ0s7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAod3JhcHBlcikgd3JhcHBlci5zdHlsZS56SW5kZXggPSBaX0lOREVYX0JBQ0s7XG4gICAgICAgIGlmIChiYWNrZHJvcCkgYmFja2Ryb3Auc3R5bGUuekluZGV4ID0gWl9JTkRFWF9CQUNLO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtaW5pbWl6ZShkaWFsb2dJZDogc3RyaW5nKSB7XG4gICAgdGhpcy51bnRyYWNrTW9kYWwoZGlhbG9nSWQpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYmFja2Ryb3BJZChkaWFsb2dJZCkpPy5jbGFzc0xpc3QuYWRkKCd0Yi1kLW5vbmUnKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaWFsb2dJZCk/LmNsYXNzTGlzdC5hZGQoJ21pbmltaXplJyk7XG4gICAgdGhpcy5fbWluaW1pemVkSWRzLnB1c2goZGlhbG9nSWQpO1xuICAgIGNvbnN0IG5ld1RvcElkID0gdGhpcy5fb3Blbklkc1t0aGlzLl9vcGVuSWRzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChuZXdUb3BJZCkge1xuICAgICAgdGhpcy5zZXRUb3BNb2RhbChuZXdUb3BJZCk7XG4gICAgfVxuICAgIHRoaXMucmVwb3NpdGlvbk1pbmltaXplZE1vZGFscygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXhpbWl6ZShkaWFsb2dJZDogc3RyaW5nKSB7XG4gICAgdGhpcy50cmFja01vZGFsKGRpYWxvZ0lkKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmJhY2tkcm9wSWQoZGlhbG9nSWQpKS5jbGFzc0xpc3QucmVtb3ZlKCd0Yi1kLW5vbmUnKTtcbiAgICB0aGlzLnNldFRvcE1vZGFsKGRpYWxvZ0lkKTtcbiAgICBjb25zdCBkaWFsb2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpYWxvZ0lkKTtcbiAgICBkaWFsb2dFbC5jbGFzc0xpc3QucmVtb3ZlKCdtaW5pbWl6ZScpO1xuICAgIGRpYWxvZ0VsLnN0eWxlLmJvdHRvbSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlcG9zaXRpb25NaW5pbWl6ZWRNb2RhbHMoZGlhbG9nSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBvc2l0aW9uTWluaW1pemVkTW9kYWxzKHJlbW92ZWRJZD86IHN0cmluZykge1xuICAgIHRoaXMuX21pbmltaXplZElkcyA9IHRoaXMuX21pbmltaXplZElkcy5maWx0ZXIoaWQgPT4gaWQgIT09IHJlbW92ZWRJZCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9taW5pbWl6ZWRJZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5fbWluaW1pemVkSWRzW2ldKTtcbiAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgIGVsLnN0eWxlLmJvdHRvbSA9ICcxMHB4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZXZFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX21pbmltaXplZElkc1tpIC0gMV0pO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBwcmV2RWwuY2xpZW50SGVpZ2h0O1xuICAgICAgICBlbC5zdHlsZS5ib3R0b20gPSAoKGhlaWdodCArIDEwKSAqIGkpICsgMTAgKyAncHgnO1xuICAgICAgfVxuICAgICAgZWwuc3R5bGUucmlnaHQgPSAnMTBweCc7XG4gICAgICBjb25zdCBtaW5pbWl6ZUljb25FbCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJy5tb2RhbC1taW5pbWl6ZS1pY29uJyk7XG4gICAgICBpZiAodGhpcy5fb3Blbklkcy5sZW5ndGggJiYgaSAhPT0gMCkge1xuICAgICAgICBtaW5pbWl6ZUljb25FbC5jbGFzc0xpc3QuYWRkKCd0Yi1hY3Rpb24tZGlzYWJsZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltaXplSWNvbkVsLmNsYXNzTGlzdC5yZW1vdmUoJ3RiLWFjdGlvbi1kaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREaWFsb2dDb25maWc8Sj4obW9kYWxDb25maWc/OiBUaWJhTWF0RGlhbG9nQ29uZmlnPEo+KTogTWF0RGlhbG9nQ29uZmlnIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKG5ldyBNYXREaWFsb2dDb25maWcoKSwgbW9kYWxDb25maWcpO1xuICAgIGNvbmZpZy5kaXNhYmxlQ2xvc2UgPSBtb2RhbENvbmZpZz8uZGlzYWJsZUNsb3NlICE9PSBmYWxzZTtcbiAgICBjb25maWcuaGFzQmFja2Ryb3AgPSBmYWxzZTtcbiAgICBjb25maWcuYXV0b0ZvY3VzID0gbW9kYWxDb25maWc/LmF1dG9Gb2N1cyAhPT0gZmFsc2U7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQmFja2Ryb3AoZGlhbG9nSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGJhY2tkcm9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYmFja2Ryb3AuY2xhc3NMaXN0LmFkZCgndGItb3ZlcmxheS1iYWNrZHJvcCcpO1xuICAgIGJhY2tkcm9wLmlkID0gdGhpcy5iYWNrZHJvcElkKGRpYWxvZ0lkKTtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2RrLW92ZXJsYXktY29udGFpbmVyJykuYXBwZW5kKGJhY2tkcm9wKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveUJhY2tkcm9wKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmJhY2tkcm9wSWQoZGlhbG9nSWQpKT8ucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEJ1dHRvbldyYXBwZXI8VCwgUj4oZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VCwgUj4sIG1vZGFsQ29uZmlnPzogVGliYU1hdERpYWxvZ0NvbmZpZzxUPikge1xuICAgIGNvbnN0IGRpYWxvZ0lkID0gZGlhbG9nUmVmLmlkO1xuICAgIGltcG9ydCgnLi4vY29tcG9uZW50cy9tb2RhbC1idXR0b25zLXdyYXBwZXIvbW9kYWwtYnV0dG9ucy13cmFwcGVyLmNvbXBvbmVudCcpLnRoZW4ocmVzID0+IHtcbiAgICAgIGlmICghdGhpcy5kaWFsb2cuZ2V0RGlhbG9nQnlJZChkaWFsb2dJZCkpIHJldHVybjtcblxuICAgICAgdGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbZGlhbG9nSWRdID0gY3JlYXRlQ29tcG9uZW50KHJlcy5Nb2RhbEJ1dHRvbnNXcmFwcGVyQ29tcG9uZW50LCB7IGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuZW52aXJvbm1lbnRJbmplY3RvciB9KTtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbZGlhbG9nSWRdLmluc3RhbmNlO1xuXG4gICAgICBpbnN0YW5jZS5jbG9zZS5waXBlKHRha2VVbnRpbChpbnN0YW5jZS5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiBkaWFsb2dSZWYuY2xvc2UoKSk7XG4gICAgICBpbnN0YW5jZS5taW5pbWl6ZS5waXBlKHRha2VVbnRpbChpbnN0YW5jZS5kZXN0cm95JCkpLnN1YnNjcmliZSgoaXNNaW5pbWl6ZTogYm9vbGVhbikgPT5cbiAgICAgICAgaXNNaW5pbWl6ZSA/IHRoaXMubWluaW1pemUoZGlhbG9nSWQpIDogdGhpcy5tYXhpbWl6ZShkaWFsb2dJZClcbiAgICAgICk7XG4gICAgICBpbnN0YW5jZS5lbmFibGVkTWluaW1pemVkID0gbW9kYWxDb25maWc/LmVuYWJsZWRNaW5pbWl6ZWQ7XG5cbiAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbZGlhbG9nSWRdLmhvc3RWaWV3KTtcbiAgICAgIGNvbnN0IGRvbUVsID0gKHRoaXMuX2J1dHRvbldyYXBwZXJSZWZzW2RpYWxvZ0lkXS5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgcGFuZWxDbGFzcyA9IG1vZGFsQ29uZmlnPy5wYW5lbENsYXNzO1xuICAgICAgY29uc3QgcGFuZWxTZWxlY3RvciA9IEFycmF5LmlzQXJyYXkocGFuZWxDbGFzcylcbiAgICAgICAgPyBwYW5lbENsYXNzLm1hcChjID0+IGAuJHtjfWApLmpvaW4oJycpXG4gICAgICAgIDogcGFuZWxDbGFzcyA/IGAuJHtwYW5lbENsYXNzfWAgOiBudWxsO1xuICAgICAgaWYgKHBhbmVsU2VsZWN0b3IpIHtcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgJHtwYW5lbFNlbGVjdG9yfSAubW9kYWwtYnV0dG9uLXdyYXBwZXJgKT8uYXBwZW5kQ2hpbGQoZG9tRWwpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hCdXR0b25XcmFwcGVyKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLl9idXR0b25XcmFwcGVyUmVmc1tkaWFsb2dJZF07XG4gICAgaWYgKHJlZikge1xuICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhyZWYuaG9zdFZpZXcpO1xuICAgICAgcmVmLmRlc3Ryb3koKTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9idXR0b25XcmFwcGVyUmVmc1tkaWFsb2dJZF07XG4gICAgfVxuICB9XG59XG4iXX0=
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvc2VydmljZXMvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdDLGVBQWUsRUFBd0MsVUFBVSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBYSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUczRCxNQUFNLFNBQVMsR0FBRyxxRkFBcUYsQ0FBQztBQUN4RyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFcEUseUhBQXlIO0FBQ3pILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxTQUFzQjtJQUN0RCxJQUFJLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QseUdBQXlHO0lBQ3pHLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFjLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ3JKLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sQ0FB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QWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7K0dBdlBVLFlBQVk7bUhBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRSZWYsIGNyZWF0ZUNvbXBvbmVudCwgRW1iZWRkZWRWaWV3UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUaWJhTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90aWJhLW1hdC1kaWFsb2ctY29uZmlnLmludGVyZmFjZSc7XG5cbmNvbnN0IEZPQ1VTQUJMRSA9ICdpbnB1dDpub3QoW3R5cGU9aGlkZGVuXSksIHNlbGVjdCwgdGV4dGFyZWEsIGJ1dHRvbiwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJztcbmNvbnN0IGlzU2hvd24gPSAoZWw6IEhUTUxFbGVtZW50KSA9PiBlbC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCA+IDA7XG5cbi8qKiBGb2N1c2VzIHRoZSBmaXJzdCB2aXNpYmxlIGludmFsaWQgZmllbGQgaW4gYGNvbnRhaW5lcmAsIGVsc2UgaXRzIGZpcnN0IGVycm9yIG1lc3NhZ2U7IGZhbHNlIHdoZW4gdGhlcmUgaXMgbmVpdGhlci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c0ZpcnN0UHJvYmxlbShjb250YWluZXI6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmIChmb2N1c0ZpcnN0SW52YWxpZEZpZWxkKGNvbnRhaW5lcikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBBIHJ1bGUgb3ZlciBzZXZlcmFsIGZpZWxkcyAob25lIG9mIENhcmQsIENhciBQbGF0ZSBvciBNb2JpbGUpIG1hcmtzIG5vIHNpbmdsZSBmaWVsZDogcmVhZCBpdHMgbWVzc2FnZS5cbiAgY29uc3QgbWVzc2FnZSA9IEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbcm9sZT1cImFsZXJ0XCJdJykpLmZpbmQoKGVsKSA9PiBpc1Nob3duKGVsKSAmJiAhZWwuY2xvc2VzdCgnbWF0LWRpYWxvZy1hY3Rpb25zJykpO1xuICBpZiAoIW1lc3NhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgbWVzc2FnZS50YWJJbmRleCA9IC0xO1xuICBtZXNzYWdlLmZvY3VzKCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQXMgZm9jdXNGaXJzdFByb2JsZW07IHdoZW4gdGhlIG9wZW4gdGFiIGhhcyBub25lIGJ1dCB0aGUgZm9ybSBpcyBpbnZhbGlkLCBvcGVucyB0aGUgZmlyc3Qgb3RoZXIgdGFiIHRoYXQgaGFzIG9uZS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmb2N1c0ZpcnN0UHJvYmxlbUluVGFicyhcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgc2V0dGxlOiAoKSA9PiBQcm9taXNlPHVua25vd24+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMzAwKSksXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKGZvY3VzRmlyc3RQcm9ibGVtKGNvbnRhaW5lcikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBWYWxpZCBmb3JtID0gYSBzYXZlIGluIHByb2dyZXNzOiBuZXZlciBmbGlwIHRocm91Z2ggaXRzIHRhYnMuXG4gIGlmICghY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5uZy1pbnZhbGlkLCBbYXJpYS1pbnZhbGlkPVwidHJ1ZVwiXScpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHRhYnMgPSBBcnJheS5mcm9tKGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignW3JvbGU9XCJ0YWJcIl0nKSk7XG4gIGNvbnN0IGN1cnJlbnQgPSB0YWJzLmZpbmQoKHRhYikgPT4gdGFiLmdldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcpID09PSAndHJ1ZScpO1xuICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJzLmZpbHRlcigodCkgPT4gdCAhPT0gY3VycmVudCkpIHtcbiAgICB0YWIuY2xpY2soKTtcbiAgICBhd2FpdCBzZXR0bGUoKTtcbiAgICBpZiAoZm9jdXNGaXJzdFByb2JsZW0oY29udGFpbmVyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIGN1cnJlbnQ/LmNsaWNrKCk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIEZvY3VzZXMgdGhlIGZpcnN0IHZpc2libGUgaW52YWxpZCBmaWVsZCBpbiBgY29udGFpbmVyYDsgZmFsc2Ugd2hlbiB0aGVyZSBpcyBub25lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzRmlyc3RJbnZhbGlkRmllbGQoY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IGVsIG9mIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcubmctaW52YWxpZCwgW2FyaWEtaW52YWxpZD1cInRydWVcIl0nKSkpIHtcbiAgICAvLyBBIGZvcm0gb3IgZ3JvdXAgaXMgaW52YWxpZCBiZWNhdXNlIG9mIGEgZmllbGQgaW5zaWRlIGl0OiB0aGF0IGZpZWxkIGNvbWVzIG5leHQgaW4gcGFnZSBvcmRlci5cbiAgICBpZiAoZWwubWF0Y2hlcygnZm9ybSwgW2Zvcm1Hcm91cE5hbWVdLCBbZm9ybWdyb3VwbmFtZV0sIFtmb3JtR3JvdXBdLCBbZm9ybWdyb3VwXSwgW2Zvcm1BcnJheU5hbWVdLCBbZm9ybWFycmF5bmFtZV0nKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldCA9IGVsLm1hdGNoZXMoRk9DVVNBQkxFKSA/IGVsIDogZWwucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oRk9DVVNBQkxFKTtcbiAgICBpZiAodGFyZ2V0ICYmIGlzU2hvd24odGFyZ2V0KSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJ1tpbmVydF0nKSkge1xuICAgICAgdGFyZ2V0LmZvY3VzKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5jb25zdCBaX0lOREVYX0ZST05UID0gJzEwMDAnO1xuY29uc3QgWl9JTkRFWF9CQUNLID0gJzk5OSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9tb2RhbE9wZW5lZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9idXR0b25XcmFwcGVyUmVmczogUmVjb3JkPHN0cmluZywgQ29tcG9uZW50UmVmPGFueT4+ID0ge307XG4gIHByaXZhdGUgX21pbmltaXplZElkczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfb3Blbklkczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3JcbiAgKSB7IH1cblxuICBvbk1vZGFsT3BlbmVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9tb2RhbE9wZW5lZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXRPcGVuRGlhbG9ncygpIHtcbiAgICByZXR1cm4gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3M7XG4gIH1cblxuICBvcGVuPFQsIEogPSBhbnk+KG1vZGFsQ29tcG9uZW50OiBUeXBlPGFueT4sIG1vZGFsQ29uZmlnPzogVGliYU1hdERpYWxvZ0NvbmZpZzxKPik6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMuc25hY2tCYXIuZGlzbWlzcygpO1xuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3Blbihtb2RhbENvbXBvbmVudCwgdGhpcy5idWlsZERpYWxvZ0NvbmZpZyhtb2RhbENvbmZpZykpO1xuICAgIHRoaXMuY3JlYXRlQmFja2Ryb3AoZGlhbG9nUmVmLmlkKTtcbiAgICB0aGlzLmF0dGFjaEJ1dHRvbldyYXBwZXIoZGlhbG9nUmVmLCBtb2RhbENvbmZpZyk7XG4gICAgdGhpcy5jbG9zZU9uRXNjYXBlKGRpYWxvZ1JlZik7XG4gICAgdGhpcy5rZWVwRm9jdXNJbkRpYWxvZyhkaWFsb2dSZWYpO1xuXG4gICAgLy8gdGFrZSgxKSwgbm90IGZpcnN0KCk6IHJvdXRlciB0ZWFyZG93biBjYW4gY29tcGxldGUgdGhlc2Ugc3ViamVjdHMgd2l0aG91dCBldmVyIGVtaXR0aW5nLFxuICAgIC8vIGFuZCBmaXJzdCgpIHR1cm5zIHRoYXQgYmVuaWduIGNvbXBsZXRpb24gaW50byBhbiB1bmhhbmRsZWQgRW1wdHlFcnJvciAoU1BSSzMtMTQ4MjEpLlxuICAgIC8vXG4gICAgLy8gYWZ0ZXJPcGVuZWQgcnVucyBpdHMgYm9va2tlZXBpbmcgb24gZW1pc3Npb24gb25seSDigJQgYSBkaWFsb2cgdGhhdCBuZXZlciBvcGVuZWQgbXVzdCBub3QgYmVcbiAgICAvLyB0cmFja2VkIGFzIG9wZW4uIGFmdGVyQ2xvc2VkIHJ1bnMgaXRzIHRlYXJkb3duIGZyb20gZmluYWxpemUgaW5zdGVhZCwgc28gdGhlIGJhY2tkcm9wIGFuZFxuICAgIC8vIHRoZSBidXR0b24gd3JhcHBlciBhcmUgY2xlYW5lZCB1cCB3aGV0aGVyIHRoZSBkaWFsb2cgY2xvc2VkIG5vcm1hbGx5IG9yIHdhcyBkaXNwb3NlZFxuICAgIC8vIGJlZm9yZSBpdCBldmVyIGVtaXR0ZWQ7IHRoZSBiYWNrZHJvcCBsaXZlcyBvbiAuY2RrLW92ZXJsYXktY29udGFpbmVyLCBvdXRzaWRlIHRoZSBkaWFsb2cnc1xuICAgIC8vIG93biBvdmVybGF5IHBhbmUsIHNvIG5vdGhpbmcgZWxzZSByZW1vdmVzIGl0LlxuICAgIGRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWZ0ZXJPcGVuZWQoZGlhbG9nUmVmKSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkucGlwZSh0YWtlKDEpLCBmaW5hbGl6ZSgoKSA9PiB0aGlzLmFmdGVyQ2xvc2VkKGRpYWxvZ1JlZikpKS5zdWJzY3JpYmUoKTtcbiAgICByZXR1cm4gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCk7XG4gIH1cblxuICBjbG9zZUFsbCh7IGV4Y2x1ZGVNaW5pbWl6ZWQgPSB0cnVlIH0gPSB7fSkge1xuICAgIGlmIChleGNsdWRlTWluaW1pemVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG9wZW5EaWFsb2cgb2YgdGhpcy5nZXRPcGVuRGlhbG9ncygpKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLl9idXR0b25XcmFwcGVyUmVmc1tvcGVuRGlhbG9nLmlkXTtcbiAgICAgICAgaWYgKCF3cmFwcGVyIHx8ICF3cmFwcGVyLmluc3RhbmNlLmlzTWluaW1pemVkKSB7XG4gICAgICAgICAgb3BlbkRpYWxvZy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZUNsb3NlKGRpc2FibGU6IGJvb2xlYW4sIGRpYWxvZ0lkOiBudW1iZXIgPSAwKSB7XG4gICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbZGlhbG9nSWRdLmRpc2FibGVDbG9zZSA9IGRpc2FibGU7XG4gIH1cblxuICBwcml2YXRlIGFmdGVyT3BlbmVkPFQsIFI+KGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFQsIFI+KSB7XG4gICAgdGhpcy50cmFja01vZGFsKGRpYWxvZ1JlZi5pZCk7XG4gICAgdGhpcy5zZXRUb3BNb2RhbChkaWFsb2dSZWYuaWQpO1xuICAgIHRoaXMucmVwb3NpdGlvbk1pbmltaXplZE1vZGFscygpO1xuICAgIHRoaXMuX21vZGFsT3BlbmVkJC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGFmdGVyQ2xvc2VkPFQsIFI+KGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFQsIFI+KSB7XG4gICAgdGhpcy51bnRyYWNrTW9kYWwoZGlhbG9nUmVmLmlkKTtcbiAgICBjb25zdCBuZXdUb3BJZCA9IHRoaXMuX29wZW5JZHNbdGhpcy5fb3Blbklkcy5sZW5ndGggLSAxXTtcbiAgICBpZiAobmV3VG9wSWQpIHtcbiAgICAgIHRoaXMuc2V0VG9wTW9kYWwobmV3VG9wSWQpO1xuICAgIH1cbiAgICB0aGlzLnJlcG9zaXRpb25NaW5pbWl6ZWRNb2RhbHMoZGlhbG9nUmVmLmlkKTtcbiAgICB0aGlzLmRlc3Ryb3lCYWNrZHJvcChkaWFsb2dSZWYuaWQpO1xuICAgIHRoaXMuZGV0YWNoQnV0dG9uV3JhcHBlcihkaWFsb2dSZWYuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFja01vZGFsKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9vcGVuSWRzLnB1c2goZGlhbG9nSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnRyYWNrTW9kYWwoZGlhbG9nSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX29wZW5JZHMgPSB0aGlzLl9vcGVuSWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gZGlhbG9nSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBiYWNrZHJvcElkKGRpYWxvZ0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAnYmFja2Ryb3AtJyArIGRpYWxvZ0lkO1xuICB9XG5cbiAgLy8gUmVsaWVzIG9uIHRoZSBDREstaW50ZXJuYWwgJy5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcicgY2xhc3MgYWRkZWQgYnkgTWF0RGlhbG9nOyBtYXkgYnJlYWsgb24gQW5ndWxhciBNYXRlcmlhbCB1cGdyYWRlcy5cbiAgcHJpdmF0ZSBnZXRXcmFwcGVyKGRpYWxvZ0lkOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGRpYWxvZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGlhbG9nSWQpO1xuICAgIHJldHVybiBkaWFsb2dFbCA/IGRpYWxvZ0VsLmNsb3Nlc3Q8SFRNTEVsZW1lbnQ+KCcuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXInKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNldFRvcE1vZGFsKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9vcGVuSWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZ2V0V3JhcHBlcihpZCk7XG4gICAgICBjb25zdCBiYWNrZHJvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYmFja2Ryb3BJZChpZCkpO1xuICAgICAgaWYgKGlkID09PSBkaWFsb2dJZCkge1xuICAgICAgICBpZiAod3JhcHBlcikgd3JhcHBlci5zdHlsZS56SW5kZXggPSBaX0lOREVYX0ZST05UO1xuICAgICAgICBpZiAoYmFja2Ryb3ApIGJhY2tkcm9wLnN0eWxlLnpJbmRleCA9IFpfSU5ERVhfQkFDSztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh3cmFwcGVyKSB3cmFwcGVyLnN0eWxlLnpJbmRleCA9IFpfSU5ERVhfQkFDSztcbiAgICAgICAgaWYgKGJhY2tkcm9wKSBiYWNrZHJvcC5zdHlsZS56SW5kZXggPSBaX0lOREVYX0JBQ0s7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1pbmltaXplKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnVudHJhY2tNb2RhbChkaWFsb2dJZCk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5iYWNrZHJvcElkKGRpYWxvZ0lkKSk/LmNsYXNzTGlzdC5hZGQoJ3RiLWQtbm9uZScpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpYWxvZ0lkKT8uY2xhc3NMaXN0LmFkZCgnbWluaW1pemUnKTtcbiAgICB0aGlzLl9taW5pbWl6ZWRJZHMucHVzaChkaWFsb2dJZCk7XG4gICAgY29uc3QgbmV3VG9wSWQgPSB0aGlzLl9vcGVuSWRzW3RoaXMuX29wZW5JZHMubGVuZ3RoIC0gMV07XG4gICAgaWYgKG5ld1RvcElkKSB7XG4gICAgICB0aGlzLnNldFRvcE1vZGFsKG5ld1RvcElkKTtcbiAgICB9XG4gICAgdGhpcy5yZXBvc2l0aW9uTWluaW1pemVkTW9kYWxzKCk7XG4gIH1cblxuICBwcml2YXRlIG1heGltaXplKGRpYWxvZ0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRyYWNrTW9kYWwoZGlhbG9nSWQpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYmFja2Ryb3BJZChkaWFsb2dJZCkpLmNsYXNzTGlzdC5yZW1vdmUoJ3RiLWQtbm9uZScpO1xuICAgIHRoaXMuc2V0VG9wTW9kYWwoZGlhbG9nSWQpO1xuICAgIGNvbnN0IGRpYWxvZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGlhbG9nSWQpO1xuICAgIGRpYWxvZ0VsLmNsYXNzTGlzdC5yZW1vdmUoJ21pbmltaXplJyk7XG4gICAgZGlhbG9nRWwuc3R5bGUuYm90dG9tID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVwb3NpdGlvbk1pbmltaXplZE1vZGFscyhkaWFsb2dJZCk7XG4gIH1cblxuICBwcml2YXRlIHJlcG9zaXRpb25NaW5pbWl6ZWRNb2RhbHMocmVtb3ZlZElkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5fbWluaW1pemVkSWRzID0gdGhpcy5fbWluaW1pemVkSWRzLmZpbHRlcihpZCA9PiBpZCAhPT0gcmVtb3ZlZElkKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX21pbmltaXplZElkcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLl9taW5pbWl6ZWRJZHNbaV0pO1xuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgZWwuc3R5bGUuYm90dG9tID0gJzEwcHgnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5fbWluaW1pemVkSWRzW2kgLSAxXSk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHByZXZFbC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGVsLnN0eWxlLmJvdHRvbSA9ICgoaGVpZ2h0ICsgMTApICogaSkgKyAxMCArICdweCc7XG4gICAgICB9XG4gICAgICBlbC5zdHlsZS5yaWdodCA9ICcxMHB4JztcbiAgICAgIGNvbnN0IG1pbmltaXplSWNvbkVsID0gZWwucXVlcnlTZWxlY3RvcignLm1vZGFsLW1pbmltaXplLWljb24nKTtcbiAgICAgIGlmICh0aGlzLl9vcGVuSWRzLmxlbmd0aCAmJiBpICE9PSAwKSB7XG4gICAgICAgIG1pbmltaXplSWNvbkVsLmNsYXNzTGlzdC5hZGQoJ3RiLWFjdGlvbi1kaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWluaW1pemVJY29uRWwuY2xhc3NMaXN0LnJlbW92ZSgndGItYWN0aW9uLWRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZERpYWxvZ0NvbmZpZzxKPihtb2RhbENvbmZpZz86IFRpYmFNYXREaWFsb2dDb25maWc8Sj4pOiBNYXREaWFsb2dDb25maWcge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24obmV3IE1hdERpYWxvZ0NvbmZpZygpLCBtb2RhbENvbmZpZyk7XG4gICAgY29uZmlnLmRpc2FibGVDbG9zZSA9IG1vZGFsQ29uZmlnPy5kaXNhYmxlQ2xvc2UgIT09IGZhbHNlO1xuICAgIGNvbmZpZy5oYXNCYWNrZHJvcCA9IGZhbHNlO1xuICAgIGNvbmZpZy5hdXRvRm9jdXMgPSBtb2RhbENvbmZpZz8uYXV0b0ZvY3VzICE9PSBmYWxzZTtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcChkaWFsb2dJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYmFja2Ryb3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBiYWNrZHJvcC5jbGFzc0xpc3QuYWRkKCd0Yi1vdmVybGF5LWJhY2tkcm9wJyk7XG4gICAgYmFja2Ryb3AuaWQgPSB0aGlzLmJhY2tkcm9wSWQoZGlhbG9nSWQpO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZGstb3ZlcmxheS1jb250YWluZXInKS5hcHBlbmQoYmFja2Ryb3ApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QmFja2Ryb3AoZGlhbG9nSWQ6IHN0cmluZykge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuYmFja2Ryb3BJZChkaWFsb2dJZCkpPy5yZW1vdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoQnV0dG9uV3JhcHBlcjxULCBSPihkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxULCBSPiwgbW9kYWxDb25maWc/OiBUaWJhTWF0RGlhbG9nQ29uZmlnPFQ+KSB7XG4gICAgY29uc3QgZGlhbG9nSWQgPSBkaWFsb2dSZWYuaWQ7XG4gICAgaW1wb3J0KCcuLi9jb21wb25lbnRzL21vZGFsLWJ1dHRvbnMtd3JhcHBlci9tb2RhbC1idXR0b25zLXdyYXBwZXIuY29tcG9uZW50JykudGhlbihyZXMgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRpYWxvZy5nZXREaWFsb2dCeUlkKGRpYWxvZ0lkKSkgcmV0dXJuO1xuXG4gICAgICB0aGlzLl9idXR0b25XcmFwcGVyUmVmc1tkaWFsb2dJZF0gPSBjcmVhdGVDb21wb25lbnQocmVzLk1vZGFsQnV0dG9uc1dyYXBwZXJDb21wb25lbnQsIHsgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5lbnZpcm9ubWVudEluamVjdG9yIH0pO1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9idXR0b25XcmFwcGVyUmVmc1tkaWFsb2dJZF0uaW5zdGFuY2U7XG5cbiAgICAgIGluc3RhbmNlLmNsb3NlLnBpcGUodGFrZVVudGlsKGluc3RhbmNlLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IGRpYWxvZ1JlZi5jbG9zZSgpKTtcbiAgICAgIGluc3RhbmNlLm1pbmltaXplLnBpcGUodGFrZVVudGlsKGluc3RhbmNlLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc01pbmltaXplOiBib29sZWFuKSA9PlxuICAgICAgICBpc01pbmltaXplID8gdGhpcy5taW5pbWl6ZShkaWFsb2dJZCkgOiB0aGlzLm1heGltaXplKGRpYWxvZ0lkKVxuICAgICAgKTtcbiAgICAgIGluc3RhbmNlLmVuYWJsZWRNaW5pbWl6ZWQgPSBtb2RhbENvbmZpZz8uZW5hYmxlZE1pbmltaXplZDtcblxuICAgICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyh0aGlzLl9idXR0b25XcmFwcGVyUmVmc1tkaWFsb2dJZF0uaG9zdFZpZXcpO1xuICAgICAgY29uc3QgZG9tRWwgPSAodGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbZGlhbG9nSWRdLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBwYW5lbENsYXNzID0gbW9kYWxDb25maWc/LnBhbmVsQ2xhc3M7XG4gICAgICBjb25zdCBwYW5lbFNlbGVjdG9yID0gQXJyYXkuaXNBcnJheShwYW5lbENsYXNzKVxuICAgICAgICA/IHBhbmVsQ2xhc3MubWFwKGMgPT4gYC4ke2N9YCkuam9pbignJylcbiAgICAgICAgOiBwYW5lbENsYXNzID8gYC4ke3BhbmVsQ2xhc3N9YCA6IG51bGw7XG4gICAgICBpZiAocGFuZWxTZWxlY3Rvcikge1xuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAke3BhbmVsU2VsZWN0b3J9IC5tb2RhbC1idXR0b24td3JhcHBlcmApPy5hcHBlbmRDaGlsZChkb21FbCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBFc2MgZG9lcyB3aGF0IHRoZSBkaWFsb2cncyBYIGRvZXM7IGEgZGlhbG9nIHdpdGhvdXQgYW4gWCBzdGF5cyBvcGVuLiBMaXN0ZW5lZCBvbiB0aGUgZGlhbG9nIGl0c2VsZjpcbiAgLy8gdGhlIG92ZXJsYXkga2V5Ym9hcmQgZGlzcGF0Y2hlciBnaXZlcyBrZXlzIG9ubHkgdG8gdGhlIHRvcCBvdmVybGF5LCBvZnRlbiBhIHRvb2x0aXAgbGVmdCBvbiB0aGUgb3BlbmVyLlxuICBwcml2YXRlIGNsb3NlT25Fc2NhcGUoZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8dW5rbm93bj4pIHtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJPcGVuZWQoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaWFsb2dSZWYuaWQpO1xuICAgICAgY29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcubW9kYWwtY2xvc2UtaWNvbicpPy5jbGljaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEEgd2l6YXJkIHN3YXBzIE5leHQgZm9yIFNhdmUgKG9yIGRyb3BzIEJhY2sgb24gdGhlIGZpcnN0IHN0ZXApIHVuZGVyIHRoZSBrZXlib2FyZCBmb2N1czsgdGhlIGJyb3dzZXJcbiAgLy8gdGhlbiBkcm9wcyBmb2N1cyB0byA8Ym9keT4sIG91dHNpZGUgdGhlIGRpYWxvZywgd2hlcmUgVGFiIGFuZCBFc2Mgbm8gbG9uZ2VyIHJlYWNoIGl0LlxuICBwcml2YXRlIGtlZXBGb2N1c0luRGlhbG9nKGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPHVua25vd24+KSB7XG4gICAgZGlhbG9nUmVmLmFmdGVyT3BlbmVkKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGlhbG9nUmVmLmlkKTtcbiAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxldCBmb2N1c2VkOiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIChldmVudCkgPT4gKGZvY3VzZWQgPSBldmVudC50YXJnZXQgYXMgRWxlbWVudCkpO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGlmIChmb2N1c2VkICYmICFmb2N1c2VkLmlzQ29ubmVjdGVkICYmICghZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSkge1xuICAgICAgICAgIGZvY3VzZWQgPSBudWxsO1xuICAgICAgICAgIChjb250YWluZXIucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ21hdC1kaWFsb2ctYWN0aW9ucyAudGItcHJpbWFyeS1idXR0b246bm90KFtkaXNhYmxlZF0pJykgPz8gY29udGFpbmVyKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIENyZWF0ZSAvIE5leHQgLyBTYXZlIHByZXNzZWQgYnV0IHRoZSBkaWFsb2cgc3RheWVkIG9uIGFuIGludmFsaWQgZm9ybTogdGFrZSB0aGUga2V5Ym9hcmQgdG8gdGhlIHByb2JsZW0uXG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0PEhUTUxFbGVtZW50PignbWF0LWRpYWxvZy1hY3Rpb25zIC50Yi1wcmltYXJ5LWJ1dHRvbicpO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBidXR0b24gJiYgZm9jdXNGaXJzdFByb2JsZW1JblRhYnMoY29udGFpbmVyKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0YWNoQnV0dG9uV3JhcHBlcihkaWFsb2dJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbZGlhbG9nSWRdO1xuICAgIGlmIChyZWYpIHtcbiAgICAgIHRoaXMuYXBwUmVmLmRldGFjaFZpZXcocmVmLmhvc3RWaWV3KTtcbiAgICAgIHJlZi5kZXN0cm95KCk7XG4gICAgICBkZWxldGUgdGhpcy5fYnV0dG9uV3JhcHBlclJlZnNbZGlhbG9nSWRdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,6 +1,17 @@
1
+ import { Localization } from '../enums/localization.enum';
1
2
  export const DATE_TIME_ERROR_INVALID_DATE = 'invalidDate';
2
3
  export const DATE_TIME_ERROR_INVALID_DATE_RANGE = 'invalidDateRange';
3
4
  export const DATE_TIME_ERROR_REQUIRED = 'required';
5
+ /** Message key for an out-of-range date: names the allowed dates when the error carries them. */
6
+ export function dateRangeKey(range) {
7
+ if (range === true) {
8
+ return Localization.form_validation_invalid_date_range;
9
+ }
10
+ if (range.min && range.max) {
11
+ return Localization.form_validation_date_from_to;
12
+ }
13
+ return range.min ? Localization.form_validation_date_from : Localization.form_validation_date_to;
14
+ }
4
15
  const DATE_TIME_ERRORS = [
5
16
  DATE_TIME_ERROR_INVALID_DATE,
6
17
  DATE_TIME_ERROR_INVALID_DATE_RANGE,
@@ -38,4 +49,4 @@ export function setDateTimeErrorMessage(formName, controlName, errors) {
38
49
  }
39
50
  }
40
51
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvdXRpbHMvZXJyb3IudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxhQUFhLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsa0JBQWtCLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsVUFBVSxDQUFDO0FBRW5ELE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsNEJBQTRCO0lBQzVCLGtDQUFrQztJQUNsQyx3QkFBd0I7Q0FDekIsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlLENBQzdCLFFBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLE1BQStCO0lBRS9CLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFFBQTRDLEVBQzVDLFdBQW1CLEVBQ25CLE1BQStCO0lBRS9CLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBRTNDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxvRkFBb0Y7WUFDcEYsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDL0MsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLCtFQUErRTtZQUMvRSxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFFM0MsMERBQTBEO1lBQzFELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQixPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztZQUVILDZDQUE2QztZQUM3QyxPQUFPLENBQUMsU0FBUyxDQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzdELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IERBVEVfVElNRV9FUlJPUl9JTlZBTElEX0RBVEUgPSAnaW52YWxpZERhdGUnO1xuZXhwb3J0IGNvbnN0IERBVEVfVElNRV9FUlJPUl9JTlZBTElEX0RBVEVfUkFOR0UgPSAnaW52YWxpZERhdGVSYW5nZSc7XG5leHBvcnQgY29uc3QgREFURV9USU1FX0VSUk9SX1JFUVVJUkVEID0gJ3JlcXVpcmVkJztcblxuY29uc3QgREFURV9USU1FX0VSUk9SUyA9IFtcbiAgREFURV9USU1FX0VSUk9SX0lOVkFMSURfREFURSxcbiAgREFURV9USU1FX0VSUk9SX0lOVkFMSURfREFURV9SQU5HRSxcbiAgREFURV9USU1FX0VSUk9SX1JFUVVJUkVELFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWVzc2FnZShcbiAgZm9ybU5hbWU6IFVudHlwZWRGb3JtR3JvdXAgfCBBYnN0cmFjdENvbnRyb2wsXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwsXG4pIHtcbiAgaWYgKGVycm9ycykge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtTmFtZS5nZXQoY29udHJvbE5hbWUpO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREYXRlVGltZUVycm9yTWVzc2FnZShcbiAgZm9ybU5hbWU6IFVudHlwZWRGb3JtR3JvdXAgfCBBYnN0cmFjdENvbnRyb2wsXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwsXG4pIHtcbiAgY29uc3QgY29udHJvbCA9IGZvcm1OYW1lLmdldChjb250cm9sTmFtZSk7XG5cbiAgaWYgKGNvbnRyb2wpIHtcbiAgICBjb25zdCBjdXJyZW50RXJyb3JzID0gY29udHJvbC5lcnJvcnMgPz8ge307XG5cbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAvLyBTdHJpcCBhbnkgc3RhbGUgRGF0ZVRpbWUga2V5cyBiZWZvcmUgbWVyZ2luZyBzbyBpbmNvbWluZyBlcnJvcnMgYXJlIGF1dGhvcml0YXRpdmVcbiAgICAgIGNvbnN0IG5vbkRhdGVUaW1lRXJyb3JzID0geyAuLi5jdXJyZW50RXJyb3JzIH07XG4gICAgICBEQVRFX1RJTUVfRVJST1JTLmZvckVhY2goKGtleSkgPT4gZGVsZXRlIG5vbkRhdGVUaW1lRXJyb3JzW2tleV0pO1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyAuLi5ub25EYXRlVGltZUVycm9ycywgLi4uZXJyb3JzIH0pO1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBhIGNvcHkgdG8gcHJldmVudCBkaXJlY3QgbXV0YXRpb24gb2YgQW5ndWxhcidzIGludGVybmFsIGVycm9ycyBvYmplY3RcbiAgICAgIGNvbnN0IGNsZWFuZWRFcnJvcnMgPSB7IC4uLmN1cnJlbnRFcnJvcnMgfTtcblxuICAgICAgLy8gTm8gRGF0ZVRpbWUgZXJyb3Ig4oaSIHJlbW92ZSBvbmx5IERhdGVUaW1lLXJlbGF0ZWQgZXJyb3JzXG4gICAgICBEQVRFX1RJTUVfRVJST1JTLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkZWxldGUgY2xlYW5lZEVycm9yc1trZXldO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIG5vIGVycm9ycyBsZWZ0LCBjbGVhciBlcnJvcnMgY29tcGxldGVseVxuICAgICAgY29udHJvbC5zZXRFcnJvcnMoXG4gICAgICAgIE9iamVjdC5rZXlzKGNsZWFuZWRFcnJvcnMpLmxlbmd0aCA+IDAgPyBjbGVhbmVkRXJyb3JzIDogbnVsbCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvdXRpbHMvZXJyb3IudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsYUFBYSxDQUFDO0FBQzFELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLGtCQUFrQixDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUVuRCxpR0FBaUc7QUFDakcsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUE0QztJQUN2RSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNuQixPQUFPLFlBQVksQ0FBQyxrQ0FBa0MsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMzQixPQUFPLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQztBQUNuRyxDQUFDO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRztJQUN2Qiw0QkFBNEI7SUFDNUIsa0NBQWtDO0lBQ2xDLHdCQUF3QjtDQUN6QixDQUFDO0FBRUYsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsUUFBNEMsRUFDNUMsV0FBbUIsRUFDbkIsTUFBK0I7SUFFL0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsUUFBNEMsRUFDNUMsV0FBbUIsRUFDbkIsTUFBK0I7SUFFL0IsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUxQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLG9GQUFvRjtZQUNwRixNQUFNLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8saUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdkQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sK0VBQStFO1lBQy9FLE1BQU0sYUFBYSxHQUFHLEVBQUUsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUUzQywwREFBMEQ7WUFDMUQsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQy9CLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1lBRUgsNkNBQTZDO1lBQzdDLE9BQU8sQ0FBQyxTQUFTLENBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0QsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uIH0gZnJvbSAnLi4vZW51bXMvbG9jYWxpemF0aW9uLmVudW0nO1xuXG5leHBvcnQgY29uc3QgREFURV9USU1FX0VSUk9SX0lOVkFMSURfREFURSA9ICdpbnZhbGlkRGF0ZSc7XG5leHBvcnQgY29uc3QgREFURV9USU1FX0VSUk9SX0lOVkFMSURfREFURV9SQU5HRSA9ICdpbnZhbGlkRGF0ZVJhbmdlJztcbmV4cG9ydCBjb25zdCBEQVRFX1RJTUVfRVJST1JfUkVRVUlSRUQgPSAncmVxdWlyZWQnO1xuXG4vKiogTWVzc2FnZSBrZXkgZm9yIGFuIG91dC1vZi1yYW5nZSBkYXRlOiBuYW1lcyB0aGUgYWxsb3dlZCBkYXRlcyB3aGVuIHRoZSBlcnJvciBjYXJyaWVzIHRoZW0uICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVJhbmdlS2V5KHJhbmdlOiB0cnVlIHwgeyBtaW4/OiBzdHJpbmc7IG1heD86IHN0cmluZyB9KTogTG9jYWxpemF0aW9uIHtcbiAgaWYgKHJhbmdlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIExvY2FsaXphdGlvbi5mb3JtX3ZhbGlkYXRpb25faW52YWxpZF9kYXRlX3JhbmdlO1xuICB9XG4gIGlmIChyYW5nZS5taW4gJiYgcmFuZ2UubWF4KSB7XG4gICAgcmV0dXJuIExvY2FsaXphdGlvbi5mb3JtX3ZhbGlkYXRpb25fZGF0ZV9mcm9tX3RvO1xuICB9XG4gIHJldHVybiByYW5nZS5taW4gPyBMb2NhbGl6YXRpb24uZm9ybV92YWxpZGF0aW9uX2RhdGVfZnJvbSA6IExvY2FsaXphdGlvbi5mb3JtX3ZhbGlkYXRpb25fZGF0ZV90bztcbn1cblxuY29uc3QgREFURV9USU1FX0VSUk9SUyA9IFtcbiAgREFURV9USU1FX0VSUk9SX0lOVkFMSURfREFURSxcbiAgREFURV9USU1FX0VSUk9SX0lOVkFMSURfREFURV9SQU5HRSxcbiAgREFURV9USU1FX0VSUk9SX1JFUVVJUkVELFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWVzc2FnZShcbiAgZm9ybU5hbWU6IFVudHlwZWRGb3JtR3JvdXAgfCBBYnN0cmFjdENvbnRyb2wsXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwsXG4pIHtcbiAgaWYgKGVycm9ycykge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtTmFtZS5nZXQoY29udHJvbE5hbWUpO1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREYXRlVGltZUVycm9yTWVzc2FnZShcbiAgZm9ybU5hbWU6IFVudHlwZWRGb3JtR3JvdXAgfCBBYnN0cmFjdENvbnRyb2wsXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwsXG4pIHtcbiAgY29uc3QgY29udHJvbCA9IGZvcm1OYW1lLmdldChjb250cm9sTmFtZSk7XG5cbiAgaWYgKGNvbnRyb2wpIHtcbiAgICBjb25zdCBjdXJyZW50RXJyb3JzID0gY29udHJvbC5lcnJvcnMgPz8ge307XG5cbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAvLyBTdHJpcCBhbnkgc3RhbGUgRGF0ZVRpbWUga2V5cyBiZWZvcmUgbWVyZ2luZyBzbyBpbmNvbWluZyBlcnJvcnMgYXJlIGF1dGhvcml0YXRpdmVcbiAgICAgIGNvbnN0IG5vbkRhdGVUaW1lRXJyb3JzID0geyAuLi5jdXJyZW50RXJyb3JzIH07XG4gICAgICBEQVRFX1RJTUVfRVJST1JTLmZvckVhY2goKGtleSkgPT4gZGVsZXRlIG5vbkRhdGVUaW1lRXJyb3JzW2tleV0pO1xuICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyAuLi5ub25EYXRlVGltZUVycm9ycywgLi4uZXJyb3JzIH0pO1xuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENyZWF0ZSBhIGNvcHkgdG8gcHJldmVudCBkaXJlY3QgbXV0YXRpb24gb2YgQW5ndWxhcidzIGludGVybmFsIGVycm9ycyBvYmplY3RcbiAgICAgIGNvbnN0IGNsZWFuZWRFcnJvcnMgPSB7IC4uLmN1cnJlbnRFcnJvcnMgfTtcblxuICAgICAgLy8gTm8gRGF0ZVRpbWUgZXJyb3Ig4oaSIHJlbW92ZSBvbmx5IERhdGVUaW1lLXJlbGF0ZWQgZXJyb3JzXG4gICAgICBEQVRFX1RJTUVfRVJST1JTLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkZWxldGUgY2xlYW5lZEVycm9yc1trZXldO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIG5vIGVycm9ycyBsZWZ0LCBjbGVhciBlcnJvcnMgY29tcGxldGVseVxuICAgICAgY29udHJvbC5zZXRFcnJvcnMoXG4gICAgICAgIE9iamVjdC5rZXlzKGNsZWFuZWRFcnJvcnMpLmxlbmd0aCA+IDAgPyBjbGVhbmVkRXJyb3JzIDogbnVsbCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=