desy-angular 9.1.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/esm2022/lib/desy-buttons/components/button/button.component.mjs +3 -3
  2. package/esm2022/lib/desy-buttons/components/listbox/listbox.component.mjs +3 -3
  3. package/esm2022/lib/desy-forms/components/search-bar/search-bar.component.mjs +3 -3
  4. package/esm2022/lib/desy-modals/components/dialog/dialog.component.mjs +3 -3
  5. package/esm2022/lib/desy-modals/components/modal/modal.component.mjs +3 -3
  6. package/esm2022/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.mjs +8 -4
  7. package/esm2022/lib/desy-nav/components/footer/footer.component.mjs +5 -3
  8. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.mjs +3 -3
  9. package/esm2022/lib/desy-nav/components/header/header-navigation/header-navigation.component.mjs +4 -5
  10. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.mjs +3 -3
  11. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.mjs +3 -3
  12. package/esm2022/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.mjs +6 -6
  13. package/esm2022/lib/desy-nav/components/header/header.component.mjs +1 -1
  14. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.mjs +14 -0
  15. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.mjs +38 -0
  16. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.mjs +33 -0
  17. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.mjs +38 -0
  18. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.mjs +14 -0
  19. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.mjs +38 -0
  20. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.mjs +19 -0
  21. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.mjs +34 -0
  22. package/esm2022/lib/desy-nav/components/header-advanced/header-advanced.component.mjs +53 -0
  23. package/esm2022/lib/desy-nav/components/header-mini/header-mini.component.mjs +31 -0
  24. package/esm2022/lib/desy-nav/components/links-list/links-list.component.mjs +4 -6
  25. package/esm2022/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.mjs +4 -7
  26. package/esm2022/lib/desy-nav/components/menu-navigation/menu-navigation.component.mjs +31 -29
  27. package/esm2022/lib/desy-nav/components/menu-vertical/menu-vertical.component.mjs +9 -21
  28. package/esm2022/lib/desy-nav/components/menubar/menubar.component.mjs +8 -8
  29. package/esm2022/lib/desy-nav/components/nav/nav-item/nav-item.component.mjs +1 -1
  30. package/esm2022/lib/desy-nav/components/nav/nav.component.mjs +6 -7
  31. package/esm2022/lib/desy-nav/components/notification/notification.component.mjs +3 -3
  32. package/esm2022/lib/desy-nav/desy-nav.module.mjs +94 -39
  33. package/esm2022/lib/desy-nav/directives/dynamic-heading.directive.mjs +40 -0
  34. package/esm2022/lib/desy-nav/interfaces/header-advanced-logo.mjs +7 -0
  35. package/esm2022/lib/desy-pagination/components/pagination/pagination.component.mjs +47 -5
  36. package/esm2022/lib/desy-tables/components/table/components/table-footer.component.mjs +18 -0
  37. package/esm2022/lib/desy-tables/components/table/table.component.mjs +26 -6
  38. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.mjs +23 -0
  39. package/esm2022/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.mjs +27 -0
  40. package/esm2022/lib/desy-tables/components/table-advanced/table-advanced.component.mjs +14 -5
  41. package/esm2022/lib/desy-tables/desy-tables.module.mjs +29 -14
  42. package/esm2022/lib/desy-views/components/accordion/accordion.component.mjs +7 -10
  43. package/esm2022/lib/desy-views/components/accordion-history/accordion-history.component.mjs +3 -3
  44. package/esm2022/lib/desy-views/components/card/card.component.mjs +3 -3
  45. package/esm2022/lib/desy-views/components/tabs/tabs.component.mjs +3 -3
  46. package/esm2022/public-api.mjs +94 -79
  47. package/fesm2022/desy-angular.mjs +3249 -2784
  48. package/fesm2022/desy-angular.mjs.map +1 -1
  49. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +4 -2
  50. package/lib/desy-nav/components/footer/footer.component.d.ts +2 -1
  51. package/lib/desy-nav/components/header/header-navigation/header-navigation-item/header-navigation-item.component.d.ts +2 -2
  52. package/lib/desy-nav/components/header/header-navigation/header-navigation.component.d.ts +2 -2
  53. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +1 -1
  54. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-close-button/header-offcanvas-close-button.component.d.ts +1 -1
  55. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +2 -2
  56. package/lib/desy-nav/components/header-advanced/header-advanced-custom-navigation/header-custom-navigation.component.d.ts +5 -0
  57. package/lib/desy-nav/components/header-advanced/header-advanced-dropdown/header-advanced-dropdown.component.d.ts +14 -0
  58. package/lib/desy-nav/components/header-advanced/header-advanced-logo/header-advanced-logo.component.d.ts +14 -0
  59. package/lib/desy-nav/components/header-advanced/header-advanced-sub/header-advanced-sub.component.d.ts +17 -0
  60. package/lib/desy-nav/components/header-advanced/header-advanced-subtitle/header-advanced-subtitle.component.d.ts +6 -0
  61. package/lib/desy-nav/components/header-advanced/header-advanced-super/header-advanced-super.component.d.ts +17 -0
  62. package/lib/desy-nav/components/header-advanced/header-advanced-title/header-advanced-title.component.d.ts +8 -0
  63. package/lib/desy-nav/components/header-advanced/header-advanced-title-container/header-advanced-title-container.component.d.ts +15 -0
  64. package/lib/desy-nav/components/header-advanced/header-advanced.component.d.ts +16 -0
  65. package/lib/desy-nav/components/header-mini/header-mini.component.d.ts +12 -0
  66. package/lib/desy-nav/components/menu-navigation/menu-navigation.component.d.ts +4 -2
  67. package/lib/desy-nav/components/menubar/menubar.component.d.ts +4 -4
  68. package/lib/desy-nav/components/nav/nav-item/nav-item.component.d.ts +1 -1
  69. package/lib/desy-nav/components/nav/nav.component.d.ts +2 -1
  70. package/lib/desy-nav/desy-nav.module.d.ts +40 -29
  71. package/lib/desy-nav/directives/dynamic-heading.directive.d.ts +15 -0
  72. package/lib/desy-nav/interfaces/header-advanced-logo.d.ts +5 -0
  73. package/lib/desy-pagination/components/pagination/pagination.component.d.ts +14 -2
  74. package/lib/desy-tables/components/table/components/table-footer.component.d.ts +8 -0
  75. package/lib/desy-tables/components/table/table.component.d.ts +7 -3
  76. package/lib/desy-tables/components/table-advanced/components/table-advanced-footer-cell.component.d.ts +11 -0
  77. package/lib/desy-tables/components/table-advanced/components/table-advanced-footer.component.d.ts +11 -0
  78. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +10 -6
  79. package/lib/desy-tables/desy-tables.module.d.ts +19 -16
  80. package/lib/desy-views/components/accordion/accordion.component.d.ts +4 -4
  81. package/package.json +2 -2
  82. package/public-api.d.ts +93 -78
@@ -73,11 +73,11 @@ export class ButtonComponent extends ContentBaseComponent {
73
73
  return ButtonComponent.ELEMENT_INPUT;
74
74
  }
75
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "desy-button", inputs: { id: "id", classes: "classes", html: "html", text: "text", element: "element", name: "name", type: "type", value: "value", disabled: "disabled", href: "href", target: "target", preventDoubleClick: "preventDoubleClick", routerLink: "routerLink", routerLinkActiveClasses: "routerLinkActiveClasses" }, outputs: { clickEvent: "clickEvent" }, host: { properties: { "attr.tabindex": "this.hostTabIndex" } }, usesInheritance: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [attr.role]=\"href ? null : (role ? role : 'button')\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [attr.role]=\"href ? null : (role ? role : 'button')\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3.InnerContentDirective, selector: "[desyInnerContent]", inputs: ["desyInnerContent", "isHtml", "deleteContentIfEmpty"] }, { kind: "pipe", type: i4.ExternalHrefPipe, name: "externalHref" }] }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, selector: "desy-button", inputs: { id: "id", classes: "classes", html: "html", text: "text", element: "element", name: "name", type: "type", value: "value", disabled: "disabled", href: "href", target: "target", preventDoubleClick: "preventDoubleClick", routerLink: "routerLink", routerLinkActiveClasses: "routerLinkActiveClasses" }, outputs: { clickEvent: "clickEvent" }, host: { properties: { "attr.tabindex": "this.hostTabIndex" } }, usesInheritance: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i3.InnerContentDirective, selector: "[desyInnerContent]", inputs: ["desyInnerContent", "isHtml", "deleteContentIfEmpty"] }, { kind: "pipe", type: i4.ExternalHrefPipe, name: "externalHref" }] }); }
77
77
  }
78
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
79
79
  type: Component,
80
- args: [{ selector: 'desy-button', template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [attr.role]=\"href ? null : (role ? role : 'button')\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [attr.role]=\"href ? null : (role ? role : 'button')\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n" }]
80
+ args: [{ selector: 'desy-button', template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-container [ngSwitch]=\"getElement()\">\n <ng-container *ngSwitchCase=\"staticElementTypeA\">\n <!-- routerLink modifica href, por eso se duplica para que no convivan en un mismo html -->\n <a *ngIf=\"routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n <a *ngIf=\"!routerLink\" draggable=\"false\" (click)=\"onClick($event)\"\n [href]=\"href | externalHref\"\n [attr.target]=\"target ? target : null\"\n [attr.tabindex]=\"tabindex ? tabindex : (isDisabled() ? -1 : null)\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </a>\n\n </ng-container>\n\n <button *ngSwitchCase=\"staticElementTypeButton\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [attr.value]=\"value ? value : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : null\"\n [desyInnerContent]=\"html ? html : text\" [isHtml]=\"isHtml\" [deleteContentIfEmpty]=\"false\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </button>\n\n <input *ngSwitchCase=\"staticElementTypeInput\" (click)=\"onClick($event)\"\n [routerLink]=\"routerLink ? routerLink : null\" [routerLinkActive]=\"routerLinkActiveClasses ? routerLinkActiveClasses : []\"\n [attr.name]=\"name ? name : null\"\n [value]=\"text ? text : null\"\n [attr.disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.role]=\"role ? role : null\"\n [attr.data-prevent-double-click]=\"preventDoubleClick ? 'true' : null\"\n [attr.type]=\"type ? type : 'submit'\"\n [class]=\"getClassNames()\"\n [attr.id]=\"id ? id : null\" [attr.aria-label]=\"ariaLabel ? ariaLabel : null\" [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\" [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\" [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\" [attr.aria-controls]=\"ariaControls ? ariaControls : null\" [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\" [attr.aria-live]=\"ariaLive ? ariaLive : null\" [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\" [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\" [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\" [attr.tabindex]=\"tabindex ? tabindex : null\">\n</ng-container>\n" }]
81
81
  }], propDecorators: { hostTabIndex: [{
82
82
  type: HostBinding,
83
83
  args: ['attr.tabindex']
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
112
112
  }], clickEvent: [{
113
113
  type: Output
114
114
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktYnV0dG9ucy9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQTBCLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQU16RixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxvQkFBb0I7SUFKekQ7O1FBV3lDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBbUJqRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7S0ErRDdCO2FBekZ3QixjQUFTLEdBQVcsR0FBRyxDQUFDO2FBQ3hCLG1CQUFjLEdBQVcsUUFBUSxDQUFDO2FBQ2xDLGtCQUFhLEdBQVcsT0FBTyxDQUFDO0lBMkJ2RCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFDO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVDO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixVQUFVLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsVUFBVSxJQUFJLHFCQUFxQixDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7K0dBMUZVLGVBQWU7bUdBQWYsZUFBZSxxZUNQNUIsaTlLQXlEQTs7NEZEbERhLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0UsYUFBYTs4QkFVZ0IsWUFBWTtzQkFBbEQsV0FBVzt1QkFBQyxlQUFlO2dCQUVuQixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCwgQ29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBDb250ZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTEVNRU5UX0E6IHN0cmluZyA9ICdhJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTEVNRU5UX0JVVFRPTjogc3RyaW5nID0gJ2J1dHRvbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRUxFTUVOVF9JTlBVVDogc3RyaW5nID0gJ2lucHV0JztcblxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHJlYWRvbmx5IGhvc3RUYWJJbmRleCA9IG51bGw7IC8vIEZpeCBwYXJhIGV2aXRhciBlbCB0YWItaW5kZXggYWdyZWdhZG8gcG9yIHJvdXRlckxpbmsgZW4gZWwgaG9zdFxuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgaHRtbDogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZWxlbWVudDogc3RyaW5nOyAvLyAnYScsICdidXR0b24nIG8gJ2lucHV0J1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhyZWY6IHN0cmluZztcbiAgQElucHV0KCkgdGFyZ2V0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZXZlbnREb3VibGVDbGljazogYm9vbGVhbjtcblxuICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmd8YW55W107XG4gIEBJbnB1dCgpIHJvdXRlckxpbmtBY3RpdmVDbGFzc2VzOiBzdHJpbmd8c3RyaW5nW107XG5cbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXZvaWRpbmdEb3VibGVDbGljayA9IGZhbHNlO1xuICBpc0h0bWw6IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0h0bWwgPSBCb29sZWFuKHRoaXMuaHRtbCk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmV2ZW50RG91YmxlQ2xpY2spIHtcbiAgICAgIGlmICghdGhpcy5hdm9pZGluZ0RvdWJsZUNsaWNrKXtcbiAgICAgICAgdGhpcy5hdm9pZGluZ0RvdWJsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmF2b2lkaW5nRG91YmxlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBldml0YW1vcyBwcm9wYWdhciBlbCBldmVudG8gcG9yIGVqZW1wbG8gdW4gc3VibWl0IGVuIHVuIGZvcm11bGFyaW9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVsZW1lbnQoKTogc3RyaW5nIHtcbiAgICBsZXQgZWxlbWVudDogc3RyaW5nO1xuICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaHJlZikge1xuICAgICAgICBlbGVtZW50ID0gQnV0dG9uQ29tcG9uZW50LkVMRU1FTlRfQTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQgPSBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9CVVRUT047XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lcygpOiBzdHJpbmcge1xuICAgIGxldCBjbGFzc05hbWVzID0gJ2MtYnV0dG9uJztcbiAgICBpZiAodGhpcy5jbGFzc2VzKSB7XG4gICAgICBjbGFzc05hbWVzICs9ICcgJyArIHRoaXMuY2xhc3NlcztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNsYXNzTmFtZXMgKz0gJyBjLWJ1dHRvbi0tZGlzYWJsZWQnO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgfVxuXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUEoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnV0dG9uQ29tcG9uZW50LkVMRU1FTlRfQTtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUJ1dHRvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9CVVRUT047XG4gIH1cblxuICBnZXQgc3RhdGljRWxlbWVudFR5cGVJbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9JTlBVVDtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJnZXRFbGVtZW50KClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic3RhdGljRWxlbWVudFR5cGVBXCI+XG4gIDwhLS0gcm91dGVyTGluayBtb2RpZmljYSBocmVmLCBwb3IgZXNvIHNlIGR1cGxpY2EgcGFyYSBxdWUgbm8gY29udml2YW4gZW4gdW4gbWlzbW8gaHRtbCAtLT5cbiAgICAgPGEgKm5nSWY9XCJyb3V0ZXJMaW5rXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGlua1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cInJvdXRlckxpbmtBY3RpdmVDbGFzc2VzID8gcm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgOiBbXVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiAoaXNEaXNhYmxlZCgpID8gLTEgOiBudWxsKVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiaHJlZiA/IG51bGwgOiAocm9sZSA/IHJvbGUgOiAnYnV0dG9uJylcIlxuICAgICAgICBbZGVzeUlubmVyQ29udGVudF09XCJodG1sID8gaHRtbCA6IHRleHRcIiBbaXNIdG1sXT1cImlzSHRtbFwiIFtkZWxldGVDb250ZW50SWZFbXB0eV09XCJmYWxzZVwiXG4gICAgICAgIFtjbGFzc109XCJnZXRDbGFzc05hbWVzKClcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIiBbYXR0ci5hcmlhLWxpdmVdPVwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIiBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIiBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIj5cbiAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgIDwvYT5cblxuICAgICA8YSAqbmdJZj1cIiFyb3V0ZXJMaW5rXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW2hyZWZdPVwiaHJlZiB8IGV4dGVybmFsSHJlZlwiXG4gICAgICAgIFthdHRyLnRhcmdldF09XCJ0YXJnZXQgPyB0YXJnZXQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IChpc0Rpc2FibGVkKCkgPyAtMSA6IG51bGwpXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJocmVmID8gbnVsbCA6IChyb2xlID8gcm9sZSA6ICdidXR0b24nKVwiXG4gICAgICAgIFtkZXN5SW5uZXJDb250ZW50XT1cImh0bWwgPyBodG1sIDogdGV4dFwiIFtpc0h0bWxdPVwiaXNIdG1sXCIgW2RlbGV0ZUNvbnRlbnRJZkVtcHR5XT1cImZhbHNlXCJcbiAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiPlxuICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPC9hPlxuXG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cInN0YXRpY0VsZW1lbnRUeXBlQnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGluayA/IHJvdXRlckxpbmsgOiBudWxsXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwicm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgPyByb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA6IFtdXCJcbiAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWUgPyBuYW1lIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWUgPyB2YWx1ZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXByZXZlbnQtZG91YmxlLWNsaWNrXT1cInByZXZlbnREb3VibGVDbGljayA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLnR5cGVdPVwidHlwZSA/IHR5cGUgOiBudWxsXCJcbiAgICAgICAgICBbZGVzeUlubmVyQ29udGVudF09XCJodG1sID8gaHRtbCA6IHRleHRcIiBbaXNIdG1sXT1cImlzSHRtbFwiIFtkZWxldGVDb250ZW50SWZFbXB0eV09XCJmYWxzZVwiXG4gICAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgICAgW2F0dHIuaWRdPVwiaWQgPyBpZCA6IG51bGxcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIiBbYXR0ci5hcmlhLWhpZGRlbl09XCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIiBbYXR0ci5hcmlhLWxpdmVdPVwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIiBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIiBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIiBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleCA/IHRhYmluZGV4IDogbnVsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG5cbiAgPGlucHV0ICpuZ1N3aXRjaENhc2U9XCJzdGF0aWNFbGVtZW50VHlwZUlucHV0XCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rID8gcm91dGVyTGluayA6IG51bGxcIiBbcm91dGVyTGlua0FjdGl2ZV09XCJyb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA/IHJvdXRlckxpbmtBY3RpdmVDbGFzc2VzIDogW11cIlxuICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lID8gbmFtZSA6IG51bGxcIlxuICAgICAgICAgW3ZhbHVlXT1cInRleHQgPyB0ZXh0IDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0Rpc2FibGVkKCkgPyAndHJ1ZScgOiAoYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbClcIlxuICAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuZGF0YS1wcmV2ZW50LWRvdWJsZS1jbGlja109XCJwcmV2ZW50RG91YmxlQ2xpY2sgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnR5cGVdPVwidHlwZSA/IHR5cGUgOiAnc3VibWl0J1wiXG4gICAgICAgICBbY2xhc3NdPVwiZ2V0Q2xhc3NOYW1lcygpXCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCIgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbjwvbmctY29udGFpbmVyPlxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktYnV0dG9ucy9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQTBCLG9CQUFvQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQU16RixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxvQkFBb0I7SUFKekQ7O1FBV3lDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBbUJqRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7S0ErRDdCO2FBekZ3QixjQUFTLEdBQVcsR0FBRyxDQUFDO2FBQ3hCLG1CQUFjLEdBQVcsUUFBUSxDQUFDO2FBQ2xDLGtCQUFhLEdBQVcsT0FBTyxDQUFDO0lBMkJ2RCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFDO2dCQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksT0FBZSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVDO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2IsT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixVQUFVLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDbEM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsVUFBVSxJQUFJLHFCQUFxQixDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7K0dBMUZVLGVBQWU7bUdBQWYsZUFBZSxxZUNQNUIsaTFLQXVEQTs7NEZEaERhLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0UsYUFBYTs4QkFVZ0IsWUFBWTtzQkFBbEQsV0FBVzt1QkFBQyxlQUFlO2dCQUVuQixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWNjZXNzaWJpbGl0eUNvbXBvbmVudCwgQ29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBDb250ZW50QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTEVNRU5UX0E6IHN0cmluZyA9ICdhJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTEVNRU5UX0JVVFRPTjogc3RyaW5nID0gJ2J1dHRvbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRUxFTUVOVF9JTlBVVDogc3RyaW5nID0gJ2lucHV0JztcblxuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHJlYWRvbmx5IGhvc3RUYWJJbmRleCA9IG51bGw7IC8vIEZpeCBwYXJhIGV2aXRhciBlbCB0YWItaW5kZXggYWdyZWdhZG8gcG9yIHJvdXRlckxpbmsgZW4gZWwgaG9zdFxuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgaHRtbDogc3RyaW5nO1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZWxlbWVudDogc3RyaW5nOyAvLyAnYScsICdidXR0b24nIG8gJ2lucHV0J1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU6IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhyZWY6IHN0cmluZztcbiAgQElucHV0KCkgdGFyZ2V0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZXZlbnREb3VibGVDbGljazogYm9vbGVhbjtcblxuICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmd8YW55W107XG4gIEBJbnB1dCgpIHJvdXRlckxpbmtBY3RpdmVDbGFzc2VzOiBzdHJpbmd8c3RyaW5nW107XG5cbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXZvaWRpbmdEb3VibGVDbGljayA9IGZhbHNlO1xuICBpc0h0bWw6IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0h0bWwgPSBCb29sZWFuKHRoaXMuaHRtbCk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmV2ZW50RG91YmxlQ2xpY2spIHtcbiAgICAgIGlmICghdGhpcy5hdm9pZGluZ0RvdWJsZUNsaWNrKXtcbiAgICAgICAgdGhpcy5hdm9pZGluZ0RvdWJsZUNsaWNrID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmF2b2lkaW5nRG91YmxlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBldml0YW1vcyBwcm9wYWdhciBlbCBldmVudG8gcG9yIGVqZW1wbG8gdW4gc3VibWl0IGVuIHVuIGZvcm11bGFyaW9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVsZW1lbnQoKTogc3RyaW5nIHtcbiAgICBsZXQgZWxlbWVudDogc3RyaW5nO1xuICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaHJlZikge1xuICAgICAgICBlbGVtZW50ID0gQnV0dG9uQ29tcG9uZW50LkVMRU1FTlRfQTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQgPSBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9CVVRUT047XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lcygpOiBzdHJpbmcge1xuICAgIGxldCBjbGFzc05hbWVzID0gJ2MtYnV0dG9uJztcbiAgICBpZiAodGhpcy5jbGFzc2VzKSB7XG4gICAgICBjbGFzc05hbWVzICs9ICcgJyArIHRoaXMuY2xhc3NlcztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGNsYXNzTmFtZXMgKz0gJyBjLWJ1dHRvbi0tZGlzYWJsZWQnO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgfVxuXG4gIGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUEoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnV0dG9uQ29tcG9uZW50LkVMRU1FTlRfQTtcbiAgfVxuXG4gIGdldCBzdGF0aWNFbGVtZW50VHlwZUJ1dHRvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9CVVRUT047XG4gIH1cblxuICBnZXQgc3RhdGljRWxlbWVudFR5cGVJbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdXR0b25Db21wb25lbnQuRUxFTUVOVF9JTlBVVDtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJnZXRFbGVtZW50KClcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic3RhdGljRWxlbWVudFR5cGVBXCI+XG4gIDwhLS0gcm91dGVyTGluayBtb2RpZmljYSBocmVmLCBwb3IgZXNvIHNlIGR1cGxpY2EgcGFyYSBxdWUgbm8gY29udml2YW4gZW4gdW4gbWlzbW8gaHRtbCAtLT5cbiAgICAgPGEgKm5nSWY9XCJyb3V0ZXJMaW5rXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGlua1wiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cInJvdXRlckxpbmtBY3RpdmVDbGFzc2VzID8gcm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgOiBbXVwiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiAoaXNEaXNhYmxlZCgpID8gLTEgOiBudWxsKVwiXG4gICAgICAgIFtkZXN5SW5uZXJDb250ZW50XT1cImh0bWwgPyBodG1sIDogdGV4dFwiIFtpc0h0bWxdPVwiaXNIdG1sXCIgW2RlbGV0ZUNvbnRlbnRJZkVtcHR5XT1cImZhbHNlXCJcbiAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiPlxuICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgPC9hPlxuXG4gICAgIDxhICpuZ0lmPVwiIXJvdXRlckxpbmtcIiBkcmFnZ2FibGU9XCJmYWxzZVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICBbaHJlZl09XCJocmVmIHwgZXh0ZXJuYWxIcmVmXCJcbiAgICAgICAgW2F0dHIudGFyZ2V0XT1cInRhcmdldCA/IHRhcmdldCA6IG51bGxcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleCA/IHRhYmluZGV4IDogKGlzRGlzYWJsZWQoKSA/IC0xIDogbnVsbClcIlxuICAgICAgICBbZGVzeUlubmVyQ29udGVudF09XCJodG1sID8gaHRtbCA6IHRleHRcIiBbaXNIdG1sXT1cImlzSHRtbFwiIFtkZWxldGVDb250ZW50SWZFbXB0eV09XCJmYWxzZVwiXG4gICAgICAgIFtjbGFzc109XCJnZXRDbGFzc05hbWVzKClcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIiBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIiBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIj5cbiAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgIDwvYT5cblxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YnV0dG9uICpuZ1N3aXRjaENhc2U9XCJzdGF0aWNFbGVtZW50VHlwZUJ1dHRvblwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmsgPyByb3V0ZXJMaW5rIDogbnVsbFwiIFtyb3V0ZXJMaW5rQWN0aXZlXT1cInJvdXRlckxpbmtBY3RpdmVDbGFzc2VzID8gcm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgOiBbXVwiXG4gICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lID8gbmFtZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlID8gdmFsdWUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRGlzYWJsZWQoKSA/ICd0cnVlJyA6IChhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsKVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1wcmV2ZW50LWRvdWJsZS1jbGlja109XCJwcmV2ZW50RG91YmxlQ2xpY2sgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci50eXBlXT1cInR5cGUgPyB0eXBlIDogbnVsbFwiXG4gICAgICAgICAgW2Rlc3lJbm5lckNvbnRlbnRdPVwiaHRtbCA/IGh0bWwgOiB0ZXh0XCIgW2lzSHRtbF09XCJpc0h0bWxcIiBbZGVsZXRlQ29udGVudElmRW1wdHldPVwiZmFsc2VcIlxuICAgICAgICAgIFtjbGFzc109XCJnZXRDbGFzc05hbWVzKClcIlxuICAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCIgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgPyBhcmlhRGVzY3JpYmVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCIgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCIgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCIgW2F0dHIuYXJpYS1saXZlXT1cImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCIgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCIgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiYXJpYUVycm9yTWVzc2FnZSA/IGFyaWFFcnJvck1lc3NhZ2UgOiBudWxsXCIgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXggPyB0YWJpbmRleCA6IG51bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxuXG4gIDxpbnB1dCAqbmdTd2l0Y2hDYXNlPVwic3RhdGljRWxlbWVudFR5cGVJbnB1dFwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGluayA/IHJvdXRlckxpbmsgOiBudWxsXCIgW3JvdXRlckxpbmtBY3RpdmVdPVwicm91dGVyTGlua0FjdGl2ZUNsYXNzZXMgPyByb3V0ZXJMaW5rQWN0aXZlQ2xhc3NlcyA6IFtdXCJcbiAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZSA/IG5hbWUgOiBudWxsXCJcbiAgICAgICAgIFt2YWx1ZV09XCJ0ZXh0ID8gdGV4dCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmRhdGEtcHJldmVudC1kb3VibGUtY2xpY2tdPVwicHJldmVudERvdWJsZUNsaWNrID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci50eXBlXT1cInR5cGUgPyB0eXBlIDogJ3N1Ym1pdCdcIlxuICAgICAgICAgW2NsYXNzXT1cImdldENsYXNzTmFtZXMoKVwiXG4gICAgICAgICBbYXR0ci5pZF09XCJpZCA/IGlkIDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSA/IGFyaWFMYWJlbGxlZEJ5IDogbnVsbFwiIFthdHRyLmFyaWEtaGlkZGVuXT1cImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiIFthdHRyLmFyaWEtY3VycmVudF09XCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -279,7 +279,7 @@ export class ListboxComponent extends AccessibilityAndTextOrHtmlRequiredComponen
279
279
  };
280
280
  }
281
281
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListboxComponent, selector: "desy-listbox", inputs: { id: "id", isMultiselectable: "isMultiselectable", doesChangeButtonText: "doesChangeButtonText", label: "label", classes: "classes", classesContainer: "classesContainer", classesTooltip: "classesTooltip", idPrefix: "idPrefix", disabled: "disabled", items: "items" }, outputs: { itemsChange: "itemsChange", activeItemChange: "activeItemChange" }, queries: [{ propertyName: "labelComponent", predicate: ListboxLabelComponent }, { propertyName: "itemComponentList", predicate: ListboxItemComponent }], viewQueries: [{ propertyName: "listboxButton", first: true, predicate: ["button"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxList", first: true, predicate: ["list"], descendants: true, read: ElementRef }, { propertyName: "listboxContent", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxOptions", predicate: ["option"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-checked]=\"item.active\"\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AttributeChangeDirective, selector: "[desyAttributeChange]", inputs: ["attributesToCheck", "desyAttributeChangeEnabled"], outputs: ["desyAttributeChange", "desyAttributeChangeMutation"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i5.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
282
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListboxComponent, selector: "desy-listbox", inputs: { id: "id", isMultiselectable: "isMultiselectable", doesChangeButtonText: "doesChangeButtonText", label: "label", classes: "classes", classesContainer: "classesContainer", classesTooltip: "classesTooltip", idPrefix: "idPrefix", disabled: "disabled", items: "items" }, outputs: { itemsChange: "itemsChange", activeItemChange: "activeItemChange" }, queries: [{ propertyName: "labelComponent", predicate: ListboxLabelComponent }, { propertyName: "itemComponentList", predicate: ListboxItemComponent }], viewQueries: [{ propertyName: "listboxButton", first: true, predicate: ["button"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxList", first: true, predicate: ["list"], descendants: true, read: ElementRef }, { propertyName: "listboxContent", first: true, predicate: ["tooltip"], descendants: true, read: ElementRef, static: true }, { propertyName: "listboxOptions", predicate: ["option"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\" [attr.id]=\"id ? id : null\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.AttributeChangeDirective, selector: "[desyAttributeChange]", inputs: ["attributesToCheck", "desyAttributeChangeEnabled"], outputs: ["desyAttributeChange", "desyAttributeChangeMutation"] }, { kind: "directive", type: i3.CustomInnerContentDirective, selector: "[desyCustomInnerContent]", inputs: ["desyCustomInnerContent"] }, { kind: "directive", type: i4.NgxTippyDirective, selector: "[ngxTippy]", inputs: ["ngxTippy", "tippyProps", "tippyName", "tippyClassName"] }, { kind: "pipe", type: i5.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
283
283
  }
284
284
  __decorate([
285
285
  DesyContentChild(),
@@ -287,7 +287,7 @@ __decorate([
287
287
  ], ListboxComponent.prototype, "labelComponent", void 0);
288
288
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListboxComponent, decorators: [{
289
289
  type: Component,
290
- args: [{ selector: 'desy-listbox', template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-checked]=\"item.active\"\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>" }]
290
+ args: [{ selector: 'desy-listbox', template: "<div [ngClass]=\"classesContainer ? classesContainer : 'relative'\" [attr.id]=\"id ? id : null\">\n <div [id]=\"id + '-label'\" [class]=\"['mb-sm', labelComponent?.classes, label?.classes] | makeHtmlList\">\n <ng-container *desyCustomInnerContent=\"{ component: labelComponent, html: label ? getLabelContent(label) : null }\"></ng-container>\n </div>\n <button #button [id]=\"id + '-button'\"\n [class]=\"['c-listbox', classes] | makeHtmlList\"\n ngxTippy [tippyProps]=\"tippyProperties\"\n aria-haspopup=\"listbox\"\n [attr.aria-labelledby]=\"[hasLabel() ? id + '-label' : null, id + '-button'] | makeHtmlList\"\n [attr.disabled]=\"disabled ? 'disabled' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : (ariaDisabled ? ariaDisabled : null)\"\n [attr.aria-role] = \"role ? role : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errorMessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-hasppup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-tabindex] = \"tabindex ? tabindex : null\">\n <span class=\"inline-flex self-center max-w-xs align-middle truncate\">\n <ng-container *desyCustomInnerContent=\"{ html: buttonContentHtml, text: text }\"></ng-container>\n </span>\n <svg class=\"inline-block -mr-2 align-middle -my-px\" viewBox=\"0 0 96 96\" aria-hidden=\"true\" fill=\"currentColor\" focusable=\"false\" width=\"1.5em\" height=\"1.5em\"><g><path d=\"M46.71 58.037a1.823 1.823 0 002.581 0L62.048 45.28a1.823 1.823 0 00-1.29-3.113H35.243a1.823 1.823 0 00-1.291 3.113z\"/></g></svg>\n </button>\n <div #tooltip [class]=\"['c-listbox__tooltip -ml-sm mt-2 border border-neutral-base shadow-md bg-white', classesTooltip] | makeHtmlList\">\n <ul *ngIf=\"itemList\"\n #list [id]=\"id\"\n (focus)=\"onListFocus()\"\n (keydown.arrowUp)=\"moveFocus(currentFocusIndex - 1, $event)\"\n (keydown.arrowDown)=\"moveFocus(currentFocusIndex + 1, $event)\"\n (keydown.home)=\"moveFocus(0, $event)\"\n (keydown.end)=\"moveFocus(items.length - 1, $event)\"\n (keydown.space)=\"onSpace($event)\"\n role=\"listbox\"\n tabindex=\"-1\"\n class=\"text-sm outline-none\"\n [attr.aria-labelledby]=\"hasLabel() ? id : (ariaLabelledBy ? ariaLabelledBy : null)\"\n [attr.aria-multiselectable]=\"isMultiselectable ? 'true' : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-label] = \"ariaLabel ? ariaLabel : null\"\n [attr.aria-describedby] = \"ariaDescribedBy ? ariaDescribedBy : null\"\n [attr.aria-hidden] = \"ariaHidden ? ariaHidden : null\"\n [attr.aria-controls] = \"ariaControls ? ariaControls : null\"\n [attr.aria-current] = \"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live] = \"ariaLive ? ariaLive : null\"\n [attr.aria-expanded] = \"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-errormessage] = \"ariaErrorMessage ? ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"ariaHasPopup ? ariaHasPopup : null\"\n [attr.aria-activedescendant] = \"lastActiveItems && lastActiveItems.length > 0 ? getItemId(lastActiveItems[0].item, lastActiveItems[0].index) : null\">\n <ng-container *ngFor=\"let item of itemList; index as index\">\n <li #option *ngIf=\"item\" role=\"option\" (click)=\"selectItem(index)\"\n [class]=\"['flex items-center pr-base pl-lg py-sm hover:bg-primary-base hover:text-white focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black', item.classes] | makeHtmlList\"\n [ngClass]=\"{'focused': index === currentFocusIndex}\"\n [attr.aria-label]=\"item.active ? 'true' : (item.ariaLabel ? item.ariaLabel : null)\"\n [id]=\"getItemId(item, index)\"\n [attr.title]=\"item.title ? item.title : null\"\n (desyAttributeChange)=\"onChangeItemChecked()\" [attributesToCheck]=\"'aria-selected'\" [desyAttributeChangeEnabled]=\"items && items.length > 0\"\n\n [attr.aria-describedby]=\"item.ariaDescribedBy ? item.ariaDescribedBy : null\"\n [attr.aria-hidden] = \"item.ariaHidden ? item.ariaHidden : null\"\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\n [attr.aria-current] = \"item.ariaCurrent ? item.ariaCurrent : null\"\n [attr.aria-live] = \"item.ariaLive ? item.ariaLive : null\"\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\n [attr.aria-haspopup] = \"item.ariaHasPopup ? item.ariaHasPopup : null\"\n [attr.aria-tabindex] = \"item.tabindex ? item.tabindex : null\"\n\n [attr.aria-selected]=\"item.active\">\n <ng-container *desyCustomInnerContent=\"{ template: item['content'], html: item.html, text: item.text }\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>" }]
291
291
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { listboxButton: [{
292
292
  type: ViewChild,
293
293
  args: ['button', { read: ElementRef, static: true }]
@@ -331,4 +331,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
331
331
  }], activeItemChange: [{
332
332
  type: Output
333
333
  }] } });
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWJ1dHRvbnMvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywyQ0FBMkMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLDJDQUEyQzthQUUvRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQztJQXNDeEMsWUFBb0IsaUJBQW9DO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRFUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWpCOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLHFCQUFnQixH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REFDckIsb0JBQW9CLGlIQVBSLFVBQVUsNEdBQ1osVUFBVSxvR0FDUCxVQUFVLG9HQUNSLFVBQVUseUVDdEM1QyxpK0tBOEVNOztBRHRDSjtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxxQkFBcUI7d0RBQUM7NEZBVm5FLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxjQUFjO3dHQU9pQyxhQUFhO3NCQUFyRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxXQUFXO3NCQUFuRCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ21CLGNBQWM7c0JBQXZFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNWLGNBQWM7c0JBQTNELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFHSixjQUFjO3NCQUFyRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDQyxpQkFBaUI7c0JBQXZELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUU1QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjY2Vzc2liaWxpdHlBbmRUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7TGlzdGJveExhYmVsRGF0YX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9saXN0Ym94LWxhYmVsLWRhdGEnO1xuaW1wb3J0IHtMaXN0Ym94SXRlbURhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGlzdGJveC1pdGVtLWRhdGEnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQge0xpc3Rib3hMYWJlbENvbXBvbmVudH0gZnJvbSAnLi9saXN0Ym94LWxhYmVsL2xpc3Rib3gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdGJveEl0ZW1Db21wb25lbnR9IGZyb20gJy4vbGlzdGJveC1pdGVtL2xpc3Rib3gtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7aW5saW5lUG9zaXRpb25pbmd9IGZyb20gJ3RpcHB5LmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1saXN0Ym94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Rib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3Rib3hDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIHN0YXRpYyByZWFkb25seSBLRVlfQ09ERV9FU0MgPSAnRXNjYXBlJztcblxuICBAVmlld0NoaWxkKCdidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBsaXN0Ym94QnV0dG9uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGxpc3Rib3hMaXN0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0b29sdGlwJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgbGlzdGJveENvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGRyZW4oJ29wdGlvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBsaXN0Ym94T3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0Ym94TGFiZWxDb21wb25lbnQpIGxhYmVsQ29tcG9uZW50OiBMaXN0Ym94TGFiZWxDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdGJveEl0ZW1Db21wb25lbnQpIGl0ZW1Db21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8TGlzdGJveEl0ZW1Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7IC8vIHJlcXVpcmVkXG4gIEBJbnB1dCgpIGlzTXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBkb2VzQ2hhbmdlQnV0dG9uVGV4dDogYm9vbGVhbjtcbiAgQElucHV0KCkgbGFiZWw6IExpc3Rib3hMYWJlbERhdGE7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlc0NvbnRhaW5lcjogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXRlbXM6IExpc3Rib3hJdGVtRGF0YVtdO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHRpcHB5UHJvcGVydGllczogYW55OyAgICAgIC8vIFByb3BpZWRhZGVzIGRlIHRpcHB5XG4gIGN1cnJlbnRGb2N1c0luZGV4OiBudW1iZXI7IC8vIMONbmRpY2UgZGVsIGVsZW1lbnRvIGFjdHVhbCBjb24gZm9jdXNcbiAgYnV0dG9uQ29udGVudEh0bWw6IHN0cmluZzsgLy8gUHVlZGUgc2VyIGVsIHBhc2FkbyBwb3IgcGFyw6FtZXRybyBvIGVsIGl0ZW0gc2VsZWNjaW9uYWRvIGVuIGNhc28gZGUgY3VycmVudEZvY3VzSW5kZXg9dHJ1ZVxuICBpc0xpc3RWaXNpYmxlID0gZmFsc2U7ICAgICAvLyBJbmRpY2Egc2kgbGEgbGlzdGEgc2UgZXN0w6EgbW9zdHJhbmRvXG4gIGNvbnRlbnRJbml0ID0gZmFsc2U7ICAgICAgIC8vIFNlIGhhIGluaWNpYWRvIGVsIGNvbnRlbmlkb1xuICBwZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSBmYWxzZTtcbiAgcGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG5cbiAgLy8gY29uZGl0aW9uYWxJZCB5IGNvbmRpdGlvbmFsSXRlbSByZXByZXNlbnRhbiBlbiBkZXN5LWh0bWwgZWwgaXRlbSBhY3Rpdm8uIEFxdcOtIGVzIG1lam9yIG9idGVuZXJsbyBjdWFuZG8gc2UgbmVjZXNpdGFcbiAgbGFzdEFjdGl2ZUl0ZW1zOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W107XG4gIGl0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBpdGVtTGlzdDogTGlzdGJveEl0ZW1EYXRhW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdGJveENvbnRlbnQgJiYgdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmluaXRUaXBweSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pdGVtTGlzdCA9IHRoaXMuaXRlbXM7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRJbml0KSB7XG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCkge1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgICB0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgJiYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QpIHtcbiAgICAgIHRoaXMucGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG4gICAgICB0aGlzLmxpc3Rib3hMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBzZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zID0gW107XG4gICAgdGhpcy5pdGVtTGlzdCA9IFtdO1xuICAgIHRoaXMuaXRlbUNvbXBvbmVudExpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuaXRlbUxpc3QucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBpdGVtLml0ZW1DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpKTtcbiAgICAgIHRoaXMuaXRlbUNvbXBvbmVudFN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICAgICAgXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZUl0ZW1zRGF0YSgpOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1MaXN0XG4gICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gaXRlbS5hY3RpdmUgPyB7aXRlbSwgaW5kZXh9IDogbnVsbClcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsKTtcbiAgfVxuXG4gIG9uQ2hhbmdlSXRlbUNoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjaGVja0FjdGl2ZUl0ZW1zKCk6IHZvaWQge1xuICAgIGxldCBhY3RpdmVJdGVtczogeyBpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIgfVtdID0gdGhpcy5pdGVtTGlzdFxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IGl0ZW0uYWN0aXZlID8ge2l0ZW0sIGluZGV4fSA6IG51bGwpXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG5cbiAgICAvLyBzZSBjb21wcnVlYmEgc2kgYWxnw7puIGl0ZW0gaGEgY2FtYmlhZG8gc3UgZXN0YWRvIGRlIGFjdGl2ZVxuICAgIGxldCBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5sYXN0QWN0aXZlSXRlbXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhY3RpdmVJdGVtc1tpXS5pbmRleCAhPT0gdGhpcy5sYXN0QWN0aXZlSXRlbXNbaV0uaW5kZXgpIHtcbiAgICAgICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTaSBoYXkgY2FtYmlvcyBleHRlcm5vcyB5IGVzIHNlbGVjY2nDs24gw7puaWNhLCBhbnVsYW1vcyBsYSBzZWxlY2Npw7NuIGFudGVyaW9yXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmICF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlICYmIGhhc0FjdGl2ZUl0ZW1DaGFuZ2UpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtcy5sZW5ndGggIT09IHRoaXMubGFzdEFjdGl2ZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGl2ZUl0ZW0gb2YgYWN0aXZlSXRlbXMpIHtcbiAgICAgICAgICBpZiAodGhpcy5sYXN0QWN0aXZlSXRlbXMuZmluZEluZGV4KGkgPT4gaS5pbmRleCA9PT0gYWN0aXZlSXRlbS5pbmRleCkgPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoYWN0aXZlSXRlbS5pbmRleCwgZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFjdGl2ZUl0ZW1zID0gYWN0aXZlSXRlbXMuZmlsdGVyKGFjdGl2ZUl0ZW0gPT4gYWN0aXZlSXRlbS5pdGVtLmFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RBY3RpdmVJdGVtcyA9IGFjdGl2ZUl0ZW1zO1xuXG4gICAgLy8gU2UgY2FtYmlhIGVsIGNvbnRlbmlkbyBkZWwgYm90w7NuXG4gICAgaWYgKHRoaXMuZG9lc0NoYW5nZUJ1dHRvblRleHQgJiYgIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUgJiYgYWN0aXZlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWN0aXZlSXRlbU9wdGlvbiA9IHRoaXMubGlzdGJveE9wdGlvbnMuZmluZCgoaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBhY3RpdmVJdGVtc1swXS5pbmRleCk7XG4gICAgICBpZiAoYWN0aXZlSXRlbU9wdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbkNvbnRlbnRIdG1sID0gYWN0aXZlSXRlbU9wdGlvbi5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25Db250ZW50SHRtbCA9IHRoaXMuaHRtbCA/IHRoaXMuaHRtbCA6IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGNhbWJpb3MsIHNlIGVtaXRlblxuICAgIGlmIChoYXNBY3RpdmVJdGVtQ2hhbmdlKSB7XG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodGhpcy5pdGVtTGlzdCk7XG4gICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UuZW1pdChhY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gYWN0aXZlSXRlbXNbMF0uaXRlbSA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlzdFNob3coKTogdm9pZCB7XG4gICAgdGhpcy5pc0xpc3RWaXNpYmxlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5saXN0Ym94TGlzdCkge1xuICAgICAgdGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QgPSB0cnVlO1xuICAgICAgLy9zZXRUaW1lb3V0KCgpID0+IHRoaXMubGlzdGJveExpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBvbkxpc3RDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTGlzdFZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIG9uTGlzdEZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW1zRGF0YSA9IHRoaXMuZ2V0QWN0aXZlSXRlbXNEYXRhKCk7XG4gICAgaWYgKGFjdGl2ZUl0ZW1zRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoYWN0aXZlSXRlbXNEYXRhWzBdLml0ZW0sIGFjdGl2ZUl0ZW1zRGF0YVswXS5pbmRleCkpO1xuICAgICAgaWYgKGFjdGl2ZUVsZW0pIHtcbiAgICAgICAgYWN0aXZlRWxlbS5mb2N1cygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0luZGV4ID0gYWN0aXZlSXRlbXNEYXRhWzBdLmluZGV4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtTGlzdCAmJiB0aGlzLml0ZW1MaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSAwO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbSgwKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdObyBlbGVtZW50IHRvIGZvY3VzJyk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUZvY3VzKHBvc2l0aW9uOiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHBvc2l0aW9uID49IDAgJiYgcG9zaXRpb24gPCB0aGlzLml0ZW1MaXN0Lmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9jdXNJbmRleCA9IHBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNwYWNlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbSh0aGlzLmN1cnJlbnRGb2N1c0luZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHRoaXMuc2V0SXRlbUFjdGl2ZVZhbHVlKGluZGV4LCBmYWxzZSkpO1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXgsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEl0ZW1BY3RpdmVWYWx1ZShpbmRleCwgIXRoaXMuaXRlbUxpc3RbaW5kZXhdLmFjdGl2ZSk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXg6IG51bWJlciwgYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgIT09IG51bGwgJiYgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZWFjdGl2YXRlZEl0ZW0gPSB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmdldChpbmRleCk7XG4gICAgICBkZWFjdGl2YXRlZEl0ZW0/LnNldEFjdGl2ZShhY3RpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1MaXN0W2luZGV4XS5hY3RpdmUgPSBhY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogTcOpdG9kb3MgcGFyYSBmYWNpbGl0YXIgY29udGVuaWRvIGFsIHRlbXBsYXRlXG4gICAqL1xuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWRQcmVmaXggPyB0aGlzLmlkUHJlZml4IDogdGhpcy5pZCArICctbGlzdGJveC1pdGVtJztcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBpdGVtSWQ6IHN0cmluZztcbiAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgaXRlbUlkID0gaXRlbS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbUlkID0gdGhpcy5nZXRJZFByZWZpeCgpO1xuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBpdGVtSWQgKz0gYC0ke2luZGV4fWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdGVtSWQ7XG4gIH1cblxuICBoYXNMYWJlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5sYWJlbCB8fCB0aGlzLmxhYmVsQ29tcG9uZW50KTtcbiAgfVxuXG4gIGdldExhYmVsQ29udGVudChsYWJlbDogTGlzdGJveExhYmVsRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhYmVsLmh0bWwgPyBsYWJlbC5odG1sIDogYDxwPiR7IFN0cmluZ1V0aWxzLmVzY2FwZUh0bWwobGFiZWwudGV4dCkgfTwvcD5gO1xuICB9XG5cbiAgaW5pdFRpcHB5KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRlbnRUb29sdGlwID0gdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxpc3Rib3hCdXR0b25FbGVtZW50ID0gdGhpcy5saXN0Ym94QnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy50aXBweVByb3BlcnRpZXMgPSB7ICAgICAgICBcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICBpbmxpbmVQb3NpdGlvbmluZzogdHJ1ZSwgICAgICAgIFxuICAgICAgY29udGVudDogY29udGVudFRvb2x0aXAsXG4gICAgICBhbGxvd0hUTUw6IHRydWUsIC8vIE1ha2Ugc3VyZSB5b3UgYXJlIHNhbml0aXppbmcgYW55IHVzZXIgZGF0YSBpZiByZW5kZXJpbmcgSFRNTCB0byBwcmV2ZW50IFhTUyBhdHRhY2tzLlxuICAgICAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgICAgIGhpZGVPbkNsaWNrOiB0cnVlLFxuICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICBhcnJvdzogZmFsc2UsXG4gICAgICBvZmZzZXQ6IFswLCAtMTBdLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2hpZGVPblBvcHBlckJsdXInLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICBmbihpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25DcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BzLmhpZGVPblBvcHBlckJsdXIgJiZcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBuYW1lOiAnaGlkZU9uRXNjJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgZm4oe2hpZGV9KTogYW55IHtcblxuICAgICAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IExpc3Rib3hDb21wb25lbnQuS0VZX0NPREVfRVNDKSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIGxpc3Rib3hCdXR0b25FbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25TaG93KCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkhpZGUoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlubGluZVBvc2l0aW9uaW5nXG4gICAgICBdLFxuICAgICAgcm9sZTogZmFsc2UsXG4gICAgICBhcmlhOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgICBvblNob3c6IHRoaXMub25MaXN0U2hvdy5iaW5kKHRoaXMpLFxuICAgICAgb25IaWRkZW46IHRoaXMub25MaXN0Q2xvc2UuYmluZCh0aGlzKVxuICAgIH07XG4gIH1cbiAgXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzZXNDb250YWluZXIgPyBjbGFzc2VzQ29udGFpbmVyIDogJ3JlbGF0aXZlJ1wiPlxuICA8ZGl2IFtpZF09XCJpZCArICctbGFiZWwnXCIgW2NsYXNzXT1cIlsnbWItc20nLCBsYWJlbENvbXBvbmVudD8uY2xhc3NlcywgbGFiZWw/LmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgY29tcG9uZW50OiBsYWJlbENvbXBvbmVudCwgaHRtbDogbGFiZWwgPyBnZXRMYWJlbENvbnRlbnQobGFiZWwpIDogbnVsbCB9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8YnV0dG9uICNidXR0b24gW2lkXT1cImlkICsgJy1idXR0b24nXCJcbiAgICAgICAgICBbY2xhc3NdPVwiWydjLWxpc3Rib3gnLCBjbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgbmd4VGlwcHkgW3RpcHB5UHJvcHNdPVwidGlwcHlQcm9wZXJ0aWVzXCJcbiAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIltoYXNMYWJlbCgpID8gaWQgKyAnLWxhYmVsJyA6IG51bGwsIGlkICsgJy1idXR0b24nXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICd0cnVlJyA6IChhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1yb2xlXSA9IFwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXSA9IFwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV0gPSBcImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXSA9IFwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXSA9IFwiYXJpYUNvbnRyb2xzID8gYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXSA9IFwiYXJpYUV4cGFuZGVkID8gYXJpYUV4cGFuZGVkIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1lcnJvck1lc3NhZ2VdID0gXCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaGFzcHB1cF0gPSBcImFyaWFIYXNQb3B1cCA/IGFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtdGFiaW5kZXhdID0gXCJ0YWJpbmRleCA/IHRhYmluZGV4IDogbnVsbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImlubGluZS1mbGV4IHNlbGYtY2VudGVyIG1heC13LXhzIGFsaWduLW1pZGRsZSB0cnVuY2F0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IGh0bWw6IGJ1dHRvbkNvbnRlbnRIdG1sLCB0ZXh0OiB0ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDxzdmcgY2xhc3M9XCJpbmxpbmUtYmxvY2sgLW1yLTIgIGFsaWduLW1pZGRsZSAtbXktcHhcIiB2aWV3Qm94PVwiMCAwIDk2IDk2XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCIgd2lkdGg9XCIxLjVlbVwiIGhlaWdodD1cIjEuNWVtXCI+PGc+PHBhdGggZD1cIk00Ni43MSA1OC4wMzdhMS44MjMgMS44MjMgMCAwMDIuNTgxIDBMNjIuMDQ4IDQ1LjI4YTEuODIzIDEuODIzIDAgMDAtMS4yOS0zLjExM0gzNS4yNDNhMS44MjMgMS44MjMgMCAwMC0xLjI5MSAzLjExM3pcIi8+PC9nPjwvc3ZnPlxuICA8L2J1dHRvbj5cbiAgPGRpdiAjdG9vbHRpcCBbY2xhc3NdPVwiWydjLWxpc3Rib3hfX3Rvb2x0aXAgLW1sLXNtIG10LTIgYm9yZGVyIGJvcmRlci1uZXV0cmFsLWJhc2Ugc2hhZG93LW1kIGJnLXdoaXRlJywgY2xhc3Nlc1Rvb2x0aXBdIHwgbWFrZUh0bWxMaXN0XCI+XG4gICAgPHVsICpuZ0lmPVwiaXRlbUxpc3RcIlxuICAgICAgICAjbGlzdCBbaWRdPVwiaWRcIlxuICAgICAgICAoZm9jdXMpPVwib25MaXN0Rm9jdXMoKVwiXG4gICAgICAgIChrZXlkb3duLmFycm93VXApPVwibW92ZUZvY3VzKGN1cnJlbnRGb2N1c0luZGV4IC0gMSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJtb3ZlRm9jdXMoY3VycmVudEZvY3VzSW5kZXggKyAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uaG9tZSk9XCJtb3ZlRm9jdXMoMCwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVuZCk9XCJtb3ZlRm9jdXMoaXRlbXMubGVuZ3RoIC0gMSwgJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uU3BhY2UoJGV2ZW50KVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1zbSBvdXRsaW5lLW5vbmVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGFzTGFiZWwoKSA/IGlkIDogKGFyaWFMYWJlbGxlZEJ5ID8gYXJpYUxhYmVsbGVkQnkgOiBudWxsKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cImlzTXVsdGlzZWxlY3RhYmxlID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdID0gXCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV0gPSBcImFyaWFEZXNjcmliZWRCeSA/IGFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl0gPSBcImFyaWFIaWRkZW4gPyBhcmlhSGlkZGVuIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdID0gXCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiYXJpYUN1cnJlbnQgPyBhcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxpdmVdID0gXCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdID0gXCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdID0gXCJhcmlhRXJyb3JNZXNzYWdlID8gYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXSA9IFwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF0gPSBcImxhc3RBY3RpdmVJdGVtcyAmJiBsYXN0QWN0aXZlSXRlbXMubGVuZ3RoID4gMCA/IGdldEl0ZW1JZChsYXN0QWN0aXZlSXRlbXNbMF0uaXRlbSwgbGFzdEFjdGl2ZUl0ZW1zWzBdLmluZGV4KSA6IG51bGxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbUxpc3Q7IGluZGV4IGFzIGluZGV4XCI+XG4gICAgICAgIDxsaSAjb3B0aW9uICpuZ0lmPVwiaXRlbVwiIHJvbGU9XCJvcHRpb25cIiAoY2xpY2spPVwic2VsZWN0SXRlbShpbmRleClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIlsnZmxleCBpdGVtcy1jZW50ZXIgcHItYmFzZSBwbC1sZyBweS1zbSBob3ZlcjpiZy1wcmltYXJ5LWJhc2UgaG92ZXI6dGV4dC13aGl0ZSBmb2N1czpiZy13YXJuaW5nLWJhc2UgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnNoYWRvdy1vdXRsaW5lLWZvY3VzIGZvY3VzOnRleHQtYmxhY2snLCBpdGVtLmNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGluZGV4ID09PSBjdXJyZW50Rm9jdXNJbmRleH1cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFjdGl2ZSA/ICd0cnVlJyA6IChpdGVtLmFyaWFMYWJlbCA/IGl0ZW0uYXJpYUxhYmVsIDogbnVsbClcIlxuICAgICAgICAgICAgW2lkXT1cImdldEl0ZW1JZChpdGVtLCBpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS50aXRsZSA/IGl0ZW0udGl0bGUgOiBudWxsXCJcbiAgICAgICAgICAgIChkZXN5QXR0cmlidXRlQ2hhbmdlKT1cIm9uQ2hhbmdlSXRlbUNoZWNrZWQoKVwiIFthdHRyaWJ1dGVzVG9DaGVja109XCInYXJpYS1zZWxlY3RlZCdcIiBbZGVzeUF0dHJpYnV0ZUNoYW5nZUVuYWJsZWRdPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMFwiXG5cbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaXRlbS5hcmlhRGVzY3JpYmVkQnkgPyBpdGVtLmFyaWFEZXNjcmliZWRCeSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dID0gXCJpdGVtLmFyaWFIaWRkZW4gPyBpdGVtLmFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXRlbS5hcmlhQ29udHJvbHMgPyBpdGVtLmFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XSA9IFwiaXRlbS5hcmlhQ3VycmVudCA/IGl0ZW0uYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcIml0ZW0uYXJpYUxpdmUgPyBpdGVtLmFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIml0ZW0uYXJpYUV4cGFuZGVkID8gaXRlbS5hcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIml0ZW0uYXJpYUVycm9yTWVzc2FnZSA/IGl0ZW0uYXJpYUVycm9yTWVzc2FnZSA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF0gPSBcIml0ZW0uYXJpYUhhc1BvcHVwID8gaXRlbS5hcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtdGFiaW5kZXhdID0gXCJpdGVtLnRhYmluZGV4ID8gaXRlbS50YWJpbmRleCA6IG51bGxcIlxuXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXRlbS5hY3RpdmVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpdGVtLmFjdGl2ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmRlc3lDdXN0b21Jbm5lckNvbnRlbnQ9XCJ7IHRlbXBsYXRlOiBpdGVtWydjb250ZW50J10sIGh0bWw6IGl0ZW0uaHRtbCwgdGV4dDogaXRlbS50ZXh0IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+Il19
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWJ1dHRvbnMvY29tcG9uZW50cy9saXN0Ym94L2xpc3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1idXR0b25zL2NvbXBvbmVudHMvbGlzdGJveC9saXN0Ym94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQywyQ0FBMkMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBR3ZGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7QUFNM0MsTUFBTSxPQUFPLGdCQUFpQixTQUFRLDJDQUEyQzthQUUvRCxpQkFBWSxHQUFHLFFBQVEsQ0FBQztJQXNDeEMsWUFBb0IsaUJBQW9DO1FBQ3RELEtBQUssRUFBRSxDQUFDO1FBRFUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWpCOUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLHFCQUFnQixH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REFDckIsb0JBQW9CLGlIQVBSLFVBQVUsNEdBQ1osVUFBVSxvR0FDUCxVQUFVLG9HQUNSLFVBQVUseUVDdEM1Qyw2OEtBNkVNOztBRHJDSjtJQUFDLGdCQUFnQixFQUFFOzhCQUNxQyxxQkFBcUI7d0RBQUM7NEZBVm5FLGdCQUFnQjtrQkFKNUIsU0FBUzsrQkFDRSxjQUFjO3dHQU9pQyxhQUFhO3NCQUFyRSxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZCxXQUFXO3NCQUFuRCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ21CLGNBQWM7c0JBQXZFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNWLGNBQWM7c0JBQTNELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFHSixjQUFjO3NCQUFyRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDQyxpQkFBaUI7c0JBQXZELGVBQWU7dUJBQUMsb0JBQW9CO2dCQUU1QixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjY2Vzc2liaWxpdHlBbmRUZXh0T3JIdG1sUmVxdWlyZWRDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcbmltcG9ydCB7TGlzdGJveExhYmVsRGF0YX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9saXN0Ym94LWxhYmVsLWRhdGEnO1xuaW1wb3J0IHtMaXN0Ym94SXRlbURhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbGlzdGJveC1pdGVtLWRhdGEnO1xuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQge0xpc3Rib3hMYWJlbENvbXBvbmVudH0gZnJvbSAnLi9saXN0Ym94LWxhYmVsL2xpc3Rib3gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7TGlzdGJveEl0ZW1Db21wb25lbnR9IGZyb20gJy4vbGlzdGJveC1pdGVtL2xpc3Rib3gtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVjb3JhdG9ycy9kZXN5LWNvbnRlbnQtY2hpbGQuZGVjb3JhdG9yJztcbmltcG9ydCB7aW5saW5lUG9zaXRpb25pbmd9IGZyb20gJ3RpcHB5LmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGVzeS1saXN0Ym94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3Rib3guY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3Rib3hDb21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5QW5kVGV4dE9ySHRtbFJlcXVpcmVkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIHN0YXRpYyByZWFkb25seSBLRVlfQ09ERV9FU0MgPSAnRXNjYXBlJztcblxuICBAVmlld0NoaWxkKCdidXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBsaXN0Ym94QnV0dG9uOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGxpc3Rib3hMaXN0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0b29sdGlwJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgbGlzdGJveENvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGRyZW4oJ29wdGlvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBsaXN0Ym94T3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gIEBEZXN5Q29udGVudENoaWxkKClcbiAgQENvbnRlbnRDaGlsZHJlbihMaXN0Ym94TGFiZWxDb21wb25lbnQpIGxhYmVsQ29tcG9uZW50OiBMaXN0Ym94TGFiZWxDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdGJveEl0ZW1Db21wb25lbnQpIGl0ZW1Db21wb25lbnRMaXN0OiBRdWVyeUxpc3Q8TGlzdGJveEl0ZW1Db21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7IC8vIHJlcXVpcmVkXG4gIEBJbnB1dCgpIGlzTXVsdGlzZWxlY3RhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBkb2VzQ2hhbmdlQnV0dG9uVGV4dDogYm9vbGVhbjtcbiAgQElucHV0KCkgbGFiZWw6IExpc3Rib3hMYWJlbERhdGE7XG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlc0NvbnRhaW5lcjogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzVG9vbHRpcDogc3RyaW5nO1xuICBASW5wdXQoKSBpZFByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXRlbXM6IExpc3Rib3hJdGVtRGF0YVtdO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHRpcHB5UHJvcGVydGllczogYW55OyAgICAgIC8vIFByb3BpZWRhZGVzIGRlIHRpcHB5XG4gIGN1cnJlbnRGb2N1c0luZGV4OiBudW1iZXI7IC8vIMONbmRpY2UgZGVsIGVsZW1lbnRvIGFjdHVhbCBjb24gZm9jdXNcbiAgYnV0dG9uQ29udGVudEh0bWw6IHN0cmluZzsgLy8gUHVlZGUgc2VyIGVsIHBhc2FkbyBwb3IgcGFyw6FtZXRybyBvIGVsIGl0ZW0gc2VsZWNjaW9uYWRvIGVuIGNhc28gZGUgY3VycmVudEZvY3VzSW5kZXg9dHJ1ZVxuICBpc0xpc3RWaXNpYmxlID0gZmFsc2U7ICAgICAvLyBJbmRpY2Egc2kgbGEgbGlzdGEgc2UgZXN0w6EgbW9zdHJhbmRvXG4gIGNvbnRlbnRJbml0ID0gZmFsc2U7ICAgICAgIC8vIFNlIGhhIGluaWNpYWRvIGVsIGNvbnRlbmlkb1xuICBwZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSBmYWxzZTtcbiAgcGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG5cbiAgLy8gY29uZGl0aW9uYWxJZCB5IGNvbmRpdGlvbmFsSXRlbSByZXByZXNlbnRhbiBlbiBkZXN5LWh0bWwgZWwgaXRlbSBhY3Rpdm8uIEFxdcOtIGVzIG1lam9yIG9idGVuZXJsbyBjdWFuZG8gc2UgbmVjZXNpdGFcbiAgbGFzdEFjdGl2ZUl0ZW1zOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W107XG4gIGl0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXTtcblxuICBpdGVtTGlzdDogTGlzdGJveEl0ZW1EYXRhW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdGJveENvbnRlbnQgJiYgdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmluaXRUaXBweSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pdGVtTGlzdCA9IHRoaXMuaXRlbXM7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRJbml0KSB7XG4gICAgICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hlY2tBY3RpdmVJdGVtc0FmdGVyVmlld0luaXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCkge1xuICAgICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgICB0aGlzLnBlbmRpbmdDaGVja0FjdGl2ZUl0ZW1zQWZ0ZXJWaWV3SW5pdCA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgJiYgKCF0aGlzLml0ZW1zIHx8IHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QpIHtcbiAgICAgIHRoaXMucGVuZGluZ0ZvY3VzT25MaXN0ID0gZmFsc2U7XG4gICAgICB0aGlzLmxpc3Rib3hMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBzZXR1cEl0ZW1Db21wb25lbnRMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zKSB7XG4gICAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICB0aGlzLml0ZW1Db21wb25lbnRTdWJzY3JpcHRpb25zID0gW107XG4gICAgdGhpcy5pdGVtTGlzdCA9IFtdO1xuICAgIHRoaXMuaXRlbUNvbXBvbmVudExpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHRoaXMuaXRlbUxpc3QucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBpdGVtLml0ZW1DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpKTtcbiAgICAgIHRoaXMuaXRlbUNvbXBvbmVudFN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICAgICAgXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZUl0ZW1zRGF0YSgpOiB7IGl0ZW06IExpc3Rib3hJdGVtRGF0YSwgaW5kZXg6IG51bWJlciB9W10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1MaXN0XG4gICAgICAubWFwKChpdGVtLCBpbmRleCkgPT4gaXRlbS5hY3RpdmUgPyB7aXRlbSwgaW5kZXh9IDogbnVsbClcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsKTtcbiAgfVxuXG4gIG9uQ2hhbmdlSXRlbUNoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0FjdGl2ZUl0ZW1zKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjaGVja0FjdGl2ZUl0ZW1zKCk6IHZvaWQge1xuICAgIGxldCBhY3RpdmVJdGVtczogeyBpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIgfVtdID0gdGhpcy5pdGVtTGlzdFxuICAgICAgLm1hcCgoaXRlbSwgaW5kZXgpID0+IGl0ZW0uYWN0aXZlID8ge2l0ZW0sIGluZGV4fSA6IG51bGwpXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCk7XG5cbiAgICAvLyBzZSBjb21wcnVlYmEgc2kgYWxnw7puIGl0ZW0gaGEgY2FtYmlhZG8gc3UgZXN0YWRvIGRlIGFjdGl2ZVxuICAgIGxldCBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmIGFjdGl2ZUl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5sYXN0QWN0aXZlSXRlbXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGl2ZUl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhY3RpdmVJdGVtc1tpXS5pbmRleCAhPT0gdGhpcy5sYXN0QWN0aXZlSXRlbXNbaV0uaW5kZXgpIHtcbiAgICAgICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBoYXNBY3RpdmVJdGVtQ2hhbmdlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTaSBoYXkgY2FtYmlvcyBleHRlcm5vcyB5IGVzIHNlbGVjY2nDs24gw7puaWNhLCBhbnVsYW1vcyBsYSBzZWxlY2Npw7NuIGFudGVyaW9yXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZUl0ZW1zICYmICF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlICYmIGhhc0FjdGl2ZUl0ZW1DaGFuZ2UpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtcy5sZW5ndGggIT09IHRoaXMubGFzdEFjdGl2ZUl0ZW1zLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGl2ZUl0ZW0gb2YgYWN0aXZlSXRlbXMpIHtcbiAgICAgICAgICBpZiAodGhpcy5sYXN0QWN0aXZlSXRlbXMuZmluZEluZGV4KGkgPT4gaS5pbmRleCA9PT0gYWN0aXZlSXRlbS5pbmRleCkgPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoYWN0aXZlSXRlbS5pbmRleCwgZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFjdGl2ZUl0ZW1zID0gYWN0aXZlSXRlbXMuZmlsdGVyKGFjdGl2ZUl0ZW0gPT4gYWN0aXZlSXRlbS5pdGVtLmFjdGl2ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxhc3RBY3RpdmVJdGVtcyA9IGFjdGl2ZUl0ZW1zO1xuXG4gICAgLy8gU2UgY2FtYmlhIGVsIGNvbnRlbmlkbyBkZWwgYm90w7NuXG4gICAgaWYgKHRoaXMuZG9lc0NoYW5nZUJ1dHRvblRleHQgJiYgIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUgJiYgYWN0aXZlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgYWN0aXZlSXRlbU9wdGlvbiA9IHRoaXMubGlzdGJveE9wdGlvbnMuZmluZCgoaXRlbSwgaW5kZXgpID0+IGluZGV4ID09PSBhY3RpdmVJdGVtc1swXS5pbmRleCk7XG4gICAgICBpZiAoYWN0aXZlSXRlbU9wdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbkNvbnRlbnRIdG1sID0gYWN0aXZlSXRlbU9wdGlvbi5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25Db250ZW50SHRtbCA9IHRoaXMuaHRtbCA/IHRoaXMuaHRtbCA6IG51bGw7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGNhbWJpb3MsIHNlIGVtaXRlblxuICAgIGlmIChoYXNBY3RpdmVJdGVtQ2hhbmdlKSB7XG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodGhpcy5pdGVtTGlzdCk7XG4gICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UuZW1pdChhY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gYWN0aXZlSXRlbXNbMF0uaXRlbSA6IG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG9uTGlzdFNob3coKTogdm9pZCB7XG4gICAgdGhpcy5pc0xpc3RWaXNpYmxlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5saXN0Ym94TGlzdCkge1xuICAgICAgdGhpcy5wZW5kaW5nRm9jdXNPbkxpc3QgPSB0cnVlO1xuICAgICAgLy9zZXRUaW1lb3V0KCgpID0+IHRoaXMubGlzdGJveExpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpKTtcbiAgICB9XG4gIH1cblxuICBvbkxpc3RDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTGlzdFZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIG9uTGlzdEZvY3VzKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUl0ZW1zRGF0YSA9IHRoaXMuZ2V0QWN0aXZlSXRlbXNEYXRhKCk7XG4gICAgaWYgKGFjdGl2ZUl0ZW1zRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhY3RpdmVFbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoYWN0aXZlSXRlbXNEYXRhWzBdLml0ZW0sIGFjdGl2ZUl0ZW1zRGF0YVswXS5pbmRleCkpO1xuICAgICAgaWYgKGFjdGl2ZUVsZW0pIHtcbiAgICAgICAgYWN0aXZlRWxlbS5mb2N1cygpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0luZGV4ID0gYWN0aXZlSXRlbXNEYXRhWzBdLmluZGV4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtTGlzdCAmJiB0aGlzLml0ZW1MaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSAwO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3RhYmxlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbSgwKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdObyBlbGVtZW50IHRvIGZvY3VzJyk7XG4gICAgfVxuICB9XG5cbiAgbW92ZUZvY3VzKHBvc2l0aW9uOiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHBvc2l0aW9uID49IDAgJiYgcG9zaXRpb24gPCB0aGlzLml0ZW1MaXN0Lmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Rm9jdXNJbmRleCA9IHBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKHBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblNwYWNlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbSh0aGlzLmN1cnJlbnRGb2N1c0luZGV4KTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNNdWx0aXNlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHRoaXMuc2V0SXRlbUFjdGl2ZVZhbHVlKGluZGV4LCBmYWxzZSkpO1xuICAgICAgdGhpcy5zZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXgsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldEl0ZW1BY3RpdmVWYWx1ZShpbmRleCwgIXRoaXMuaXRlbUxpc3RbaW5kZXhdLmFjdGl2ZSk7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudEZvY3VzSW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuY2hlY2tBY3RpdmVJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJdGVtQWN0aXZlVmFsdWUoaW5kZXg6IG51bWJlciwgYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbUNvbXBvbmVudExpc3QgIT09IG51bGwgJiYgdGhpcy5pdGVtQ29tcG9uZW50TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZWFjdGl2YXRlZEl0ZW0gPSB0aGlzLml0ZW1Db21wb25lbnRMaXN0LmdldChpbmRleCk7XG4gICAgICBkZWFjdGl2YXRlZEl0ZW0/LnNldEFjdGl2ZShhY3RpdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLml0ZW1MaXN0W2luZGV4XS5hY3RpdmUgPSBhY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgICogTcOpdG9kb3MgcGFyYSBmYWNpbGl0YXIgY29udGVuaWRvIGFsIHRlbXBsYXRlXG4gICAqL1xuXG4gIGdldElkUHJlZml4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWRQcmVmaXggPyB0aGlzLmlkUHJlZml4IDogdGhpcy5pZCArICctbGlzdGJveC1pdGVtJztcbiAgfVxuXG4gIGdldEl0ZW1JZChpdGVtOiBMaXN0Ym94SXRlbURhdGEsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBpdGVtSWQ6IHN0cmluZztcbiAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgaXRlbUlkID0gaXRlbS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbUlkID0gdGhpcy5nZXRJZFByZWZpeCgpO1xuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBpdGVtSWQgKz0gYC0ke2luZGV4fWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdGVtSWQ7XG4gIH1cblxuICBoYXNMYWJlbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5sYWJlbCB8fCB0aGlzLmxhYmVsQ29tcG9uZW50KTtcbiAgfVxuXG4gIGdldExhYmVsQ29udGVudChsYWJlbDogTGlzdGJveExhYmVsRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxhYmVsLmh0bWwgPyBsYWJlbC5odG1sIDogYDxwPiR7IFN0cmluZ1V0aWxzLmVzY2FwZUh0bWwobGFiZWwudGV4dCkgfTwvcD5gO1xuICB9XG5cbiAgaW5pdFRpcHB5KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRlbnRUb29sdGlwID0gdGhpcy5saXN0Ym94Q29udGVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IGxpc3Rib3hCdXR0b25FbGVtZW50ID0gdGhpcy5saXN0Ym94QnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy50aXBweVByb3BlcnRpZXMgPSB7ICAgICAgICBcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICBpbmxpbmVQb3NpdGlvbmluZzogdHJ1ZSwgICAgICAgIFxuICAgICAgY29udGVudDogY29udGVudFRvb2x0aXAsXG4gICAgICBhbGxvd0hUTUw6IHRydWUsIC8vIE1ha2Ugc3VyZSB5b3UgYXJlIHNhbml0aXppbmcgYW55IHVzZXIgZGF0YSBpZiByZW5kZXJpbmcgSFRNTCB0byBwcmV2ZW50IFhTUyBhdHRhY2tzLlxuICAgICAgdHJpZ2dlcjogJ2NsaWNrJyxcbiAgICAgIGhpZGVPbkNsaWNrOiB0cnVlLFxuICAgICAgaW50ZXJhY3RpdmU6IHRydWUsXG4gICAgICBhcnJvdzogZmFsc2UsXG4gICAgICBvZmZzZXQ6IFswLCAtMTBdLFxuICAgICAgdGhlbWU6ICcnLFxuICAgICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2hpZGVPblBvcHBlckJsdXInLFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICBmbihpbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25DcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucG9wcGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BzLmhpZGVPblBvcHBlckJsdXIgJiZcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBuYW1lOiAnaGlkZU9uRXNjJyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgZm4oe2hpZGV9KTogYW55IHtcblxuICAgICAgICAgICAgZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09IExpc3Rib3hDb21wb25lbnQuS0VZX0NPREVfRVNDKSB7XG4gICAgICAgICAgICAgICAgaGlkZSgpO1xuICAgICAgICAgICAgICAgIGxpc3Rib3hCdXR0b25FbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgb25TaG93KCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBvbktleURvd24pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkhpZGUoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlubGluZVBvc2l0aW9uaW5nXG4gICAgICBdLFxuICAgICAgcm9sZTogZmFsc2UsXG4gICAgICBhcmlhOiB7XG4gICAgICAgIGNvbnRlbnQ6ICdhdXRvJyxcbiAgICAgIH0sXG4gICAgICBvblNob3c6IHRoaXMub25MaXN0U2hvdy5iaW5kKHRoaXMpLFxuICAgICAgb25IaWRkZW46IHRoaXMub25MaXN0Q2xvc2UuYmluZCh0aGlzKVxuICAgIH07XG4gIH1cbiAgXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cImNsYXNzZXNDb250YWluZXIgPyBjbGFzc2VzQ29udGFpbmVyIDogJ3JlbGF0aXZlJ1wiIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCI+XG4gIDxkaXYgW2lkXT1cImlkICsgJy1sYWJlbCdcIiBbY2xhc3NdPVwiWydtYi1zbScsIGxhYmVsQ29tcG9uZW50Py5jbGFzc2VzLCBsYWJlbD8uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyBjb21wb25lbnQ6IGxhYmVsQ29tcG9uZW50LCBodG1sOiBsYWJlbCA/IGdldExhYmVsQ29udGVudChsYWJlbCkgOiBudWxsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxidXR0b24gI2J1dHRvbiBbaWRdPVwiaWQgKyAnLWJ1dHRvbidcIlxuICAgICAgICAgIFtjbGFzc109XCJbJ2MtbGlzdGJveCcsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICBuZ3hUaXBweSBbdGlwcHlQcm9wc109XCJ0aXBweVByb3BlcnRpZXNcIlxuICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiW2hhc0xhYmVsKCkgPyBpZCArICctbGFiZWwnIDogbnVsbCwgaWQgKyAnLWJ1dHRvbiddIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkID8gJ3RydWUnIDogKGFyaWFEaXNhYmxlZCA/IGFyaWFEaXNhYmxlZCA6IG51bGwpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXJvbGVdID0gXCJyb2xlID8gcm9sZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdID0gXCJhcmlhTGFiZWwgPyBhcmlhTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSA9IFwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dID0gXCJhcmlhSGlkZGVuID8gYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdID0gXCJhcmlhQ29udHJvbHMgPyBhcmlhQ29udHJvbHMgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1saXZlXSA9IFwiYXJpYUxpdmUgPyBhcmlhTGl2ZSA6IG51bGxcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdID0gXCJhcmlhRXhwYW5kZWQgPyBhcmlhRXhwYW5kZWQgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWVycm9yTWVzc2FnZV0gPSBcImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1oYXNwcHVwXSA9IFwiYXJpYUhhc1BvcHVwID8gYXJpYUhhc1BvcHVwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS10YWJpbmRleF0gPSBcInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaW5saW5lLWZsZXggc2VsZi1jZW50ZXIgbWF4LXcteHMgYWxpZ24tbWlkZGxlIHRydW5jYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqZGVzeUN1c3RvbUlubmVyQ29udGVudD1cInsgaHRtbDogYnV0dG9uQ29udGVudEh0bWwsIHRleHQ6IHRleHQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgPHN2ZyBjbGFzcz1cImlubGluZS1ibG9jayAtbXItMiAgYWxpZ24tbWlkZGxlIC1teS1weFwiIHZpZXdCb3g9XCIwIDAgOTYgOTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIiB3aWR0aD1cIjEuNWVtXCIgaGVpZ2h0PVwiMS41ZW1cIj48Zz48cGF0aCBkPVwiTTQ2LjcxIDU4LjAzN2ExLjgyMyAxLjgyMyAwIDAwMi41ODEgMEw2Mi4wNDggNDUuMjhhMS44MjMgMS44MjMgMCAwMC0xLjI5LTMuMTEzSDM1LjI0M2ExLjgyMyAxLjgyMyAwIDAwLTEuMjkxIDMuMTEzelwiLz48L2c+PC9zdmc+XG4gIDwvYnV0dG9uPlxuICA8ZGl2ICN0b29sdGlwIFtjbGFzc109XCJbJ2MtbGlzdGJveF9fdG9vbHRpcCAtbWwtc20gbXQtMiBib3JkZXIgYm9yZGVyLW5ldXRyYWwtYmFzZSBzaGFkb3ctbWQgYmctd2hpdGUnLCBjbGFzc2VzVG9vbHRpcF0gfCBtYWtlSHRtbExpc3RcIj5cbiAgICA8dWwgKm5nSWY9XCJpdGVtTGlzdFwiXG4gICAgICAgICNsaXN0IFtpZF09XCJpZFwiXG4gICAgICAgIChmb2N1cyk9XCJvbkxpc3RGb2N1cygpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJtb3ZlRm9jdXMoY3VycmVudEZvY3VzSW5kZXggLSAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cIm1vdmVGb2N1cyhjdXJyZW50Rm9jdXNJbmRleCArIDEsICRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5ob21lKT1cIm1vdmVGb2N1cygwLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uZW5kKT1cIm1vdmVGb2N1cyhpdGVtcy5sZW5ndGggLSAxLCAkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwib25TcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIG91dGxpbmUtbm9uZVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoYXNMYWJlbCgpID8gaWQgOiAoYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGwpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwiaXNNdWx0aXNlbGVjdGFibGUgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJhcmlhRGlzYWJsZWQgPyBhcmlhRGlzYWJsZWQgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF0gPSBcImFyaWFMYWJlbCA/IGFyaWFMYWJlbCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSA9IFwiYXJpYURlc2NyaWJlZEJ5ID8gYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXSA9IFwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc10gPSBcImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJhcmlhQ3VycmVudCA/IGFyaWFDdXJyZW50IDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGl2ZV0gPSBcImFyaWFMaXZlID8gYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF0gPSBcImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV0gPSBcImFyaWFFcnJvck1lc3NhZ2UgPyBhcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdID0gXCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XSA9IFwibGFzdEFjdGl2ZUl0ZW1zICYmIGxhc3RBY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gZ2V0SXRlbUlkKGxhc3RBY3RpdmVJdGVtc1swXS5pdGVtLCBsYXN0QWN0aXZlSXRlbXNbMF0uaW5kZXgpIDogbnVsbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtTGlzdDsgaW5kZXggYXMgaW5kZXhcIj5cbiAgICAgICAgPGxpICNvcHRpb24gKm5nSWY9XCJpdGVtXCIgcm9sZT1cIm9wdGlvblwiIChjbGljayk9XCJzZWxlY3RJdGVtKGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiWydmbGV4IGl0ZW1zLWNlbnRlciBwci1iYXNlIHBsLWxnIHB5LXNtIGhvdmVyOmJnLXByaW1hcnktYmFzZSBob3Zlcjp0ZXh0LXdoaXRlIGZvY3VzOmJnLXdhcm5pbmctYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMgZm9jdXM6dGV4dC1ibGFjaycsIGl0ZW0uY2xhc3Nlc10gfCBtYWtlSHRtbExpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydmb2N1c2VkJzogaW5kZXggPT09IGN1cnJlbnRGb2N1c0luZGV4fVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0uYWN0aXZlID8gJ3RydWUnIDogKGl0ZW0uYXJpYUxhYmVsID8gaXRlbS5hcmlhTGFiZWwgOiBudWxsKVwiXG4gICAgICAgICAgICBbaWRdPVwiZ2V0SXRlbUlkKGl0ZW0sIGluZGV4KVwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlID8gaXRlbS50aXRsZSA6IG51bGxcIlxuICAgICAgICAgICAgKGRlc3lBdHRyaWJ1dGVDaGFuZ2UpPVwib25DaGFuZ2VJdGVtQ2hlY2tlZCgpXCIgW2F0dHJpYnV0ZXNUb0NoZWNrXT1cIidhcmlhLXNlbGVjdGVkJ1wiIFtkZXN5QXR0cmlidXRlQ2hhbmdlRW5hYmxlZF09XCJpdGVtcyAmJiBpdGVtcy5sZW5ndGggPiAwXCJcblxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJpdGVtLmFyaWFEZXNjcmliZWRCeSA/IGl0ZW0uYXJpYURlc2NyaWJlZEJ5IDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl0gPSBcIml0ZW0uYXJpYUhpZGRlbiA/IGl0ZW0uYXJpYUhpZGRlbiA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpdGVtLmFyaWFDb250cm9scyA/IGl0ZW0uYXJpYUNvbnRyb2xzIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdID0gXCJpdGVtLmFyaWFDdXJyZW50ID8gaXRlbS5hcmlhQ3VycmVudCA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1saXZlXSA9IFwiaXRlbS5hcmlhTGl2ZSA/IGl0ZW0uYXJpYUxpdmUgOiBudWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXRlbS5hcmlhRXhwYW5kZWQgPyBpdGVtLmFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiaXRlbS5hcmlhRXJyb3JNZXNzYWdlID8gaXRlbS5hcmlhRXJyb3JNZXNzYWdlIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXSA9IFwiaXRlbS5hcmlhSGFzUG9wdXAgPyBpdGVtLmFyaWFIYXNQb3B1cCA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS10YWJpbmRleF0gPSBcIml0ZW0udGFiaW5kZXggPyBpdGVtLnRhYmluZGV4IDogbnVsbFwiXG5cbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS5hY3RpdmVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpkZXN5Q3VzdG9tSW5uZXJDb250ZW50PVwieyB0ZW1wbGF0ZTogaXRlbVsnY29udGVudCddLCBodG1sOiBpdGVtLmh0bWwsIHRleHQ6IGl0ZW0udGV4dCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -32,7 +32,7 @@ export class SearchBarComponent extends FormFieldComponent {
32
32
  useExisting: forwardRef(() => SearchBarComponent),
33
33
  multi: true
34
34
  }
35
- ], queries: [{ propertyName: "button", predicate: ButtonComponent }], usesInheritance: true, ngImport: i0, template: "<!-- searchbar -->\n<div class=\"relative\" [ngClass]=\"{'flex flex-wrap items-end gap-sm': hasButton()}\">\n<ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\n<desy-label *ngIf=\"!labelRef && labelData\"\n [text]=\"labelData.text\"\n [html]=\"labelData.html\"\n [classes]=\"['sr-only', labelData.classes] | makeHtmlList\"\n [isPageHeading]=\"labelData.isPageHeading\"\n [for]=\"id\"\n [role]=\"labelData.role\"\n [ariaLabel]=\"labelData.ariaLabel\"\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\n [ariaHidden]=\"labelData.ariaHidden\"\n [ariaDisabled]=\"labelData.ariaDisabled\"\n [ariaControls]=\"labelData.ariaControls\"\n [ariaCurrent]=\"labelData.ariaCurrent\"\n [ariaLive]=\"labelData.ariaLive\"\n [ariaExpanded]=\"labelData.ariaExpanded\"\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\n [tabindex]=\"labelData.tabindex\"></desy-label>\n<desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" classes=\"sr-only\" [for]=\"id\"></desy-label>\n <input type=\"search\"\n [class]=\"['c-input block pr-12 border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base': hasErrorsMessage(),'w-full': !hasButton()}\"\n [value]=\"value\" (input)=\"onInput($event)\"\n [attr.id]=\"id ? id : null\"\n [attr.name]=\"id ? id : null\"\n [attr.aria-describedby]=\"[describedBy, getErrorId()] | makeHtmlList:null\"\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.placeholder]=\"placeholder ? placeholder : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngIf=\"hasButton(); else defaultButton\">\n <ng-content select=\"desy-button\"></ng-content>\n </ng-container>\n <ng-template #defaultButton>\n <button type=\"submit\" [attr.disabled]=\"disabled ? 'disabled' : null\" [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"onClick($event)\"\n [class]=\"['absolute top-0 right-0 m-sm p-0.5 text-primary-base hover:text-primary-dark focus:bg-warning-base focus:outline-none focus:shadow-outline-focus', buttonClasses] | makeHtmlList\">\n <span class=\"sr-only\">Buscar</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"1.375em\" height=\"1.375em\" aria-hidden=\"true\"><path d=\"M23.498 23.487a1.713 1.713 0 000-2.421l-4.572-4.575a.43.43 0 01-.062-.539 10.283 10.283 0 10-2.911 2.911.43.43 0 01.539.055l4.574 4.574a1.712 1.712 0 002.433-.005zM3.451 10.289a6.85 6.85 0 116.85 6.85 6.85 6.85 0 01-6.85-6.85z\" fill=\"currentColor\"/></svg>\n </button>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\n</div>\n<!-- /searchbar -->\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.LabelComponent, selector: "desy-label", inputs: ["id", "classes", "html", "text", "isPageHeading", "headingLevel", "for"] }, { kind: "component", type: i3.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
35
+ ], queries: [{ propertyName: "button", predicate: ButtonComponent }], usesInheritance: true, ngImport: i0, template: "<!-- searchbar -->\n<div class=\"relative\" [ngClass]=\"{'flex flex-wrap items-end gap-sm': hasButton()}\">\n<ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\n<desy-label *ngIf=\"!labelRef && labelData\"\n [text]=\"labelData.text\"\n [html]=\"labelData.html\"\n [classes]=\"['sr-only', labelData.classes] | makeHtmlList\"\n [isPageHeading]=\"labelData.isPageHeading\"\n [for]=\"id\"\n [role]=\"labelData.role\"\n [ariaLabel]=\"labelData.ariaLabel\"\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\n [ariaHidden]=\"labelData.ariaHidden\"\n [ariaDisabled]=\"labelData.ariaDisabled\"\n [ariaControls]=\"labelData.ariaControls\"\n [ariaCurrent]=\"labelData.ariaCurrent\"\n [ariaLive]=\"labelData.ariaLive\"\n [ariaExpanded]=\"labelData.ariaExpanded\"\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\n [tabindex]=\"labelData.tabindex\"></desy-label>\n<desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" classes=\"sr-only\" [for]=\"id\"></desy-label>\n <input type=\"search\"\n [class]=\"['c-input block border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base': hasErrorsMessage(),'pr-12 w-full': !hasButton()}\"\n [value]=\"value\" (input)=\"onInput($event)\"\n [attr.id]=\"id ? id : null\"\n [attr.name]=\"id ? id : null\"\n [attr.aria-describedby]=\"[describedBy, getErrorId()] | makeHtmlList:null\"\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.placeholder]=\"placeholder ? placeholder : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngIf=\"hasButton(); else defaultButton\">\n <ng-content select=\"desy-button\"></ng-content>\n </ng-container>\n <ng-template #defaultButton>\n <button type=\"submit\" [attr.disabled]=\"disabled ? 'disabled' : null\" [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"onClick($event)\"\n [class]=\"['absolute top-0 right-0 m-sm p-0.5 text-primary-base hover:text-primary-dark focus:bg-warning-base focus:outline-none focus:shadow-outline-focus', buttonClasses] | makeHtmlList\">\n <span class=\"sr-only\">Buscar</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"1.375em\" height=\"1.375em\" aria-hidden=\"true\"><path d=\"M23.498 23.487a1.713 1.713 0 000-2.421l-4.572-4.575a.43.43 0 01-.062-.539 10.283 10.283 0 10-2.911 2.911.43.43 0 01.539.055l4.574 4.574a1.712 1.712 0 002.433-.005zM3.451 10.289a6.85 6.85 0 116.85 6.85 6.85 6.85 0 01-6.85-6.85z\" fill=\"currentColor\"/></svg>\n </button>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\n</div>\n<!-- /searchbar -->\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.LabelComponent, selector: "desy-label", inputs: ["id", "classes", "html", "text", "isPageHeading", "headingLevel", "for"] }, { kind: "component", type: i3.ErrorMessageComponent, selector: "desy-error-message", inputs: ["id", "classes", "html", "text", "visuallyHiddenText"] }, { kind: "pipe", type: i4.MakeHtmlListPipe, name: "makeHtmlList" }] }); }
36
36
  }
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchBarComponent, decorators: [{
38
38
  type: Component,
@@ -42,7 +42,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
42
42
  useExisting: forwardRef(() => SearchBarComponent),
43
43
  multi: true
44
44
  }
45
- ], template: "<!-- searchbar -->\n<div class=\"relative\" [ngClass]=\"{'flex flex-wrap items-end gap-sm': hasButton()}\">\n<ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\n<desy-label *ngIf=\"!labelRef && labelData\"\n [text]=\"labelData.text\"\n [html]=\"labelData.html\"\n [classes]=\"['sr-only', labelData.classes] | makeHtmlList\"\n [isPageHeading]=\"labelData.isPageHeading\"\n [for]=\"id\"\n [role]=\"labelData.role\"\n [ariaLabel]=\"labelData.ariaLabel\"\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\n [ariaHidden]=\"labelData.ariaHidden\"\n [ariaDisabled]=\"labelData.ariaDisabled\"\n [ariaControls]=\"labelData.ariaControls\"\n [ariaCurrent]=\"labelData.ariaCurrent\"\n [ariaLive]=\"labelData.ariaLive\"\n [ariaExpanded]=\"labelData.ariaExpanded\"\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\n [tabindex]=\"labelData.tabindex\"></desy-label>\n<desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" classes=\"sr-only\" [for]=\"id\"></desy-label>\n <input type=\"search\"\n [class]=\"['c-input block pr-12 border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base': hasErrorsMessage(),'w-full': !hasButton()}\"\n [value]=\"value\" (input)=\"onInput($event)\"\n [attr.id]=\"id ? id : null\"\n [attr.name]=\"id ? id : null\"\n [attr.aria-describedby]=\"[describedBy, getErrorId()] | makeHtmlList:null\"\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.placeholder]=\"placeholder ? placeholder : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngIf=\"hasButton(); else defaultButton\">\n <ng-content select=\"desy-button\"></ng-content>\n </ng-container>\n <ng-template #defaultButton>\n <button type=\"submit\" [attr.disabled]=\"disabled ? 'disabled' : null\" [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"onClick($event)\"\n [class]=\"['absolute top-0 right-0 m-sm p-0.5 text-primary-base hover:text-primary-dark focus:bg-warning-base focus:outline-none focus:shadow-outline-focus', buttonClasses] | makeHtmlList\">\n <span class=\"sr-only\">Buscar</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"1.375em\" height=\"1.375em\" aria-hidden=\"true\"><path d=\"M23.498 23.487a1.713 1.713 0 000-2.421l-4.572-4.575a.43.43 0 01-.062-.539 10.283 10.283 0 10-2.911 2.911.43.43 0 01.539.055l4.574 4.574a1.712 1.712 0 002.433-.005zM3.451 10.289a6.85 6.85 0 116.85 6.85 6.85 6.85 0 01-6.85-6.85z\" fill=\"currentColor\"/></svg>\n </button>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\n</div>\n<!-- /searchbar -->\n" }]
45
+ ], template: "<!-- searchbar -->\n<div class=\"relative\" [ngClass]=\"{'flex flex-wrap items-end gap-sm': hasButton()}\">\n<ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\n<desy-label *ngIf=\"!labelRef && labelData\"\n [text]=\"labelData.text\"\n [html]=\"labelData.html\"\n [classes]=\"['sr-only', labelData.classes] | makeHtmlList\"\n [isPageHeading]=\"labelData.isPageHeading\"\n [for]=\"id\"\n [role]=\"labelData.role\"\n [ariaLabel]=\"labelData.ariaLabel\"\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\n [ariaHidden]=\"labelData.ariaHidden\"\n [ariaDisabled]=\"labelData.ariaDisabled\"\n [ariaControls]=\"labelData.ariaControls\"\n [ariaCurrent]=\"labelData.ariaCurrent\"\n [ariaLive]=\"labelData.ariaLive\"\n [ariaExpanded]=\"labelData.ariaExpanded\"\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\n [tabindex]=\"labelData.tabindex\"></desy-label>\n<desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" classes=\"sr-only\" [for]=\"id\"></desy-label>\n <input type=\"search\"\n [class]=\"['c-input block border-black rounded font-semibold placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base': hasErrorsMessage(),'pr-12 w-full': !hasButton()}\"\n [value]=\"value\" (input)=\"onInput($event)\"\n [attr.id]=\"id ? id : null\"\n [attr.name]=\"id ? id : null\"\n [attr.aria-describedby]=\"[describedBy, getErrorId()] | makeHtmlList:null\"\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.placeholder]=\"placeholder ? placeholder : null\"\n [attr.role]=\"role ? role : null\"\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\n [attr.tabindex]=\"tabindex ? tabindex : null\">\n <ng-container *ngIf=\"hasButton(); else defaultButton\">\n <ng-content select=\"desy-button\"></ng-content>\n </ng-container>\n <ng-template #defaultButton>\n <button type=\"submit\" [attr.disabled]=\"disabled ? 'disabled' : null\" [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"onClick($event)\"\n [class]=\"['absolute top-0 right-0 m-sm p-0.5 text-primary-base hover:text-primary-dark focus:bg-warning-base focus:outline-none focus:shadow-outline-focus', buttonClasses] | makeHtmlList\">\n <span class=\"sr-only\">Buscar</span>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"1.375em\" height=\"1.375em\" aria-hidden=\"true\"><path d=\"M23.498 23.487a1.713 1.713 0 000-2.421l-4.572-4.575a.43.43 0 01-.062-.539 10.283 10.283 0 10-2.911 2.911.43.43 0 01.539.055l4.574 4.574a1.712 1.712 0 002.433-.005zM3.451 10.289a6.85 6.85 0 116.85 6.85 6.85 6.85 0 01-6.85-6.85z\" fill=\"currentColor\"/></svg>\n </button>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\n [id]=\"getErrorId()\"\n [text]=\"errorMessageData.text\"\n [html]=\"errorMessageData.html\"\n [classes]=\"errorMessageData.classes\"\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\n [role]=\"errorMessageData.role\"\n [ariaLabel]=\"errorMessageData.ariaLabel\"\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\n [ariaHidden]=\"errorMessageData.ariaHidden\"\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\n [ariaControls]=\"errorMessageData.ariaControls\"\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\n [ariaLive]=\"errorMessageData.ariaLive\"\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\n</div>\n<!-- /searchbar -->\n" }]
46
46
  }], propDecorators: { button: [{
47
47
  type: ContentChildren,
48
48
  args: [ButtonComponent]
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
57
57
  }], clickEvent: [{
58
58
  type: Output
59
59
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUFFLFNBQVMsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7QUFhM0YsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUEwQjtJQVhsRTs7UUFtQlksZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsVUFBSyxHQUFHLEVBQUUsQ0FBQztLQWdCWjtJQWRDLE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQXpCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix5TUFSbEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2dCQUNqRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURBSWdCLGVBQWUsb0RDekJsQywwM0tBZ0ZBOzs0RkR6RGEsa0JBQWtCO2tCQVg5QixTQUFTOytCQUNFLGlCQUFpQixhQUVoQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSWlDLE1BQU07c0JBQXZDLGVBQWU7dUJBQUMsZUFBZTtnQkFFdkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZGVzeS1idXR0b25zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LXNlYXJjaC1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VhcmNoQmFyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEJhckNvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxzdHJpbmc+eyAgXG4gIFxuICBAQ29udGVudENoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCkgYnV0dG9uOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICBASW5wdXQoKSBkZXNjcmliZWRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBhbnk7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIFxuICB2YWx1ZSA9ICcnO1xuICBcbiAgb25DbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFzQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbiAmJiB0aGlzLmJ1dHRvbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPCEtLSBzZWFyY2hiYXIgLS0+XG48ZGl2IGNsYXNzPVwicmVsYXRpdmVcIiBbbmdDbGFzc109XCJ7J2ZsZXggZmxleC13cmFwIGl0ZW1zLWVuZCBnYXAtc20nOiBoYXNCdXR0b24oKX1cIj5cbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFJlZlwiPjwvbmctY29udGFpbmVyPlxuPGRlc3ktbGFiZWwgKm5nSWY9XCIhbGFiZWxSZWYgJiYgbGFiZWxEYXRhXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cImxhYmVsRGF0YS50ZXh0XCJcbiAgICAgICAgICAgIFtodG1sXT1cImxhYmVsRGF0YS5odG1sXCJcbiAgICAgICAgICAgIFtjbGFzc2VzXT1cIlsnc3Itb25seScsIGxhYmVsRGF0YS5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICBbaXNQYWdlSGVhZGluZ109XCJsYWJlbERhdGEuaXNQYWdlSGVhZGluZ1wiXG4gICAgICAgICAgICBbZm9yXT1cImlkXCJcbiAgICAgICAgICAgIFtyb2xlXT1cImxhYmVsRGF0YS5yb2xlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibGFiZWxEYXRhLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImxhYmVsRGF0YS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImxhYmVsRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJsYWJlbERhdGEuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImxhYmVsRGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJsYWJlbERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJsYWJlbERhdGEuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgW2FyaWFMaXZlXT1cImxhYmVsRGF0YS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cImxhYmVsRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwibGFiZWxEYXRhLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJsYWJlbERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJsYWJlbERhdGEudGFiaW5kZXhcIj48L2Rlc3ktbGFiZWw+XG48ZGVzeS1sYWJlbCAqbmdJZj1cIiFsYWJlbFJlZiAmJiAhbGFiZWxEYXRhICYmIGxhYmVsVGV4dFwiIFt0ZXh0XT1cImxhYmVsVGV4dFwiIGNsYXNzZXM9XCJzci1vbmx5XCIgW2Zvcl09XCJpZFwiPjwvZGVzeS1sYWJlbD5cbiAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgW2NsYXNzXT1cIlsnYy1pbnB1dCBibG9jayBwci0xMiBib3JkZXItYmxhY2sgcm91bmRlZCBmb250LXNlbWlib2xkIHBsYWNlaG9sZGVyLW5ldXRyYWwtZGFyayBmb2N1czpib3JkZXItYmxhY2sgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMtaW5wdXQgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctd2FybmluZy1iYXNlIGRpc2FibGVkOmJnLW5ldXRyYWwtbGlnaHQgZGlzYWJsZWQ6Ym9yZGVyLW5ldXRyYWwtYmFzZScsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWFsZXJ0LWJhc2UgcmluZy0yIHJpbmctYWxlcnQtYmFzZSc6IGhhc0Vycm9yc01lc3NhZ2UoKSwndy1mdWxsJzogIWhhc0J1dHRvbigpfVwiXG4gICAgICAgICBbdmFsdWVdPVwidmFsdWVcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLm5hbWVdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJbZGVzY3JpYmVkQnksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6bnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJoYXNFcnJvcnNNZXNzYWdlKCkgPyBnZXRFcnJvcklkKCkgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNNZXNzYWdlKCkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNCdXR0b24oKTsgZWxzZSBkZWZhdWx0QnV0dG9uXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBtLXNtIHAtMC41IHRleHQtcHJpbWFyeS1iYXNlIGhvdmVyOnRleHQtcHJpbWFyeS1kYXJrIGZvY3VzOmJnLXdhcm5pbmctYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMnLCBidXR0b25DbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QnVzY2FyPC9zcGFuPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMS4zNzVlbVwiIGhlaWdodD1cIjEuMzc1ZW1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTIzLjQ5OCAyMy40ODdhMS43MTMgMS43MTMgMCAwMDAtMi40MjFsLTQuNTcyLTQuNTc1YS40My40MyAwIDAxLS4wNjItLjUzOSAxMC4yODMgMTAuMjgzIDAgMTAtMi45MTEgMi45MTEuNDMuNDMgMCAwMS41MzkuMDU1bDQuNTc0IDQuNTc0YTEuNzEyIDEuNzEyIDAgMDAyLjQzMy0uMDA1ek0zLjQ1MSAxMC4yODlhNi44NSA2Ljg1IDAgMTE2Ljg1IDYuODUgNi44NSA2Ljg1IDAgMDEtNi44NS02Ljg1elwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvck1lc3NhZ2VSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgZXJyb3JNZXNzYWdlRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlRGF0YS50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCJlcnJvck1lc3NhZ2VEYXRhLmh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImVycm9yTWVzc2FnZURhdGEuY2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Zpc3VhbGx5SGlkZGVuVGV4dF09XCJlcnJvck1lc3NhZ2VEYXRhLnZpc3VhbGx5SGlkZGVuVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiZXJyb3JNZXNzYWdlRGF0YS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImVycm9yTWVzc2FnZURhdGEudGFiaW5kZXhcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgIWVycm9yTWVzc2FnZURhdGEgJiYgZXJyb3JNZXNzYWdlVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlVGV4dFwiIFtpZF09XCJnZXRFcnJvcklkKClcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbjwvZGl2PlxuPCEtLSAvc2VhcmNoYmFyIC0tPlxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXN5LWFuZ3VsYXIvc3JjL2xpYi9kZXN5LWZvcm1zL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUFFLFNBQVMsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7QUFhM0YsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGtCQUEwQjtJQVhsRTs7UUFtQlksZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsVUFBSyxHQUFHLEVBQUUsQ0FBQztLQWdCWjtJQWRDLE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFJLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQXpCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix5TUFSbEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2dCQUNqRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURBSWdCLGVBQWUsb0RDekJsQywwM0tBZ0ZBOzs0RkR6RGEsa0JBQWtCO2tCQVg5QixTQUFTOytCQUNFLGlCQUFpQixhQUVoQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQzs0QkFDakQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSWlDLE1BQU07c0JBQXZDLGVBQWU7dUJBQUMsZUFBZTtnQkFFdkIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZGVzeS1idXR0b25zL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZXN5LXNlYXJjaC1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VhcmNoQmFyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEJhckNvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxzdHJpbmc+eyAgXG4gIFxuICBAQ29udGVudENoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCkgYnV0dG9uOiBRdWVyeUxpc3Q8QnV0dG9uQ29tcG9uZW50PjtcblxuICBASW5wdXQoKSBkZXNjcmliZWRCeTogc3RyaW5nO1xuICBASW5wdXQoKSBjbGFzc2VzOiBhbnk7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzZXM6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIFxuICB2YWx1ZSA9ICcnO1xuICBcbiAgb25DbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgaGFzQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmJ1dHRvbiAmJiB0aGlzLmJ1dHRvbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxufVxuIiwiPCEtLSBzZWFyY2hiYXIgLS0+XG48ZGl2IGNsYXNzPVwicmVsYXRpdmVcIiBbbmdDbGFzc109XCJ7J2ZsZXggZmxleC13cmFwIGl0ZW1zLWVuZCBnYXAtc20nOiBoYXNCdXR0b24oKX1cIj5cbjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFJlZlwiPjwvbmctY29udGFpbmVyPlxuPGRlc3ktbGFiZWwgKm5nSWY9XCIhbGFiZWxSZWYgJiYgbGFiZWxEYXRhXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cImxhYmVsRGF0YS50ZXh0XCJcbiAgICAgICAgICAgIFtodG1sXT1cImxhYmVsRGF0YS5odG1sXCJcbiAgICAgICAgICAgIFtjbGFzc2VzXT1cIlsnc3Itb25seScsIGxhYmVsRGF0YS5jbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiXG4gICAgICAgICAgICBbaXNQYWdlSGVhZGluZ109XCJsYWJlbERhdGEuaXNQYWdlSGVhZGluZ1wiXG4gICAgICAgICAgICBbZm9yXT1cImlkXCJcbiAgICAgICAgICAgIFtyb2xlXT1cImxhYmVsRGF0YS5yb2xlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibGFiZWxEYXRhLmFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImxhYmVsRGF0YS5hcmlhRGVzY3JpYmVkQnlcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImxhYmVsRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXJpYUhpZGRlbl09XCJsYWJlbERhdGEuYXJpYUhpZGRlblwiXG4gICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImxhYmVsRGF0YS5hcmlhRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2FyaWFDb250cm9sc109XCJsYWJlbERhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgIFthcmlhQ3VycmVudF09XCJsYWJlbERhdGEuYXJpYUN1cnJlbnRcIlxuICAgICAgICAgICAgW2FyaWFMaXZlXT1cImxhYmVsRGF0YS5hcmlhTGl2ZVwiXG4gICAgICAgICAgICBbYXJpYUV4cGFuZGVkXT1cImxhYmVsRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2FyaWFFcnJvck1lc3NhZ2VdPVwibGFiZWxEYXRhLmFyaWFFcnJvck1lc3NhZ2VcIlxuICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJsYWJlbERhdGEuYXJpYUhhc1BvcHVwXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJsYWJlbERhdGEudGFiaW5kZXhcIj48L2Rlc3ktbGFiZWw+XG48ZGVzeS1sYWJlbCAqbmdJZj1cIiFsYWJlbFJlZiAmJiAhbGFiZWxEYXRhICYmIGxhYmVsVGV4dFwiIFt0ZXh0XT1cImxhYmVsVGV4dFwiIGNsYXNzZXM9XCJzci1vbmx5XCIgW2Zvcl09XCJpZFwiPjwvZGVzeS1sYWJlbD5cbiAgPGlucHV0IHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgW2NsYXNzXT1cIlsnYy1pbnB1dCBibG9jayBib3JkZXItYmxhY2sgcm91bmRlZCBmb250LXNlbWlib2xkIHBsYWNlaG9sZGVyLW5ldXRyYWwtZGFyayBmb2N1czpib3JkZXItYmxhY2sgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMtaW5wdXQgZm9jdXM6cmluZy00IGZvY3VzOnJpbmctd2FybmluZy1iYXNlIGRpc2FibGVkOmJnLW5ldXRyYWwtbGlnaHQgZGlzYWJsZWQ6Ym9yZGVyLW5ldXRyYWwtYmFzZScsIGNsYXNzZXNdIHwgbWFrZUh0bWxMaXN0XCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnYm9yZGVyLWFsZXJ0LWJhc2UgcmluZy0yIHJpbmctYWxlcnQtYmFzZSc6IGhhc0Vycm9yc01lc3NhZ2UoKSwncHItMTIgdy1mdWxsJzogIWhhc0J1dHRvbigpfVwiXG4gICAgICAgICBbdmFsdWVdPVwidmFsdWVcIiAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgIFthdHRyLmlkXT1cImlkID8gaWQgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLm5hbWVdPVwiaWQgPyBpZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJbZGVzY3JpYmVkQnksIGdldEVycm9ySWQoKV0gfCBtYWtlSHRtbExpc3Q6bnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJoYXNFcnJvcnNNZXNzYWdlKCkgPyBnZXRFcnJvcklkKCkgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvcnNNZXNzYWdlKCkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnJvbGVdPVwicm9sZSA/IHJvbGUgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsID8gYXJpYUxhYmVsIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgPyBhcmlhTGFiZWxsZWRCeSA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUhpZGRlbiA/IGFyaWFIaWRkZW4gOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiYXJpYURpc2FibGVkID8gYXJpYURpc2FibGVkIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImFyaWFDb250cm9scyA/IGFyaWFDb250cm9scyA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImFyaWFDdXJyZW50ID8gYXJpYUN1cnJlbnQgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLmFyaWEtbGl2ZV09XCJhcmlhTGl2ZSA/IGFyaWFMaXZlIDogbnVsbFwiXG4gICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImFyaWFFeHBhbmRlZCA/IGFyaWFFeHBhbmRlZCA6IG51bGxcIlxuICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhcmlhSGFzUG9wdXAgPyBhcmlhSGFzUG9wdXAgOiBudWxsXCJcbiAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4ID8gdGFiaW5kZXggOiBudWxsXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNCdXR0b24oKTsgZWxzZSBkZWZhdWx0QnV0dG9uXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGVzeS1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIlsnYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBtLXNtIHAtMC41IHRleHQtcHJpbWFyeS1iYXNlIGhvdmVyOnRleHQtcHJpbWFyeS1kYXJrIGZvY3VzOmJnLXdhcm5pbmctYmFzZSBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6c2hhZG93LW91dGxpbmUtZm9jdXMnLCBidXR0b25DbGFzc2VzXSB8IG1ha2VIdG1sTGlzdFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QnVzY2FyPC9zcGFuPlxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMS4zNzVlbVwiIGhlaWdodD1cIjEuMzc1ZW1cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48cGF0aCBkPVwiTTIzLjQ5OCAyMy40ODdhMS43MTMgMS43MTMgMCAwMDAtMi40MjFsLTQuNTcyLTQuNTc1YS40My40MyAwIDAxLS4wNjItLjUzOSAxMC4yODMgMTAuMjgzIDAgMTAtMi45MTEgMi45MTEuNDMuNDMgMCAwMS41MzkuMDU1bDQuNTc0IDQuNTc0YTEuNzEyIDEuNzEyIDAgMDAyLjQzMy0uMDA1ek0zLjQ1MSAxMC4yODlhNi44NSA2Ljg1IDAgMTE2Ljg1IDYuODUgNi44NSA2Ljg1IDAgMDEtNi44NS02Ljg1elwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIi8+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvck1lc3NhZ2VSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgZXJyb3JNZXNzYWdlRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImdldEVycm9ySWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlRGF0YS50ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbaHRtbF09XCJlcnJvck1lc3NhZ2VEYXRhLmh0bWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzXT1cImVycm9yTWVzc2FnZURhdGEuY2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3Zpc3VhbGx5SGlkZGVuVGV4dF09XCJlcnJvck1lc3NhZ2VEYXRhLnZpc3VhbGx5SGlkZGVuVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3JvbGVdPVwiZXJyb3JNZXNzYWdlRGF0YS5yb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURlc2NyaWJlZEJ5XT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUxhYmVsbGVkQnldPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIaWRkZW5dPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYURpc2FibGVkXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYURpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUNvbnRyb2xzXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUNvbnRyb2xzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXJpYUN1cnJlbnRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhQ3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFMaXZlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUxpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXhwYW5kZWRdPVwiZXJyb3JNZXNzYWdlRGF0YS5hcmlhRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcmlhRXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZURhdGEuYXJpYUVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FyaWFIYXNQb3B1cF09XCJlcnJvck1lc3NhZ2VEYXRhLmFyaWFIYXNQb3B1cFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImVycm9yTWVzc2FnZURhdGEudGFiaW5kZXhcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbiAgPGRlc3ktZXJyb3ItbWVzc2FnZSAqbmdJZj1cIiFlcnJvck1lc3NhZ2VSZWYgJiYgIWVycm9yTWVzc2FnZURhdGEgJiYgZXJyb3JNZXNzYWdlVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiZXJyb3JNZXNzYWdlVGV4dFwiIFtpZF09XCJnZXRFcnJvcklkKClcIj48L2Rlc3ktZXJyb3ItbWVzc2FnZT5cbjwvZGl2PlxuPCEtLSAvc2VhcmNoYmFyIC0tPlxuIl19