@almatar/smart-booking-dashboard 0.0.1 → 0.0.2-alpha.2

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 (90) hide show
  1. package/esm2022/lib/components/action-card/action-card.component.mjs +3 -3
  2. package/esm2022/lib/components/add-note-dialog/add-note-dialog.component.mjs +3 -3
  3. package/esm2022/lib/components/almatar-aside/aside-back-button.service.mjs +24 -0
  4. package/esm2022/lib/components/almatar-aside/aside.component.mjs +123 -0
  5. package/esm2022/lib/components/booking-input/booking-input.component.mjs +4 -3
  6. package/esm2022/lib/components/cancel-dialog/cancel-dialog.component.mjs +53 -4
  7. package/esm2022/lib/components/data-search/data-search.component.mjs +3 -3
  8. package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +544 -0
  9. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.mjs +43 -0
  10. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +296 -0
  11. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +88 -0
  12. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.mjs +242 -0
  13. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-refundable-room/almatar-hotel-auto-cancellation-refundable-room.component.mjs +48 -0
  14. package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +129 -0
  15. package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +321 -0
  16. package/esm2022/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.mjs +52 -0
  17. package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.mjs +9 -0
  18. package/esm2022/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.mjs +7 -0
  19. package/esm2022/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.mjs +2 -0
  20. package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +448 -0
  21. package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.mjs +55 -0
  22. package/esm2022/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.mjs +48 -0
  23. package/esm2022/lib/components/result-panel/result-panel.component.mjs +3 -3
  24. package/esm2022/lib/components/shared/components/confirm-modal/confirm-modal.component.mjs +75 -0
  25. package/esm2022/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.mjs +46 -0
  26. package/esm2022/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.mjs +9 -0
  27. package/esm2022/lib/components/shared/interfaces/i-flight-refund-details.mjs +86 -0
  28. package/esm2022/lib/components/shared/models/cancel-hotel-booking.model.mjs +7 -0
  29. package/esm2022/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.mjs +27 -0
  30. package/esm2022/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.mjs +17 -0
  31. package/esm2022/lib/config/hotel-actions.config.mjs +21 -1
  32. package/esm2022/lib/models/booking.types.mjs +73 -2
  33. package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +25 -7
  34. package/esm2022/lib/services/booking.service.mjs +6 -2
  35. package/esm2022/lib/shared/components/currency-code-icon/currency-code-icon.component.mjs +35 -0
  36. package/esm2022/lib/shared/enums/brand-enums.enum.mjs +7 -0
  37. package/esm2022/lib/shared/environments/environment.mjs +10 -0
  38. package/esm2022/lib/shared/models/index.mjs +6 -0
  39. package/esm2022/lib/shared/modules/almatar-icon/almatar-icon.module.mjs +36 -0
  40. package/esm2022/lib/shared/modules/loader/loader.module.mjs +43 -0
  41. package/esm2022/lib/shared/pipes/exchange.pipe.mjs +49 -0
  42. package/esm2022/lib/shared/services/api.service.mjs +42 -0
  43. package/esm2022/lib/shared/services/shared.service.mjs +34 -0
  44. package/esm2022/lib/shared/services/translation.service.mjs +61 -0
  45. package/esm2022/lib/shared/services/webengage-tracking.service.mjs +28 -0
  46. package/esm2022/lib/shared/store/selectors/currency.selectors.mjs +9 -0
  47. package/fesm2022/almatar-smart-booking-dashboard.mjs +3278 -180
  48. package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
  49. package/lib/components/almatar-aside/aside-back-button.service.d.ts +11 -0
  50. package/lib/components/almatar-aside/aside.component.d.ts +47 -0
  51. package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +7 -0
  52. package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +97 -0
  53. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-method/almatar-hotel-auto-cancellation-refund-method.component.d.ts +25 -0
  54. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +91 -0
  55. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.d.ts +39 -0
  56. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.d.ts +44 -0
  57. package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-refundable-room/almatar-hotel-auto-cancellation-refundable-room.component.d.ts +19 -0
  58. package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +38 -0
  59. package/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.d.ts +142 -0
  60. package/lib/components/hotel-cancel/components/result-overlay/result-overlay.component.d.ts +23 -0
  61. package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-endpoints.enum.d.ts +7 -0
  62. package/lib/components/hotel-cancel/enums/almatar-hotel-auto-cancellation-step.enum.d.ts +5 -0
  63. package/lib/components/hotel-cancel/interfaces/i-almatar-hotel-auto-cancellation.interface.d.ts +252 -0
  64. package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.d.ts +82 -0
  65. package/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation.service.d.ts +21 -0
  66. package/lib/components/hotel-itinerary-card/hotel-itinerary-card.component.d.ts +16 -0
  67. package/lib/components/shared/components/confirm-modal/confirm-modal.component.d.ts +17 -0
  68. package/lib/components/shared/components/manage-booking-failed-modal/manage-booking-failed-modal.component.d.ts +10 -0
  69. package/lib/components/shared/enums/hotel-manage-booking-aside-tab.enum.d.ts +7 -0
  70. package/lib/components/shared/interfaces/i-flight-refund-details.d.ts +73 -0
  71. package/lib/components/shared/models/cancel-hotel-booking.model.d.ts +6 -0
  72. package/lib/components/shared/services/hotel-manage-booking/hotel-manage-booking.service.d.ts +11 -0
  73. package/lib/components/shared/services/hotel-manage-booking-endpoints/hotel-manage-booking-endpoints.service.d.ts +7 -0
  74. package/lib/models/booking.types.d.ts +28 -0
  75. package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +1 -0
  76. package/lib/shared/components/currency-code-icon/currency-code-icon.component.d.ts +13 -0
  77. package/lib/shared/enums/brand-enums.enum.d.ts +5 -0
  78. package/lib/shared/environments/environment.d.ts +7 -0
  79. package/lib/shared/models/index.d.ts +11 -0
  80. package/lib/shared/modules/almatar-icon/almatar-icon.module.d.ts +13 -0
  81. package/lib/shared/modules/loader/loader.module.d.ts +13 -0
  82. package/lib/shared/pipes/exchange.pipe.d.ts +17 -0
  83. package/lib/shared/services/api.service.d.ts +43 -0
  84. package/lib/shared/services/shared.service.d.ts +12 -0
  85. package/lib/shared/services/translation.service.d.ts +17 -0
  86. package/lib/shared/services/webengage-tracking.service.d.ts +8 -0
  87. package/lib/shared/store/selectors/currency.selectors.d.ts +2 -0
  88. package/package.json +2 -19
  89. package/LICENSE +0 -21
  90. package/README.md +0 -132
@@ -75,10 +75,10 @@ export class SbdDataSearchComponent {
75
75
  return { display: raw, type: 'text' };
76
76
  }
77
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdDataSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SbdDataSearchComponent, isStandalone: true, selector: "app-sbd-data-search", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"sbd-data-search\">\n <div class=\"sbd-data-search__input-wrap\">\n <i class=\"pi pi-search sbd-data-search__icon\"></i>\n <input pInputText class=\"sbd-data-search__input\"\n placeholder=\"Search any field or value from this booking\u2026\"\n [ngModel]=\"query()\" (ngModelChange)=\"query.set($event)\" />\n @if (query().length >= 2) {\n <span class=\"sbd-data-search__count\">{{ totalCount() }} match{{ totalCount() !== 1 ? 'es' : '' }}</span>\n }\n </div>\n\n @if (query().length >= 2 && results().length > 0) {\n <div class=\"sbd-data-search__results\">\n @for (entry of results(); track entry.path + entry.key) {\n <div class=\"sbd-data-search__result\">\n <div class=\"sbd-data-search__result-left\">\n <div class=\"sbd-data-search__result-path\">\n @if (entry.path) { <span class=\"sbd-data-search__result-pathtext\">{{ entry.path }} \u203A</span> }\n <span class=\"sbd-data-search__result-key\">{{ entry.key }}</span>\n </div>\n </div>\n <div class=\"sbd-data-search__result-right\">\n <span class=\"sbd-data-search__type-badge sbd-data-search__type-badge--{{ entry.type }}\">{{ entry.type }}</span>\n <span class=\"sbd-data-search__result-value\">{{ entry.displayValue }}</span>\n </div>\n </div>\n }\n @if (totalCount() > 50) {\n <div class=\"sbd-data-search__more\">+{{ totalCount() - 50 }} more \u2014 refine your search</div>\n }\n </div>\n }\n\n @if (query().length >= 2 && results().length === 0) {\n <div class=\"sbd-data-search__empty\">\n <i class=\"pi pi-inbox\"></i> No fields or values match \"{{ query() }}\"\n </div>\n }\n</div>\n", styles: [".sbd-data-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.sbd-data-search__input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid transparent;transition:border-color .15s}.sbd-data-search__input-wrap:focus-within{border-bottom-color:#e2e8f0}.sbd-data-search__icon{color:#94a3b8;font-size:15px;flex-shrink:0}.sbd-data-search__input{flex:1;border:none!important;outline:none!important;box-shadow:none!important;padding:0!important;font-size:14px;background:transparent!important;color:#1e2e4a}.sbd-data-search__input::placeholder{color:#94a3b8}.sbd-data-search__count{font-size:12px;font-weight:600;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;white-space:nowrap}.sbd-data-search__results{max-height:320px;overflow-y:auto}.sbd-data-search__result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-bottom:1px solid #f1f5f9;cursor:default;transition:background .1s}.sbd-data-search__result:last-child{border-bottom:none}.sbd-data-search__result:hover{background:#f8fafc}.sbd-data-search__result-left{min-width:0;flex:1;overflow:hidden}.sbd-data-search__result-right{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:55%}.sbd-data-search__result-path{font-size:11px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sbd-data-search__result-pathtext{color:#cbd5e1}.sbd-data-search__result-key{font-weight:600;color:#475569}.sbd-data-search__result-value{font-size:13px;font-weight:600;color:#1e2e4a;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.sbd-data-search__type-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.sbd-data-search__type-badge--date{background:#eff6ff;color:#3b82f6}.sbd-data-search__type-badge--duration{background:#fff7ed;color:#f97316}.sbd-data-search__type-badge--bool{background:#f0fdf4;color:#22c55e}.sbd-data-search__type-badge--number{background:#faf5ff;color:#a855f7}.sbd-data-search__type-badge--text{background:#f8fafc;color:#64748b}.sbd-data-search__more{padding:10px 16px;font-size:12px;color:#94a3b8;text-align:center;font-style:italic}.sbd-data-search__empty{display:flex;align-items:center;gap:8px;padding:16px;font-size:13px;color:#94a3b8}.sbd-data-search__empty .pi{font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i2.InputText, selector: "[pInputText]" }] }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SbdDataSearchComponent, isStandalone: true, selector: "app-sbd-data-search", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"sbd-data-search\">\n <div class=\"sbd-data-search__input-wrap\">\n <i class=\"pi pi-search sbd-data-search__icon\"></i>\n <input pInputText class=\"sbd-data-search__input\"\n placeholder=\"Search any field or value from this booking\u2026\"\n [ngModel]=\"query()\" (ngModelChange)=\"query.set($event)\" />\n @if (query().length >= 2) {\n <span class=\"sbd-data-search__count\">{{ totalCount() }} match{{ totalCount() !== 1 ? 'es' : '' }}</span>\n }\n </div>\n\n @if (query().length >= 2 && results().length > 0) {\n <div class=\"sbd-data-search__results\">\n @for (entry of results(); track entry.path + entry.key) {\n <div class=\"sbd-data-search__result\">\n <div class=\"sbd-data-search__result-left\">\n <div class=\"sbd-data-search__result-path\">\n @if (entry.path) { <span class=\"sbd-data-search__result-pathtext\">{{ entry.path }} \u203A</span> }\n <span class=\"sbd-data-search__result-key\">{{ entry.key }}</span>\n </div>\n </div>\n <div class=\"sbd-data-search__result-right\">\n <span class=\"sbd-data-search__type-badge sbd-data-search__type-badge--{{ entry.type }}\">{{ entry.type }}</span>\n <span class=\"sbd-data-search__result-value\">{{ entry.displayValue }}</span>\n </div>\n </div>\n }\n @if (totalCount() > 50) {\n <div class=\"sbd-data-search__more\">+{{ totalCount() - 50 }} more \u2014 refine your search</div>\n }\n </div>\n }\n\n @if (query().length >= 2 && results().length === 0) {\n <div class=\"sbd-data-search__empty\">\n <i class=\"pi pi-inbox\"></i> No fields or values match \"{{ query() }}\"\n </div>\n }\n</div>\n", styles: [".sbd-data-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.sbd-data-search__input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid transparent;transition:border-color .15s}.sbd-data-search__input-wrap:focus-within{border-bottom-color:#e2e8f0}.sbd-data-search__icon{color:#94a3b8;font-size:15px;flex-shrink:0}.sbd-data-search__input{flex:1;border:none!important;outline:none!important;box-shadow:none!important;padding:0!important;font-size:14px;background:transparent!important;color:#1e2e4a}.sbd-data-search__input::placeholder{color:#94a3b8}.sbd-data-search__count{font-size:12px;font-weight:600;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;white-space:nowrap}.sbd-data-search__results{max-height:320px;overflow-y:auto}.sbd-data-search__result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-bottom:1px solid #f1f5f9;cursor:default;transition:background .1s}.sbd-data-search__result:last-child{border-bottom:none}.sbd-data-search__result:hover{background:#f8fafc}.sbd-data-search__result-left{min-width:0;flex:1;overflow:hidden}.sbd-data-search__result-right{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:55%}.sbd-data-search__result-path{font-size:11px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sbd-data-search__result-pathtext{color:#cbd5e1}.sbd-data-search__result-key{font-weight:600;color:#475569}.sbd-data-search__result-value{font-size:13px;font-weight:600;color:#1e2e4a;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.sbd-data-search__type-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.sbd-data-search__type-badge--date{background:var(--sbd-primary-soft, #eff6ff);color:var(--sbd-primary, #3b82f6)}.sbd-data-search__type-badge--duration{background:#fff7ed;color:#f97316}.sbd-data-search__type-badge--bool{background:#f0fdf4;color:#22c55e}.sbd-data-search__type-badge--number{background:#faf5ff;color:#a855f7}.sbd-data-search__type-badge--text{background:#f8fafc;color:#64748b}.sbd-data-search__more{padding:10px 16px;font-size:12px;color:#94a3b8;text-align:center;font-style:italic}.sbd-data-search__empty{display:flex;align-items:center;gap:8px;padding:16px;font-size:13px;color:#94a3b8}.sbd-data-search__empty .pi{font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i2.InputText, selector: "[pInputText]" }] }); }
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SbdDataSearchComponent, decorators: [{
81
81
  type: Component,
82
- args: [{ selector: 'app-sbd-data-search', standalone: true, imports: [FormsModule, InputTextModule], template: "<div class=\"sbd-data-search\">\n <div class=\"sbd-data-search__input-wrap\">\n <i class=\"pi pi-search sbd-data-search__icon\"></i>\n <input pInputText class=\"sbd-data-search__input\"\n placeholder=\"Search any field or value from this booking\u2026\"\n [ngModel]=\"query()\" (ngModelChange)=\"query.set($event)\" />\n @if (query().length >= 2) {\n <span class=\"sbd-data-search__count\">{{ totalCount() }} match{{ totalCount() !== 1 ? 'es' : '' }}</span>\n }\n </div>\n\n @if (query().length >= 2 && results().length > 0) {\n <div class=\"sbd-data-search__results\">\n @for (entry of results(); track entry.path + entry.key) {\n <div class=\"sbd-data-search__result\">\n <div class=\"sbd-data-search__result-left\">\n <div class=\"sbd-data-search__result-path\">\n @if (entry.path) { <span class=\"sbd-data-search__result-pathtext\">{{ entry.path }} \u203A</span> }\n <span class=\"sbd-data-search__result-key\">{{ entry.key }}</span>\n </div>\n </div>\n <div class=\"sbd-data-search__result-right\">\n <span class=\"sbd-data-search__type-badge sbd-data-search__type-badge--{{ entry.type }}\">{{ entry.type }}</span>\n <span class=\"sbd-data-search__result-value\">{{ entry.displayValue }}</span>\n </div>\n </div>\n }\n @if (totalCount() > 50) {\n <div class=\"sbd-data-search__more\">+{{ totalCount() - 50 }} more \u2014 refine your search</div>\n }\n </div>\n }\n\n @if (query().length >= 2 && results().length === 0) {\n <div class=\"sbd-data-search__empty\">\n <i class=\"pi pi-inbox\"></i> No fields or values match \"{{ query() }}\"\n </div>\n }\n</div>\n", styles: [".sbd-data-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.sbd-data-search__input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid transparent;transition:border-color .15s}.sbd-data-search__input-wrap:focus-within{border-bottom-color:#e2e8f0}.sbd-data-search__icon{color:#94a3b8;font-size:15px;flex-shrink:0}.sbd-data-search__input{flex:1;border:none!important;outline:none!important;box-shadow:none!important;padding:0!important;font-size:14px;background:transparent!important;color:#1e2e4a}.sbd-data-search__input::placeholder{color:#94a3b8}.sbd-data-search__count{font-size:12px;font-weight:600;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;white-space:nowrap}.sbd-data-search__results{max-height:320px;overflow-y:auto}.sbd-data-search__result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-bottom:1px solid #f1f5f9;cursor:default;transition:background .1s}.sbd-data-search__result:last-child{border-bottom:none}.sbd-data-search__result:hover{background:#f8fafc}.sbd-data-search__result-left{min-width:0;flex:1;overflow:hidden}.sbd-data-search__result-right{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:55%}.sbd-data-search__result-path{font-size:11px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sbd-data-search__result-pathtext{color:#cbd5e1}.sbd-data-search__result-key{font-weight:600;color:#475569}.sbd-data-search__result-value{font-size:13px;font-weight:600;color:#1e2e4a;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.sbd-data-search__type-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.sbd-data-search__type-badge--date{background:#eff6ff;color:#3b82f6}.sbd-data-search__type-badge--duration{background:#fff7ed;color:#f97316}.sbd-data-search__type-badge--bool{background:#f0fdf4;color:#22c55e}.sbd-data-search__type-badge--number{background:#faf5ff;color:#a855f7}.sbd-data-search__type-badge--text{background:#f8fafc;color:#64748b}.sbd-data-search__more{padding:10px 16px;font-size:12px;color:#94a3b8;text-align:center;font-style:italic}.sbd-data-search__empty{display:flex;align-items:center;gap:8px;padding:16px;font-size:13px;color:#94a3b8}.sbd-data-search__empty .pi{font-size:16px}\n"] }]
82
+ args: [{ selector: 'app-sbd-data-search', standalone: true, imports: [FormsModule, InputTextModule], template: "<div class=\"sbd-data-search\">\n <div class=\"sbd-data-search__input-wrap\">\n <i class=\"pi pi-search sbd-data-search__icon\"></i>\n <input pInputText class=\"sbd-data-search__input\"\n placeholder=\"Search any field or value from this booking\u2026\"\n [ngModel]=\"query()\" (ngModelChange)=\"query.set($event)\" />\n @if (query().length >= 2) {\n <span class=\"sbd-data-search__count\">{{ totalCount() }} match{{ totalCount() !== 1 ? 'es' : '' }}</span>\n }\n </div>\n\n @if (query().length >= 2 && results().length > 0) {\n <div class=\"sbd-data-search__results\">\n @for (entry of results(); track entry.path + entry.key) {\n <div class=\"sbd-data-search__result\">\n <div class=\"sbd-data-search__result-left\">\n <div class=\"sbd-data-search__result-path\">\n @if (entry.path) { <span class=\"sbd-data-search__result-pathtext\">{{ entry.path }} \u203A</span> }\n <span class=\"sbd-data-search__result-key\">{{ entry.key }}</span>\n </div>\n </div>\n <div class=\"sbd-data-search__result-right\">\n <span class=\"sbd-data-search__type-badge sbd-data-search__type-badge--{{ entry.type }}\">{{ entry.type }}</span>\n <span class=\"sbd-data-search__result-value\">{{ entry.displayValue }}</span>\n </div>\n </div>\n }\n @if (totalCount() > 50) {\n <div class=\"sbd-data-search__more\">+{{ totalCount() - 50 }} more \u2014 refine your search</div>\n }\n </div>\n }\n\n @if (query().length >= 2 && results().length === 0) {\n <div class=\"sbd-data-search__empty\">\n <i class=\"pi pi-inbox\"></i> No fields or values match \"{{ query() }}\"\n </div>\n }\n</div>\n", styles: [".sbd-data-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.sbd-data-search__input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid transparent;transition:border-color .15s}.sbd-data-search__input-wrap:focus-within{border-bottom-color:#e2e8f0}.sbd-data-search__icon{color:#94a3b8;font-size:15px;flex-shrink:0}.sbd-data-search__input{flex:1;border:none!important;outline:none!important;box-shadow:none!important;padding:0!important;font-size:14px;background:transparent!important;color:#1e2e4a}.sbd-data-search__input::placeholder{color:#94a3b8}.sbd-data-search__count{font-size:12px;font-weight:600;color:#6366f1;background:#eef2ff;padding:2px 8px;border-radius:10px;white-space:nowrap}.sbd-data-search__results{max-height:320px;overflow-y:auto}.sbd-data-search__result{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;border-bottom:1px solid #f1f5f9;cursor:default;transition:background .1s}.sbd-data-search__result:last-child{border-bottom:none}.sbd-data-search__result:hover{background:#f8fafc}.sbd-data-search__result-left{min-width:0;flex:1;overflow:hidden}.sbd-data-search__result-right{display:flex;align-items:center;gap:8px;flex-shrink:0;max-width:55%}.sbd-data-search__result-path{font-size:11px;color:#94a3b8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sbd-data-search__result-pathtext{color:#cbd5e1}.sbd-data-search__result-key{font-weight:600;color:#475569}.sbd-data-search__result-value{font-size:13px;font-weight:600;color:#1e2e4a;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.sbd-data-search__type-badge{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}.sbd-data-search__type-badge--date{background:var(--sbd-primary-soft, #eff6ff);color:var(--sbd-primary, #3b82f6)}.sbd-data-search__type-badge--duration{background:#fff7ed;color:#f97316}.sbd-data-search__type-badge--bool{background:#f0fdf4;color:#22c55e}.sbd-data-search__type-badge--number{background:#faf5ff;color:#a855f7}.sbd-data-search__type-badge--text{background:#f8fafc;color:#64748b}.sbd-data-search__more{padding:10px 16px;font-size:12px;color:#94a3b8;text-align:center;font-style:italic}.sbd-data-search__empty{display:flex;align-items:center;gap:8px;padding:16px;font-size:13px;color:#94a3b8}.sbd-data-search__empty .pi{font-size:16px}\n"] }]
83
83
  }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtc2VhcmNoL2RhdGEtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXNlYXJjaC9kYXRhLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFtQnBELE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFRRSw4REFBOEQ7UUFDOUQsU0FBSSxHQUFHLEtBQUssQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUN4QixVQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRVgsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFnQixFQUFFO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO1lBQzFDLElBQUksQ0FBQyxDQUFDO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBZ0IsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxF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QUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2pKLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0UsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQzsrR0FwRVUsc0JBQXNCO21HQUF0QixzQkFBc0IsZ05DckJuQyxvdURBdUNBLHM4RUR0QlksV0FBVyw4bUJBQUUsZUFBZTs7NEZBSTNCLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuXG50eXBlIEVudHJ5VHlwZSA9ICdkYXRlJyB8ICdkdXJhdGlvbicgfCAnYm9vbCcgfCAnbnVtYmVyJyB8ICd0ZXh0JztcblxuaW50ZXJmYWNlIEZsYXRFbnRyeSB7XG4gIHBhdGg6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHJhd1ZhbHVlOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nO1xuICB0eXBlOiBFbnRyeVR5cGU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtZGF0YS1zZWFyY2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIElucHV0VGV4dE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLXNlYXJjaC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNiZERhdGFTZWFyY2hDb21wb25lbnQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBkYXRhID0gaW5wdXQ8YW55PihudWxsKTtcbiAgcXVlcnkgPSBzaWduYWwoJycpO1xuXG4gIHByaXZhdGUgYWxsRW50cmllcyA9IGNvbXB1dGVkKCgpOiBGbGF0RW50cnlbXSA9PiB7XG4gICAgY29uc3QgZCA9IHRoaXMuZGF0YSgpPy5kYXRhPy5ib29raW5nX2luZm87XG4gICAgaWYgKCFkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuZmxhdHRlbihkKTtcbiAgfSk7XG5cbiAgcmVzdWx0cyA9IGNvbXB1dGVkKCgpOiBGbGF0RW50cnlbXSA9PiB7XG4gICAgY29uc3QgcSA9IHRoaXMucXVlcnkoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAocS5sZW5ndGggPCAyKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuYWxsRW50cmllcygpXG4gICAgICAuZmlsdGVyKGUgPT5cbiAgICAgICAgZS5rZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fFxuICAgICAgICBlLnJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHxcbiAgICAgICAgZS5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDUwKTtcbiAgfSk7XG5cbiAgdG90YWxDb3VudCA9IGNvbXB1dGVkKCgpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnF1ZXJ5KCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHEubGVuZ3RoIDwgMikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW50cmllcygpLmZpbHRlcihlID0+XG4gICAgICBlLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8XG4gICAgICBlLnJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHxcbiAgICAgIGUuZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSlcbiAgICApLmxlbmd0aDtcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSBmbGF0dGVuKG9iajogYW55LCBwYXRoUGFydHM6IHN0cmluZ1tdID0gW10pOiBGbGF0RW50cnlbXSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcmF3ID0gU3RyaW5nKG9iaik7XG4gICAgICBjb25zdCBrZXkgPSBwYXRoUGFydHNbcGF0aFBhcnRzLmxlbmd0aCAtIDFdID8/ICcnO1xuICAgICAgY29uc3QgeyBkaXNwbGF5LCB0eXBlIH0gPSB0aGlzLmZvcm1hdEVudHJ5KGtleSwgcmF3KTtcbiAgICAgIHJldHVybiBbeyBwYXRoOiBwYXRoUGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJyDigLogJyksIGtleSwgcmF3VmFsdWU6IHJhdywgZGlzcGxheVZhbHVlOiBkaXNwbGF5LCB0eXBlIH1dO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLmZsYXRNYXAoKGl0ZW0sIGkpID0+IHRoaXMuZmxhdHRlbihpdGVtLCBbLi4ucGF0aFBhcnRzLCBgWyR7aX1dYF0pKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iaikuZmxhdE1hcCgoW2ssIHZdKSA9PiB0aGlzLmZsYXR0ZW4odiwgWy4uLnBhdGhQYXJ0cywga10pKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RW50cnkoa2V5OiBzdHJpbmcsIHJhdzogc3RyaW5nKTogeyBkaXNwbGF5OiBzdHJpbmc7IHR5cGU6IEVudHJ5VHlwZSB9IHtcbiAgICBpZiAoL21pbnV0ZXN8ZHVyYXRpb24vaS50ZXN0KGtleSkpIHtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIocmF3KTtcbiAgICAgIGlmICghaXNOYU4obikgJiYgcmF3ICE9PSAnJykge1xuICAgICAgICByZXR1cm4geyBkaXNwbGF5OiBgJHtNYXRoLmZsb29yKG4gLyA2MCl9aCAke24gJSA2MH1tYCwgdHlwZTogJ2R1cmF0aW9uJyB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9Ly50ZXN0KHJhdykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IGRpc3BsYXk6IG5ldyBEYXRlKHJhdykudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KSwgdHlwZTogJ2RhdGUnIH07XG4gICAgICB9IGNhdGNoIHsgLyogZmFsbCB0aHJvdWdoICovIH1cbiAgICB9XG4gICAgaWYgKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLy50ZXN0KHJhdykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IGRpc3BsYXk6IG5ldyBEYXRlKHJhdyArICdUMDA6MDA6MDAnKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJywgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJyB9KSwgdHlwZTogJ2RhdGUnIH07XG4gICAgICB9IGNhdGNoIHsgLyogZmFsbCB0aHJvdWdoICovIH1cbiAgICB9XG4gICAgaWYgKHJhdyA9PT0gJ3RydWUnIHx8IHJhdyA9PT0gJ2ZhbHNlJykgcmV0dXJuIHsgZGlzcGxheTogcmF3LCB0eXBlOiAnYm9vbCcgfTtcbiAgICBpZiAocmF3ICE9PSAnJyAmJiAhaXNOYU4oTnVtYmVyKHJhdykpKSByZXR1cm4geyBkaXNwbGF5OiByYXcsIHR5cGU6ICdudW1iZXInIH07XG4gICAgcmV0dXJuIHsgZGlzcGxheTogcmF3LCB0eXBlOiAndGV4dCcgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaFwiPlxuICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19pbnB1dC13cmFwXCI+XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2ggc2JkLWRhdGEtc2VhcmNoX19pY29uXCI+PC9pPlxuICAgIDxpbnB1dCBwSW5wdXRUZXh0IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19pbnB1dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbnkgZmllbGQgb3IgdmFsdWUgZnJvbSB0aGlzIGJvb2tpbmfigKZcIlxuICAgICAgW25nTW9kZWxdPVwicXVlcnkoKVwiIChuZ01vZGVsQ2hhbmdlKT1cInF1ZXJ5LnNldCgkZXZlbnQpXCIgLz5cbiAgICBAaWYgKHF1ZXJ5KCkubGVuZ3RoID49IDIpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19jb3VudFwiPnt7IHRvdGFsQ291bnQoKSB9fSBtYXRjaHt7IHRvdGFsQ291bnQoKSAhPT0gMSA/ICdlcycgOiAnJyB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAocXVlcnkoKS5sZW5ndGggPj0gMiAmJiByZXN1bHRzKCkubGVuZ3RoID4gMCkge1xuICAgIDxkaXYgY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3Jlc3VsdHNcIj5cbiAgICAgIEBmb3IgKGVudHJ5IG9mIHJlc3VsdHMoKTsgdHJhY2sgZW50cnkucGF0aCArIGVudHJ5LmtleSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaF9fcmVzdWx0LXBhdGhcIj5cbiAgICAgICAgICAgICAgQGlmIChlbnRyeS5wYXRoKSB7IDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtcGF0aHRleHRcIj57eyBlbnRyeS5wYXRoIH19IOKAujwvc3Bhbj4gfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaF9fcmVzdWx0LWtleVwiPnt7IGVudHJ5LmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3Jlc3VsdC1yaWdodFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3R5cGUtYmFkZ2Ugc2JkLWRhdGEtc2VhcmNoX190eXBlLWJhZGdlLS17eyBlbnRyeS50eXBlIH19XCI+e3sgZW50cnkudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtdmFsdWVcIj57eyBlbnRyeS5kaXNwbGF5VmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICh0b3RhbENvdW50KCkgPiA1MCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19tb3JlXCI+K3t7IHRvdGFsQ291bnQoKSAtIDUwIH19IG1vcmUg4oCUIHJlZmluZSB5b3VyIHNlYXJjaDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmIChxdWVyeSgpLmxlbmd0aCA+PSAyICYmIHJlc3VsdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19lbXB0eVwiPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1pbmJveFwiPjwvaT4gTm8gZmllbGRzIG9yIHZhbHVlcyBtYXRjaCBcInt7IHF1ZXJ5KCkgfX1cIlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zZWFyY2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtc2VhcmNoL2RhdGEtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXNlYXJjaC9kYXRhLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFtQnBELE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFRRSw4REFBOEQ7UUFDOUQsU0FBSSxHQUFHLEtBQUssQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUN4QixVQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRVgsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFnQixFQUFFO1lBQzlDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO1lBQzFDLElBQUksQ0FBQyxDQUFDO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBZ0IsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFO2lCQUNyQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDVixDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQ3pDO2lCQUNBLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQVcsRUFBRTtZQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ2xDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FDekMsQ0FBQyxNQUFNLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztLQXNDSjtJQXBDQyw4REFBOEQ7SUFDdEQsT0FBTyxDQUFDLEdBQVEsRUFBRSxZQUFzQixFQUFFO1FBQ2hELElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekcsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8sV0FBVyxDQUFDLEdBQVcsRUFBRSxHQUFXO1FBQzFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDO2dCQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25LLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2pKLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0UsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQzsrR0FwRVUsc0JBQXNCO21HQUF0QixzQkFBc0IsZ05DckJuQyxvdURBdUNBLG0vRUR0QlksV0FBVyw4bUJBQUUsZUFBZTs7NEZBSTNCLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuXG50eXBlIEVudHJ5VHlwZSA9ICdkYXRlJyB8ICdkdXJhdGlvbicgfCAnYm9vbCcgfCAnbnVtYmVyJyB8ICd0ZXh0JztcblxuaW50ZXJmYWNlIEZsYXRFbnRyeSB7XG4gIHBhdGg6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIHJhd1ZhbHVlOiBzdHJpbmc7XG4gIGRpc3BsYXlWYWx1ZTogc3RyaW5nO1xuICB0eXBlOiBFbnRyeVR5cGU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zYmQtZGF0YS1zZWFyY2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIElucHV0VGV4dE1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLXNlYXJjaC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNiZERhdGFTZWFyY2hDb21wb25lbnQge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBkYXRhID0gaW5wdXQ8YW55PihudWxsKTtcbiAgcXVlcnkgPSBzaWduYWwoJycpO1xuXG4gIHByaXZhdGUgYWxsRW50cmllcyA9IGNvbXB1dGVkKCgpOiBGbGF0RW50cnlbXSA9PiB7XG4gICAgY29uc3QgZCA9IHRoaXMuZGF0YSgpPy5kYXRhPy5ib29raW5nX2luZm87XG4gICAgaWYgKCFkKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuZmxhdHRlbihkKTtcbiAgfSk7XG5cbiAgcmVzdWx0cyA9IGNvbXB1dGVkKCgpOiBGbGF0RW50cnlbXSA9PiB7XG4gICAgY29uc3QgcSA9IHRoaXMucXVlcnkoKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAocS5sZW5ndGggPCAyKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHRoaXMuYWxsRW50cmllcygpXG4gICAgICAuZmlsdGVyKGUgPT5cbiAgICAgICAgZS5rZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fFxuICAgICAgICBlLnJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHxcbiAgICAgICAgZS5kaXNwbGF5VmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKVxuICAgICAgKVxuICAgICAgLnNsaWNlKDAsIDUwKTtcbiAgfSk7XG5cbiAgdG90YWxDb3VudCA9IGNvbXB1dGVkKCgpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHEgPSB0aGlzLnF1ZXJ5KCkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKHEubGVuZ3RoIDwgMikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMuYWxsRW50cmllcygpLmZpbHRlcihlID0+XG4gICAgICBlLmtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8XG4gICAgICBlLnJhd1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkgfHxcbiAgICAgIGUuZGlzcGxheVZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSlcbiAgICApLmxlbmd0aDtcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSBmbGF0dGVuKG9iajogYW55LCBwYXRoUGFydHM6IHN0cmluZ1tdID0gW10pOiBGbGF0RW50cnlbXSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcmF3ID0gU3RyaW5nKG9iaik7XG4gICAgICBjb25zdCBrZXkgPSBwYXRoUGFydHNbcGF0aFBhcnRzLmxlbmd0aCAtIDFdID8/ICcnO1xuICAgICAgY29uc3QgeyBkaXNwbGF5LCB0eXBlIH0gPSB0aGlzLmZvcm1hdEVudHJ5KGtleSwgcmF3KTtcbiAgICAgIHJldHVybiBbeyBwYXRoOiBwYXRoUGFydHMuc2xpY2UoMCwgLTEpLmpvaW4oJyDigLogJyksIGtleSwgcmF3VmFsdWU6IHJhdywgZGlzcGxheVZhbHVlOiBkaXNwbGF5LCB0eXBlIH1dO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLmZsYXRNYXAoKGl0ZW0sIGkpID0+IHRoaXMuZmxhdHRlbihpdGVtLCBbLi4ucGF0aFBhcnRzLCBgWyR7aX1dYF0pKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iaikuZmxhdE1hcCgoW2ssIHZdKSA9PiB0aGlzLmZsYXR0ZW4odiwgWy4uLnBhdGhQYXJ0cywga10pKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RW50cnkoa2V5OiBzdHJpbmcsIHJhdzogc3RyaW5nKTogeyBkaXNwbGF5OiBzdHJpbmc7IHR5cGU6IEVudHJ5VHlwZSB9IHtcbiAgICBpZiAoL21pbnV0ZXN8ZHVyYXRpb24vaS50ZXN0KGtleSkpIHtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIocmF3KTtcbiAgICAgIGlmICghaXNOYU4obikgJiYgcmF3ICE9PSAnJykge1xuICAgICAgICByZXR1cm4geyBkaXNwbGF5OiBgJHtNYXRoLmZsb29yKG4gLyA2MCl9aCAke24gJSA2MH1tYCwgdHlwZTogJ2R1cmF0aW9uJyB9O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9Ly50ZXN0KHJhdykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IGRpc3BsYXk6IG5ldyBEYXRlKHJhdykudG9Mb2NhbGVTdHJpbmcoJ2VuLUdCJywgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KSwgdHlwZTogJ2RhdGUnIH07XG4gICAgICB9IGNhdGNoIHsgLyogZmFsbCB0aHJvdWdoICovIH1cbiAgICB9XG4gICAgaWYgKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLy50ZXN0KHJhdykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB7IGRpc3BsYXk6IG5ldyBEYXRlKHJhdyArICdUMDA6MDA6MDAnKS50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJywgeyBkYXk6ICcyLWRpZ2l0JywgbW9udGg6ICdzaG9ydCcsIHllYXI6ICdudW1lcmljJyB9KSwgdHlwZTogJ2RhdGUnIH07XG4gICAgICB9IGNhdGNoIHsgLyogZmFsbCB0aHJvdWdoICovIH1cbiAgICB9XG4gICAgaWYgKHJhdyA9PT0gJ3RydWUnIHx8IHJhdyA9PT0gJ2ZhbHNlJykgcmV0dXJuIHsgZGlzcGxheTogcmF3LCB0eXBlOiAnYm9vbCcgfTtcbiAgICBpZiAocmF3ICE9PSAnJyAmJiAhaXNOYU4oTnVtYmVyKHJhdykpKSByZXR1cm4geyBkaXNwbGF5OiByYXcsIHR5cGU6ICdudW1iZXInIH07XG4gICAgcmV0dXJuIHsgZGlzcGxheTogcmF3LCB0eXBlOiAndGV4dCcgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaFwiPlxuICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19pbnB1dC13cmFwXCI+XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2ggc2JkLWRhdGEtc2VhcmNoX19pY29uXCI+PC9pPlxuICAgIDxpbnB1dCBwSW5wdXRUZXh0IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19pbnB1dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbnkgZmllbGQgb3IgdmFsdWUgZnJvbSB0aGlzIGJvb2tpbmfigKZcIlxuICAgICAgW25nTW9kZWxdPVwicXVlcnkoKVwiIChuZ01vZGVsQ2hhbmdlKT1cInF1ZXJ5LnNldCgkZXZlbnQpXCIgLz5cbiAgICBAaWYgKHF1ZXJ5KCkubGVuZ3RoID49IDIpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19jb3VudFwiPnt7IHRvdGFsQ291bnQoKSB9fSBtYXRjaHt7IHRvdGFsQ291bnQoKSAhPT0gMSA/ICdlcycgOiAnJyB9fTwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIEBpZiAocXVlcnkoKS5sZW5ndGggPj0gMiAmJiByZXN1bHRzKCkubGVuZ3RoID4gMCkge1xuICAgIDxkaXYgY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3Jlc3VsdHNcIj5cbiAgICAgIEBmb3IgKGVudHJ5IG9mIHJlc3VsdHMoKTsgdHJhY2sgZW50cnkucGF0aCArIGVudHJ5LmtleSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaF9fcmVzdWx0LXBhdGhcIj5cbiAgICAgICAgICAgICAgQGlmIChlbnRyeS5wYXRoKSB7IDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtcGF0aHRleHRcIj57eyBlbnRyeS5wYXRoIH19IOKAujwvc3Bhbj4gfVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiZC1kYXRhLXNlYXJjaF9fcmVzdWx0LWtleVwiPnt7IGVudHJ5LmtleSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3Jlc3VsdC1yaWdodFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmQtZGF0YS1zZWFyY2hfX3R5cGUtYmFkZ2Ugc2JkLWRhdGEtc2VhcmNoX190eXBlLWJhZGdlLS17eyBlbnRyeS50eXBlIH19XCI+e3sgZW50cnkudHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19yZXN1bHQtdmFsdWVcIj57eyBlbnRyeS5kaXNwbGF5VmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmICh0b3RhbENvdW50KCkgPiA1MCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19tb3JlXCI+K3t7IHRvdGFsQ291bnQoKSAtIDUwIH19IG1vcmUg4oCUIHJlZmluZSB5b3VyIHNlYXJjaDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmIChxdWVyeSgpLmxlbmd0aCA+PSAyICYmIHJlc3VsdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICA8ZGl2IGNsYXNzPVwic2JkLWRhdGEtc2VhcmNoX19lbXB0eVwiPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1pbmJveFwiPjwvaT4gTm8gZmllbGRzIG9yIHZhbHVlcyBtYXRjaCBcInt7IHF1ZXJ5KCkgfX1cIlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==