@theseam/ui-common 0.4.9 → 0.4.11

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 (110) hide show
  1. package/buttons/badge-button/badge-button.component.d.ts +7 -7
  2. package/buttons/button/button.component.d.ts +6 -6
  3. package/buttons/buttons.module.d.ts +1 -1
  4. package/buttons/progress-circle-button/progress-circle-button.component.d.ts +4 -4
  5. package/buttons/toggle-button/toggle-button.component.d.ts +4 -4
  6. package/datatable/datatable-action-menu/datatable-action-menu.component.d.ts +7 -2
  7. package/datatable/datatable-action-menu-item/datatable-action-menu-item.component.d.ts +3 -1
  8. package/esm2020/buttons/badge-button/badge-button.component.mjs +10 -10
  9. package/esm2020/buttons/button/button.component.mjs +9 -9
  10. package/esm2020/buttons/buttons.module.mjs +29 -29
  11. package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +10 -10
  12. package/esm2020/buttons/toggle-button/toggle-button.component.mjs +8 -8
  13. package/esm2020/carousel/carousel.component.mjs +2 -2
  14. package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +17 -5
  15. package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +4 -2
  16. package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +1 -1
  17. package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +1 -1
  18. package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +1 -1
  19. package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +1 -1
  20. package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +1 -1
  21. package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +11 -3
  22. package/esm2020/framework/side-nav/side-nav.component.mjs +29 -4
  23. package/esm2020/framework/side-nav/side-nav.models.mjs +1 -1
  24. package/esm2020/framework/top-bar/top-bar.component.mjs +1 -1
  25. package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +3 -3
  26. package/esm2020/loading/loading/loading.component.mjs +5 -5
  27. package/esm2020/loading/loading-overlay.service.mjs +3 -3
  28. package/esm2020/loading/loading.module.mjs +6 -6
  29. package/esm2020/menu/menu-toggle.directive.mjs +16 -4
  30. package/esm2020/services/preferences/preferences-accessor.mjs +1 -1
  31. package/esm2020/services/preferences/preferences-manager.service.mjs +1 -1
  32. package/esm2020/services/preferences/preferences-record.mjs +1 -1
  33. package/esm2020/services/preferences/preferences.models.mjs +1 -1
  34. package/esm2020/story-helpers/arg-type-helpers.mjs +5 -9
  35. package/esm2020/story-helpers/story-preferences-accessor.service.mjs +1 -1
  36. package/esm2020/testing/get-harness.mjs +8 -2
  37. package/esm2020/testing/story-expect.mjs +3 -2
  38. package/esm2020/toggle-edit/toggle-edit.component.mjs +1 -1
  39. package/esm2020/utils/geo-json/coerce-feature-collection.mjs +1 -1
  40. package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +1 -1
  41. package/esm2020/utils/geo-json/is-only-geometry-types.mjs +1 -1
  42. package/esm2020/utils/geo-json/merge-polygons.mjs +1 -1
  43. package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +1 -1
  44. package/esm2020/utils/geo-json/split-multi-polygons.mjs +1 -1
  45. package/esm2020/widget/preferences/widget-preferences.models.mjs +1 -1
  46. package/esm2020/widget/preferences/widget-preferences.service.mjs +1 -1
  47. package/esm2020/widget/preferences/widget-preferences.token.mjs +1 -1
  48. package/esm2020/widget/widget/widget.component.mjs +3 -3
  49. package/esm2020/widget/widget.models.mjs +1 -1
  50. package/fesm2015/theseam-ui-common-buttons.mjs +55 -55
  51. package/fesm2015/theseam-ui-common-buttons.mjs.map +1 -1
  52. package/fesm2015/theseam-ui-common-carousel.mjs +1 -1
  53. package/fesm2015/theseam-ui-common-carousel.mjs.map +1 -1
  54. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +1 -1
  55. package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  56. package/fesm2015/theseam-ui-common-datatable.mjs +21 -10
  57. package/fesm2015/theseam-ui-common-datatable.mjs.map +1 -1
  58. package/fesm2015/theseam-ui-common-framework.mjs +42 -9
  59. package/fesm2015/theseam-ui-common-framework.mjs.map +1 -1
  60. package/fesm2015/theseam-ui-common-google-maps.mjs +2 -2
  61. package/fesm2015/theseam-ui-common-google-maps.mjs.map +1 -1
  62. package/fesm2015/theseam-ui-common-loading.mjs +10 -10
  63. package/fesm2015/theseam-ui-common-loading.mjs.map +1 -1
  64. package/fesm2015/theseam-ui-common-menu.mjs +15 -4
  65. package/fesm2015/theseam-ui-common-menu.mjs.map +1 -1
  66. package/fesm2015/theseam-ui-common-services.mjs.map +1 -1
  67. package/fesm2015/theseam-ui-common-story-helpers.mjs +4 -8
  68. package/fesm2015/theseam-ui-common-story-helpers.mjs.map +1 -1
  69. package/fesm2015/theseam-ui-common-testing.mjs +9 -2
  70. package/fesm2015/theseam-ui-common-testing.mjs.map +1 -1
  71. package/fesm2015/theseam-ui-common-toggle-edit.mjs +1 -1
  72. package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +1 -1
  73. package/fesm2015/theseam-ui-common-utils.mjs.map +1 -1
  74. package/fesm2015/theseam-ui-common-widget.mjs +2 -2
  75. package/fesm2015/theseam-ui-common-widget.mjs.map +1 -1
  76. package/fesm2020/theseam-ui-common-buttons.mjs +55 -55
  77. package/fesm2020/theseam-ui-common-buttons.mjs.map +1 -1
  78. package/fesm2020/theseam-ui-common-carousel.mjs +1 -1
  79. package/fesm2020/theseam-ui-common-carousel.mjs.map +1 -1
  80. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +1 -1
  81. package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  82. package/fesm2020/theseam-ui-common-datatable.mjs +20 -9
  83. package/fesm2020/theseam-ui-common-datatable.mjs.map +1 -1
  84. package/fesm2020/theseam-ui-common-framework.mjs +41 -8
  85. package/fesm2020/theseam-ui-common-framework.mjs.map +1 -1
  86. package/fesm2020/theseam-ui-common-google-maps.mjs +2 -2
  87. package/fesm2020/theseam-ui-common-google-maps.mjs.map +1 -1
  88. package/fesm2020/theseam-ui-common-loading.mjs +10 -10
  89. package/fesm2020/theseam-ui-common-loading.mjs.map +1 -1
  90. package/fesm2020/theseam-ui-common-menu.mjs +15 -4
  91. package/fesm2020/theseam-ui-common-menu.mjs.map +1 -1
  92. package/fesm2020/theseam-ui-common-services.mjs.map +1 -1
  93. package/fesm2020/theseam-ui-common-story-helpers.mjs +4 -8
  94. package/fesm2020/theseam-ui-common-story-helpers.mjs.map +1 -1
  95. package/fesm2020/theseam-ui-common-testing.mjs +9 -2
  96. package/fesm2020/theseam-ui-common-testing.mjs.map +1 -1
  97. package/fesm2020/theseam-ui-common-toggle-edit.mjs +1 -1
  98. package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +1 -1
  99. package/fesm2020/theseam-ui-common-utils.mjs.map +1 -1
  100. package/fesm2020/theseam-ui-common-widget.mjs +2 -2
  101. package/fesm2020/theseam-ui-common-widget.mjs.map +1 -1
  102. package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +5 -2
  103. package/framework/side-nav/side-nav.component.d.ts +6 -2
  104. package/framework/side-nav/side-nav.models.d.ts +12 -0
  105. package/loading/loading/loading.component.d.ts +3 -3
  106. package/loading/loading.module.d.ts +1 -1
  107. package/menu/menu-toggle.directive.d.ts +4 -1
  108. package/package.json +1 -1
  109. package/testing/get-harness.d.ts +2 -2
  110. package/testing/story-expect.d.ts +1 -0
@@ -31,6 +31,7 @@ export class SideNavItemComponent {
31
31
  this._badgeTooltip = {
32
32
  tooltip: value,
33
33
  placement: 'auto',
34
+ container: 'body',
34
35
  disabled: false
35
36
  };
36
37
  }
@@ -38,6 +39,7 @@ export class SideNavItemComponent {
38
39
  this._badgeTooltip = {
39
40
  ...value,
40
41
  placement: value.placement || 'auto',
42
+ container: value.container || 'body',
41
43
  disabled: typeof value?.disabled === 'boolean'
42
44
  ? value.disabled
43
45
  : typeof value.tooltip !== 'string'
@@ -88,7 +90,7 @@ export class SideNavItemComponent {
88
90
  }
89
91
  }
90
92
  SideNavItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }, { token: SideNavItemComponent, host: true, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
91
- SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip"], exportAs: ["seamSideNavItem"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [
93
+ SideNavItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "component", type: i3.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i5.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], animations: [
92
94
  trigger('childGroupAnim', [
93
95
  state(EXPANDED_STATE, style({ height: '*' })),
94
96
  state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),
@@ -156,7 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
156
158
  // ], { optional: true })
157
159
  // ]),
158
160
  ])
159
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
161
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [ngbTooltip]=\"label\"\n [tooltipClass]=\"$any(menuItemTooltipConfig)?.class\"\n [placement]=\"$any(menuItemTooltipConfig)?.placement\"\n [container]=\"$any(menuItemTooltipConfig)?.container\"\n [disableTooltip]=\"$any(menuItemTooltipDisabled)\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [ngbTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#2f71a9;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn{color:#fff}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid #2a6395;width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
160
162
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
161
163
  type: Inject,
162
164
  args: [THESEAM_SIDE_NAV_ACCESSOR]
@@ -188,6 +190,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
188
190
  type: Input
189
191
  }], compact: [{
190
192
  type: Input
193
+ }], isMobile: [{
194
+ type: Input
191
195
  }], badgeText: [{
192
196
  type: Input
193
197
  }], badgeTheme: [{
@@ -196,6 +200,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
196
200
  type: Input
197
201
  }], badgeTooltip: [{
198
202
  type: Input
203
+ }], menuItemTooltipConfig: [{
204
+ type: Input
205
+ }], menuItemTooltipDisabled: [{
206
+ type: Input
199
207
  }], _isActiveCssClass: [{
200
208
  type: HostBinding,
201
209
  args: ['class.seam-side-nav-item--active']
@@ -203,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
203
211
  type: HostBinding,
204
212
  args: ['attr.data-hier-level']
205
213
  }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQWdCLHFCQUFxQixFQUFlLE1BQU0sdUJBQXVCLENBQUE7QUFDeEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUluRSxPQUFPLEVBQW1CLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7Ozs7Ozs7QUFXL0UsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFBO0FBQ2pDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQTtBQUVuQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUE7QUFDekIsTUFB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Q29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBxdWVyeSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNraXBTZWxmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBmYUFuZ2xlTGVmdCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgU2lkZU5hdkFjY2Vzc29yLCBUSEVTRUFNX1NJREVfTkFWX0FDQ0VTU09SIH0gZnJvbSAnLi4vc2lkZS1uYXYtdG9rZW5zJ1xuaW1wb3J0IHsgSVNpZGVOYXZJdGVtIH0gZnJvbSAnLi4vc2lkZS1uYXYubW9kZWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHtcbiAgdG9vbHRpcD86IHN0cmluZ1xuICBjbGFzcz86IHN0cmluZ1xuICBwbGFjZW1lbnQ/OiBzdHJpbmdcbiAgY29udGFpbmVyPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxufVxuXG5jb25zdCBFWFBBTkRFRF9TVEFURSA9ICdleHBhbmRlZCdcbmNvbnN0IENPTExBUFNFRF9TVEFURSA9ICdjb2xsYXBzZWQnXG5cbmNvbnN0IEZVTExfU1RBVEUgPSAnZnVsbCdcbmNvbnN0IENPTVBBQ1RfU1RBVEUgPSAnY29tcGFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1zaWRlLW5hdi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnc2VhbVNpZGVOYXZJdGVtJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2NoaWxkR3JvdXBBbmltJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IGhlaWdodDogMCwgJ292ZXJmbG93LXknOiAnaGlkZGVuJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgICAgdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG5cbiAgICB0cmlnZ2VyKCdjb21wYWN0QW5pbScsIFtcbiAgICAgIC8vIHRyYW5zaXRpb24oJyogPD0+IConLCBbXG4gICAgICAvLyAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAvLyAgICAgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSksXG4gICAgICAvLyAgICAgYW5pbWF0ZSgnNS4ycyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pKVxuICAgICAgLy8gICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICBxdWVyeSgnOmxlYXZlJywgW1xuICAgICAgLy8gICAgIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pLFxuICAgICAgLy8gICAgIGFuaW1hdGUoJzUuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6ICcwJyB9KSlcbiAgICAgIC8vICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgICAgLy8gXSlcblxuICAgICAgLy8gc3RhdGUoRlVMTF9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgLy8gc3RhdGUoQ09NUEFDVF9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtGVUxMX1NUQVRFfSA8PT4gJHtDT01QQUNUX1NUQVRFfWAsIGFuaW1hdGUoJzUuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0ZVTExfU1RBVEV9IDw9PiAke0NPTVBBQ1RfU1RBVEV9YCwgW1xuICAgICAgLy8gdHJhbnNpdGlvbignKiA8PT4gKicsIFtcbiAgICAgIC8vICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgIC8vICAgICBzdHlsZSh7IG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpXG4gICAgICAvLyAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIC8vIF0pLFxuXG4gICAgXSlcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGllckxldmVsOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5kZW50U2l6ZTogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4cGFuZGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NvbXBhY3Q6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWN0aXZlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHJlYWRvbmx5IGZhQW5nbGVMZWZ0ID0gZmFBbmdsZUxlZnRcblxuICBASW5wdXQoKSBpdGVtVHlwZTogJ2RpdmlkZXInIHwgJ2Jhc2ljJyB8ICdsaW5rJyB8ICdidXR0b24nIHwgJ3RpdGxlJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsaW5rKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX2xpbmsubmV4dCh2YWx1ZSkgfVxuICBnZXQgbGluaygpIHsgcmV0dXJuIHRoaXMuX2xpbmsudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9saW5rID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG4gIHB1YmxpYyByZWFkb25seSBsaW5rJCA9IHRoaXMuX2xpbmsuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKSBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgY2hpbGRyZW46IElTaWRlTmF2SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBoaWVyTGV2ZWwgPSAwXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDEwKSBpbmRlbnRTaXplID0gMTBcblxuICBASW5wdXQoKVxuICBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fZXhwYW5kZWQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKSB9XG4gIGdldCBleHBhbmRlZCgpIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBzZXQgY29tcGFjdCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9jb21wYWN0Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBnZXQgY29tcGFjdCgpIHsgcmV0dXJuIHRoaXMuX2NvbXBhY3QudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3QkID0gdGhpcy5fY29tcGFjdC5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBiYWRnZVRoZW1lOiBUaGVtZVR5cGVzIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdkYW5nZXInXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlU3JDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGJhZGdlVG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX2JhZGdlVG9vbHRpcCB9XG4gIHNldCBiYWRnZVRvb2x0aXAodmFsdWU6IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB7XG4gICAgICAgICAgdG9vbHRpcDogdmFsdWUsXG4gICAgICAgICAgcGxhY2VtZW50OiAnYXV0bycsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHZhbHVlLnBsYWNlbWVudCB8fCAnYXV0bycsXG4gICAgICAgICAgZGlzYWJsZWQ6IHR5cGVvZiB2YWx1ZT8uZGlzYWJsZWQgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgPyB2YWx1ZS5kaXNhYmxlZFxuICAgICAgICAgICAgOiB0eXBlb2YgdmFsdWUudG9vbHRpcCAhPT0gJ3N0cmluZydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYmFkZ2VUb29sdGlwOiBTaWRlTmF2SXRlbUJhZGdlVG9vbHRpcCB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tc2lkZS1uYXYtaXRlbS0tYWN0aXZlJykgZ2V0IF9pc0FjdGl2ZUNzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5hY3RpdmUgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWhpZXItbGV2ZWwnKSBnZXQgX2F0dHJEYXRhSGllckxldmVsKCkgeyByZXR1cm4gdGhpcy5oaWVyTGV2ZWwgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjaGlsZEdyb3VwQW5pbVN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0QW5pbVN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUSEVTRUFNX1NJREVfTkFWX0FDQ0VTU09SKSBwcml2YXRlIHJlYWRvbmx5IF9zaWRlTmF2OiBTaWRlTmF2QWNjZXNzb3IsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnQ/OiBTaWRlTmF2SXRlbUNvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmNoaWxkR3JvdXBBbmltU3RhdGUkID0gdGhpcy5leHBhbmRlZCRcbiAgICAgIC5waXBlKG1hcChleHBhbmRlZCA9PiBleHBhbmRlZCA/IEVYUEFOREVEX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFKSlcblxuICAgIHRoaXMuY29tcGFjdEFuaW1TdGF0ZSQgPSB0aGlzLmNvbXBhY3QkXG4gICAgICAucGlwZShtYXAoY29tcGFjdCA9PiBjb21wYWN0ID8gQ09NUEFDVF9TVEFURSA6IEZVTExfU1RBVEUpKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIGdldCBoYXNDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmNoaWxkcmVuKSAmJiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDaGlsZHJlbigpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWRcbiAgfVxuXG4gIF9saW5rQ2xpY2tlZCgpIHtcbiAgICAvLyBDbG9zZSBuYXYgd2hlbiBsaW5rIGlzIGNsaWNrZWQgd2hpbGUgaW4gb3ZlcmxheSBzdGF0ZVxuICAgIGlmICh0aGlzLl9zaWRlTmF2Lm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX3NpZGVOYXYuY29sbGFwc2UoKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2Jhc2ljJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVHlwZUJhc2ljXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2xpbmsnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlTGlua1wiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVR5cGUgPT09ICdkaXZpZGVyJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVHlwZURpdmlkZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UeXBlID09PSAndGl0bGUnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlVGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2hpbGRyZW5cIj5cbiAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LS1ncm91cCBzaWRlLW5hdi0tZ3JvdXAtLWxldmVsLXt7IGhpZXJMZXZlbCArIDEgfX1cIlxuICAgIFtAY2hpbGRHcm91cEFuaW1dPVwiY2hpbGRHcm91cEFuaW1TdGF0ZSQgfCBhc3luY1wiPlxuICAgIDxzZWFtLXNpZGUtbmF2LWl0ZW0gKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCJcbiAgICAgIFtoaWVyTGV2ZWxdPVwiY29tcGFjdCA/IDAgOiAoaGllckxldmVsICsgMSlcIlxuICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICBbaXRlbVR5cGVdPVwiJGFueShjaGlsZCkuaXRlbVR5cGVcIlxuICAgICAgW2ljb25dPVwiJGFueShjaGlsZCkuaWNvblwiXG4gICAgICBbbGFiZWxdPVwiJGFueShjaGlsZCkubGFiZWxcIlxuICAgICAgW2xpbmtdPVwiJGFueShjaGlsZCkubGlua1wiXG4gICAgICBbYmFkZ2VUZXh0XT1cIiRhbnkoY2hpbGQpLmJhZGdlPy50ZXh0XCJcbiAgICAgIFtiYWRnZVRoZW1lXT1cIiRhbnkoY2hpbGQpLmJhZGdlPy50aGVtZSB8fCAnZGFuZ2VyJ1wiXG4gICAgICBbYmFkZ2VTckNvbnRlbnRdPVwiJGFueShjaGlsZCkuYmFkZ2U/LnNyQ29udGVudFwiXG4gICAgICBbYmFkZ2VUb29sdGlwXT1cIiRhbnkoY2hpbGQpPy5iYWRnZT8udG9vbHRpcFwiXG4gICAgICBbcXVlcnlQYXJhbXNdPVwiJGFueShjaGlsZCkucXVlcnlQYXJhbXNcIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogdHJ1ZSB9XCJcbiAgICAgIFtjaGlsZHJlbl09XCIkYW55KGNoaWxkKT8uY2hpbGRyZW5cIlxuICAgICAgW2FjdGl2ZV09XCIkYW55KGNoaWxkKS5fX3N0YXRlPy5hY3RpdmVcIlxuICAgICAgW2V4cGFuZGVkXT1cIiRhbnkoY2hpbGQpLl9fc3RhdGU/LmV4cGFuZGVkXCI+XG4gICAgPC9zZWFtLXNpZGUtbmF2LWl0ZW0+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVR5cGVCYXNpYz5cbiAgPGJ1dHRvbiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0gYnRuIHNpZGUtbmF2LWJ0biBwLTAgZC1mbGV4IGZsZXgtcm93IHJvdW5kZWQtMCB0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LW5vd3JhcCB3LTEwMFwiXG4gICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1c1xuICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZHJlbigpXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hdi1saW5rIGQtZmxleCBmbGV4LXJvdyB3LTEwMFwiIFtjbGFzcy5uYXYtbGlua19fY29tcGFjdF09XCJjb21wYWN0XCI+XG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaGllckxldmVsICogaW5kZW50U2l6ZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWljb25cIj5cbiAgICAgICAgPHNlYW0taWNvbiAqbmdJZj1cImljb25cIiBbaWNvbl09XCJpY29uXCI+PC9zZWFtLWljb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wYWN0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1CYWRnZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFjb21wYWN0XCIgc2lkZS1uYXYtaXRlbS1sYWJlbCBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMXB4O1wiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb21wYWN0XCIgY2xhc3M9XCJzci1vbmx5XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJhZGdlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImhhc0NoaWxkcmVuICYmICFjb21wYWN0XCJcbiAgICAgIGNsYXNzPVwiYnRuIHNpZGUtbmF2LWJ0biBzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuLWNvbnRhaW5lciByb3VuZGVkLTBcIj5cbiAgICAgIDxzZWFtLWljb25cbiAgICAgICAgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuXCJcbiAgICAgICAgW2NsYXNzLnNpZGUtbmF2LWl0ZW0tLXRvZ2dsZS1idG4tZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICBbaWNvbl09XCJmYUFuZ2xlTGVmdFwiXG4gICAgICAgIHR5cGU+XG4gICAgICA8L3NlYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UeXBlTGluaz5cbiAgPGEgKm5nSWY9XCJsaW5rOyBlbHNlIG5vTGlua1wiIGNsYXNzPVwic2lkZS1uYXYtaXRlbSBuYXYtbGluayBkLWZsZXggZmxleC1yb3cgdGV4dC1ub3dyYXAgdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgW3JvdXRlckxpbmtdPVwibGlua1wiXG4gICAgW3F1ZXJ5UGFyYW1zXT1cInF1ZXJ5UGFyYW1zXCJcbiAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogdHJ1ZSB9XCJcbiAgICAoY2xpY2spPVwiX2xpbmtDbGlja2VkKClcIj5cbiAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaGllckxldmVsICogaW5kZW50U2l6ZVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1pY29uXCI+XG4gICAgICA8c2VhbS1pY29uICpuZ0lmPVwiaWNvblwiIFtpY29uXT1cImljb25cIj48L3NlYW0taWNvbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wYWN0XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtQmFkZ2VcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCIhY29tcGFjdFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDExcHg7XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiY29tcGFjdFwiIGNsYXNzPVwic3Itb25seVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0XCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJhZGdlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9hPlxuXG4gIDxuZy10ZW1wbGF0ZSAjbm9MaW5rPlxuICAgIDxhIGNsYXNzPVwic2lkZS1uYXYtaXRlbSBuYXYtbGluayBkLWZsZXggZmxleC1yb3cgdGV4dC1ub3dyYXAgdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCIgW2NsYXNzLm5hdi1saW5rX19jb21wYWN0XT1cImNvbXBhY3RcIj5cbiAgICAgIDxkaXYgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJoaWVyTGV2ZWwgKiBpbmRlbnRTaXplXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaXRlbS0taWNvblwiPlxuICAgICAgICA8c2VhbS1pY29uICpuZ0lmPVwiaWNvblwiIFtpY29uXT1cImljb25cIj48L3NlYW0taWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gKm5nSWY9XCIhY29tcGFjdFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDExcHg7XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29tcGFjdFwiIGNsYXNzPVwic3Itb25seVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPC9hPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxidXR0b24gKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhY29tcGFjdFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gc2lkZS1uYXYtYnRuIHNpZGUtbmF2LWl0ZW0tLXRvZ2dsZS1idG4tY29udGFpbmVyIHJvdW5kZWQtMFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKClcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIGNka01vbml0b3JFbGVtZW50Rm9jdXM+XG4gICAgPHNlYW0taWNvblxuICAgICAgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuXCJcbiAgICAgIFtjbGFzcy5zaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuLWV4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgIFtpY29uXT1cImZhQW5nbGVMZWZ0XCJcbiAgICAgIHR5cGU+XG4gICAgPC9zZWFtLWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+R3JvdXAgVG9nZ2xlPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVR5cGVEaXZpZGVyPlxuICA8ZGl2IGNsYXNzPVwicHgtMiB3LTEwMFwiPlxuICAgIDxociBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWRpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbVR5cGVUaXRsZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10aXRsZSBwdC0xXCIgc2lkZS1uYXYtaXRlbS1sYWJlbD57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1CYWRnZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJhZGdlVGV4dFwiPlxuICAgIDxkaXYgY2xhc3M9XCJiYWRnZS1zcGFjZXIgZmxleC1ncm93LTFcIiAqbmdJZj1cIiFjb21wYWN0XCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWJhZGdlXCJcbiAgICAgIFtjbGFzcy5zaWRlLW5hdi1pdGVtLS1iYWRnZS1uby1pY29uXT1cIiFpY29uXCJcbiAgICAgIFtuZ2JUb29sdGlwXT1cIiRhbnkoYmFkZ2VUb29sdGlwKT8udG9vbHRpcFwiXG4gICAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkoYmFkZ2VUb29sdGlwKT8uY2xhc3NcIlxuICAgICAgW3BsYWNlbWVudF09XCIkYW55KGJhZGdlVG9vbHRpcCk/LnBsYWNlbWVudFwiXG4gICAgICBbY29udGFpbmVyXT1cIiRhbnkoYmFkZ2VUb29sdGlwKT8uY29udGFpbmVyXCJcbiAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCIhYmFkZ2VUb29sdGlwIHx8ICEhJGFueShiYWRnZVRvb2x0aXApPy5kaXNhYmxlZFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1waWxsIGJhZGdlLXt7IGJhZGdlVGhlbWUgfX1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb21wYWN0IHx8ICFpY29uXCI+XG4gICAgICAgICAge3sgYmFkZ2VUZXh0IH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImJhZGdlU3JDb250ZW50XCI+e3sgYmFkZ2VTckNvbnRlbnQgfX08L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLE9BQU8sRUFFUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1QixPQUFPLEVBQWdCLHFCQUFxQixFQUFlLE1BQU0sdUJBQXVCLENBQUE7QUFDeEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUluRSxPQUFPLEVBQW1CLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7Ozs7Ozs7QUFXL0UsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFBO0FBQ2pDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQTtBQUVuQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUE7QUFDekIsTUFB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Z0JBMkJHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRStDLGlCQUFpQjtzQkFBckUsV0FBVzt1QkFBQyxrQ0FBa0M7Z0JBRU4sa0JBQWtCO3NCQUExRCxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHF1ZXJ5LFxuICBzdGF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IGZhQW5nbGVMZWZ0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJ1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgdHlwZSB7IFNlYW1JY29uIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2ljb24nXG5pbXBvcnQgdHlwZSB7IFRoZW1lVHlwZXMgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbW9kZWxzJ1xuXG5pbXBvcnQgeyBTaWRlTmF2QWNjZXNzb3IsIFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IgfSBmcm9tICcuLi9zaWRlLW5hdi10b2tlbnMnXG5pbXBvcnQgeyBJU2lkZU5hdkl0ZW0sIFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQ29uZmlnIH0gZnJvbSAnLi4vc2lkZS1uYXYubW9kZWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHtcbiAgdG9vbHRpcD86IHN0cmluZ1xuICBjbGFzcz86IHN0cmluZ1xuICBwbGFjZW1lbnQ/OiBzdHJpbmdcbiAgY29udGFpbmVyPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxufVxuXG5jb25zdCBFWFBBTkRFRF9TVEFURSA9ICdleHBhbmRlZCdcbmNvbnN0IENPTExBUFNFRF9TVEFURSA9ICdjb2xsYXBzZWQnXG5cbmNvbnN0IEZVTExfU1RBVEUgPSAnZnVsbCdcbmNvbnN0IENPTVBBQ1RfU1RBVEUgPSAnY29tcGFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2VhbS1zaWRlLW5hdi1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnc2VhbVNpZGVOYXZJdGVtJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2NoaWxkR3JvdXBBbmltJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgaGVpZ2h0OiAnKicgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IGhlaWdodDogMCwgJ292ZXJmbG93LXknOiAnaGlkZGVuJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgICAgdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIGFuaW1hdGUoJzAuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgXSksXG5cbiAgICB0cmlnZ2VyKCdjb21wYWN0QW5pbScsIFtcbiAgICAgIC8vIHRyYW5zaXRpb24oJyogPD0+IConLCBbXG4gICAgICAvLyAgIHF1ZXJ5KCc6ZW50ZXInLCBbXG4gICAgICAvLyAgICAgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSksXG4gICAgICAvLyAgICAgYW5pbWF0ZSgnNS4ycyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pKVxuICAgICAgLy8gICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICBxdWVyeSgnOmxlYXZlJywgW1xuICAgICAgLy8gICAgIHN0eWxlKHsgb3BhY2l0eTogJzEnIH0pLFxuICAgICAgLy8gICAgIGFuaW1hdGUoJzUuMnMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6ICcwJyB9KSlcbiAgICAgIC8vICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxuICAgICAgLy8gXSlcblxuICAgICAgLy8gc3RhdGUoRlVMTF9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgLy8gc3RhdGUoQ09NUEFDVF9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpLFxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtGVUxMX1NUQVRFfSA8PT4gJHtDT01QQUNUX1NUQVRFfWAsIGFuaW1hdGUoJzUuMnMgZWFzZS1pbi1vdXQnKSksXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0ZVTExfU1RBVEV9IDw9PiAke0NPTVBBQ1RfU1RBVEV9YCwgW1xuICAgICAgLy8gdHJhbnNpdGlvbignKiA8PT4gKicsIFtcbiAgICAgIC8vICAgcXVlcnkoJzpsZWF2ZScsIFtcbiAgICAgIC8vICAgICBzdHlsZSh7IG9wYWNpdHk6ICcxJyB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAnMCcgfSkpXG4gICAgICAvLyAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgICAgIC8vIF0pLFxuXG4gICAgXSlcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGllckxldmVsOiBOdW1iZXJJbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5kZW50U2l6ZTogTnVtYmVySW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4cGFuZGVkOiBCb29sZWFuSW5wdXRcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NvbXBhY3Q6IEJvb2xlYW5JbnB1dFxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWN0aXZlOiBCb29sZWFuSW5wdXRcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIHJlYWRvbmx5IGZhQW5nbGVMZWZ0ID0gZmFBbmdsZUxlZnRcblxuICBASW5wdXQoKSBpdGVtVHlwZTogJ2RpdmlkZXInIHwgJ2Jhc2ljJyB8ICdsaW5rJyB8ICdidXR0b24nIHwgJ3RpdGxlJyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBpY29uOiBTZWFtSWNvbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhY3RpdmUgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHNldCBsaW5rKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKSB7IHRoaXMuX2xpbmsubmV4dCh2YWx1ZSkgfVxuICBnZXQgbGluaygpIHsgcmV0dXJuIHRoaXMuX2xpbmsudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9saW5rID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsPih1bmRlZmluZWQpXG4gIHB1YmxpYyByZWFkb25seSBsaW5rJCA9IHRoaXMuX2xpbmsuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKSBxdWVyeVBhcmFtczogeyBbazogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgY2hpbGRyZW46IElTaWRlTmF2SXRlbVtdIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigwKSBoaWVyTGV2ZWwgPSAwXG5cbiAgQElucHV0KCkgQElucHV0TnVtYmVyKDEwKSBpbmRlbnRTaXplID0gMTBcblxuICBASW5wdXQoKVxuICBzZXQgZXhwYW5kZWQodmFsdWU6IGJvb2xlYW4pIHsgdGhpcy5fZXhwYW5kZWQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKSB9XG4gIGdldCBleHBhbmRlZCgpIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwYW5kZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBzZXQgY29tcGFjdCh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9jb21wYWN0Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBnZXQgY29tcGFjdCgpIHsgcmV0dXJuIHRoaXMuX2NvbXBhY3QudmFsdWUgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wYWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3QkID0gdGhpcy5fY29tcGFjdC5hc09ic2VydmFibGUoKVxuXG4gIEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuIHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBJbnB1dCgpIGJhZGdlVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbFxuICBASW5wdXQoKSBiYWRnZVRoZW1lOiBUaGVtZVR5cGVzIHwgdW5kZWZpbmVkIHwgbnVsbCA9ICdkYW5nZXInXG5cbiAgLyoqXG4gICAqIENvbnRlbnQgdG8gcHJvdmlkZSB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSwgc3VjaCBhcyBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIEBJbnB1dCgpIGJhZGdlU3JDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KClcbiAgZ2V0IGJhZGdlVG9vbHRpcCgpIHsgcmV0dXJuIHRoaXMuX2JhZGdlVG9vbHRpcCB9XG4gIHNldCBiYWRnZVRvb2x0aXAodmFsdWU6IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9iYWRnZVRvb2x0aXAgPSB7XG4gICAgICAgICAgdG9vbHRpcDogdmFsdWUsXG4gICAgICAgICAgcGxhY2VtZW50OiAnYXV0bycsXG4gICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2JhZGdlVG9vbHRpcCA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBwbGFjZW1lbnQ6IHZhbHVlLnBsYWNlbWVudCB8fCAnYXV0bycsXG4gICAgICAgICAgY29udGFpbmVyOiB2YWx1ZS5jb250YWluZXIgfHwgJ2JvZHknLFxuICAgICAgICAgIGRpc2FibGVkOiB0eXBlb2YgdmFsdWU/LmRpc2FibGVkID09PSAnYm9vbGVhbidcbiAgICAgICAgICAgID8gdmFsdWUuZGlzYWJsZWRcbiAgICAgICAgICAgIDogdHlwZW9mIHZhbHVlLnRvb2x0aXAgIT09ICdzdHJpbmcnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYmFkZ2VUb29sdGlwID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2JhZGdlVG9vbHRpcDogU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXAgfCB1bmRlZmluZWQgfCBudWxsXG5cbiAgQElucHV0KCkgbWVudUl0ZW1Ub29sdGlwQ29uZmlnOiBTaWRlTmF2SXRlbU1lbnVJdGVtVG9vbHRpcENvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASW5wdXQoKSBtZW51SXRlbVRvb2x0aXBEaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGxcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlYW0tc2lkZS1uYXYtaXRlbS0tYWN0aXZlJykgZ2V0IF9pc0FjdGl2ZUNzc0NsYXNzKCkgeyByZXR1cm4gdGhpcy5hY3RpdmUgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWhpZXItbGV2ZWwnKSBnZXQgX2F0dHJEYXRhSGllckxldmVsKCkgeyByZXR1cm4gdGhpcy5oaWVyTGV2ZWwgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjaGlsZEdyb3VwQW5pbVN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0QW5pbVN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUSEVTRUFNX1NJREVfTkFWX0FDQ0VTU09SKSBwcml2YXRlIHJlYWRvbmx5IF9zaWRlTmF2OiBTaWRlTmF2QWNjZXNzb3IsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgQEhvc3QoKSBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnQ/OiBTaWRlTmF2SXRlbUNvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLmNoaWxkR3JvdXBBbmltU3RhdGUkID0gdGhpcy5leHBhbmRlZCRcbiAgICAgIC5waXBlKG1hcChleHBhbmRlZCA9PiBleHBhbmRlZCA/IEVYUEFOREVEX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFKSlcblxuICAgIHRoaXMuY29tcGFjdEFuaW1TdGF0ZSQgPSB0aGlzLmNvbXBhY3QkXG4gICAgICAucGlwZShtYXAoY29tcGFjdCA9PiBjb21wYWN0ID8gQ09NUEFDVF9TVEFURSA6IEZVTExfU1RBVEUpKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgfVxuXG4gIGdldCBoYXNDaGlsZHJlbigpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmNoaWxkcmVuKSAmJiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDaGlsZHJlbigpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWRcbiAgfVxuXG4gIF9saW5rQ2xpY2tlZCgpIHtcbiAgICAvLyBDbG9zZSBuYXYgd2hlbiBsaW5rIGlzIGNsaWNrZWQgd2hpbGUgaW4gb3ZlcmxheSBzdGF0ZVxuICAgIGlmICh0aGlzLl9zaWRlTmF2Lm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX3NpZGVOYXYuY29sbGFwc2UoKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2Jhc2ljJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVHlwZUJhc2ljXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtVHlwZSA9PT0gJ2xpbmsnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlTGlua1wiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVR5cGUgPT09ICdkaXZpZGVyJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVHlwZURpdmlkZXJcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UeXBlID09PSAndGl0bGUnXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UeXBlVGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2hpbGRyZW5cIj5cbiAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LS1ncm91cCBzaWRlLW5hdi0tZ3JvdXAtLWxldmVsLXt7IGhpZXJMZXZlbCArIDEgfX1cIlxuICAgIFtAY2hpbGRHcm91cEFuaW1dPVwiY2hpbGRHcm91cEFuaW1TdGF0ZSQgfCBhc3luY1wiPlxuICAgIDxzZWFtLXNpZGUtbmF2LWl0ZW0gKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCJcbiAgICAgIFtoaWVyTGV2ZWxdPVwiY29tcGFjdCA/IDAgOiAoaGllckxldmVsICsgMSlcIlxuICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgW2l0ZW1UeXBlXT1cIiRhbnkoY2hpbGQpLml0ZW1UeXBlXCJcbiAgICAgIFtpY29uXT1cIiRhbnkoY2hpbGQpLmljb25cIlxuICAgICAgW2xhYmVsXT1cIiRhbnkoY2hpbGQpLmxhYmVsXCJcbiAgICAgIFtsaW5rXT1cIiRhbnkoY2hpbGQpLmxpbmtcIlxuICAgICAgW2JhZGdlVGV4dF09XCIkYW55KGNoaWxkKS5iYWRnZT8udGV4dFwiXG4gICAgICBbYmFkZ2VUaGVtZV09XCIkYW55KGNoaWxkKS5iYWRnZT8udGhlbWUgfHwgJ2RhbmdlcidcIlxuICAgICAgW2JhZGdlU3JDb250ZW50XT1cIiRhbnkoY2hpbGQpLmJhZGdlPy5zckNvbnRlbnRcIlxuICAgICAgW2JhZGdlVG9vbHRpcF09XCIkYW55KGNoaWxkKT8uYmFkZ2U/LnRvb2x0aXBcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIiRhbnkoY2hpbGQpLnF1ZXJ5UGFyYW1zXCJcbiAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IHRydWUgfVwiXG4gICAgICBbY2hpbGRyZW5dPVwiJGFueShjaGlsZCk/LmNoaWxkcmVuXCJcbiAgICAgIFthY3RpdmVdPVwiJGFueShjaGlsZCkuX19zdGF0ZT8uYWN0aXZlXCJcbiAgICAgIFtleHBhbmRlZF09XCIkYW55KGNoaWxkKS5fX3N0YXRlPy5leHBhbmRlZFwiXG4gICAgICBbbWVudUl0ZW1Ub29sdGlwQ29uZmlnXT1cIm1lbnVJdGVtVG9vbHRpcENvbmZpZ1wiXG4gICAgICBbbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRdPVwibWVudUl0ZW1Ub29sdGlwRGlzYWJsZWRcIj5cbiAgICA8L3NlYW0tc2lkZS1uYXYtaXRlbT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpdGVtVHlwZUJhc2ljPlxuICA8YnV0dG9uIGNsYXNzPVwic2lkZS1uYXYtaXRlbSBidG4gc2lkZS1uYXYtYnRuIHAtMCBkLWZsZXggZmxleC1yb3cgcm91bmRlZC0wIHRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbm93cmFwIHctMTAwXCJcbiAgICBjZGtNb25pdG9yRWxlbWVudEZvY3VzXG4gICAgKGNsaWNrKT1cInRvZ2dsZUNoaWxkcmVuKClcIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIFtuZ2JUb29sdGlwXT1cImxhYmVsXCJcbiAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwQ29uZmlnKT8uY2xhc3NcIlxuICAgIFtwbGFjZW1lbnRdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5wbGFjZW1lbnRcIlxuICAgIFtjb250YWluZXJdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jb250YWluZXJcIlxuICAgIFtkaXNhYmxlVG9vbHRpcF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcERpc2FibGVkKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJuYXYtbGluayBkLWZsZXggZmxleC1yb3cgdy0xMDBcIiBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiPlxuICAgICAgPGRpdiBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cImhpZXJMZXZlbCAqIGluZGVudFNpemVcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1pY29uXCI+XG4gICAgICAgIDxzZWFtLWljb24gKm5nSWY9XCJpY29uXCIgW2ljb25dPVwiaWNvblwiPjwvc2VhbS1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tcGFjdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtQmFkZ2VcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gKm5nSWY9XCIhY29tcGFjdFwiIHNpZGUtbmF2LWl0ZW0tbGFiZWwgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTFweDtcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY29tcGFjdFwiIGNsYXNzPVwic3Itb25seVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbXBhY3RcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1CYWRnZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJoYXNDaGlsZHJlbiAmJiAhY29tcGFjdFwiXG4gICAgICBjbGFzcz1cImJ0biBzaWRlLW5hdi1idG4gc2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0bi1jb250YWluZXIgcm91bmRlZC0wXCI+XG4gICAgICA8c2VhbS1pY29uXG4gICAgICAgIGNsYXNzPVwic2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0blwiXG4gICAgICAgIFtjbGFzcy5zaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuLWV4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgW2ljb25dPVwiZmFBbmdsZUxlZnRcIlxuICAgICAgICB0eXBlPlxuICAgICAgPC9zZWFtLWljb24+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtVHlwZUxpbms+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgdy0xMDBcIlxuICAgIFtuZ2JUb29sdGlwXT1cImxhYmVsXCJcbiAgICBbdG9vbHRpcENsYXNzXT1cIiRhbnkobWVudUl0ZW1Ub29sdGlwQ29uZmlnKT8uY2xhc3NcIlxuICAgIFtwbGFjZW1lbnRdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5wbGFjZW1lbnRcIlxuICAgIFtjb250YWluZXJdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jb250YWluZXJcIlxuICAgIFtkaXNhYmxlVG9vbHRpcF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcERpc2FibGVkKVwiPlxuICAgIDxhICpuZ0lmPVwibGluazsgZWxzZSBub0xpbmtcIiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0gbmF2LWxpbmsgZC1mbGV4IGZsZXgtcm93IHRleHQtbm93cmFwIHctMTAwIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICBbcm91dGVyTGlua109XCJsaW5rXCJcbiAgICAgIFtxdWVyeVBhcmFtc109XCJxdWVyeVBhcmFtc1wiXG4gICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiB0cnVlIH1cIlxuICAgICAgKGNsaWNrKT1cIl9saW5rQ2xpY2tlZCgpXCI+XG4gICAgICA8ZGl2IFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaGllckxldmVsICogaW5kZW50U2l6ZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWljb25cIj5cbiAgICAgICAgPHNlYW0taWNvbiAqbmdJZj1cImljb25cIiBbaWNvbl09XCJpY29uXCI+PC9zZWFtLWljb24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wYWN0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1CYWRnZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFjb21wYWN0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTFweDtcIiBzaWRlLW5hdi1pdGVtLWxhYmVsPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJjb21wYWN0XCIgY2xhc3M9XCJzci1vbmx5XCIgc2lkZS1uYXYtaXRlbS1sYWJlbD57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUJhZGdlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbm9MaW5rPlxuICAgICAgPGEgY2xhc3M9XCJzaWRlLW5hdi1pdGVtIG5hdi1saW5rIGQtZmxleCBmbGV4LXJvdyB0ZXh0LW5vd3JhcCB3LTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbY2xhc3MubmF2LWxpbmtfX2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgIFtuZ2JUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgICAgW3Rvb2x0aXBDbGFzc109XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LmNsYXNzXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCIkYW55KG1lbnVJdGVtVG9vbHRpcENvbmZpZyk/LnBsYWNlbWVudFwiXG4gICAgICAgIFtjb250YWluZXJdPVwiJGFueShtZW51SXRlbVRvb2x0aXBDb25maWcpPy5jb250YWluZXJcIlxuICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiJGFueShtZW51SXRlbVRvb2x0aXBEaXNhYmxlZClcIj5cbiAgICAgICAgPGRpdiBbc3R5bGUucGFkZGluZy1sZWZ0LnB4XT1cImhpZXJMZXZlbCAqIGluZGVudFNpemVcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW0tLWljb25cIj5cbiAgICAgICAgICA8c2VhbS1pY29uICpuZ0lmPVwiaWNvblwiIFtpY29uXT1cImljb25cIj48L3NlYW0taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbXBhY3RcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMXB4O1wiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImNvbXBhY3RcIiBjbGFzcz1cInNyLW9ubHlcIiBzaWRlLW5hdi1pdGVtLWxhYmVsPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQ2hpbGRyZW4gJiYgIWNvbXBhY3RcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBzaWRlLW5hdi1idG4gc2lkZS1uYXYtaXRlbS0tdG9nZ2xlLWJ0bi1jb250YWluZXIgcm91bmRlZC0wXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVDaGlsZHJlbigpXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgY2RrTW9uaXRvckVsZW1lbnRGb2N1cz5cbiAgICAgIDxzZWFtLWljb25cbiAgICAgICAgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS10b2dnbGUtYnRuXCJcbiAgICAgICAgW2NsYXNzLnNpZGUtbmF2LWl0ZW0tLXRvZ2dsZS1idG4tZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICBbaWNvbl09XCJmYUFuZ2xlTGVmdFwiXG4gICAgICAgIHR5cGU+XG4gICAgICA8L3NlYW0taWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdyb3VwIFRvZ2dsZTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UeXBlRGl2aWRlcj5cbiAgPGRpdiBjbGFzcz1cInB4LTIgdy0xMDBcIj5cbiAgICA8aHIgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1kaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UeXBlVGl0bGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdFwiPlxuICAgIDxzcGFuIGNsYXNzPVwic2lkZS1uYXYtaXRlbS0tdGl0bGUgcHQtMVwiIHNpZGUtbmF2LWl0ZW0tbGFiZWw+e3sgbGFiZWwgfX08L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpdGVtQmFkZ2U+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJiYWRnZVRleHRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmFkZ2Utc3BhY2VyIGZsZXgtZ3Jvdy0xXCIgKm5nSWY9XCIhY29tcGFjdFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pdGVtLS1iYWRnZVwiXG4gICAgICBbY2xhc3Muc2lkZS1uYXYtaXRlbS0tYmFkZ2Utbm8taWNvbl09XCIhaWNvblwiXG4gICAgICBbbmdiVG9vbHRpcF09XCIkYW55KGJhZGdlVG9vbHRpcCk/LnRvb2x0aXBcIlxuICAgICAgW3Rvb2x0aXBDbGFzc109XCIkYW55KGJhZGdlVG9vbHRpcCk/LmNsYXNzXCJcbiAgICAgIFtwbGFjZW1lbnRdPVwiJGFueShiYWRnZVRvb2x0aXApPy5wbGFjZW1lbnRcIlxuICAgICAgW2NvbnRhaW5lcl09XCIkYW55KGJhZGdlVG9vbHRpcCk/LmNvbnRhaW5lclwiXG4gICAgICBbZGlzYWJsZVRvb2x0aXBdPVwiaXNNb2JpbGUgfHwgIWJhZGdlVG9vbHRpcCB8fCAhISRhbnkoYmFkZ2VUb29sdGlwKT8uZGlzYWJsZWRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS17eyBiYWRnZVRoZW1lIH19XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tcGFjdCB8fCAhaWNvblwiPlxuICAgICAgICAgIHt7IGJhZGdlVGV4dCB9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWRnZVNyQ29udGVudFwiPnt7IGJhZGdlU3JDb250ZW50IH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -58,6 +58,15 @@ export class SideNavComponent {
58
58
  }
59
59
  get overlay() { return this._overlay.value; }
60
60
  set overlay(value) { this._overlay.next(coerceBooleanProperty(value)); }
61
+ get menuItemTooltipConfig() { return this._menuItemTooltipConfig; }
62
+ set menuItemTooltipConfig(value) {
63
+ this._menuItemTooltipConfig = {
64
+ class: value?.class,
65
+ placement: value?.placement || this._menuItemTooltipConfig.placement,
66
+ container: value?.container || this._menuItemTooltipConfig.container,
67
+ behavior: value?.behavior || this._menuItemTooltipConfig.behavior
68
+ };
69
+ }
61
70
  constructor(_viewContainerRef, _layout, _sideNav, _baseLayoutRef) {
62
71
  this._viewContainerRef = _viewContainerRef;
63
72
  this._layout = _layout;
@@ -74,6 +83,11 @@ export class SideNavComponent {
74
83
  this.expanded$ = this._expanded.asObservable();
75
84
  this._overlay = new BehaviorSubject(false);
76
85
  this.overlay$ = this._overlay.asObservable();
86
+ this._menuItemTooltipConfig = {
87
+ placement: 'right',
88
+ container: 'body',
89
+ behavior: 'always'
90
+ };
77
91
  this.toggleExpand = new EventEmitter();
78
92
  this._backdropHidden = new BehaviorSubject(true);
79
93
  this.items$ = this._items.asObservable().pipe(switchMap(items => this._sideNav.createItemsObservable(items)), shareReplay({ bufferSize: 1, refCount: true }));
@@ -81,6 +95,15 @@ export class SideNavComponent {
81
95
  this.sideNavExpandedState$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => expanded
82
96
  ? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE
83
97
  : overlay ? COLLAPSED_OVERLAY_STATE : COLLAPSED_STATE), distinctUntilChanged());
98
+ this.menuItemTooltipDisabled$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => {
99
+ // never display tooltip on mobile, it breaks the layout
100
+ if (overlay) {
101
+ return true;
102
+ }
103
+ return this.menuItemTooltipConfig?.behavior === 'always' ? false
104
+ : this.menuItemTooltipConfig?.behavior === 'never' ? true
105
+ : this.menuItemTooltipConfig?.behavior === 'collapseOnly' ? expanded : true;
106
+ }), distinctUntilChanged());
84
107
  }
85
108
  ngOnInit() {
86
109
  if (this._baseLayoutRef) {
@@ -124,14 +147,14 @@ export class SideNavComponent {
124
147
  }
125
148
  }
126
149
  SideNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: SideNavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.TheSeamLayoutService }, { token: i2.TheSeamSideNavService }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Component });
127
- SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", items: "items", expanded: "expanded", overlay: "overlay" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
150
+ SideNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: SideNavComponent, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", items: "items", expanded: "expanded", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
128
151
  TheSeamSideNavService,
129
152
  {
130
153
  provide: THESEAM_SIDE_NAV_ACCESSOR,
131
154
  // tslint:disable-next-line:no-use-before-declare
132
155
  useExisting: forwardRef(() => SideNavComponent)
133
156
  },
134
- ], queries: [{ propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i6.SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: i7.SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], animations: [
157
+ ], queries: [{ propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.OverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "directive", type: i5.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: i6.SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: i7.SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], animations: [
135
158
  //
136
159
  // TODO: This animation code turned into a mess. Clean it up and make it
137
160
  // more smooth.
@@ -268,7 +291,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
268
291
  // ])
269
292
  // ]),
270
293
  ])
271
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
294
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"></div>\n\n<div class=\"side-nav-inner-wrapper\" [@sideNavExpand]=\"_sideNavExpand\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state.active\"\n [expanded]=\"$any(item).__state.expanded\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n </seam-side-nav-item>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:rgba(52,58,64,.6);width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
272
295
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.TheSeamLayoutService }, { type: i2.TheSeamSideNavService }, { type: undefined, decorators: [{
273
296
  type: Optional
274
297
  }, {
@@ -285,10 +308,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
285
308
  type: Input
286
309
  }], overlay: [{
287
310
  type: Input
311
+ }], menuItemTooltipConfig: [{
312
+ type: Input
288
313
  }], toggleExpand: [{
289
314
  type: Output
290
315
  }], _sideBarFooterTpl: [{
291
316
  type: ContentChild,
292
317
  args: [BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }]
293
318
  }] } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQVUsR0FBRyxFQUFtQixXQUFXLEVBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV0SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFHdEQsT0FBTyxFQUFnRCx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRTVHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlFQUFpRSxDQUFB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QU07Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsS0FBSyxFQUFFLG9CQUFvQjtnQ0FDM0IsU0FBUyxFQUFFLGlDQUFpQztnQ0FDNUMsWUFBWSxFQUFFLFFBQVE7NkJBQ3ZCLENBQUMsQ0FBQzs0QkFFSCx1RkFBdUY7NEJBRXZGLFVBQVUsQ0FBQywwQkFBMEIsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs0QkFFbkUsMkRBQTJEOzRCQUMzRCw0REFBNEQ7NEJBQzVELDREQUE0RDs0QkFDNUQsWUFBWTs0QkFDWiwyREFBMkQ7NEJBQzNELDJEQUEyRDs0QkFDM0QsaUVBQWlFOzRCQUNqRSxrQ0FBa0M7NEJBQ2xDLE9BQU87NEJBQ1AsTUFBTTt5QkFDUCxDQUFDO3FCQUNILG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFzRGxDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsdUJBQXVCOzRDQTNDaEIsY0FBYztzQkFBMUMsV0FBVzt1QkFBQyxjQUFjO2dCQUVGLGVBQWU7c0JBQXZDLEtBQUs7Z0JBR0YsS0FBSztzQkFEUixLQUFLO2dCQU9GLFFBQVE7c0JBRFgsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBTUksWUFBWTtzQkFBckIsTUFBTTtnQkFNOEUsaUJBQWlCO3NCQUFyRyxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgYW5pbWF0ZUNoaWxkLFxuICBncm91cCxcbiAgcXVlcnksXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgbWFwVG8sIHBhaXJ3aXNlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9jb3JlJ1xuaW1wb3J0IHsgVGhlU2VhbUxheW91dFNlcnZpY2UgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vbGF5b3V0J1xuXG5pbXBvcnQgeyBJVGhlU2VhbUJhc2VMYXlvdXROYXYsIElUaGVTZWFtQmFzZUxheW91dFJlZiwgVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYgfSBmcm9tICcuLi9iYXNlLWxheW91dC9pbmRleCdcblxuaW1wb3J0IHsgQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9iYXNlLWxheW91dC9kaXJlY3RpdmVzL2Jhc2UtbGF5b3V0LXNpZGUtYmFyLWZvb3Rlci5kaXJlY3RpdmUnXG5pbXBvcnQgeyBUSEVTRUFNX1NJREVfTkFWX0FDQ0VTU09SIH0gZnJvbSAnLi9zaWRlLW5hdi10b2tlbnMnXG5pbXBvcnQgeyBJU2lkZU5hdkl0ZW0gfSBmcm9tICcuL3NpZGUtbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1TaWRlTmF2U2VydmljZSB9IGZyb20gJy4vc2lkZS1uYXYuc2VydmljZSdcblxuY29uc3QgRVhQQU5ERURfU1RBVEUgPSAnZXhwYW5kZWQnXG5jb25zdCBDT0xMQVBTRURfU1RBVEUgPSAnY29sbGFwc2VkJ1xuXG5jb25zdCBFWFBBTkRFRF9PVkVSTEFZX1NUQVRFID0gJ2V4cGFuZGVkLW92ZXJsYXknXG5jb25zdCBDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSA9ICdjb2xsYXBzZWQtb3ZlcmxheSdcblxuY29uc3QgRVhQQU5ERURfU1RBVEVTID0gWyBFWFBBTkRFRF9TVEFURSwgRVhQQU5ERURfT1ZFUkxBWV9TVEFURSBdXG5jb25zdCBDT0xMQVBTRURfU1RBVEVTID0gWyBDT0xMQVBTRURfU1RBVEUsIENPTExBUFNFRF9PVkVSTEFZX1NUQVRFIF1cbmNvbnN0IEVYUEFORF9TVEFURVMgPSBbIC4uLkVYUEFOREVEX1NUQVRFUywgLi4uQ09MTEFQU0VEX1NUQVRFUyBdXG5cbmV4cG9ydCBmdW5jdGlvbiBzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbihmcm9tU3RhdGU6IHN0cmluZywgdG9TdGF0ZTogc3RyaW5nKSB7XG4gIC8vIGNvbnNvbGUubG9nKHsgZnJvbVN0YXRlLCB0b1N0YXRlIH0pXG4gIHJldHVybiBmcm9tU3RhdGUgIT09IHRvU3RhdGUgJiZcbiAgICAoXG4gICAgICAvLyBOT1RFOiBUaGUgY3VycmVudCB3YXkgdGhlIHNpZGUgbmF2IGlzIGJlaW5nIHVzZWQgaXQgY2F1c2VzIHRoZVxuICAgICAgLy8gY29tcG9uZW50IHRvIHNvbWV0aW1lcyBnZXQgcGxhY2VkIGluIHRoZSB3cm9uZyBsb2NhdGlvbiBpbml0aWFsbHkuIEl0XG4gICAgICAvLyBpcyBmYXN0IGVub3VnaCB0byBub3QgYmUgbm90aWNlZCB3aXRob3V0IGFuIGluaXRpYWwgYW5pbWF0aW9uIHVzdWFsbHksXG4gICAgICAvLyBzbyBpdCBpcyBjb21tZW50ZWQgb3V0IGJlbG93IHVudGlsIHRoZSBpbml0aWFsIHBsYWNlbWVudCBpc3N1ZSBpdFxuICAgICAgLy8gZml4ZWQuXG4gICAgICAvL1xuICAgICAgLy8gKFxuICAgICAgLy8gICBmcm9tU3RhdGUgPT09ICd2b2lkJyAmJiBFWFBBTkRfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xXG4gICAgICAvLyAgIHx8XG4gICAgICAvLyAgIHRvU3RhdGUgPT09ICd2b2lkJyAmJiBFWFBBTkRfU1RBVEVTLmluZGV4T2YoZnJvbVN0YXRlKSAhPT0gLTFcbiAgICAgIC8vIClcbiAgICAgIC8vIHx8XG4gICAgICAoXG4gICAgICAgIChFWFBBTkRFRF9TVEFURVMuaW5kZXhPZihmcm9tU3RhdGUpICE9PSAtMSAmJiBDT0xMQVBTRURfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xKSB8fFxuICAgICAgICAoRVhQQU5ERURfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xICYmIENPTExBUFNFRF9TVEFURVMuaW5kZXhPZihmcm9tU3RhdGUpICE9PSAtMSlcbiAgICAgIClcbiAgICApXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tc2lkZS1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUaGVTZWFtU2lkZU5hdlNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogVEhFU0VBTV9TSURFX05BVl9BQ0NFU1NPUixcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNpZGVOYXZDb21wb25lbnQpXG4gICAgfSxcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuXG4gICAgLy9cbiAgICAvLyBUT0RPOiBUaGlzIGFuaW1hdGlvbiBjb2RlIHR1cm5lZCBpbnRvIGEgbWVzcy4gQ2xlYW4gaXQgdXAgYW5kIG1ha2UgaXRcbiAgICAvLyBtb3JlIHNtb290aC5cbiAgICAvL1xuXG4gICAgdHJpZ2dlcignc2lkZU5hdkFuaW0nLCBbXG4gICAgICB0cmFuc2l0aW9uKHNpZGVOYXZFeHBhbmRTdGF0ZUNoYW5nZUZuLCBbXG4gICAgICAgIGdyb3VwKFtcbiAgICAgICAgICBxdWVyeSgnQHNpZGVOYXZCYWNrZHJvcCcsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgICAgIHF1ZXJ5KCdAc2lkZU5hdkV4cGFuZCcsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgICBdKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuXG4gICAgdHJpZ2dlcignc2lkZU5hdkJhY2tkcm9wJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUsIHN0eWxlKHsgb3BhY2l0eTogJzAnIH0pKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbigoZnJvbVN0YXRlLCB0b1N0YXRlLCBlbGVtZW50LCBwYXJhbXMpID0+IHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3NpZGVOYXZCYWNrZHJvcCB2JywgZnJvbVN0YXRlLCB0b1N0YXRlLCBlbGVtZW50LCBwYXJhbXMpXG4gICAgICAvLyAgIHJldHVybiBmYWxzZVxuICAgICAgLy8gfSwgW10pLFxuXG4gICAgICB0cmFuc2l0aW9uKHNpZGVOYXZFeHBhbmRTdGF0ZUNoYW5nZUZuLCBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pLFxuXG4gICAgdHJpZ2dlcignc2lkZU5hdkV4cGFuZCcsIFtcbiAgICAgIC8vIFRPRE86IE1ha2Ugd2lkdGggY29uZmlndXJhYmxlLlxuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgd2lkdGg6ICcyNjBweCcgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IHdpZHRoOiAnNTBweCcsICdvdmVyZmxvdy14JzogJ2hpZGRlbicgfSkpLFxuXG4gICAgICBzdGF0ZShFWFBBTkRFRF9PVkVSTEFZX1NUQVRFLCBzdHlsZSh7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGZsb2F0OiAnbGVmdCcsXG4gICAgICAgIHpJbmRleDogJzk5OTknLFxuICAgICAgICB3aWR0aDogJ2NhbGMoMTAwdncgLSA1MHB4KScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknXG4gICAgICB9KSksXG4gICAgICBzdGF0ZShDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoe1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBmbG9hdDogJ2xlZnQnLFxuICAgICAgICB6SW5kZXg6ICc5OTk5JyxcbiAgICAgICAgd2lkdGg6ICdjYWxjKDEwMHZ3IC0gNTBweCknLFxuICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKGNhbGMoLTEwMHZ3ICsgNTBweCkpJyxcbiAgICAgICAgJ292ZXJmbG93LXgnOiAnaGlkZGVuJ1xuICAgICAgfSkpLFxuXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0VYUEFOREVEX1NUQVRFfSA8PT4gJHtDT0xMQVBTRURfU1RBVEV9YCwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgdHJhbnNpdGlvbihzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbiwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIFtcbiAgICAgIC8vICAgLy8gcXVlcnkoJzpsZWF2ZScsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAvLyBxdWVyeSgnOmVudGVyJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgIGdyb3VwKFtcbiAgICAgIC8vICAgICBxdWVyeSgnOmxlYXZlJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgICAgcXVlcnkoJzplbnRlcicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAgIHF1ZXJ5KCdAY29tcGFjdEFuaW0nLCBhbmltYXRlQ2hpbGQoKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0JylcbiAgICAgIC8vICAgXSlcbiAgICAgIC8vIF0pLFxuICAgIF0pXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgSVRoZVNlYW1CYXNlTGF5b3V0TmF2IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hhc0hlYWRlclRvZ2dsZTogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAvLyBASG9zdEJpbmRpbmcoJ0BzaWRlTmF2RXhwYW5kJykgX3NpZGVOYXZFeHBhbmQgPSBFWFBBTkRFRF9TVEFURVxuICAvLyBfc2lkZU5hdkV4cGFuZCA9IEVYUEFOREVEX1NUQVRFXG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdAc2lkZU5hdkFuaW0nKSBfc2lkZU5hdkV4cGFuZCA9IEVYUEFOREVEX1NUQVRFXG4gIEBIb3N0QmluZGluZygnQHNpZGVOYXZBbmltJykgX3NpZGVOYXZFeHBhbmQgPSAnaW5pdGlhbCdcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyVG9nZ2xlID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpOiBJU2lkZU5hdkl0ZW1bXSB7IHJldHVybiB0aGlzLl9pdGVtcy52YWx1ZSB9XG4gIHNldCBpdGVtcyh2YWx1ZTogSVNpZGVOYXZJdGVtW10pIHsgdGhpcy5faXRlbXMubmV4dCh2YWx1ZSkgfVxuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNpZGVOYXZJdGVtW10+KFtdKVxuICBwdWJsaWMgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPElTaWRlTmF2SXRlbVtdPlxuXG4gIEBJbnB1dCgpXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gICAgY29uc3QgZW1pdCA9IGV4cGFuZGVkICE9PSB0aGlzLmV4cGFuZGVkXG4gICAgdGhpcy5fZXhwYW5kZWQubmV4dChleHBhbmRlZClcblxuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZC5lbWl0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2V4cGFuZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBnZXQgb3ZlcmxheSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX292ZXJsYXkudmFsdWUgfVxuICBzZXQgb3ZlcmxheSh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9vdmVybGF5Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBwcml2YXRlIF9vdmVybGF5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXkkID0gdGhpcy5fb3ZlcmxheS5hc09ic2VydmFibGUoKVxuXG4gIEBPdXRwdXQoKSB0b2dnbGVFeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIHB1YmxpYyByZWFkb25seSBzaWRlTmF2RXhwYW5kZWRTdGF0ZSQ6IE9ic2VydmFibGU8c3RyaW5nPlxuICBwdWJsaWMgX2JhY2tkcm9wSGlkZGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuXG4gIEBDb250ZW50Q2hpbGQoQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfc2lkZUJhckZvb3RlclRwbD86IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG4gIF9zaWRlQmFyRm9vdGVyUG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xheW91dDogVGhlU2VhbUxheW91dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2lkZU5hdjogVGhlU2VhbVNpZGVOYXZTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYpIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2VMYXlvdXRSZWY6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuX2l0ZW1zLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gdGhpcy5fc2lkZU5hdi5jcmVhdGVJdGVtc09ic2VydmFibGUoaXRlbXMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKVxuXG4gICAgdGhpcy5pc01vYmlsZSQgPSB0aGlzLl9sYXlvdXQuaXNNb2JpbGUkLnBpcGUoXG4gICAgICB0YXAoaXNNb2JpbGUgPT4gaXNNb2JpbGUgPyB0aGlzLmNvbGxhcHNlKCkgOiB0aGlzLmV4cGFuZCgpKVxuICAgIClcblxuICAgIHRoaXMuc2lkZU5hdkV4cGFuZGVkU3RhdGUkID0gY29tYmluZUxhdGVzdChbIHRoaXMuZXhwYW5kZWQkLCB0aGlzLm92ZXJsYXkkIF0pLnBpcGUoXG4gICAgICBtYXAoKFsgZXhwYW5kZWQsIG92ZXJsYXkgXSkgPT4gZXhwYW5kZWRcbiAgICAgICAgPyBvdmVybGF5ID8gRVhQQU5ERURfT1ZFUkxBWV9TVEFURSA6IEVYUEFOREVEX1NUQVRFXG4gICAgICAgIDogb3ZlcmxheSA/IENPTExBUFNFRF9PVkVSTEFZX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgIClcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9iYXNlTGF5b3V0UmVmKSB7IHRoaXMuX2Jhc2VMYXlvdXRSZWYucmVnaXN0ZXJOYXYodGhpcykgfVxuXG4gICAgdGhpcy5pc01vYmlsZSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoYiA9PiB0aGlzLm92ZXJsYXkgPSBiKVxuXG4gICAgdGhpcy5zaWRlTmF2RXhwYW5kZWRTdGF0ZSRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUodiA9PiB0aGlzLl9zaWRlTmF2RXhwYW5kID0gdilcblxuICAgIGlmICh0aGlzLl9zaWRlQmFyRm9vdGVyVHBsKSB7XG4gICAgICB0aGlzLl9zaWRlQmFyRm9vdGVyUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuX3NpZGVCYXJGb290ZXJUcGwsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KHVuZGVmaW5lZClcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKClcbiAgICBpZiAodGhpcy5fYmFzZUxheW91dFJlZikgeyB0aGlzLl9iYXNlTGF5b3V0UmVmLnVucmVnaXN0ZXJOYXYodGhpcykgfVxuICB9XG5cbiAgcHVibGljIGV4cGFuZCgpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZVxuICB9XG5cbiAgcHVibGljIGNvbGxhcHNlKCkge1xuICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWRcbiAgfVxuXG4gIHB1YmxpYyBhbmltYXRlU3RhcnQoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuX2JhY2tkcm9wSGlkZGVuLm5leHQoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFuaW1hdGVFbmQoKSB7XG4gICAgaWYgKCF0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9iYWNrZHJvcEhpZGRlbi5uZXh0KHRydWUpXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJzaWRlLW5hdi1iYWNrZHJvcFwiICpuZ0lmPVwiaXNNb2JpbGUkIHwgYXN5bmNcIlxuICBbQHNpZGVOYXZCYWNrZHJvcF09XCJfc2lkZU5hdkV4cGFuZFwiXG4gIFtjbGFzcy5zaWRlLW5hdi1iYWNrZHJvcC1oaWRkZW5dPVwiX2JhY2tkcm9wSGlkZGVuIHwgYXN5bmNcIj48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInNpZGUtbmF2LWlubmVyLXdyYXBwZXJcIiBbQHNpZGVOYXZFeHBhbmRdPVwiX3NpZGVOYXZFeHBhbmRcIlxuICAoQHNpZGVOYXZFeHBhbmQuc3RhcnQpPVwiYW5pbWF0ZVN0YXJ0KClcIlxuICAoQHNpZGVOYXZFeHBhbmQuZG9uZSk9XCJhbmltYXRlRW5kKClcIj5cbiAgPG5hdiBjbGFzcz1cIm5hdiBzaWRlLW5hdi1jb250ZW50XCI+XG4gICAgPHNlYW0tc2lkZS1uYXYtdG9nZ2xlICpuZ0lmPVwiaGFzSGVhZGVyVG9nZ2xlXCJcbiAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZCQgfCBhc3luY1wiXG4gICAgICAodG9nZ2xlRXhwYW5kKT1cInRvZ2dsZSgpXCI+XG4gICAgPC9zZWFtLXNpZGUtbmF2LXRvZ2dsZT5cbiAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaXRlbXMtY29udGFpbmVyXCIgc2VhbU92ZXJsYXlTY3JvbGxiYXI+XG4gICAgICA8c2VhbS1zaWRlLW5hdi1pdGVtICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zJCB8IGFzeW5jXCJcbiAgICAgICAgW2NvbXBhY3RdPVwiIShleHBhbmRlZCQgfCBhc3luYylcIlxuICAgICAgICBbaXRlbVR5cGVdPVwiJGFueShpdGVtKT8uaXRlbVR5cGVcIlxuICAgICAgICBbaWNvbl09XCIkYW55KGl0ZW0pPy5pY29uXCJcbiAgICAgICAgW2xhYmVsXT1cIiRhbnkoaXRlbSk/LmxhYmVsXCJcbiAgICAgICAgW2xpbmtdPVwiJGFueShpdGVtKT8ubGlua1wiXG4gICAgICAgIFtiYWRnZVRleHRdPVwiJGFueShpdGVtKT8uYmFkZ2U/LnRleHRcIlxuICAgICAgICBbYmFkZ2VUaGVtZV09XCIkYW55KGl0ZW0pPy5iYWRnZT8udGhlbWUgfHwgJ2RhbmdlcidcIlxuICAgICAgICBbYmFkZ2VTckNvbnRlbnRdPVwiJGFueShpdGVtKT8uYmFkZ2U/LnNyQ29udGVudFwiXG4gICAgICAgIFtiYWRnZVRvb2x0aXBdPVwiJGFueShpdGVtKT8uYmFkZ2U/LnRvb2x0aXBcIlxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwiJGFueShpdGVtKT8ucXVlcnlQYXJhbXNcIlxuICAgICAgICBbY2hpbGRyZW5dPVwiJGFueShpdGVtKT8uY2hpbGRyZW5cIlxuICAgICAgICBbYWN0aXZlXT1cIiRhbnkoaXRlbSkuX19zdGF0ZS5hY3RpdmVcIlxuICAgICAgICBbZXhwYW5kZWRdPVwiJGFueShpdGVtKS5fX3N0YXRlLmV4cGFuZGVkXCI+XG4gICAgICA8L3NlYW0tc2lkZS1uYXYtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfc2lkZUJhckZvb3RlclBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmF2PlxuPC9kaXY+XG4iXX0=
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZnJhbWV3b3JrL3NpZGUtbmF2L3NpZGUtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsT0FBTyxFQUNQLFlBQVksRUFDWixLQUFLLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFBO0FBQzVCLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQVUsR0FBRyxFQUFtQixXQUFXLEVBQWEsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV0SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFHdEQsT0FBTyxFQUFnRCx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRTVHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlFQUFpRSxDQUFB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RSxDQUFDO2dDQUNULElBQUksRUFBRSxDQUFDO2dDQUNQLEtBQUssRUFBRSxNQUFNO2dDQUNiLE1BQU0sRUFBRSxNQUFNO2dDQUNkLEtBQUssRUFBRSxvQkFBb0I7Z0NBQzNCLFNBQVMsRUFBRSxpQ0FBaUM7Z0NBQzVDLFlBQVksRUFBRSxRQUFROzZCQUN2QixDQUFDLENBQUM7NEJBRUgsdUZBQXVGOzRCQUV2RixVQUFVLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7NEJBRW5FLDJEQUEyRDs0QkFDM0QsNERBQTREOzRCQUM1RCw0REFBNEQ7NEJBQzVELFlBQVk7NEJBQ1osMkRBQTJEOzRCQUMzRCwyREFBMkQ7NEJBQzNELGlFQUFpRTs0QkFDakUsa0NBQWtDOzRCQUNsQyxPQUFPOzRCQUNQLE1BQU07eUJBQ1AsQ0FBQztxQkFDSCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBeUVsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHVCQUF1Qjs0Q0E5RGhCLGNBQWM7c0JBQTFDLFdBQVc7dUJBQUMsY0FBYztnQkFFRixlQUFlO3NCQUF2QyxLQUFLO2dCQUdGLEtBQUs7c0JBRFIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBZUYsT0FBTztzQkFEVixLQUFLO2dCQWFGLHFCQUFxQjtzQkFEeEIsS0FBSztnQkFhSSxZQUFZO3NCQUFyQixNQUFNO2dCQU04RSxpQkFBaUI7c0JBQXJHLFlBQVk7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBhbmltYXRlQ2hpbGQsXG4gIGdyb3VwLFxuICBxdWVyeSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbidcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCdcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtYXBUbywgcGFpcndpc2UsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2NvcmUnXG5pbXBvcnQgeyBUaGVTZWFtTGF5b3V0U2VydmljZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9sYXlvdXQnXG5cbmltcG9ydCB7IElUaGVTZWFtQmFzZUxheW91dE5hdiwgSVRoZVNlYW1CYXNlTGF5b3V0UmVmLCBUSEVTRUFNX0JBU0VfTEFZT1VUX1JFRiB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0L2luZGV4J1xuXG5pbXBvcnQgeyBCYXNlTGF5b3V0U2lkZUJhckZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0L2RpcmVjdGl2ZXMvYmFzZS1sYXlvdXQtc2lkZS1iYXItZm9vdGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRIRVNFQU1fU0lERV9OQVZfQUNDRVNTT1IgfSBmcm9tICcuL3NpZGUtbmF2LXRva2VucydcbmltcG9ydCB7IElTaWRlTmF2SXRlbSwgU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgfSBmcm9tICcuL3NpZGUtbmF2Lm1vZGVscydcbmltcG9ydCB7IFRoZVNlYW1TaWRlTmF2U2VydmljZSB9IGZyb20gJy4vc2lkZS1uYXYuc2VydmljZSdcblxuY29uc3QgRVhQQU5ERURfU1RBVEUgPSAnZXhwYW5kZWQnXG5jb25zdCBDT0xMQVBTRURfU1RBVEUgPSAnY29sbGFwc2VkJ1xuXG5jb25zdCBFWFBBTkRFRF9PVkVSTEFZX1NUQVRFID0gJ2V4cGFuZGVkLW92ZXJsYXknXG5jb25zdCBDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSA9ICdjb2xsYXBzZWQtb3ZlcmxheSdcblxuY29uc3QgRVhQQU5ERURfU1RBVEVTID0gWyBFWFBBTkRFRF9TVEFURSwgRVhQQU5ERURfT1ZFUkxBWV9TVEFURSBdXG5jb25zdCBDT0xMQVBTRURfU1RBVEVTID0gWyBDT0xMQVBTRURfU1RBVEUsIENPTExBUFNFRF9PVkVSTEFZX1NUQVRFIF1cbmNvbnN0IEVYUEFORF9TVEFURVMgPSBbIC4uLkVYUEFOREVEX1NUQVRFUywgLi4uQ09MTEFQU0VEX1NUQVRFUyBdXG5cbmV4cG9ydCBmdW5jdGlvbiBzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbihmcm9tU3RhdGU6IHN0cmluZywgdG9TdGF0ZTogc3RyaW5nKSB7XG4gIC8vIGNvbnNvbGUubG9nKHsgZnJvbVN0YXRlLCB0b1N0YXRlIH0pXG4gIHJldHVybiBmcm9tU3RhdGUgIT09IHRvU3RhdGUgJiZcbiAgICAoXG4gICAgICAvLyBOT1RFOiBUaGUgY3VycmVudCB3YXkgdGhlIHNpZGUgbmF2IGlzIGJlaW5nIHVzZWQgaXQgY2F1c2VzIHRoZVxuICAgICAgLy8gY29tcG9uZW50IHRvIHNvbWV0aW1lcyBnZXQgcGxhY2VkIGluIHRoZSB3cm9uZyBsb2NhdGlvbiBpbml0aWFsbHkuIEl0XG4gICAgICAvLyBpcyBmYXN0IGVub3VnaCB0byBub3QgYmUgbm90aWNlZCB3aXRob3V0IGFuIGluaXRpYWwgYW5pbWF0aW9uIHVzdWFsbHksXG4gICAgICAvLyBzbyBpdCBpcyBjb21tZW50ZWQgb3V0IGJlbG93IHVudGlsIHRoZSBpbml0aWFsIHBsYWNlbWVudCBpc3N1ZSBpdFxuICAgICAgLy8gZml4ZWQuXG4gICAgICAvL1xuICAgICAgLy8gKFxuICAgICAgLy8gICBmcm9tU3RhdGUgPT09ICd2b2lkJyAmJiBFWFBBTkRfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xXG4gICAgICAvLyAgIHx8XG4gICAgICAvLyAgIHRvU3RhdGUgPT09ICd2b2lkJyAmJiBFWFBBTkRfU1RBVEVTLmluZGV4T2YoZnJvbVN0YXRlKSAhPT0gLTFcbiAgICAgIC8vIClcbiAgICAgIC8vIHx8XG4gICAgICAoXG4gICAgICAgIChFWFBBTkRFRF9TVEFURVMuaW5kZXhPZihmcm9tU3RhdGUpICE9PSAtMSAmJiBDT0xMQVBTRURfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xKSB8fFxuICAgICAgICAoRVhQQU5ERURfU1RBVEVTLmluZGV4T2YodG9TdGF0ZSkgIT09IC0xICYmIENPTExBUFNFRF9TVEFURVMuaW5kZXhPZihmcm9tU3RhdGUpICE9PSAtMSlcbiAgICAgIClcbiAgICApXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlYW0tc2lkZS1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZS1uYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBUaGVTZWFtU2lkZU5hdlNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogVEhFU0VBTV9TSURFX05BVl9BQ0NFU1NPUixcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11c2UtYmVmb3JlLWRlY2xhcmVcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNpZGVOYXZDb21wb25lbnQpXG4gICAgfSxcbiAgXSxcbiAgYW5pbWF0aW9uczogW1xuXG4gICAgLy9cbiAgICAvLyBUT0RPOiBUaGlzIGFuaW1hdGlvbiBjb2RlIHR1cm5lZCBpbnRvIGEgbWVzcy4gQ2xlYW4gaXQgdXAgYW5kIG1ha2UgaXRcbiAgICAvLyBtb3JlIHNtb290aC5cbiAgICAvL1xuXG4gICAgdHJpZ2dlcignc2lkZU5hdkFuaW0nLCBbXG4gICAgICB0cmFuc2l0aW9uKHNpZGVOYXZFeHBhbmRTdGF0ZUNoYW5nZUZuLCBbXG4gICAgICAgIGdyb3VwKFtcbiAgICAgICAgICBxdWVyeSgnQHNpZGVOYXZCYWNrZHJvcCcsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgICAgIHF1ZXJ5KCdAc2lkZU5hdkV4cGFuZCcsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgICBdKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuXG4gICAgdHJpZ2dlcignc2lkZU5hdkJhY2tkcm9wJywgW1xuICAgICAgc3RhdGUoRVhQQU5ERURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX09WRVJMQVlfU1RBVEUsIHN0eWxlKHsgb3BhY2l0eTogJzAnIH0pKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbigoZnJvbVN0YXRlLCB0b1N0YXRlLCBlbGVtZW50LCBwYXJhbXMpID0+IHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3NpZGVOYXZCYWNrZHJvcCB2JywgZnJvbVN0YXRlLCB0b1N0YXRlLCBlbGVtZW50LCBwYXJhbXMpXG4gICAgICAvLyAgIHJldHVybiBmYWxzZVxuICAgICAgLy8gfSwgW10pLFxuXG4gICAgICB0cmFuc2l0aW9uKHNpZGVOYXZFeHBhbmRTdGF0ZUNoYW5nZUZuLCBhbmltYXRlKCcwLjJzIGVhc2UtaW4tb3V0JykpLFxuICAgIF0pLFxuXG4gICAgdHJpZ2dlcignc2lkZU5hdkV4cGFuZCcsIFtcbiAgICAgIC8vIFRPRE86IE1ha2Ugd2lkdGggY29uZmlndXJhYmxlLlxuICAgICAgc3RhdGUoRVhQQU5ERURfU1RBVEUsIHN0eWxlKHsgd2lkdGg6ICcyNjBweCcgfSkpLFxuICAgICAgc3RhdGUoQ09MTEFQU0VEX1NUQVRFLCBzdHlsZSh7IHdpZHRoOiAnNTBweCcsICdvdmVyZmxvdy14JzogJ2hpZGRlbicgfSkpLFxuXG4gICAgICBzdGF0ZShFWFBBTkRFRF9PVkVSTEFZX1NUQVRFLCBzdHlsZSh7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGZsb2F0OiAnbGVmdCcsXG4gICAgICAgIHpJbmRleDogJzk5OTknLFxuICAgICAgICB3aWR0aDogJ2NhbGMoMTAwdncgLSA1MHB4KScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknXG4gICAgICB9KSksXG4gICAgICBzdGF0ZShDT0xMQVBTRURfT1ZFUkxBWV9TVEFURSwgc3R5bGUoe1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBmbG9hdDogJ2xlZnQnLFxuICAgICAgICB6SW5kZXg6ICc5OTk5JyxcbiAgICAgICAgd2lkdGg6ICdjYWxjKDEwMHZ3IC0gNTBweCknLFxuICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKGNhbGMoLTEwMHZ3ICsgNTBweCkpJyxcbiAgICAgICAgJ292ZXJmbG93LXgnOiAnaGlkZGVuJ1xuICAgICAgfSkpLFxuXG4gICAgICAvLyB0cmFuc2l0aW9uKGAke0VYUEFOREVEX1NUQVRFfSA8PT4gJHtDT0xMQVBTRURfU1RBVEV9YCwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgdHJhbnNpdGlvbihzaWRlTmF2RXhwYW5kU3RhdGVDaGFuZ2VGbiwgYW5pbWF0ZSgnMC4ycyBlYXNlLWluLW91dCcpKSxcblxuICAgICAgLy8gdHJhbnNpdGlvbihgJHtFWFBBTkRFRF9TVEFURX0gPD0+ICR7Q09MTEFQU0VEX1NUQVRFfWAsIFtcbiAgICAgIC8vICAgLy8gcXVlcnkoJzpsZWF2ZScsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAvLyBxdWVyeSgnOmVudGVyJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgIGdyb3VwKFtcbiAgICAgIC8vICAgICBxdWVyeSgnOmxlYXZlJywgYW5pbWF0ZUNoaWxkKCksIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICAvLyAgICAgcXVlcnkoJzplbnRlcicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgLy8gICAgIHF1ZXJ5KCdAY29tcGFjdEFuaW0nLCBhbmltYXRlQ2hpbGQoKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgIC8vICAgICBhbmltYXRlKCc1LjJzIGVhc2UtaW4tb3V0JylcbiAgICAgIC8vICAgXSlcbiAgICAgIC8vIF0pLFxuICAgIF0pXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgSVRoZVNlYW1CYXNlTGF5b3V0TmF2IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hhc0hlYWRlclRvZ2dsZTogQm9vbGVhbklucHV0XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAvLyBASG9zdEJpbmRpbmcoJ0BzaWRlTmF2RXhwYW5kJykgX3NpZGVOYXZFeHBhbmQgPSBFWFBBTkRFRF9TVEFURVxuICAvLyBfc2lkZU5hdkV4cGFuZCA9IEVYUEFOREVEX1NUQVRFXG5cbiAgLy8gQEhvc3RCaW5kaW5nKCdAc2lkZU5hdkFuaW0nKSBfc2lkZU5hdkV4cGFuZCA9IEVYUEFOREVEX1NUQVRFXG4gIEBIb3N0QmluZGluZygnQHNpZGVOYXZBbmltJykgX3NpZGVOYXZFeHBhbmQgPSAnaW5pdGlhbCdcblxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgaGFzSGVhZGVyVG9nZ2xlID0gdHJ1ZVxuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtcygpOiBJU2lkZU5hdkl0ZW1bXSB7IHJldHVybiB0aGlzLl9pdGVtcy52YWx1ZSB9XG4gIHNldCBpdGVtcyh2YWx1ZTogSVNpZGVOYXZJdGVtW10pIHsgdGhpcy5faXRlbXMubmV4dCh2YWx1ZSkgfVxuICBwcml2YXRlIF9pdGVtcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SVNpZGVOYXZJdGVtW10+KFtdKVxuICBwdWJsaWMgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPElTaWRlTmF2SXRlbVtdPlxuXG4gIEBJbnB1dCgpXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2V4cGFuZGVkLnZhbHVlIH1cbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpXG4gICAgY29uc3QgZW1pdCA9IGV4cGFuZGVkICE9PSB0aGlzLmV4cGFuZGVkXG4gICAgdGhpcy5fZXhwYW5kZWQubmV4dChleHBhbmRlZClcblxuICAgIGlmIChlbWl0KSB7XG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZC5lbWl0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpXG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2V4cGFuZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuICBwdWJsaWMgcmVhZG9ubHkgZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWQuYXNPYnNlcnZhYmxlKClcblxuICBASW5wdXQoKVxuICBnZXQgb3ZlcmxheSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX292ZXJsYXkudmFsdWUgfVxuICBzZXQgb3ZlcmxheSh2YWx1ZTogYm9vbGVhbikgeyB0aGlzLl9vdmVybGF5Lm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSkgfVxuICBwcml2YXRlIF9vdmVybGF5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXkkID0gdGhpcy5fb3ZlcmxheS5hc09ic2VydmFibGUoKVxuXG4gIHByaXZhdGUgX21lbnVJdGVtVG9vbHRpcENvbmZpZzogU2lkZU5hdkl0ZW1NZW51SXRlbVRvb2x0aXBDb25maWcgPSB7XG4gICAgcGxhY2VtZW50OiAncmlnaHQnLFxuICAgIGNvbnRhaW5lcjogJ2JvZHknLFxuICAgIGJlaGF2aW9yOiAnYWx3YXlzJ1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IG1lbnVJdGVtVG9vbHRpcENvbmZpZygpIHsgcmV0dXJuIHRoaXMuX21lbnVJdGVtVG9vbHRpcENvbmZpZyB9XG4gIHNldCBtZW51SXRlbVRvb2x0aXBDb25maWcodmFsdWU6IFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQ29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuX21lbnVJdGVtVG9vbHRpcENvbmZpZyA9IHtcbiAgICAgIGNsYXNzOiB2YWx1ZT8uY2xhc3MsXG4gICAgICBwbGFjZW1lbnQ6IHZhbHVlPy5wbGFjZW1lbnQgfHwgdGhpcy5fbWVudUl0ZW1Ub29sdGlwQ29uZmlnLnBsYWNlbWVudCxcbiAgICAgIGNvbnRhaW5lcjogdmFsdWU/LmNvbnRhaW5lciB8fCB0aGlzLl9tZW51SXRlbVRvb2x0aXBDb25maWcuY29udGFpbmVyLFxuICAgICAgYmVoYXZpb3I6IHZhbHVlPy5iZWhhdmlvciB8fCB0aGlzLl9tZW51SXRlbVRvb2x0aXBDb25maWcuYmVoYXZpb3JcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgdW5kZWZpbmVkIHwgbnVsbFxuXG4gIEBPdXRwdXQoKSB0b2dnbGVFeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KClcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG4gIHB1YmxpYyByZWFkb25seSBzaWRlTmF2RXhwYW5kZWRTdGF0ZSQ6IE9ic2VydmFibGU8c3RyaW5nPlxuICBwdWJsaWMgX2JhY2tkcm9wSGlkZGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKVxuXG4gIEBDb250ZW50Q2hpbGQoQmFzZUxheW91dFNpZGVCYXJGb290ZXJEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KSBfc2lkZUJhckZvb3RlclRwbD86IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsXG4gIF9zaWRlQmFyRm9vdGVyUG9ydGFsPzogVGVtcGxhdGVQb3J0YWxcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2xheW91dDogVGhlU2VhbUxheW91dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2lkZU5hdjogVGhlU2VhbVNpZGVOYXZTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEhFU0VBTV9CQVNFX0xBWU9VVF9SRUYpIHByaXZhdGUgcmVhZG9ubHkgX2Jhc2VMYXlvdXRSZWY6IElUaGVTZWFtQmFzZUxheW91dFJlZlxuICApIHtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuX2l0ZW1zLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gdGhpcy5fc2lkZU5hdi5jcmVhdGVJdGVtc09ic2VydmFibGUoaXRlbXMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgKVxuXG4gICAgdGhpcy5pc01vYmlsZSQgPSB0aGlzLl9sYXlvdXQuaXNNb2JpbGUkLnBpcGUoXG4gICAgICB0YXAoaXNNb2JpbGUgPT4gaXNNb2JpbGUgPyB0aGlzLmNvbGxhcHNlKCkgOiB0aGlzLmV4cGFuZCgpKVxuICAgIClcblxuICAgIHRoaXMuc2lkZU5hdkV4cGFuZGVkU3RhdGUkID0gY29tYmluZUxhdGVzdChbIHRoaXMuZXhwYW5kZWQkLCB0aGlzLm92ZXJsYXkkIF0pLnBpcGUoXG4gICAgICBtYXAoKFsgZXhwYW5kZWQsIG92ZXJsYXkgXSkgPT4gZXhwYW5kZWRcbiAgICAgICAgPyBvdmVybGF5ID8gRVhQQU5ERURfT1ZFUkxBWV9TVEFURSA6IEVYUEFOREVEX1NUQVRFXG4gICAgICAgIDogb3ZlcmxheSA/IENPTExBUFNFRF9PVkVSTEFZX1NUQVRFIDogQ09MTEFQU0VEX1NUQVRFXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgIClcblxuICAgIHRoaXMubWVudUl0ZW1Ub29sdGlwRGlzYWJsZWQkID0gY29tYmluZUxhdGVzdChbIHRoaXMuZXhwYW5kZWQkLCB0aGlzLm92ZXJsYXkkIF0pLnBpcGUoXG4gICAgICBtYXAoKFsgZXhwYW5kZWQsIG92ZXJsYXkgXSkgPT4ge1xuICAgICAgICAvLyBuZXZlciBkaXNwbGF5IHRvb2x0aXAgb24gbW9iaWxlLCBpdCBicmVha3MgdGhlIGxheW91dFxuICAgICAgICBpZiAob3ZlcmxheSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5tZW51SXRlbVRvb2x0aXBDb25maWc/LmJlaGF2aW9yID09PSAnYWx3YXlzJyA/IGZhbHNlXG4gICAgICAgICAgOiB0aGlzLm1lbnVJdGVtVG9vbHRpcENvbmZpZz8uYmVoYXZpb3IgPT09ICduZXZlcicgPyB0cnVlXG4gICAgICAgICAgOiB0aGlzLm1lbnVJdGVtVG9vbHRpcENvbmZpZz8uYmVoYXZpb3IgPT09ICdjb2xsYXBzZU9ubHknID8gZXhwYW5kZWQgOiB0cnVlXG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fYmFzZUxheW91dFJlZikgeyB0aGlzLl9iYXNlTGF5b3V0UmVmLnJlZ2lzdGVyTmF2KHRoaXMpIH1cblxuICAgIHRoaXMuaXNNb2JpbGUkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKGIgPT4gdGhpcy5vdmVybGF5ID0gYilcblxuICAgIHRoaXMuc2lkZU5hdkV4cGFuZGVkU3RhdGUkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHYgPT4gdGhpcy5fc2lkZU5hdkV4cGFuZCA9IHYpXG5cbiAgICBpZiAodGhpcy5fc2lkZUJhckZvb3RlclRwbCkge1xuICAgICAgdGhpcy5fc2lkZUJhckZvb3RlclBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9zaWRlQmFyRm9vdGVyVHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCh1bmRlZmluZWQpXG4gICAgdGhpcy5fbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpXG4gICAgaWYgKHRoaXMuX2Jhc2VMYXlvdXRSZWYpIHsgdGhpcy5fYmFzZUxheW91dFJlZi51bnJlZ2lzdGVyTmF2KHRoaXMpIH1cbiAgfVxuXG4gIHB1YmxpYyBleHBhbmQoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9IHRydWVcbiAgfVxuXG4gIHB1YmxpYyBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2VcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkXG4gIH1cblxuICBwdWJsaWMgYW5pbWF0ZVN0YXJ0KCkge1xuICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XG4gICAgICB0aGlzLl9iYWNrZHJvcEhpZGRlbi5uZXh0KGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhbmltYXRlRW5kKCkge1xuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5fYmFja2Ryb3BIaWRkZW4ubmV4dCh0cnVlKVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwic2lkZS1uYXYtYmFja2Ryb3BcIiAqbmdJZj1cImlzTW9iaWxlJCB8IGFzeW5jXCJcbiAgW0BzaWRlTmF2QmFja2Ryb3BdPVwiX3NpZGVOYXZFeHBhbmRcIlxuICBbY2xhc3Muc2lkZS1uYXYtYmFja2Ryb3AtaGlkZGVuXT1cIl9iYWNrZHJvcEhpZGRlbiB8IGFzeW5jXCI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJzaWRlLW5hdi1pbm5lci13cmFwcGVyXCIgW0BzaWRlTmF2RXhwYW5kXT1cIl9zaWRlTmF2RXhwYW5kXCJcbiAgKEBzaWRlTmF2RXhwYW5kLnN0YXJ0KT1cImFuaW1hdGVTdGFydCgpXCJcbiAgKEBzaWRlTmF2RXhwYW5kLmRvbmUpPVwiYW5pbWF0ZUVuZCgpXCI+XG4gIDxuYXYgY2xhc3M9XCJuYXYgc2lkZS1uYXYtY29udGVudFwiPlxuICAgIDxzZWFtLXNpZGUtbmF2LXRvZ2dsZSAqbmdJZj1cImhhc0hlYWRlclRvZ2dsZVwiXG4gICAgICBbZXhwYW5kZWRdPVwiZXhwYW5kZWQkIHwgYXN5bmNcIlxuICAgICAgKHRvZ2dsZUV4cGFuZCk9XCJ0b2dnbGUoKVwiPlxuICAgIDwvc2VhbS1zaWRlLW5hdi10b2dnbGU+XG4gICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWl0ZW1zLWNvbnRhaW5lclwiIHNlYW1PdmVybGF5U2Nyb2xsYmFyPlxuICAgICAgPHNlYW0tc2lkZS1uYXYtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyQgfCBhc3luY1wiXG4gICAgICAgIFtjb21wYWN0XT1cIiEoZXhwYW5kZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlJCB8IGFzeW5jXCJcbiAgICAgICAgW2l0ZW1UeXBlXT1cIiRhbnkoaXRlbSk/Lml0ZW1UeXBlXCJcbiAgICAgICAgW2ljb25dPVwiJGFueShpdGVtKT8uaWNvblwiXG4gICAgICAgIFtsYWJlbF09XCIkYW55KGl0ZW0pPy5sYWJlbFwiXG4gICAgICAgIFtsaW5rXT1cIiRhbnkoaXRlbSk/LmxpbmtcIlxuICAgICAgICBbYmFkZ2VUZXh0XT1cIiRhbnkoaXRlbSk/LmJhZGdlPy50ZXh0XCJcbiAgICAgICAgW2JhZGdlVGhlbWVdPVwiJGFueShpdGVtKT8uYmFkZ2U/LnRoZW1lIHx8ICdkYW5nZXInXCJcbiAgICAgICAgW2JhZGdlU3JDb250ZW50XT1cIiRhbnkoaXRlbSk/LmJhZGdlPy5zckNvbnRlbnRcIlxuICAgICAgICBbYmFkZ2VUb29sdGlwXT1cIiRhbnkoaXRlbSk/LmJhZGdlPy50b29sdGlwXCJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIiRhbnkoaXRlbSk/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgW2NoaWxkcmVuXT1cIiRhbnkoaXRlbSk/LmNoaWxkcmVuXCJcbiAgICAgICAgW2FjdGl2ZV09XCIkYW55KGl0ZW0pLl9fc3RhdGUuYWN0aXZlXCJcbiAgICAgICAgW2V4cGFuZGVkXT1cIiRhbnkoaXRlbSkuX19zdGF0ZS5leHBhbmRlZFwiXG4gICAgICAgIFttZW51SXRlbVRvb2x0aXBDb25maWddPVwibWVudUl0ZW1Ub29sdGlwQ29uZmlnXCJcbiAgICAgICAgW21lbnVJdGVtVG9vbHRpcERpc2FibGVkXT1cIm1lbnVJdGVtVG9vbHRpcERpc2FibGVkJCB8IGFzeW5jXCI+XG4gICAgICA8L3NlYW0tc2lkZS1uYXYtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfc2lkZUJhckZvb3RlclBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvbmF2PlxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXAgfSBmcm9tICcuL3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZJdGVtU3RhdGUge1xuICAvLyBwYXJlbnQ/OiBJU2lkZU5hdkl0ZW1cbiAgYWN0aXZlOiBib29sZWFuXG4gIGV4cGFuZGVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1DYW5IYXZlU3RhdGUge1xuICAvKipcbiAgICogVGhpcyBwcm9wIGlzIG1hbmFnZWQgYnkgdGhlIFNpZGVOYXYuIElmIG1hbnVhbGx5IHNldCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAgX19zdGF0ZT86IElTaWRlTmF2SXRlbVN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4ge1xuICBjaGlsZHJlbj86IElTaWRlTmF2SXRlbVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZJdGVtQmFzZTxUIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIFNpZGVOYXZJdGVtQ2FuSGF2ZVN0YXRlIHtcbiAgLyoqXG4gICAqIGRlZmF1bHQ6ICdyb3V0ZSdcbiAgICovXG4gIGl0ZW1UeXBlPzogVFxuXG4gIGJhZGdlPzogSVNpZGVOYXZCYWRnZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2VGl0bGUgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCd0aXRsZSc+IHtcbiAgbGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkRpdmlkZXIgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCdkaXZpZGVyJz4ge1xuICBsYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2QmFkZ2Uge1xuXG4gIHRleHQ/OiBzdHJpbmdcblxuICB0aGVtZT86IFRoZW1lVHlwZXNcblxuICAvKipcbiAgICogQ29udGVudCB0byBwcm92aWRlIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LCBzdWNoIGFzIHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgc3JDb250ZW50Pzogc3RyaW5nXG5cbiAgdG9vbHRpcD86IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZCYXNpYyBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2Jhc2ljJz4sIFNpZGVOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkxpbmsgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCdsaW5rJz4sXG4gIFBhcnRpYWw8UGljazxVcmxDcmVhdGlvbk9wdGlvbnMsICdxdWVyeVBhcmFtcycgfCAnZnJhZ21lbnQnIHwgJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnIHwgJ3ByZXNlcnZlRnJhZ21lbnQnPj4sXG4gIFNpZGVOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcblxuICBsaW5rPzogYW55W10gfCBzdHJpbmdcblxuICAvKipcbiAgICogRGVmYXVsdDogeyBwYXRoczogJ3N1YnNldCcsIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0JywgZnJhZ21lbnQ6ICdpZ25vcmVkJywgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcgfVxuICAgKi9cbiAgbWF0Y2hPcHRpb25zPzogUGFydGlhbDxJc0FjdGl2ZU1hdGNoT3B0aW9ucz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkJ1dHRvbiBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2J1dHRvbic+IHtcbiAgb25DbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIElTaWRlTmF2SXRlbSA9IElTaWRlTmF2VGl0bGUgfCBJU2lkZU5hdkRpdmlkZXIgfCBJU2lkZU5hdkJhc2ljIHwgSVNpZGVOYXZMaW5rIHwgSVNpZGVOYXZCdXR0b25cblxuZXhwb3J0IGludGVyZmFjZSBTaWRlTmF2SXRlbVN0YXRlQ2hhbmdlZCB7XG4gIGl0ZW06IElTaWRlTmF2SXRlbVxuICBwcm9wOiBzdHJpbmdcbiAgcHJldlZhbHVlOiBhbnlcbiAgbmV3VmFsdWU6IGFueVxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2ZyYW1ld29yay9zaWRlLW5hdi9zaWRlLW5hdi5tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBVcmxDcmVhdGlvbk9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBTZWFtSWNvbiB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9pY29uJ1xuaW1wb3J0IHR5cGUgeyBUaGVtZVR5cGVzIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL21vZGVscydcblxuaW1wb3J0IHsgU2lkZU5hdkl0ZW1CYWRnZVRvb2x0aXAgfSBmcm9tICcuL3NpZGUtbmF2LWl0ZW0vc2lkZS1uYXYtaXRlbS5jb21wb25lbnQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZJdGVtU3RhdGUge1xuICAvLyBwYXJlbnQ/OiBJU2lkZU5hdkl0ZW1cbiAgYWN0aXZlOiBib29sZWFuXG4gIGV4cGFuZGVkOiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1DYW5IYXZlU3RhdGUge1xuICAvKipcbiAgICogVGhpcyBwcm9wIGlzIG1hbmFnZWQgYnkgdGhlIFNpZGVOYXYuIElmIG1hbnVhbGx5IHNldCBpdCB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAgX19zdGF0ZT86IElTaWRlTmF2SXRlbVN0YXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lkZU5hdkl0ZW1DYW5IYXZlQ2hpbGRyZW4ge1xuICBjaGlsZHJlbj86IElTaWRlTmF2SXRlbVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZJdGVtQmFzZTxUIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIFNpZGVOYXZJdGVtQ2FuSGF2ZVN0YXRlIHtcbiAgLyoqXG4gICAqIGRlZmF1bHQ6ICdyb3V0ZSdcbiAgICovXG4gIGl0ZW1UeXBlPzogVFxuXG4gIGJhZGdlPzogSVNpZGVOYXZCYWRnZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2VGl0bGUgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCd0aXRsZSc+IHtcbiAgbGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkRpdmlkZXIgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCdkaXZpZGVyJz4ge1xuICBsYWJlbD86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTaWRlTmF2QmFkZ2Uge1xuXG4gIHRleHQ/OiBzdHJpbmdcblxuICB0aGVtZT86IFRoZW1lVHlwZXNcblxuICAvKipcbiAgICogQ29udGVudCB0byBwcm92aWRlIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LCBzdWNoIGFzIHNjcmVlbiByZWFkZXJzLlxuICAgKi9cbiAgc3JDb250ZW50Pzogc3RyaW5nXG5cbiAgdG9vbHRpcD86IHN0cmluZyB8IFNpZGVOYXZJdGVtQmFkZ2VUb29sdGlwXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNpZGVOYXZCYXNpYyBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2Jhc2ljJz4sIFNpZGVOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkxpbmsgZXh0ZW5kcyBJU2lkZU5hdkl0ZW1CYXNlPCdsaW5rJz4sXG4gIFBhcnRpYWw8UGljazxVcmxDcmVhdGlvbk9wdGlvbnMsICdxdWVyeVBhcmFtcycgfCAnZnJhZ21lbnQnIHwgJ3F1ZXJ5UGFyYW1zSGFuZGxpbmcnIHwgJ3ByZXNlcnZlRnJhZ21lbnQnPj4sXG4gIFNpZGVOYXZJdGVtQ2FuSGF2ZUNoaWxkcmVuIHtcbiAgaWNvbj86IFNlYW1JY29uXG4gIGxhYmVsOiBzdHJpbmdcblxuICBsaW5rPzogYW55W10gfCBzdHJpbmdcblxuICAvKipcbiAgICogRGVmYXVsdDogeyBwYXRoczogJ3N1YnNldCcsIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0JywgZnJhZ21lbnQ6ICdpZ25vcmVkJywgbWF0cml4UGFyYW1zOiAnaWdub3JlZCcgfVxuICAgKi9cbiAgbWF0Y2hPcHRpb25zPzogUGFydGlhbDxJc0FjdGl2ZU1hdGNoT3B0aW9ucz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2lkZU5hdkJ1dHRvbiBleHRlbmRzIElTaWRlTmF2SXRlbUJhc2U8J2J1dHRvbic+IHtcbiAgb25DbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIElTaWRlTmF2SXRlbSA9IElTaWRlTmF2VGl0bGUgfCBJU2lkZU5hdkRpdmlkZXIgfCBJU2lkZU5hdkJhc2ljIHwgSVNpZGVOYXZMaW5rIHwgSVNpZGVOYXZCdXR0b25cblxuZXhwb3J0IGludGVyZmFjZSBTaWRlTmF2SXRlbVN0YXRlQ2hhbmdlZCB7XG4gIGl0ZW06IElTaWRlTmF2SXRlbVxuICBwcm9wOiBzdHJpbmdcbiAgcHJldlZhbHVlOiBhbnlcbiAgbmV3VmFsdWU6IGFueVxufVxuXG4vKipcbiAqIFdoZW4gYG5ldmVyYCwgbWVudSBpdGVtIHRvb2x0aXAgaXMgYWx3YXlzIGRpc2FibGVkLlxuICogV2hlbiBgYWx3YXlzYCwgbWVudSBpdGVtIHRvb2x0aXAgaXMgYWx3YXlzIGVuYWJsZWQuXG4gKiBXaGVuIGBjb2xsYXBzZU9ubHlgLCBtZW51IGl0ZW0gdG9vbHRpcCBpcyBlbmFibGVkIG9ubHkgd2hlbiB0aGUgc2lkZW5hdiBpcyBjb2xsYXBzZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQmVoYXZpb3IgPSAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnY29sbGFwc2VPbmx5J1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQ29uZmlnIHtcbiAgY2xhc3M/OiBzdHJpbmdcbiAgcGxhY2VtZW50Pzogc3RyaW5nXG4gIGNvbnRhaW5lcj86IHN0cmluZ1xuICBiZWhhdmlvcj86IFNpZGVOYXZJdGVtTWVudUl0ZW1Ub29sdGlwQmVoYXZpb3Jcbn1cbiJdfQ==