@po-ui/ng-components 6.1.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/esm2020/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.mjs +1 -1
  2. package/esm2020/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.mjs +1 -1
  3. package/esm2020/lib/components/po-disclaimer-group/po-disclaimer-group.component.mjs +1 -1
  4. package/esm2020/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.mjs +1 -1
  5. package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +7 -7
  6. package/esm2020/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +5 -5
  7. package/esm2020/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +3 -3
  8. package/esm2020/lib/components/po-field/po-decimal/po-decimal.component.mjs +4 -4
  9. package/esm2020/lib/components/po-field/po-email/po-email.component.mjs +4 -4
  10. package/esm2020/lib/components/po-field/po-input/po-input.component.mjs +4 -4
  11. package/esm2020/lib/components/po-field/po-login/po-login.component.mjs +3 -3
  12. package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +3 -3
  13. package/esm2020/lib/components/po-field/po-lookup/po-lookup.component.mjs +3 -3
  14. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +10 -7
  15. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.mjs +9 -7
  16. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +8 -4
  17. package/esm2020/lib/components/po-field/po-number/po-number.component.mjs +4 -4
  18. package/esm2020/lib/components/po-field/po-password/po-password.component.mjs +3 -3
  19. package/esm2020/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.mjs +4 -4
  20. package/esm2020/lib/components/po-field/po-select/po-select.component.mjs +3 -3
  21. package/esm2020/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.mjs +4 -4
  22. package/esm2020/lib/components/po-field/po-url/po-url.component.mjs +4 -4
  23. package/esm2020/lib/components/po-list-view/po-list-view.component.mjs +4 -4
  24. package/esm2020/lib/components/po-menu/po-menu-filter/po-menu-filter.component.mjs +3 -3
  25. package/esm2020/lib/components/po-menu/po-menu.component.mjs +3 -3
  26. package/esm2020/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.mjs +3 -3
  27. package/esm2020/lib/components/po-navbar/po-navbar.component.mjs +3 -3
  28. package/esm2020/lib/components/po-page/po-page-default/po-page-default.component.mjs +5 -5
  29. package/esm2020/lib/components/po-page/po-page-detail/po-page-detail.component.mjs +4 -4
  30. package/esm2020/lib/components/po-page/po-page-edit/po-page-edit.component.mjs +4 -4
  31. package/esm2020/lib/components/po-page/po-page-list/po-page-list.component.mjs +6 -6
  32. package/esm2020/lib/components/po-slide/po-slide.component.mjs +1 -1
  33. package/esm2020/lib/components/po-stepper/po-stepper.component.mjs +1 -1
  34. package/esm2020/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.mjs +1 -1
  35. package/esm2020/lib/components/po-table/po-table.component.mjs +15 -15
  36. package/fesm2015/po-ui-ng-components.mjs +123 -114
  37. package/fesm2015/po-ui-ng-components.mjs.map +1 -1
  38. package/fesm2020/po-ui-ng-components.mjs +115 -106
  39. package/fesm2020/po-ui-ng-components.mjs.map +1 -1
  40. package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +3 -1
  41. package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +3 -1
  42. package/package.json +4 -4
  43. package/po-ui-ng-components-6.2.0.tgz +0 -0
  44. package/schematics/ng-add/index.js +1 -1
  45. package/schematics/ng-update/v2/index.js +1 -1
  46. package/schematics/ng-update/v3/index.js +1 -1
  47. package/schematics/ng-update/v4/index.js +1 -1
  48. package/schematics/ng-update/v5/index.js +1 -1
  49. package/schematics/ng-update/v6/index.js +1 -1
  50. package/po-ui-ng-components-6.1.0.tgz +0 -0
@@ -7,9 +7,9 @@ import { PoListViewDetailTemplateDirective } from './po-list-view-detail-templat
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../services/po-language/po-language.service";
9
9
  import * as i2 from "@angular/common";
10
- import * as i3 from "../po-popup/po-popup.component";
11
- import * as i4 from "@angular/router";
12
- import * as i5 from "../po-button/po-button.component";
10
+ import * as i3 from "@angular/router";
11
+ import * as i4 from "../po-button/po-button.component";
12
+ import * as i5 from "../po-popup/po-popup.component";
13
13
  const _c0 = ["popup"];
14
14
  function PoListViewComponent_div_1_Template(rf, ctx) { if (rf & 1) {
15
15
  const _r6 = i0.ɵɵgetCurrentView();
@@ -354,7 +354,7 @@ PoListViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoListV
354
354
  i0.ɵɵproperty("ngIf", ctx.displayShowMoreButton);
355
355
  i0.ɵɵadvance(1);
356
356
  i0.ɵɵproperty("p-actions", ctx.actions)("p-target", ctx.popupTarget);
357
- } }, directives: [i2.NgIf, i2.NgForOf, i3.PoPopupComponent, i2.NgSwitch, i2.NgSwitchCase, i4.RouterLinkWithHref, i5.PoButtonComponent, i2.NgTemplateOutlet], encapsulation: 2, data: { animation: [
357
+ } }, directives: [i2.NgIf, i2.NgForOf, i2.NgSwitch, i2.NgSwitchCase, i3.RouterLinkWithHref, i4.PoButtonComponent, i2.NgTemplateOutlet, i5.PoPopupComponent], encapsulation: 2, data: { animation: [
358
358
  trigger('showHideDetail', [
359
359
  state('*', style({ 'overflow-y': 'visible' })),
360
360
  state('void', style({ 'overflow-y': 'hidden' })),
@@ -2,8 +2,8 @@ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../../services/po-language/po-language.service";
4
4
  import * as i2 from "@angular/common";
5
- import * as i3 from "../../po-field/po-clean/po-clean.component";
6
- import * as i4 from "../../po-loading/po-loading-icon/po-loading-icon.component";
5
+ import * as i3 from "../../po-loading/po-loading-icon/po-loading-icon.component";
6
+ import * as i4 from "../../po-field/po-clean/po-clean.component";
7
7
  const _c0 = ["inputFilter"];
8
8
  function PoMenuFilterComponent_span_4_Template(rf, ctx) { if (rf & 1) {
9
9
  i0.ɵɵelement(0, "span", 8);
@@ -68,7 +68,7 @@ PoMenuFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMen
68
68
  i0.ɵɵproperty("ngIf", ctx.loading);
69
69
  i0.ɵɵadvance(2);
70
70
  i0.ɵɵproperty("p-element-ref", ctx.inputFilterElement);
71
- } }, directives: [i2.NgIf, i3.PoCleanComponent, i4.PoLoadingIconComponent], encapsulation: 2 });
71
+ } }, directives: [i2.NgIf, i3.PoLoadingIconComponent, i4.PoCleanComponent], encapsulation: 2 });
72
72
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMenuFilterComponent, [{
73
73
  type: Component,
74
74
  args: [{ selector: 'po-menu-filter', template: "<div class=\"po-menu-filter-container\">\n <input\n #inputFilter\n type=\"text\"\n class=\"po-menu-filter\"\n [placeholder]=\"literals.search\"\n (keyup)=\"filterItems(inputFilter.value)\"\n />\n\n <div class=\"po-menu-filter-search-icon-container\">\n <span *ngIf=\"!loading\" class=\"po-icon po-menu-filter-icon po-icon-search\"></span>\n <po-loading-icon *ngIf=\"loading\"></po-loading-icon>\n </div>\n <div class=\"po-menu-filter-close-icon-container\">\n <po-clean [p-element-ref]=\"inputFilterElement\" (p-change-event)=\"filterItems(inputFilter.value)\"></po-clean>\n </div>\n</div>\n" }]
@@ -243,7 +243,7 @@ export class PoMenuComponent extends PoMenuBaseComponent {
243
243
  return menus.some(menu => {
244
244
  const formattedMenuLink = getFormattedLink(menu.link);
245
245
  const menuLinkPath = `${urlPathWithoutLastFragment}${formattedMenuLink.substr(formattedMenuLink.lastIndexOf('/'))}`;
246
- if (menuLinkPath === urlPath) {
246
+ if (menuLinkPath === urlPath && menuLinkPath === formattedMenuLink) {
247
247
  this.linkActive = formattedMenuLink;
248
248
  this.activateMenuItem(menu);
249
249
  return true;
@@ -600,7 +600,7 @@ PoMenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMenuCompo
600
600
  i0.ɵɵproperty("ngForOf", ctx.filteredItems);
601
601
  i0.ɵɵadvance(1);
602
602
  i0.ɵɵproperty("ngIf", ctx.hasFooter);
603
- } }, directives: [i6.NgIf, i6.NgClass, i6.NgForOf, i6.NgTemplateOutlet, i7.PoMenuFilterComponent, i8.PoIconComponent, i9.PoMenuItemComponent], encapsulation: 2 });
603
+ } }, directives: [i6.NgIf, i6.NgClass, i6.NgTemplateOutlet, i7.PoMenuFilterComponent, i8.PoIconComponent, i6.NgForOf, i9.PoMenuItemComponent], encapsulation: 2 });
604
604
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMenuComponent, [{
605
605
  type: Component,
606
606
  args: [{ selector: 'po-menu', providers: [PoMenuItemsService, PoMenuService], template: "<div *ngIf=\"mobileOpened\" class=\"po-menu-overlay\" (click)=\"toggleMenuMobile()\"></div>\n<div class=\"po-menu-mobile po-clickable\" (click)=\"toggleMenuMobile()\">\n <span class=\"po-icon po-icon-menu\"></span>\n</div>\n\n<div class=\"po-menu\" [ngClass]=\"{ 'po-menu-animation': mobileOpened }\">\n <div class=\"po-menu-header\">\n <div *ngIf=\"logo || (shortLogo && enableCollapse)\" class=\"po-menu-header-container-logo\">\n <a href=\"./\">\n <img\n [ngClass]=\"enableCollapse ? 'po-menu-short-logo' : 'po-menu-logo'\"\n [src]=\"enableCollapse ? shortLogo || logo : logo\"\n />\n </a>\n </div>\n\n <div *ngIf=\"!enableCollapse && menuHeaderTemplate\" class=\"po-menu-header-template\">\n <ng-container *ngTemplateOutlet=\"menuHeaderTemplate.templateRef\"></ng-container>\n </div>\n\n <po-menu-filter *ngIf=\"filter && !enableCollapse\" [p-loading]=\"filterLoading\" (p-filter)=\"debounceFilter($event)\">\n </po-menu-filter>\n </div>\n\n <nav class=\"po-menu-body\">\n <!-- Inner e outer para esconder scroll -->\n <div class=\"po-menu-outer\">\n <div class=\"po-menu-inner\">\n <div *ngIf=\"noData\" class=\"po-menu-item-wrapper\">\n <div class=\"po-menu-item-first\">\n <div class=\"po-menu-icon-container po-menu-item-no-data\">\n <po-icon class=\"po-icon po-icon-info po-menu-icon-item po-lg-2\"></po-icon>\n <div class=\"po-lg-10 po-menu-icon-label\">{{ literals.itemNotFound }}</div>\n </div>\n </div>\n </div>\n\n <div *ngFor=\"let menu of filteredItems; let menuIndex = index\" class=\"po-menu-item-wrapper\">\n <po-menu-item\n [class.po-menu-item-first]=\"menuIndex === 0\"\n [p-action]=\"menu.action\"\n [p-badge-alert]=\"menu.badgeAlert\"\n [p-badge-color]=\"menu.badge ? menu.badge.color : undefined\"\n [p-badge-value]=\"menu.badge ? menu.badge.value : undefined\"\n [p-collapsed-menu]=\"enableCollapse\"\n [p-icon]=\"allowIcons ? menu.icon : null\"\n [p-id]=\"menu.id\"\n [p-label]=\"menu.label\"\n [p-level]=\"menu.level\"\n [p-link]=\"menu.link\"\n [p-short-label]=\"menu.shortLabel\"\n [p-sub-items]=\"menu.subItems\"\n [p-type]=\"menu.type\"\n >\n </po-menu-item>\n </div>\n </div>\n </div>\n </nav>\n\n <div *ngIf=\"hasFooter\" class=\"po-menu-footer\">\n <a class=\"po-menu-collapse-button-icon po-clickable\" (click)=\"toggle()\">\n <span\n class=\"po-icon\"\n [class.po-icon-menu-close]=\"enableCollapseButton\"\n [class.po-icon-menu-open]=\"enableCollapse\"\n >\n </span>\n </a>\n </div>\n</div>\n" }]
@@ -608,4 +608,4 @@ PoMenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoMenuCompo
608
608
  type: ContentChild,
609
609
  args: [PoMenuHeaderTemplateDirective, { static: true }]
610
610
  }] }); })();
611
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbWVudS9wby1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBTWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRzVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ3pCM0QsK0JBQStFO0lBQTdCLHlKQUFTLHlCQUFrQixJQUFDO0lBQUMsaUJBQU07OztJQU9qRiwrQkFBeUY7SUFDdkYsNkJBQWE7SUFDWCwwQkFHRTtJQUNKLGlCQUFJO0lBQ04saUJBQU07OztJQUpBLGVBQWtFO0lBQWxFLHVGQUFrRSxnR0FBQTs7O0lBT3RFLHdCQUFnRjs7O0lBRGxGLCtCQUFtRjtJQUNqRix5RkFBZ0Y7SUFDbEYsaUJBQU07OztJQURXLGVBQWdEO0lBQWhELHdFQUFnRDs7OztJQUdq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RUFBcUY7UUFDckYsOEJBQXNFO1FBQTdCLHlGQUFTLHNCQUFrQixJQUFDO1FBQ25FLDBCQUEwQztRQUM1QyxpQkFBTTtRQUVOLDhCQUF1RTtRQUNyRSw4QkFBNEI7UUFDMUIsZ0VBT007UUFFTixnRUFFTTtRQUVOLHNGQUNpQjtRQUNuQixpQkFBTTtRQUVOLDhCQUEwQjtRQUV4Qiw4QkFBMkI7UUFDekIsZ0NBQTJCO1FBQ3pCLG1FQU9NO1FBRU4sb0VBa0JNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTtRQUNSLGlCQUFNO1FBRU4sbUVBU007UUFDUixpQkFBTTs7UUF0RUEsdUNBQWtCO1FBS0gsZUFBaUQ7UUFBakQsc0VBQWlEO1FBRTVELGVBQTJDO1FBQTNDLHNFQUEyQztRQVMzQyxlQUEyQztRQUEzQyxvRUFBMkM7UUFJaEMsZUFBK0I7UUFBL0Isd0RBQStCO1FBUXRDLGVBQVk7UUFBWixpQ0FBWTtRQVNJLGVBQWtCO1FBQWxCLDJDQUFrQjtRQXVCeEMsZUFBZTtRQUFmLG9DQUFlOzt1RkQyRFYsZUFBZTtjQUwzQixTQUFTOzJCQUNFLFNBQVMsYUFFUixDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQzt5UUFHaUIsa0JBQWtCO2tCQUFoRixZQUFZO21CQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGdldEZvcm1hdHRlZExpbmssIGlzTW9iaWxlLCBvcGVuRXh0ZXJuYWxMaW5rLCB1dWlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvTWVudUJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLW1lbnUtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9NZW51SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL3BvLW1lbnUtaGVhZGVyLXRlbXBsYXRlL3BvLW1lbnUtaGVhZGVyLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb01lbnVJdGVtIH0gZnJvbSAnLi9wby1tZW51LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTWVudUl0ZW1GaWx0ZXJlZCB9IGZyb20gJy4vcG8tbWVudS1pdGVtL3BvLW1lbnUtaXRlbS1maWx0ZXJlZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NZW51SXRlbXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1tZW51LWl0ZW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NZW51R2xvYmFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1nbG9iYWwuc2VydmljZSc7XG5pbXBvcnQgeyBQb01lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuY29uc3QgcG9NZW51RGVib3VuY2VUaW1lID0gNDAwO1xuY29uc3QgcG9NZW51TWluTGVuZ3RoID0gMztcbmNvbnN0IHBvTWVudVJvb3RMZXZlbCA9IDE7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvTWVudUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBBcGFyZWNlIGNvbXBsZXRvIGVtIHRlbGFzIGNvbSBsYXJndXJhIG1haW9yIHF1ZSAxMjAwcHgsIGNhc28gY29udHLDoXJpbyBvIG1lbnUgw6kgZXNjb25kaWRvIGUgY2hhbWFkbyBwb3IgbWVpbyBkZSB1bSBib3TDo28uXG4gKlxuICogTyBtZW51IHRhbWLDqW0gcG9kZSBzZXIgY29sYXBzYWRvLiBFc3NhIG9ww6fDo28gw6kgaGFiaWxpdGFkYSBxdWFuZG8gdG9kb3Mgb3MgaXRlbnMgZGUgcHJpbWVpcm8gbsOtdmVsIHBvc3N1w61yZW0gw61jb25lcyBlIHRleHRvcyBjdXJ0b3MuXG4gKiBTZSBjb2xhcHNhZG8sIHNvbWVudGUgb3MgaXRlbnMgZGUgcHJpbWVpcm8gbsOtdmVsIHNlcsOjbyBleGliaWRvcyBlLCBjYXNvIG8gaXRlbSBzZWxlY2lvbmFkbyBwb3NzdWEgc3ViLW7DrXZlaXMsXG4gKiBlbnTDo28gbyBtZW51IGFsdGVybmFyw6Egbm92YW1lbnRlIHBhcmEgbyBlc3RhZG8gYWJlcnRvLlxuICpcbiAqIEV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgY3VzdG9taXphciBhIGxvZ29tYXJjYSwgcXVlIMOpIGV4aWJpZGEgbmEgcGFydGUgc3VwZXJpb3IgZG8gY29tcG9uZW50ZS5cbiAqXG4gKiBFIHBhcmEgYWRpY2lvbmFyIHVtIGNvbnRlw7pkbyBwZXJzb25hbGl6YWRvIGVudHJlIGEgbG9nb21hcmNhIGUgbyBjYW1wbyBkZSBmaWx0cm8sXG4gKiBiYXN0YSBhZGljaW9uYXIgZXN0ZSBjb250ZcO6ZG8gY29tIGEgZGlyZXRpdmEgWyoqcC1tZW51LWhlYWRlci10ZW1wbGF0ZSoqXSgvZG9jdW1lbnRhdGlvbi9wby1tZW51LWhlYWRlci10ZW1wbGF0ZSkuXG4gKlxuICogQ2FzbyB1dGlsaXphciBvIGZpbHRybyBkZSBtZW51cywgw6kgcG9zc8OtdmVsIHJlYWxpemFyIGJ1c2NhcyBlbSBzZXJ2acOnbywgYXBlbmFzIGluZm9ybWFuZG8gYSBVUkwgZG8gc2VydmnDp28gb3UgYSBpbnN0w6JuY2lhIGRlXG4gKiB1bSBzZXJ2acOnbyBjdXN0b21pemFkbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb01lbnVGaWx0ZXJgLlxuICpcbiAqIFBhcmEgbyBtZW51IGZ1bmNpb25hciBjb3JyZXRhbWVudGUgw6kgbmVjZXNzw6FyaW8gaW1wb3J0YXIgbyBgUm91dGVyTW9kdWxlYCBlIGBSb3V0ZXNgIGRvIG3Ds2R1bG8gcHJpbmNpcGFsIGRlXG4gKiAgc3VhIGFwbGljYcOnw6NvOlxuICpcbiAqIGBgYGBcbiAqIGltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbiAqXG4gKiAuLi5cbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbXG4gKiAgICAgUm91dGVyTW9kdWxlLFxuICogICAgIFJvdXRlcyxcbiAqICAgICAuLi5cbiAqICAgICBQb01vZHVsZSxcbiAqICAgICAuLi5cbiAqICAgXSxcbiAqICAgZGVjbGFyYXRpb25zOiBbXG4gKiAgICAgQXBwQ29tcG9uZW50XG4gKiAgIF0sXG4gKiAgIHByb3ZpZGVyczogW10sXG4gKiAgIGJvb3RzdHJhcDogW0FwcENvbXBvbmVudF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuICogYGBgXG4gKlxuICogQWzDqW0gZGlzc28gw6kgbmVjZXNzw6FyaW8gY3JpYXIgdW0gbcOzZHVsbyBjb25maWd1cmFuZG8gYXMgcm90YXMgZGEgYXBsaWNhw6fDo28uXG4gKlxuICogYGBgXG4gKiBpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICpcbiAqIGltcG9ydCB7IFJvdXRlck1vZHVsZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbiAqXG4gKiBpbXBvcnQgeyBIZWxsb1dvcmxkQ29tcG9uZW50IH0gZnJvbSAnLi9oZWxsby13b3JsZC9oZWxsby13b3JsZC5jb21wb25lbnQnO1xuICpcbiAqIGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7cGF0aDogJ2hlbGxvLXdvcmxkJywgY29tcG9uZW50OiBIZWxsb1dvcmxkQ29tcG9uZW50fVxuICogXTtcbiAqXG4gKiBATmdNb2R1bGUoe1xuICogICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzLCB7dXNlSGFzaDogdHJ1ZX0pXSxcbiAqICAgZXhwb3J0czogW1JvdXRlck1vZHVsZV1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwUm91dGluZ01vZHVsZSB7fVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1iYXNpY1wiIHRpdGxlPVwiUE8gTWVudSBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtYmFzaWMvc2FtcGxlLXBvLW1lbnUtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtYmFzaWMvc2FtcGxlLXBvLW1lbnUtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1sYWJzXCIgdGl0bGU9XCJQTyBNZW51IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWxhYnMvc2FtcGxlLXBvLW1lbnUtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1sYWJzL3NhbXBsZS1wby1tZW51LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbWVudS1odW1hbi1yZXNvdXJjZXNcIiB0aXRsZT1cIlBPIE1lbnUgLSBIdW1hbiBSZXNvdXJjZXNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzL3NhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbUG9NZW51SXRlbXNTZXJ2aWNlLCBQb01lbnVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQb01lbnVDb21wb25lbnQgZXh0ZW5kcyBQb01lbnVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQsIERvQ2hlY2sge1xuICBAQ29udGVudENoaWxkKFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBtZW51SGVhZGVyVGVtcGxhdGU6IFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlO1xuXG4gIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtO1xuICBjb2xsYXBzZWRNb2JpbGU6IGJvb2xlYW47XG4gIGZpbHRlckxvYWRpbmcgPSBmYWxzZTtcbiAgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtO1xuICBpZCA9IHV1aWQoKTtcbiAgbGlua0FjdGl2ZTogc3RyaW5nO1xuICBtb2JpbGVPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbm9EYXRhOiBib29sZWFuID0gZmFsc2U7XG4gIHRpbWVvdXRGaWx0ZXI6IGFueTtcblxuICBwcml2YXRlIGZpbHRlcmluZ0l0ZW1zOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgbWVudUluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgbWVudVByZXZpb3VzID0gbnVsbDtcbiAgcHJpdmF0ZSByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIGl0ZW1TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbWVudUl0ZW1zU2VydmljZTogUG9NZW51SXRlbXNTZXJ2aWNlLFxuICAgIG1lbnVHbG9iYWxTZXJ2aWNlOiBQb01lbnVHbG9iYWxTZXJ2aWNlLFxuICAgIG1lbnVTZXJ2aWNlOiBQb01lbnVTZXJ2aWNlLFxuICAgIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIobWVudUdsb2JhbFNlcnZpY2UsIG1lbnVTZXJ2aWNlLCBsYW5ndWFnZVNlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNBY3RpdmVJdGVtTWVudVN1Yk1lbnUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiB0aGlzLmdyb3VwZWRNZW51SXRlbVsnbGV2ZWwnXTtcbiAgfVxuXG4gIGdldCBlbmFibGVDb2xsYXBzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlZCAmJiAhdGhpcy5jb2xsYXBzZWRNb2JpbGU7XG4gIH1cblxuICBnZXQgZW5hYmxlQ29sbGFwc2VCdXR0b24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgIXRoaXMuY29sbGFwc2VkICYmICF0aGlzLm1vYmlsZU9wZW5lZDtcbiAgfVxuXG4gIGdldCBoYXNGb290ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlQ29sbGFwc2VCdXR0b24gfHwgdGhpcy5lbmFibGVDb2xsYXBzZTtcbiAgfVxuXG4gIGdldCBpc0NvbGxhcHNlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hbGxvd0NvbGxhcHNlTWVudSAmJiB0aGlzLmNvbGxhcHNlZDtcbiAgfVxuXG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJpbmdJdGVtcyAmJiB0aGlzLmZpbHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lbnVDdXJyZW50ID0gdGhpcy5zdHJpbmdpZnkodGhpcy5tZW51cyk7XG5cbiAgICBpZiAodGhpcy5tZW51UHJldmlvdXMgIT09IG1lbnVDdXJyZW50IHx8ICF0aGlzLm1lbnVJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy51cGRhdGVNZW51KCk7XG4gICAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaXRlbVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIGlmICh0aGlzLnJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLnJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5tZW51R2xvYmFsU2VydmljZS5zZW5kUmVtb3ZlZEFwcGxpY2F0aW9uTWVudSh0aGlzLmlkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaWJlVG9NZW51SXRlbSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9Sb3V0ZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubWVudUdsb2JhbFNlcnZpY2Uuc2VuZEFwcGxpY2F0aW9uTWVudSh0aGlzKTtcbiAgfVxuXG4gIGFjdGl2YXRlTWVudUJ5VXJsKHVybFBhdGg6IHN0cmluZywgbWVudXM6IEFycmF5PFBvTWVudUl0ZW0+KSB7XG4gICAgaWYgKG1lbnVzKSB7XG4gICAgICBjb25zdCB1cmxQYXRoV2l0aG91dExhc3RGcmFnbWVudCA9IHVybFBhdGguc3Vic3RyKDAsIHVybFBhdGgubGFzdEluZGV4T2YoJy8nKSk7XG4gICAgICByZXR1cm4gbWVudXMuc29tZShtZW51ID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkTWVudUxpbmsgPSBnZXRGb3JtYXR0ZWRMaW5rKG1lbnUubGluayk7XG4gICAgICAgIGNvbnN0IG1lbnVMaW5rUGF0aCA9IGAke3VybFBhdGhXaXRob3V0TGFzdEZyYWdtZW50fSR7Zm9ybWF0dGVkTWVudUxpbmsuc3Vic3RyKFxuICAgICAgICAgIGZvcm1hdHRlZE1lbnVMaW5rLmxhc3RJbmRleE9mKCcvJylcbiAgICAgICAgKX1gO1xuXG4gICAgICAgIGlmIChtZW51TGlua1BhdGggPT09IHVybFBhdGgpIHtcbiAgICAgICAgICB0aGlzLmxpbmtBY3RpdmUgPSBmb3JtYXR0ZWRNZW51TGluaztcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0obWVudSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVNZW51QnlVcmwodXJsUGF0aCwgbWVudS5zdWJJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5saW5rQWN0aXZlIHx8IHRoaXMubGlua0FjdGl2ZSAhPT0gdXJsUGF0aCkge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoLCB0aGlzLm1lbnVzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogPGEgaWQ9XCJjb2xhcHNlTWV0aG9kXCI+PC9hPlxuICAgKlxuICAgKiAqTcOpdG9kbyBwYXJhIGNvbGFwc2FyIChyZXRyYWlyKSBvIG1lbnUuXG4gICAqL1xuICBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlVG9nZ2xlTWVudSh0cnVlKTtcbiAgfVxuXG4gIGRlYm91bmNlRmlsdGVyKGZpbHRlcjogc3RyaW5nKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEZpbHRlcik7XG5cbiAgICB0aGlzLnRpbWVvdXRGaWx0ZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyUHJvY2VzcyhmaWx0ZXIpO1xuICAgIH0sIHBvTWVudURlYm91bmNlVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogPGEgaWQ9XCJleHBhbmRNZXRob2RcIj48L2E+XG4gICAqXG4gICAqICpNw6l0b2RvIHBhcmEgZXhwYW5kaXIgKGF1bWVudGFyKSBvIG1lbnUuXG4gICAqL1xuICBleHBhbmQoKSB7XG4gICAgdGhpcy52YWxpZGF0ZVRvZ2dsZU1lbnUoZmFsc2UpO1xuICB9XG5cbiAgc3Vic2NyaWJlVG9NZW51SXRlbSgpIHtcbiAgICB0aGlzLml0ZW1TdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVJdGVtc1NlcnZpY2UucmVjZWl2ZUZyb21DaGlsZE1lbnVDbGlja2VkKCkuc3Vic2NyaWJlKChtZW51OiBQb01lbnVJdGVtKSA9PiB7XG4gICAgICB0aGlzLmNsaWNrTWVudUl0ZW0obWVudSk7XG4gICAgfSk7XG4gIH1cblxuICBzdWJzY3JpYmVUb1JvdXRlKCkge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCB2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICAgIGNvbnN0IHVybFJvdXRlciA9IHRoaXMuY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpO1xuICAgICAgICB0aGlzLmNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFJvdXRlcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogPGEgaWQ9XCJ0b2dnbGVNZXRob2RcIj48L2E+XG4gICAqICpNw6l0b2RvIHF1ZSBjb2xhcHNhIGUgZXhwYW5kZSBvIG1lbnUgYWx0ZXJuYWRhbWVudGUuXG4gICAqXG4gICAqID4gKk9zIG3DqXRvZG9zIGFwZW5hcyB2w6NvIGNvbGFwc2FyL2V4cGFuZGlyIG8gbWVudSBzZTpcbiAgICogIC0gVG9kb3Mgb3MgaXRlbnMgZGUgbWVudSB0aXZlcmVtIHZhbG9yIG5hcyBwcm9wcmllZGFkZXMgYGljb25gIGUgYHNob3J0TGFiZWxgLlxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMudmFsaWRhdGVUb2dnbGVNZW51KCF0aGlzLmNvbGxhcHNlZCk7XG4gIH1cblxuICB0b2dnbGVNZW51TW9iaWxlKCk6IHZvaWQge1xuICAgIHRoaXMubW9iaWxlT3BlbmVkID0gIXRoaXMubW9iaWxlT3BlbmVkO1xuICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5tb2JpbGVPcGVuZWQ7XG5cbiAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XG5cbiAgICBpZiAoaXNNb2JpbGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xuICAgICAgdGhpcy5jcmVhdGVSZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja2luZ1JvdXRlckNoaWxkcmVuRnJhZ21lbnRzKCkge1xuICAgIGNvbnN0IGNoaWxkcmVuUHJpbWFyeSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCkucm9vdC5jaGlsZHJlblsncHJpbWFyeSddO1xuXG4gICAgcmV0dXJuIGNoaWxkcmVuUHJpbWFyeSA/IGAvJHtjaGlsZHJlblByaW1hcnkuc2VnbWVudHMubWFwKGl0ID0+IGl0LnBhdGgpLmpvaW4oJy8nKX1gIDogJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVDb2xsYXBzZUNsYXNzKGNvbGxhcHNlZE1vYmlsZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlclt0aGlzLmlzQ29sbGFwc2VkICYmICFjb2xsYXBzZWRNb2JpbGUgPyAnYWRkQ2xhc3MnIDogJ3JlbW92ZUNsYXNzJ10od3JhcHBlciwgJ3BvLWNvbGxhcHNlZC1tZW51Jyk7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlQ29sbGFwc2VTdWJNZW51SXRlbSgpIHtcbiAgICB0aGlzLmNsZWFyR3JvdXBNZW51SWZGaXJzdExldmVsKHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xuXG4gICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID4gcG9NZW51Um9vdExldmVsICYmIHRoaXMuaXNBY3RpdmVJdGVtTWVudVN1Yk1lbnUpIHtcbiAgICAgIHRoaXMub3BlblBhcmVudE1lbnUodGhpcy5hY3RpdmVNZW51SXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZU1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gbWVudTtcbiAgICB0aGlzLmxpbmtBY3RpdmUgPSBtZW51Lmxpbms7XG4gICAgaWYgKHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpIHtcbiAgICAgIHRoaXMub3BlblBhcmVudE1lbnUodGhpcy5hY3RpdmVNZW51SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoe1xuICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLFxuICAgICAgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0sXG4gICAgICBhY3RpdmF0ZWRCeVJvdXRlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFyZVN1Yk1lbnVzKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xuICAgIHJldHVybiBtZW51cy5ldmVyeShtZW51ID0+IG1lbnVbJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckdyb3VwTWVudUlmRmlyc3RMZXZlbChhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbSkge1xuICAgIGlmIChhY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA9PT0gcG9NZW51Um9vdExldmVsKSB7XG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsaWNrTWVudUl0ZW0obWVudTogUG9NZW51SXRlbSkge1xuICAgIGlmIChtZW51LmFjdGlvbikge1xuICAgICAgdGhpcy5leGVjdXRlTWVudUFjdGlvbihtZW51KTtcbiAgICB9XG5cbiAgICBpZiAobWVudVsndHlwZSddID09PSAnZXh0ZXJuYWxMaW5rJykge1xuICAgICAgb3BlbkV4dGVybmFsTGluayhtZW51LmxpbmspO1xuICAgIH0gZWxzZSBpZiAobWVudVsndHlwZSddID09PSAnaW50ZXJuYWxMaW5rJykge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKG1lbnUpO1xuICAgIH0gZWxzZSBpZiAobWVudVsndHlwZSddID09PSAnc3ViSXRlbXMnKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJpbmdJdGVtcykge1xuICAgICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ3JvdXBNZW51SXRlbShtZW51KTtcbiAgICB9XG5cbiAgICBpZiAobWVudVsndHlwZSddICE9PSAnc3ViSXRlbXMnKSB7XG4gICAgICB0aGlzLm1vYmlsZU9wZW5lZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvTWVudUl0ZW1GaWx0ZXJlZChtZW51SXRlbTogYW55ID0geyBsYWJlbDogJycsIGxpbms6ICcnIH0pOiBQb01lbnVJdGVtRmlsdGVyZWQge1xuICAgIGNvbnN0IHsgbGFiZWwsIGxpbmsgfSA9IG1lbnVJdGVtO1xuXG4gICAgY29uc3QgbWVudUl0ZW1GaWx0ZXJlZDogUG9NZW51SXRlbUZpbHRlcmVkID0geyBsYWJlbCwgbGluayB9O1xuXG4gICAgdGhpcy5zZXRNZW51SXRlbVByb3BlcnRpZXMobWVudUl0ZW1GaWx0ZXJlZCk7XG5cbiAgICByZXR1cm4gbWVudUl0ZW1GaWx0ZXJlZDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVSZXNpemUoKTtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZU1lbnVBY3Rpb24obWVudTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIG1lbnUuYWN0aW9uKG1lbnUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJJdGVtcyhmaWx0ZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHRyaW1GaWx0ZXIgPSBmaWx0ZXIgJiYgZmlsdGVyLnRyaW0oKTtcblxuICAgIGlmICh0cmltRmlsdGVyKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuZmlsdGVyU2VydmljZVxuICAgICAgICA/IGF3YWl0IHRoaXMuZmlsdGVyT25TZXJ2aWNlKHRyaW1GaWx0ZXIpXG4gICAgICAgIDogdGhpcy5maWx0ZXJMb2NhbEl0ZW1zKHRyaW1GaWx0ZXIpO1xuICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLm1lbnVzXTtcbiAgICAgIHRoaXMuZmlsdGVyaW5nSXRlbXMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckxvY2FsSXRlbXMoZmlsdGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gW107XG5cbiAgICB0aGlzLmZpbmRJdGVtcyh0aGlzLm1lbnVzLCBmaWx0ZXIudG9Mb3dlckNhc2UoKSwgZmlsdGVyZWRJdGVtcyk7XG5cbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyUHJvY2VzcyhmaWx0ZXI6IHN0cmluZykge1xuICAgIHRoaXMuZmlsdGVyTG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLmZpbHRlckl0ZW1zKGZpbHRlcilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zaG93Tm9EYXRhKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlcnZpY2Uuc2VuZFRvQ2hpbGRNZW51Q2xpY2tlZCh7IGFjdGl2ZTogdGhpcy5hY3RpdmVNZW51SXRlbSwgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0gfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJPblNlcnZpY2Uoc2VhcmNoOiBzdHJpbmcgPSAnJykge1xuICAgIGlmIChzZWFyY2gubGVuZ3RoID49IHBvTWVudU1pbkxlbmd0aCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZVxuICAgICAgICAuZ2V0RmlsdGVyZWREYXRhKHNlYXJjaCwgdGhpcy5wYXJhbXMpXG4gICAgICAgIC5waXBlKG1hcChtZW51SXRlbXNGaWx0ZXJlZCA9PiBtZW51SXRlbXNGaWx0ZXJlZC5tYXAobWVudUl0ZW0gPT4gdGhpcy5jb252ZXJ0VG9NZW51SXRlbUZpbHRlcmVkKG1lbnVJdGVtKSkpKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSXRlbXMobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LCBmaWx0ZXI6IHN0cmluZywgZmlsdGVyZWRJdGVtczogQXJyYXk8YW55Pikge1xuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XG4gICAgICBjb25zdCBoYXNBY3Rpb24gPSBtZW51LmFjdGlvbiB8fCBtZW51Lmxpbms7XG4gICAgICBjb25zdCBsYWJlbEhhc0ZpbHRlciA9IG1lbnUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIpO1xuXG4gICAgICBpZiAobGFiZWxIYXNGaWx0ZXIgJiYgaGFzQWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IG5ld01lbnUgPSB7IC4uLm1lbnUgfTtcblxuICAgICAgICBpZiAobmV3TWVudS5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgZGVsZXRlIG5ld01lbnUuc3ViSXRlbXM7XG4gICAgICAgICAgbmV3TWVudVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShuZXdNZW51KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbHRlcmVkSXRlbXMucHVzaChuZXdNZW51KTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lbnUuc3ViSXRlbXMpIHtcbiAgICAgICAgdGhpcy5maW5kSXRlbXMobWVudS5zdWJJdGVtcywgZmlsdGVyLCBmaWx0ZXJlZEl0ZW1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnVJdGVtOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XG4gICAgY29uc3QgZ2V0UGFyZW50ID0gZnVuY3Rpb24gKG1lbnVJdGVtczogQXJyYXk8UG9NZW51SXRlbT4sIGlkKSB7XG4gICAgICBpZiAobWVudUl0ZW1zKSB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtZW51SXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgY29uc3QgbWVudSA9IG1lbnVJdGVtc1tpbmRleF07XG4gICAgICAgICAgaWYgKG1lbnUuc3ViSXRlbXMgJiYgbWVudS5zdWJJdGVtcy5maW5kKHN1Ykl0ZW0gPT4gc3ViSXRlbVsnaWQnXSA9PT0gaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVudTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBnZXRQYXJlbnQobWVudS5zdWJJdGVtcywgaWQpO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGdldFBhcmVudChtZW51cywgbWVudUl0ZW1bJ2lkJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUm9vdFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnU6IFBvTWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcbiAgICBjb25zdCBmaW5kUGFyZW50ID0gdGhpcy5maW5kUGFyZW50O1xuXG4gICAgY29uc3QgZ2V0Um9vdFBhcmVudCA9IGZ1bmN0aW9uIChtZW51SXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xuICAgICAgbGV0IHBhcmVudCA9IGZpbmRQYXJlbnQobWVudUl0ZW1zLCBtZW51SXRlbSk7XG5cbiAgICAgIGlmIChwYXJlbnRbJ2xldmVsJ10gIT09IHBvTWVudVJvb3RMZXZlbCkge1xuICAgICAgICBwYXJlbnQgPSBnZXRSb290UGFyZW50KG1lbnVJdGVtcywgcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gZ2V0Um9vdFBhcmVudChtZW51cywgbWVudSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZU1lbnVQYXJlbnQobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LCBhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbSwgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtKSB7XG4gICAgaWYgKHRoaXMuYXJlU3ViTWVudXMoW2dyb3VwZWRNZW51SXRlbSwgYWN0aXZlTWVudUl0ZW1dKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdyb3VwTWVudUl0ZW0obWVudTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgdGhpcy50b2dnbGVNZW51Q29sbGFwc2UoKTtcbiAgICB9XG5cbiAgICBtZW51Wydpc09wZW5lZCddID0gIW1lbnVbJ2lzT3BlbmVkJ107XG4gICAgdGhpcy5ncm91cGVkTWVudUl0ZW0gPSBtZW51O1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSAmJlxuICAgICAgbWVudVsnaXNPcGVuZWQnXSAmJlxuICAgICAgdGhpcy5pc0FjdGl2ZUl0ZW1NZW51U3ViTWVudSAmJlxuICAgICAgdGhpcy5pc1Jvb3RNZW51RXF1YWxHcm91cGVkTWVudSh0aGlzLm1lbnVzLCB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBtZW51KVxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHsgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSb290TWVudUVxdWFsR3JvdXBlZE1lbnUoXG4gICAgbWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LFxuICAgIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtLFxuICAgIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbVxuICApIHtcbiAgICBjb25zdCBhY3RpdmVNZW51Um9vdFBhcmVudCA9IHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcbiAgICByZXR1cm4gYWN0aXZlTWVudVJvb3RQYXJlbnRbJ2lkJ10gPT09IGdyb3VwZWRNZW51SXRlbVsnaWQnXTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblBhcmVudE1lbnUoY2hpbGRNZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50KHRoaXMubWVudXMsIGNoaWxkTWVudSk7XG4gICAgcGFyZW50Wydpc09wZW5lZCddID0gdHJ1ZTtcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHBhcmVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd05vRGF0YSgpIHtcbiAgICB0aGlzLm5vRGF0YSA9IHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShtZW51czogQXJyYXk8UG9NZW51SXRlbT4pOiBzdHJpbmcge1xuICAgIC8vIG7Do28gZmF6IG8gc3RyaW5naWZ5IGRhIHByb3ByaWVkYWRlIGljb24sIHBvaXMgcG9kZSBjb250ZXIgb2JqZXRvIGNvbXBsZXhvIGUgZGlzcGFyYXIgdW0gZXJyby5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5tZW51cywgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgIT09ICdpY29uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpIHtcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbVsnaXNPcGVuZWQnXSA9ICF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFsbG93Q29sbGFwc2VNZW51O1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcblxuICAgIGlmICh0aGlzLmdyb3VwZWRNZW51SXRlbSAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9XG4gICAgICAgIHRoaXMuZ2V0QWN0aXZlTWVudVBhcmVudCh0aGlzLm1lbnVzLCB0aGlzLmFjdGl2ZU1lbnVJdGVtLCB0aGlzLmdyb3VwZWRNZW51SXRlbSkgfHwgdGhpcy5ncm91cGVkTWVudUl0ZW07XG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlQ29sbGFwc2VTdWJNZW51SXRlbSgpO1xuICAgICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sXG4gICAgICAgIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtLFxuICAgICAgICBhY3RpdmF0ZWRCeVJvdXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUmVzaXplKCkge1xuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xuICAgICAgdGhpcy5tb2JpbGVPcGVuZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRvZ2dsZU1lbnUoY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmFsbG93Q29sbGFwc2VNZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWVudSgpIHtcbiAgICB0aGlzLm1lbnVJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5zZXRNZW51RXh0cmFQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMubWVudXNdO1xuICAgIHRoaXMubWVudVByZXZpb3VzID0gdGhpcy5zdHJpbmdpZnkodGhpcy5tZW51cyk7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVzKHRoaXMubWVudXMpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwibW9iaWxlT3BlbmVkXCIgY2xhc3M9XCJwby1tZW51LW92ZXJsYXlcIiAoY2xpY2spPVwidG9nZ2xlTWVudU1vYmlsZSgpXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwicG8tbWVudS1tb2JpbGUgcG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnVNb2JpbGUoKVwiPlxuICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1tZW51XCI+PC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwby1tZW51XCIgW25nQ2xhc3NdPVwieyAncG8tbWVudS1hbmltYXRpb24nOiBtb2JpbGVPcGVuZWQgfVwiPlxuICA8ZGl2IGNsYXNzPVwicG8tbWVudS1oZWFkZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9nbyB8fCAoc2hvcnRMb2dvICYmIGVuYWJsZUNvbGxhcHNlKVwiIGNsYXNzPVwicG8tbWVudS1oZWFkZXItY29udGFpbmVyLWxvZ29cIj5cbiAgICAgIDxhIGhyZWY9XCIuL1wiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZW5hYmxlQ29sbGFwc2UgPyAncG8tbWVudS1zaG9ydC1sb2dvJyA6ICdwby1tZW51LWxvZ28nXCJcbiAgICAgICAgICBbc3JjXT1cImVuYWJsZUNvbGxhcHNlID8gc2hvcnRMb2dvIHx8IGxvZ28gOiBsb2dvXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIhZW5hYmxlQ29sbGFwc2UgJiYgbWVudUhlYWRlclRlbXBsYXRlXCIgY2xhc3M9XCJwby1tZW51LWhlYWRlci10ZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVIZWFkZXJUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPHBvLW1lbnUtZmlsdGVyICpuZ0lmPVwiZmlsdGVyICYmICFlbmFibGVDb2xsYXBzZVwiIFtwLWxvYWRpbmddPVwiZmlsdGVyTG9hZGluZ1wiIChwLWZpbHRlcik9XCJkZWJvdW5jZUZpbHRlcigkZXZlbnQpXCI+XG4gICAgPC9wby1tZW51LWZpbHRlcj5cbiAgPC9kaXY+XG5cbiAgPG5hdiBjbGFzcz1cInBvLW1lbnUtYm9keVwiPlxuICAgIDwhLS0gSW5uZXIgZSBvdXRlciBwYXJhIGVzY29uZGVyIHNjcm9sbCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1vdXRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLW1lbnUtaW5uZXJcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicG8tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1pdGVtLWZpcnN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1pY29uLWNvbnRhaW5lciBwby1tZW51LWl0ZW0tbm8tZGF0YVwiPlxuICAgICAgICAgICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1pbmZvIHBvLW1lbnUtaWNvbi1pdGVtIHBvLWxnLTJcIj48L3BvLWljb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMCBwby1tZW51LWljb24tbGFiZWxcIj57eyBsaXRlcmFscy5pdGVtTm90Rm91bmQgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtZW51IG9mIGZpbHRlcmVkSXRlbXM7IGxldCBtZW51SW5kZXggPSBpbmRleFwiIGNsYXNzPVwicG8tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8cG8tbWVudS1pdGVtXG4gICAgICAgICAgICBbY2xhc3MucG8tbWVudS1pdGVtLWZpcnN0XT1cIm1lbnVJbmRleCA9PT0gMFwiXG4gICAgICAgICAgICBbcC1hY3Rpb25dPVwibWVudS5hY3Rpb25cIlxuICAgICAgICAgICAgW3AtYmFkZ2UtYWxlcnRdPVwibWVudS5iYWRnZUFsZXJ0XCJcbiAgICAgICAgICAgIFtwLWJhZGdlLWNvbG9yXT1cIm1lbnUuYmFkZ2UgPyBtZW51LmJhZGdlLmNvbG9yIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFtwLWJhZGdlLXZhbHVlXT1cIm1lbnUuYmFkZ2UgPyBtZW51LmJhZGdlLnZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFtwLWNvbGxhcHNlZC1tZW51XT1cImVuYWJsZUNvbGxhcHNlXCJcbiAgICAgICAgICAgIFtwLWljb25dPVwiYWxsb3dJY29ucyA/IG1lbnUuaWNvbiA6IG51bGxcIlxuICAgICAgICAgICAgW3AtaWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJtZW51LmxhYmVsXCJcbiAgICAgICAgICAgIFtwLWxldmVsXT1cIm1lbnUubGV2ZWxcIlxuICAgICAgICAgICAgW3AtbGlua109XCJtZW51LmxpbmtcIlxuICAgICAgICAgICAgW3Atc2hvcnQtbGFiZWxdPVwibWVudS5zaG9ydExhYmVsXCJcbiAgICAgICAgICAgIFtwLXN1Yi1pdGVtc109XCJtZW51LnN1Ykl0ZW1zXCJcbiAgICAgICAgICAgIFtwLXR5cGVdPVwibWVudS50eXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wby1tZW51LWl0ZW0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmF2PlxuXG4gIDxkaXYgKm5nSWY9XCJoYXNGb290ZXJcIiBjbGFzcz1cInBvLW1lbnUtZm9vdGVyXCI+XG4gICAgPGEgY2xhc3M9XCJwby1tZW51LWNvbGxhcHNlLWJ1dHRvbi1pY29uIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJwby1pY29uXCJcbiAgICAgICAgW2NsYXNzLnBvLWljb24tbWVudS1jbG9zZV09XCJlbmFibGVDb2xsYXBzZUJ1dHRvblwiXG4gICAgICAgIFtjbGFzcy5wby1pY29uLW1lbnUtb3Blbl09XCJlbmFibGVDb2xsYXBzZVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
611
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tbWVudS9wby1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1tZW51L3BvLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFDVCxZQUFZLEVBTWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRTFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBRzVHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ3pCM0QsK0JBQStFO0lBQTdCLHlKQUFTLHlCQUFrQixJQUFDO0lBQUMsaUJBQU07OztJQU9qRiwrQkFBeUY7SUFDdkYsNkJBQWE7SUFDWCwwQkFHRTtJQUNKLGlCQUFJO0lBQ04saUJBQU07OztJQUpBLGVBQWtFO0lBQWxFLHVGQUFrRSxnR0FBQTs7O0lBT3RFLHdCQUFnRjs7O0lBRGxGLCtCQUFtRjtJQUNqRix5RkFBZ0Y7SUFDbEYsaUJBQU07OztJQURXLGVBQWdEO0lBQWhELHdFQUFnRDs7OztJQUdq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QUFFLGFBQWEsQ0FBQztRQ3JIaEQsZ0VBQXFGO1FBQ3JGLDhCQUFzRTtRQUE3Qix5RkFBUyxzQkFBa0IsSUFBQztRQUNuRSwwQkFBMEM7UUFDNUMsaUJBQU07UUFFTiw4QkFBdUU7UUFDckUsOEJBQTRCO1FBQzFCLGdFQU9NO1FBRU4sZ0VBRU07UUFFTixzRkFDaUI7UUFDbkIsaUJBQU07UUFFTiw4QkFBMEI7UUFFeEIsOEJBQTJCO1FBQ3pCLGdDQUEyQjtRQUN6QixtRUFPTTtRQUVOLG9FQWtCTTtRQUNSLGlCQUFNO1FBQ1IsaUJBQU07UUFDUixpQkFBTTtRQUVOLG1FQVNNO1FBQ1IsaUJBQU07O1FBdEVBLHVDQUFrQjtRQUtILGVBQWlEO1FBQWpELHNFQUFpRDtRQUU1RCxlQUEyQztRQUEzQyxzRUFBMkM7UUFTM0MsZUFBMkM7UUFBM0Msb0VBQTJDO1FBSWhDLGVBQStCO1FBQS9CLHdEQUErQjtRQVF0QyxlQUFZO1FBQVosaUNBQVk7UUFTSSxlQUFrQjtRQUFsQiwyQ0FBa0I7UUF1QnhDLGVBQWU7UUFBZixvQ0FBZTs7dUZEMkRWLGVBQWU7Y0FMM0IsU0FBUzsyQkFDRSxTQUFTLGFBRVIsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUM7eVFBR2lCLGtCQUFrQjtrQkFBaEYsWUFBWTttQkFBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWRMaW5rLCBpc01vYmlsZSwgb3BlbkV4dGVybmFsTGluaywgdXVpZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb01lbnVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1tZW51LWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTWVudUhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9wby1tZW51LWhlYWRlci10ZW1wbGF0ZS9wby1tZW51LWhlYWRlci10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9NZW51SXRlbSB9IGZyb20gJy4vcG8tbWVudS1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb01lbnVJdGVtRmlsdGVyZWQgfSBmcm9tICcuL3BvLW1lbnUtaXRlbS9wby1tZW51LWl0ZW0tZmlsdGVyZWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTWVudUl0ZW1zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS1pdGVtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTWVudUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLW1lbnUtZ2xvYmFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NZW51U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5cbmNvbnN0IHBvTWVudURlYm91bmNlVGltZSA9IDQwMDtcbmNvbnN0IHBvTWVudU1pbkxlbmd0aCA9IDM7XG5jb25zdCBwb01lbnVSb290TGV2ZWwgPSAxO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb01lbnVCYXNlQ29tcG9uZW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQXBhcmVjZSBjb21wbGV0byBlbSB0ZWxhcyBjb20gbGFyZ3VyYSBtYWlvciBxdWUgMTIwMHB4LCBjYXNvIGNvbnRyw6FyaW8gbyBtZW51IMOpIGVzY29uZGlkbyBlIGNoYW1hZG8gcG9yIG1laW8gZGUgdW0gYm90w6NvLlxuICpcbiAqIE8gbWVudSB0YW1iw6ltIHBvZGUgc2VyIGNvbGFwc2Fkby4gRXNzYSBvcMOnw6NvIMOpIGhhYmlsaXRhZGEgcXVhbmRvIHRvZG9zIG9zIGl0ZW5zIGRlIHByaW1laXJvIG7DrXZlbCBwb3NzdcOtcmVtIMOtY29uZXMgZSB0ZXh0b3MgY3VydG9zLlxuICogU2UgY29sYXBzYWRvLCBzb21lbnRlIG9zIGl0ZW5zIGRlIHByaW1laXJvIG7DrXZlbCBzZXLDo28gZXhpYmlkb3MgZSwgY2FzbyBvIGl0ZW0gc2VsZWNpb25hZG8gcG9zc3VhIHN1Yi1uw612ZWlzLFxuICogZW50w6NvIG8gbWVudSBhbHRlcm5hcsOhIG5vdmFtZW50ZSBwYXJhIG8gZXN0YWRvIGFiZXJ0by5cbiAqXG4gKiBFeGlzdGUgYSBwb3NzaWJpbGlkYWRlIGRlIGN1c3RvbWl6YXIgYSBsb2dvbWFyY2EsIHF1ZSDDqSBleGliaWRhIG5hIHBhcnRlIHN1cGVyaW9yIGRvIGNvbXBvbmVudGUuXG4gKlxuICogRSBwYXJhIGFkaWNpb25hciB1bSBjb250ZcO6ZG8gcGVyc29uYWxpemFkbyBlbnRyZSBhIGxvZ29tYXJjYSBlIG8gY2FtcG8gZGUgZmlsdHJvLFxuICogYmFzdGEgYWRpY2lvbmFyIGVzdGUgY29udGXDumRvIGNvbSBhIGRpcmV0aXZhIFsqKnAtbWVudS1oZWFkZXItdGVtcGxhdGUqKl0oL2RvY3VtZW50YXRpb24vcG8tbWVudS1oZWFkZXItdGVtcGxhdGUpLlxuICpcbiAqIENhc28gdXRpbGl6YXIgbyBmaWx0cm8gZGUgbWVudXMsIMOpIHBvc3PDrXZlbCByZWFsaXphciBidXNjYXMgZW0gc2VydmnDp28sIGFwZW5hcyBpbmZvcm1hbmRvIGEgVVJMIGRvIHNlcnZpw6dvIG91IGEgaW5zdMOibmNpYSBkZVxuICogdW0gc2VydmnDp28gY3VzdG9taXphZG8gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9NZW51RmlsdGVyYC5cbiAqXG4gKiBQYXJhIG8gbWVudSBmdW5jaW9uYXIgY29ycmV0YW1lbnRlIMOpIG5lY2Vzc8OhcmlvIGltcG9ydGFyIG8gYFJvdXRlck1vZHVsZWAgZSBgUm91dGVzYCBkbyBtw7NkdWxvIHByaW5jaXBhbCBkZVxuICogIHN1YSBhcGxpY2HDp8OjbzpcbiAqXG4gKiBgYGBgXG4gKiBpbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4gKlxuICogLi4uXG4gKlxuICogQE5nTW9kdWxlKHtcbiAqICAgaW1wb3J0czogW1xuICogICAgIFJvdXRlck1vZHVsZSxcbiAqICAgICBSb3V0ZXMsXG4gKiAgICAgLi4uXG4gKiAgICAgUG9Nb2R1bGUsXG4gKiAgICAgLi4uXG4gKiAgIF0sXG4gKiAgIGRlY2xhcmF0aW9uczogW1xuICogICAgIEFwcENvbXBvbmVudFxuICogICBdLFxuICogICBwcm92aWRlcnM6IFtdLFxuICogICBib290c3RyYXA6IFtBcHBDb21wb25lbnRdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7IH1cbiAqIGBgYFxuICpcbiAqIEFsw6ltIGRpc3NvIMOpIG5lY2Vzc8OhcmlvIGNyaWFyIHVtIG3Ds2R1bG8gY29uZmlndXJhbmRvIGFzIHJvdGFzIGRhIGFwbGljYcOnw6NvLlxuICpcbiAqIGBgYFxuICogaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbiAqXG4gKiBpbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4gKlxuICogaW1wb3J0IHsgSGVsbG9Xb3JsZENvbXBvbmVudCB9IGZyb20gJy4vaGVsbG8td29ybGQvaGVsbG8td29ybGQuY29tcG9uZW50JztcbiAqXG4gKiBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAge3BhdGg6ICdoZWxsby13b3JsZCcsIGNvbXBvbmVudDogSGVsbG9Xb3JsZENvbXBvbmVudH1cbiAqIF07XG4gKlxuICogQE5nTW9kdWxlKHtcbiAqICAgaW1wb3J0czogW1JvdXRlck1vZHVsZS5mb3JSb290KHJvdXRlcywge3VzZUhhc2g6IHRydWV9KV0sXG4gKiAgIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIEFwcFJvdXRpbmdNb2R1bGUge31cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtYmFzaWNcIiB0aXRsZT1cIlBPIE1lbnUgQmFzaWNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWJhc2ljL3NhbXBsZS1wby1tZW51LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWJhc2ljL3NhbXBsZS1wby1tZW51LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtbGFic1wiIHRpdGxlPVwiUE8gTWVudSBMYWJzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1sYWJzL3NhbXBsZS1wby1tZW51LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLW1lbnUtbGFicy9zYW1wbGUtcG8tbWVudS1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzXCIgdGl0bGU9XCJQTyBNZW51IC0gSHVtYW4gUmVzb3VyY2VzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMvc2FtcGxlLXBvLW1lbnUtaHVtYW4tcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1tZW51LWh1bWFuLXJlc291cmNlcy9zYW1wbGUtcG8tbWVudS1odW1hbi1yZXNvdXJjZXMuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1BvTWVudUl0ZW1zU2VydmljZSwgUG9NZW51U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUG9NZW51Q29tcG9uZW50IGV4dGVuZHMgUG9NZW51QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBEb0NoZWNrIHtcbiAgQENvbnRlbnRDaGlsZChQb01lbnVIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgbWVudUhlYWRlclRlbXBsYXRlOiBQb01lbnVIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICBhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbTtcbiAgY29sbGFwc2VkTW9iaWxlOiBib29sZWFuO1xuICBmaWx0ZXJMb2FkaW5nID0gZmFsc2U7XG4gIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbTtcbiAgaWQgPSB1dWlkKCk7XG4gIGxpbmtBY3RpdmU6IHN0cmluZztcbiAgbW9iaWxlT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIG5vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xuICB0aW1lb3V0RmlsdGVyOiBhbnk7XG5cbiAgcHJpdmF0ZSBmaWx0ZXJpbmdJdGVtczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIG1lbnVJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIG1lbnVQcmV2aW91cyA9IG51bGw7XG4gIHByaXZhdGUgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBpdGVtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcm91dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG1lbnVJdGVtc1NlcnZpY2U6IFBvTWVudUl0ZW1zU2VydmljZSxcbiAgICBtZW51R2xvYmFsU2VydmljZTogUG9NZW51R2xvYmFsU2VydmljZSxcbiAgICBtZW51U2VydmljZTogUG9NZW51U2VydmljZSxcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKG1lbnVHbG9iYWxTZXJ2aWNlLCBtZW51U2VydmljZSwgbGFuZ3VhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzQWN0aXZlSXRlbU1lbnVTdWJNZW51KCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID4gdGhpcy5ncm91cGVkTWVudUl0ZW1bJ2xldmVsJ107XG4gIH1cblxuICBnZXQgZW5hYmxlQ29sbGFwc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQgJiYgIXRoaXMuY29sbGFwc2VkTW9iaWxlO1xuICB9XG5cbiAgZ2V0IGVuYWJsZUNvbGxhcHNlQnV0dG9uKCkge1xuICAgIHJldHVybiB0aGlzLmFsbG93Q29sbGFwc2VNZW51ICYmICF0aGlzLmNvbGxhcHNlZCAmJiAhdGhpcy5tb2JpbGVPcGVuZWQ7XG4gIH1cblxuICBnZXQgaGFzRm9vdGVyKCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZUNvbGxhcHNlQnV0dG9uIHx8IHRoaXMuZW5hYmxlQ29sbGFwc2U7XG4gIH1cblxuICBnZXQgaXNDb2xsYXBzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dDb2xsYXBzZU1lbnUgJiYgdGhpcy5jb2xsYXBzZWQ7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyaW5nSXRlbXMgJiYgdGhpcy5maWx0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZW51Q3VycmVudCA9IHRoaXMuc3RyaW5naWZ5KHRoaXMubWVudXMpO1xuXG4gICAgaWYgKHRoaXMubWVudVByZXZpb3VzICE9PSBtZW51Q3VycmVudCB8fCAhdGhpcy5tZW51SW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICAgICAgdGhpcy52YWxpZGF0ZUNvbGxhcHNlQ2xhc3MoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLml0ZW1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAodGhpcy5yZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5yZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHRoaXMubWVudUdsb2JhbFNlcnZpY2Uuc2VuZFJlbW92ZWRBcHBsaWNhdGlvbk1lbnUodGhpcy5pZCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnN1YnNjcmliZVRvTWVudUl0ZW0oKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvUm91dGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm1lbnVHbG9iYWxTZXJ2aWNlLnNlbmRBcHBsaWNhdGlvbk1lbnUodGhpcyk7XG4gIH1cblxuICBhY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoOiBzdHJpbmcsIG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xuICAgIGlmIChtZW51cykge1xuICAgICAgY29uc3QgdXJsUGF0aFdpdGhvdXRMYXN0RnJhZ21lbnQgPSB1cmxQYXRoLnN1YnN0cigwLCB1cmxQYXRoLmxhc3RJbmRleE9mKCcvJykpO1xuICAgICAgcmV0dXJuIG1lbnVzLnNvbWUobWVudSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE1lbnVMaW5rID0gZ2V0Rm9ybWF0dGVkTGluayhtZW51LmxpbmspO1xuICAgICAgICBjb25zdCBtZW51TGlua1BhdGggPSBgJHt1cmxQYXRoV2l0aG91dExhc3RGcmFnbWVudH0ke2Zvcm1hdHRlZE1lbnVMaW5rLnN1YnN0cihcbiAgICAgICAgICBmb3JtYXR0ZWRNZW51TGluay5sYXN0SW5kZXhPZignLycpXG4gICAgICAgICl9YDtcblxuICAgICAgICBpZiAobWVudUxpbmtQYXRoID09PSB1cmxQYXRoICYmIG1lbnVMaW5rUGF0aCA9PT0gZm9ybWF0dGVkTWVudUxpbmspIHtcbiAgICAgICAgICB0aGlzLmxpbmtBY3RpdmUgPSBmb3JtYXR0ZWRNZW51TGluaztcbiAgICAgICAgICB0aGlzLmFjdGl2YXRlTWVudUl0ZW0obWVudSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZhdGVNZW51QnlVcmwodXJsUGF0aCwgbWVudS5zdWJJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5saW5rQWN0aXZlIHx8IHRoaXMubGlua0FjdGl2ZSAhPT0gdXJsUGF0aCkge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVCeVVybCh1cmxQYXRoLCB0aGlzLm1lbnVzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogPGEgaWQ9XCJjb2xhcHNlTWV0aG9kXCI+PC9hPlxuICAgKlxuICAgKiAqTcOpdG9kbyBwYXJhIGNvbGFwc2FyIChyZXRyYWlyKSBvIG1lbnUuXG4gICAqL1xuICBjb2xsYXBzZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlVG9nZ2xlTWVudSh0cnVlKTtcbiAgfVxuXG4gIGRlYm91bmNlRmlsdGVyKGZpbHRlcjogc3RyaW5nKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dEZpbHRlcik7XG5cbiAgICB0aGlzLnRpbWVvdXRGaWx0ZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyUHJvY2VzcyhmaWx0ZXIpO1xuICAgIH0sIHBvTWVudURlYm91bmNlVGltZSk7XG4gIH1cblxuICAvKipcbiAgICogPGEgaWQ9XCJleHBhbmRNZXRob2RcIj48L2E+XG4gICAqXG4gICAqICpNw6l0b2RvIHBhcmEgZXhwYW5kaXIgKGF1bWVudGFyKSBvIG1lbnUuXG4gICAqL1xuICBleHBhbmQoKSB7XG4gICAgdGhpcy52YWxpZGF0ZVRvZ2dsZU1lbnUoZmFsc2UpO1xuICB9XG5cbiAgc3Vic2NyaWJlVG9NZW51SXRlbSgpIHtcbiAgICB0aGlzLml0ZW1TdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVJdGVtc1NlcnZpY2UucmVjZWl2ZUZyb21DaGlsZE1lbnVDbGlja2VkKCkuc3Vic2NyaWJlKChtZW51OiBQb01lbnVJdGVtKSA9PiB7XG4gICAgICB0aGlzLmNsaWNrTWVudUl0ZW0obWVudSk7XG4gICAgfSk7XG4gIH1cblxuICBzdWJzY3JpYmVUb1JvdXRlKCkge1xuICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCB2YWwgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICAgIGNvbnN0IHVybFJvdXRlciA9IHRoaXMuY2hlY2tpbmdSb3V0ZXJDaGlsZHJlbkZyYWdtZW50cygpO1xuICAgICAgICB0aGlzLmNoZWNrQWN0aXZlTWVudUJ5VXJsKHVybFJvdXRlcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogPGEgaWQ9XCJ0b2dnbGVNZXRob2RcIj48L2E+XG4gICAqICpNw6l0b2RvIHF1ZSBjb2xhcHNhIGUgZXhwYW5kZSBvIG1lbnUgYWx0ZXJuYWRhbWVudGUuXG4gICAqXG4gICAqID4gKk9zIG3DqXRvZG9zIGFwZW5hcyB2w6NvIGNvbGFwc2FyL2V4cGFuZGlyIG8gbWVudSBzZTpcbiAgICogIC0gVG9kb3Mgb3MgaXRlbnMgZGUgbWVudSB0aXZlcmVtIHZhbG9yIG5hcyBwcm9wcmllZGFkZXMgYGljb25gIGUgYHNob3J0TGFiZWxgLlxuICAgKi9cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMudmFsaWRhdGVUb2dnbGVNZW51KCF0aGlzLmNvbGxhcHNlZCk7XG4gIH1cblxuICB0b2dnbGVNZW51TW9iaWxlKCk6IHZvaWQge1xuICAgIHRoaXMubW9iaWxlT3BlbmVkID0gIXRoaXMubW9iaWxlT3BlbmVkO1xuICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gdGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5tb2JpbGVPcGVuZWQ7XG5cbiAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XG5cbiAgICBpZiAoaXNNb2JpbGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xuICAgICAgdGhpcy5jcmVhdGVSZXNpemVMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja2luZ1JvdXRlckNoaWxkcmVuRnJhZ21lbnRzKCkge1xuICAgIGNvbnN0IGNoaWxkcmVuUHJpbWFyeSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCkucm9vdC5jaGlsZHJlblsncHJpbWFyeSddO1xuXG4gICAgcmV0dXJuIGNoaWxkcmVuUHJpbWFyeSA/IGAvJHtjaGlsZHJlblByaW1hcnkuc2VnbWVudHMubWFwKGl0ID0+IGl0LnBhdGgpLmpvaW4oJy8nKX1gIDogJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVDb2xsYXBzZUNsYXNzKGNvbGxhcHNlZE1vYmlsZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlclt0aGlzLmlzQ29sbGFwc2VkICYmICFjb2xsYXBzZWRNb2JpbGUgPyAnYWRkQ2xhc3MnIDogJ3JlbW92ZUNsYXNzJ10od3JhcHBlciwgJ3BvLWNvbGxhcHNlZC1tZW51Jyk7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlQ29sbGFwc2VTdWJNZW51SXRlbSgpIHtcbiAgICB0aGlzLmNsZWFyR3JvdXBNZW51SWZGaXJzdExldmVsKHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xuXG4gICAgaWYgKCF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtWydsZXZlbCddID4gcG9NZW51Um9vdExldmVsICYmIHRoaXMuaXNBY3RpdmVJdGVtTWVudVN1Yk1lbnUpIHtcbiAgICAgIHRoaXMub3BlblBhcmVudE1lbnUodGhpcy5hY3RpdmVNZW51SXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZU1lbnVJdGVtKG1lbnU6IFBvTWVudUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gbWVudTtcbiAgICB0aGlzLmxpbmtBY3RpdmUgPSBtZW51Lmxpbms7XG4gICAgaWYgKHRoaXMuYWN0aXZlTWVudUl0ZW1bJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpIHtcbiAgICAgIHRoaXMub3BlblBhcmVudE1lbnUodGhpcy5hY3RpdmVNZW51SXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JvdXBlZE1lbnVJdGVtID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoe1xuICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLFxuICAgICAgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0sXG4gICAgICBhY3RpdmF0ZWRCeVJvdXRlOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFyZVN1Yk1lbnVzKG1lbnVzOiBBcnJheTxQb01lbnVJdGVtPikge1xuICAgIHJldHVybiBtZW51cy5ldmVyeShtZW51ID0+IG1lbnVbJ2xldmVsJ10gPiBwb01lbnVSb290TGV2ZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckdyb3VwTWVudUlmRmlyc3RMZXZlbChhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbSkge1xuICAgIGlmIChhY3RpdmVNZW51SXRlbVsnbGV2ZWwnXSA9PT0gcG9NZW51Um9vdExldmVsKSB7XG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsaWNrTWVudUl0ZW0obWVudTogUG9NZW51SXRlbSkge1xuICAgIGlmIChtZW51LmFjdGlvbikge1xuICAgICAgdGhpcy5leGVjdXRlTWVudUFjdGlvbihtZW51KTtcbiAgICB9XG5cbiAgICBpZiAobWVudVsndHlwZSddID09PSAnZXh0ZXJuYWxMaW5rJykge1xuICAgICAgb3BlbkV4dGVybmFsTGluayhtZW51LmxpbmspO1xuICAgIH0gZWxzZSBpZiAobWVudVsndHlwZSddID09PSAnaW50ZXJuYWxMaW5rJykge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKG1lbnUpO1xuICAgIH0gZWxzZSBpZiAobWVudVsndHlwZSddID09PSAnc3ViSXRlbXMnKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJpbmdJdGVtcykge1xuICAgICAgICB0aGlzLmZpbHRlcmluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ3JvdXBNZW51SXRlbShtZW51KTtcbiAgICB9XG5cbiAgICBpZiAobWVudVsndHlwZSddICE9PSAnc3ViSXRlbXMnKSB7XG4gICAgICB0aGlzLm1vYmlsZU9wZW5lZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRvTWVudUl0ZW1GaWx0ZXJlZChtZW51SXRlbTogYW55ID0geyBsYWJlbDogJycsIGxpbms6ICcnIH0pOiBQb01lbnVJdGVtRmlsdGVyZWQge1xuICAgIGNvbnN0IHsgbGFiZWwsIGxpbmsgfSA9IG1lbnVJdGVtO1xuXG4gICAgY29uc3QgbWVudUl0ZW1GaWx0ZXJlZDogUG9NZW51SXRlbUZpbHRlcmVkID0geyBsYWJlbCwgbGluayB9O1xuXG4gICAgdGhpcy5zZXRNZW51SXRlbVByb3BlcnRpZXMobWVudUl0ZW1GaWx0ZXJlZCk7XG5cbiAgICByZXR1cm4gbWVudUl0ZW1GaWx0ZXJlZDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgdGhpcy5yZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVSZXNpemUoKTtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZU1lbnVBY3Rpb24obWVudTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIG1lbnUuYWN0aW9uKG1lbnUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJJdGVtcyhmaWx0ZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHRyaW1GaWx0ZXIgPSBmaWx0ZXIgJiYgZmlsdGVyLnRyaW0oKTtcblxuICAgIGlmICh0cmltRmlsdGVyKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IHRoaXMuZmlsdGVyU2VydmljZVxuICAgICAgICA/IGF3YWl0IHRoaXMuZmlsdGVyT25TZXJ2aWNlKHRyaW1GaWx0ZXIpXG4gICAgICAgIDogdGhpcy5maWx0ZXJMb2NhbEl0ZW1zKHRyaW1GaWx0ZXIpO1xuICAgICAgdGhpcy5maWx0ZXJpbmdJdGVtcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyA9IFsuLi50aGlzLm1lbnVzXTtcbiAgICAgIHRoaXMuZmlsdGVyaW5nSXRlbXMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckxvY2FsSXRlbXMoZmlsdGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gW107XG5cbiAgICB0aGlzLmZpbmRJdGVtcyh0aGlzLm1lbnVzLCBmaWx0ZXIudG9Mb3dlckNhc2UoKSwgZmlsdGVyZWRJdGVtcyk7XG5cbiAgICByZXR1cm4gZmlsdGVyZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyUHJvY2VzcyhmaWx0ZXI6IHN0cmluZykge1xuICAgIHRoaXMuZmlsdGVyTG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLmZpbHRlckl0ZW1zKGZpbHRlcilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5zaG93Tm9EYXRhKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlcnZpY2Uuc2VuZFRvQ2hpbGRNZW51Q2xpY2tlZCh7IGFjdGl2ZTogdGhpcy5hY3RpdmVNZW51SXRlbSwgZ3JvdXBlZDogdGhpcy5ncm91cGVkTWVudUl0ZW0gfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWx0ZXJPblNlcnZpY2Uoc2VhcmNoOiBzdHJpbmcgPSAnJykge1xuICAgIGlmIChzZWFyY2gubGVuZ3RoID49IHBvTWVudU1pbkxlbmd0aCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZVxuICAgICAgICAuZ2V0RmlsdGVyZWREYXRhKHNlYXJjaCwgdGhpcy5wYXJhbXMpXG4gICAgICAgIC5waXBlKG1hcChtZW51SXRlbXNGaWx0ZXJlZCA9PiBtZW51SXRlbXNGaWx0ZXJlZC5tYXAobWVudUl0ZW0gPT4gdGhpcy5jb252ZXJ0VG9NZW51SXRlbUZpbHRlcmVkKG1lbnVJdGVtKSkpKVxuICAgICAgICAudG9Qcm9taXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcmVkSXRlbXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSXRlbXMobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LCBmaWx0ZXI6IHN0cmluZywgZmlsdGVyZWRJdGVtczogQXJyYXk8YW55Pikge1xuICAgIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XG4gICAgICBjb25zdCBoYXNBY3Rpb24gPSBtZW51LmFjdGlvbiB8fCBtZW51Lmxpbms7XG4gICAgICBjb25zdCBsYWJlbEhhc0ZpbHRlciA9IG1lbnUubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIpO1xuXG4gICAgICBpZiAobGFiZWxIYXNGaWx0ZXIgJiYgaGFzQWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IG5ld01lbnUgPSB7IC4uLm1lbnUgfTtcblxuICAgICAgICBpZiAobmV3TWVudS5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgZGVsZXRlIG5ld01lbnUuc3ViSXRlbXM7XG4gICAgICAgICAgbmV3TWVudVsndHlwZSddID0gdGhpcy5zZXRNZW51VHlwZShuZXdNZW51KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbHRlcmVkSXRlbXMucHVzaChuZXdNZW51KTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lbnUuc3ViSXRlbXMpIHtcbiAgICAgICAgdGhpcy5maW5kSXRlbXMobWVudS5zdWJJdGVtcywgZmlsdGVyLCBmaWx0ZXJlZEl0ZW1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnVJdGVtOiBQb01lbnVJdGVtKTogUG9NZW51SXRlbSB7XG4gICAgY29uc3QgZ2V0UGFyZW50ID0gZnVuY3Rpb24gKG1lbnVJdGVtczogQXJyYXk8UG9NZW51SXRlbT4sIGlkKSB7XG4gICAgICBpZiAobWVudUl0ZW1zKSB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtZW51SXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgY29uc3QgbWVudSA9IG1lbnVJdGVtc1tpbmRleF07XG4gICAgICAgICAgaWYgKG1lbnUuc3ViSXRlbXMgJiYgbWVudS5zdWJJdGVtcy5maW5kKHN1Ykl0ZW0gPT4gc3ViSXRlbVsnaWQnXSA9PT0gaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVudTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBnZXRQYXJlbnQobWVudS5zdWJJdGVtcywgaWQpO1xuICAgICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGdldFBhcmVudChtZW51cywgbWVudUl0ZW1bJ2lkJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUm9vdFBhcmVudChtZW51czogQXJyYXk8UG9NZW51SXRlbT4sIG1lbnU6IFBvTWVudUl0ZW0pOiBQb01lbnVJdGVtIHtcbiAgICBjb25zdCBmaW5kUGFyZW50ID0gdGhpcy5maW5kUGFyZW50O1xuXG4gICAgY29uc3QgZ2V0Um9vdFBhcmVudCA9IGZ1bmN0aW9uIChtZW51SXRlbXM6IEFycmF5PFBvTWVudUl0ZW0+LCBtZW51SXRlbSk6IFBvTWVudUl0ZW0ge1xuICAgICAgbGV0IHBhcmVudCA9IGZpbmRQYXJlbnQobWVudUl0ZW1zLCBtZW51SXRlbSk7XG5cbiAgICAgIGlmIChwYXJlbnRbJ2xldmVsJ10gIT09IHBvTWVudVJvb3RMZXZlbCkge1xuICAgICAgICBwYXJlbnQgPSBnZXRSb290UGFyZW50KG1lbnVJdGVtcywgcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfTtcbiAgICByZXR1cm4gZ2V0Um9vdFBhcmVudChtZW51cywgbWVudSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZU1lbnVQYXJlbnQobWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LCBhY3RpdmVNZW51SXRlbTogUG9NZW51SXRlbSwgZ3JvdXBlZE1lbnVJdGVtOiBQb01lbnVJdGVtKSB7XG4gICAgaWYgKHRoaXMuYXJlU3ViTWVudXMoW2dyb3VwZWRNZW51SXRlbSwgYWN0aXZlTWVudUl0ZW1dKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdyb3VwTWVudUl0ZW0obWVudTogUG9NZW51SXRlbSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgdGhpcy50b2dnbGVNZW51Q29sbGFwc2UoKTtcbiAgICB9XG5cbiAgICBtZW51Wydpc09wZW5lZCddID0gIW1lbnVbJ2lzT3BlbmVkJ107XG4gICAgdGhpcy5ncm91cGVkTWVudUl0ZW0gPSBtZW51O1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSAmJlxuICAgICAgbWVudVsnaXNPcGVuZWQnXSAmJlxuICAgICAgdGhpcy5pc0FjdGl2ZUl0ZW1NZW51U3ViTWVudSAmJlxuICAgICAgdGhpcy5pc1Jvb3RNZW51RXF1YWxHcm91cGVkTWVudSh0aGlzLm1lbnVzLCB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBtZW51KVxuICAgICkge1xuICAgICAgdGhpcy5hY3RpdmF0ZU1lbnVJdGVtKHRoaXMuYWN0aXZlTWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHRoaXMubWVudUl0ZW1zU2VydmljZS5zZW5kVG9DaGlsZE1lbnVDbGlja2VkKHsgYWN0aXZlOiB0aGlzLmFjdGl2ZU1lbnVJdGVtLCBncm91cGVkOiB0aGlzLmdyb3VwZWRNZW51SXRlbSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSb290TWVudUVxdWFsR3JvdXBlZE1lbnUoXG4gICAgbWVudXM6IEFycmF5PFBvTWVudUl0ZW0+LFxuICAgIGFjdGl2ZU1lbnVJdGVtOiBQb01lbnVJdGVtLFxuICAgIGdyb3VwZWRNZW51SXRlbTogUG9NZW51SXRlbVxuICApIHtcbiAgICBjb25zdCBhY3RpdmVNZW51Um9vdFBhcmVudCA9IHRoaXMuZmluZFJvb3RQYXJlbnQobWVudXMsIGFjdGl2ZU1lbnVJdGVtKTtcbiAgICByZXR1cm4gYWN0aXZlTWVudVJvb3RQYXJlbnRbJ2lkJ10gPT09IGdyb3VwZWRNZW51SXRlbVsnaWQnXTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblBhcmVudE1lbnUoY2hpbGRNZW51OiBQb01lbnVJdGVtKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50KHRoaXMubWVudXMsIGNoaWxkTWVudSk7XG4gICAgcGFyZW50Wydpc09wZW5lZCddID0gdHJ1ZTtcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9IHBhcmVudDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd05vRGF0YSgpIHtcbiAgICB0aGlzLm5vRGF0YSA9IHRoaXMuZmlsdGVyZWRJdGVtcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShtZW51czogQXJyYXk8UG9NZW51SXRlbT4pOiBzdHJpbmcge1xuICAgIC8vIG7Do28gZmF6IG8gc3RyaW5naWZ5IGRhIHByb3ByaWVkYWRlIGljb24sIHBvaXMgcG9kZSBjb250ZXIgb2JqZXRvIGNvbXBsZXhvIGUgZGlzcGFyYXIgdW0gZXJyby5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5tZW51cywgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgIGlmIChrZXkgIT09ICdpY29uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpIHtcbiAgICB0aGlzLmdyb3VwZWRNZW51SXRlbVsnaXNPcGVuZWQnXSA9ICF0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLmFsbG93Q29sbGFwc2VNZW51O1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcblxuICAgIGlmICh0aGlzLmdyb3VwZWRNZW51SXRlbSAmJiB0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICB0aGlzLmdyb3VwZWRNZW51SXRlbSA9XG4gICAgICAgIHRoaXMuZ2V0QWN0aXZlTWVudVBhcmVudCh0aGlzLm1lbnVzLCB0aGlzLmFjdGl2ZU1lbnVJdGVtLCB0aGlzLmdyb3VwZWRNZW51SXRlbSkgfHwgdGhpcy5ncm91cGVkTWVudUl0ZW07XG4gICAgICB0aGlzLnRvZ2dsZUdyb3VwZWRNZW51SXRlbSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlQ29sbGFwc2VTdWJNZW51SXRlbSgpO1xuICAgICAgdGhpcy5tZW51SXRlbXNTZXJ2aWNlLnNlbmRUb0NoaWxkTWVudUNsaWNrZWQoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlTWVudUl0ZW0sXG4gICAgICAgIGdyb3VwZWQ6IHRoaXMuZ3JvdXBlZE1lbnVJdGVtLFxuICAgICAgICBhY3RpdmF0ZWRCeVJvdXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZU1lbnUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlUmVzaXplKCkge1xuICAgIGlmICh0aGlzLm1vYmlsZU9wZW5lZCkge1xuICAgICAgdGhpcy5tb2JpbGVPcGVuZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29sbGFwc2VkTW9iaWxlID0gZmFsc2U7XG4gICAgICB0aGlzLnZhbGlkYXRlQ29sbGFwc2VDbGFzcyh0aGlzLmNvbGxhcHNlZE1vYmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRvZ2dsZU1lbnUoY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmFsbG93Q29sbGFwc2VNZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b2dnbGVNZW51Q29sbGFwc2UoY29sbGFwc2VkKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWVudSgpIHtcbiAgICB0aGlzLm1lbnVJbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy5zZXRNZW51RXh0cmFQcm9wZXJ0aWVzKCk7XG4gICAgdGhpcy5maWx0ZXJlZEl0ZW1zID0gWy4uLnRoaXMubWVudXNdO1xuICAgIHRoaXMubWVudVByZXZpb3VzID0gdGhpcy5zdHJpbmdpZnkodGhpcy5tZW51cyk7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVzKHRoaXMubWVudXMpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwibW9iaWxlT3BlbmVkXCIgY2xhc3M9XCJwby1tZW51LW92ZXJsYXlcIiAoY2xpY2spPVwidG9nZ2xlTWVudU1vYmlsZSgpXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwicG8tbWVudS1tb2JpbGUgcG8tY2xpY2thYmxlXCIgKGNsaWNrKT1cInRvZ2dsZU1lbnVNb2JpbGUoKVwiPlxuICA8c3BhbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1tZW51XCI+PC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwby1tZW51XCIgW25nQ2xhc3NdPVwieyAncG8tbWVudS1hbmltYXRpb24nOiBtb2JpbGVPcGVuZWQgfVwiPlxuICA8ZGl2IGNsYXNzPVwicG8tbWVudS1oZWFkZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwibG9nbyB8fCAoc2hvcnRMb2dvICYmIGVuYWJsZUNvbGxhcHNlKVwiIGNsYXNzPVwicG8tbWVudS1oZWFkZXItY29udGFpbmVyLWxvZ29cIj5cbiAgICAgIDxhIGhyZWY9XCIuL1wiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZW5hYmxlQ29sbGFwc2UgPyAncG8tbWVudS1zaG9ydC1sb2dvJyA6ICdwby1tZW51LWxvZ28nXCJcbiAgICAgICAgICBbc3JjXT1cImVuYWJsZUNvbGxhcHNlID8gc2hvcnRMb2dvIHx8IGxvZ28gOiBsb2dvXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCIhZW5hYmxlQ29sbGFwc2UgJiYgbWVudUhlYWRlclRlbXBsYXRlXCIgY2xhc3M9XCJwby1tZW51LWhlYWRlci10ZW1wbGF0ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVIZWFkZXJUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPHBvLW1lbnUtZmlsdGVyICpuZ0lmPVwiZmlsdGVyICYmICFlbmFibGVDb2xsYXBzZVwiIFtwLWxvYWRpbmddPVwiZmlsdGVyTG9hZGluZ1wiIChwLWZpbHRlcik9XCJkZWJvdW5jZUZpbHRlcigkZXZlbnQpXCI+XG4gICAgPC9wby1tZW51LWZpbHRlcj5cbiAgPC9kaXY+XG5cbiAgPG5hdiBjbGFzcz1cInBvLW1lbnUtYm9keVwiPlxuICAgIDwhLS0gSW5uZXIgZSBvdXRlciBwYXJhIGVzY29uZGVyIHNjcm9sbCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1vdXRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLW1lbnUtaW5uZXJcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5vRGF0YVwiIGNsYXNzPVwicG8tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1pdGVtLWZpcnN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG8tbWVudS1pY29uLWNvbnRhaW5lciBwby1tZW51LWl0ZW0tbm8tZGF0YVwiPlxuICAgICAgICAgICAgICA8cG8taWNvbiBjbGFzcz1cInBvLWljb24gcG8taWNvbi1pbmZvIHBvLW1lbnUtaWNvbi1pdGVtIHBvLWxnLTJcIj48L3BvLWljb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1sZy0xMCBwby1tZW51LWljb24tbGFiZWxcIj57eyBsaXRlcmFscy5pdGVtTm90Rm91bmQgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtZW51IG9mIGZpbHRlcmVkSXRlbXM7IGxldCBtZW51SW5kZXggPSBpbmRleFwiIGNsYXNzPVwicG8tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgICAgICA8cG8tbWVudS1pdGVtXG4gICAgICAgICAgICBbY2xhc3MucG8tbWVudS1pdGVtLWZpcnN0XT1cIm1lbnVJbmRleCA9PT0gMFwiXG4gICAgICAgICAgICBbcC1hY3Rpb25dPVwibWVudS5hY3Rpb25cIlxuICAgICAgICAgICAgW3AtYmFkZ2UtYWxlcnRdPVwibWVudS5iYWRnZUFsZXJ0XCJcbiAgICAgICAgICAgIFtwLWJhZGdlLWNvbG9yXT1cIm1lbnUuYmFkZ2UgPyBtZW51LmJhZGdlLmNvbG9yIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFtwLWJhZGdlLXZhbHVlXT1cIm1lbnUuYmFkZ2UgPyBtZW51LmJhZGdlLnZhbHVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIFtwLWNvbGxhcHNlZC1tZW51XT1cImVuYWJsZUNvbGxhcHNlXCJcbiAgICAgICAgICAgIFtwLWljb25dPVwiYWxsb3dJY29ucyA/IG1lbnUuaWNvbiA6IG51bGxcIlxuICAgICAgICAgICAgW3AtaWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICBbcC1sYWJlbF09XCJtZW51LmxhYmVsXCJcbiAgICAgICAgICAgIFtwLWxldmVsXT1cIm1lbnUubGV2ZWxcIlxuICAgICAgICAgICAgW3AtbGlua109XCJtZW51LmxpbmtcIlxuICAgICAgICAgICAgW3Atc2hvcnQtbGFiZWxdPVwibWVudS5zaG9ydExhYmVsXCJcbiAgICAgICAgICAgIFtwLXN1Yi1pdGVtc109XCJtZW51LnN1Ykl0ZW1zXCJcbiAgICAgICAgICAgIFtwLXR5cGVdPVwibWVudS50eXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9wby1tZW51LWl0ZW0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmF2PlxuXG4gIDxkaXYgKm5nSWY9XCJoYXNGb290ZXJcIiBjbGFzcz1cInBvLW1lbnUtZm9vdGVyXCI+XG4gICAgPGEgY2xhc3M9XCJwby1tZW51LWNvbGxhcHNlLWJ1dHRvbi1pY29uIHBvLWNsaWNrYWJsZVwiIChjbGljayk9XCJ0b2dnbGUoKVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJwby1pY29uXCJcbiAgICAgICAgW2NsYXNzLnBvLWljb24tbWVudS1jbG9zZV09XCJlbmFibGVDb2xsYXBzZUJ1dHRvblwiXG4gICAgICAgIFtjbGFzcy5wby1pY29uLW1lbnUtb3Blbl09XCJlbmFibGVDb2xsYXBzZVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,8 +1,8 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
- import * as i2 from "./po-navbar-action-popup/po-navbar-action-popup.component";
5
- import * as i3 from "./po-navbar-action/po-navbar-action.component";
4
+ import * as i2 from "./po-navbar-action/po-navbar-action.component";
5
+ import * as i3 from "./po-navbar-action-popup/po-navbar-action-popup.component";
6
6
  function PoNavbarActionsComponent_po_navbar_action_0_Template(rf, ctx) { if (rf & 1) {
7
7
  i0.ɵɵelement(0, "po-navbar-action", 2);
8
8
  } if (rf & 2) {
@@ -25,7 +25,7 @@ PoNavbarActionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Po
25
25
  i0.ɵɵproperty("ngForOf", ctx.iconActions);
26
26
  i0.ɵɵadvance(1);
27
27
  i0.ɵɵproperty("p-icon-actions", ctx.iconActions);
28
- } }, directives: [i1.NgForOf, i2.PoNavbarActionPopupComponent, i3.PoNavbarActionComponent], encapsulation: 2 });
28
+ } }, directives: [i1.NgForOf, i2.PoNavbarActionComponent, i3.PoNavbarActionPopupComponent], encapsulation: 2 });
29
29
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoNavbarActionsComponent, [{
30
30
  type: Component,
31
31
  args: [{ selector: 'po-navbar-actions', template: "<po-navbar-action\n *ngFor=\"let iconAction of iconActions\"\n class=\"po-navbar-action\"\n [p-action]=\"iconAction.action\"\n [p-icon]=\"iconAction.icon\"\n [p-label]=\"iconAction.label\"\n [p-link]=\"iconAction.link\"\n [p-tooltip-text]=\"iconAction.tooltip\"\n>\n</po-navbar-action>\n\n<po-navbar-action-popup class=\"po-navbar-action-popup\" [p-icon-actions]=\"iconActions\"> </po-navbar-action-popup>\n" }]
@@ -12,8 +12,8 @@ import * as i3 from "../po-menu/services/po-menu-global.service";
12
12
  import * as i4 from "@angular/common";
13
13
  import * as i5 from "./po-navbar-logo/po-navbar-logo.component";
14
14
  import * as i6 from "./po-navbar-items/po-navbar-items.component";
15
- import * as i7 from "./po-navbar-actions/po-navbar-actions.component";
16
- import * as i8 from "./po-navbar-item-navigation/po-navbar-item-navigation.component";
15
+ import * as i7 from "./po-navbar-item-navigation/po-navbar-item-navigation.component";
16
+ import * as i8 from "./po-navbar-actions/po-navbar-actions.component";
17
17
  import * as i9 from "../po-menu/po-menu.component";
18
18
  function PoNavbarComponent_po_navbar_item_navigation_3_Template(rf, ctx) { if (rf & 1) {
19
19
  const _r3 = i0.ɵɵgetCurrentView();
@@ -245,7 +245,7 @@ PoNavbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoNavbarC
245
245
  i0.ɵɵproperty("p-icon-actions", ctx.iconActions);
246
246
  i0.ɵɵadvance(1);
247
247
  i0.ɵɵproperty("ngIf", !ctx.applicationMenu);
248
- } }, directives: [i4.NgClass, i5.PoNavbarLogoComponent, i6.PoNavbarItemsComponent, i4.NgIf, i7.PoNavbarActionsComponent, i8.PoNavbarItemNavigationComponent, i9.PoMenuComponent], encapsulation: 2 });
248
+ } }, directives: [i4.NgClass, i5.PoNavbarLogoComponent, i6.PoNavbarItemsComponent, i4.NgIf, i7.PoNavbarItemNavigationComponent, i8.PoNavbarActionsComponent, i9.PoMenuComponent], encapsulation: 2 });
249
249
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoNavbarComponent, [{
250
250
  type: Component,
251
251
  args: [{ selector: 'po-navbar', template: "<header class=\"po-navbar\" [ngClass]=\"{ 'po-navbar-shadow': shadow }\">\n <po-navbar-logo\n class=\"po-navbar-logo\"\n [ngClass]=\"{ 'po-navbar-logo-menu': !!applicationMenu, 'po-navbar-no-logo': !logo }\"\n [p-logo]=\"logo\"\n >\n </po-navbar-logo>\n\n <po-navbar-items class=\"po-navbar-items\" [p-items]=\"items\"> </po-navbar-items>\n\n <po-navbar-item-navigation\n *ngIf=\"showItemsNavigation\"\n class=\"po-navbar-item-navigation\"\n [p-disable-left]=\"navbarItemNavigationDisableLeft\"\n [p-disable-right]=\"navbarItemNavigationDisableRight\"\n (p-click)=\"navigateItems($event)\"\n >\n </po-navbar-item-navigation>\n\n <po-navbar-actions class=\"po-navbar-actions\" [p-icon-actions]=\"iconActions\"> </po-navbar-actions>\n</header>\n\n<po-menu *ngIf=\"!applicationMenu\" [p-menus]=\"items\"> </po-menu>\n" }]
@@ -6,10 +6,10 @@ import * as i1 from "./../../../services/po-language/po-language.service";
6
6
  import * as i2 from "@angular/router";
7
7
  import * as i3 from "../po-page.component";
8
8
  import * as i4 from "@angular/common";
9
- import * as i5 from "../po-page-content/po-page-content.component";
10
- import * as i6 from "../po-page-header/po-page-header.component";
11
- import * as i7 from "../../po-dropdown/po-dropdown.component";
12
- import * as i8 from "../../po-button/po-button.component";
9
+ import * as i5 from "../po-page-header/po-page-header.component";
10
+ import * as i6 from "../../po-dropdown/po-dropdown.component";
11
+ import * as i7 from "../../po-button/po-button.component";
12
+ import * as i8 from "../po-page-content/po-page-content.component";
13
13
  function PoPageDefaultComponent_po_page_header_1_po_dropdown_2_Template(rf, ctx) { if (rf & 1) {
14
14
  i0.ɵɵelement(0, "po-dropdown", 6);
15
15
  } if (rf & 2) {
@@ -157,7 +157,7 @@ PoPageDefaultComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPa
157
157
  } if (rf & 2) {
158
158
  i0.ɵɵadvance(1);
159
159
  i0.ɵɵproperty("ngIf", ctx.hasPageHeader());
160
- } }, directives: [i3.PoPageComponent, i4.NgIf, i5.PoPageContentComponent, i6.PoPageHeaderComponent, i7.PoDropdownComponent, i8.PoButtonComponent], encapsulation: 2 });
160
+ } }, directives: [i3.PoPageComponent, i4.NgIf, i5.PoPageHeaderComponent, i6.PoDropdownComponent, i7.PoButtonComponent, i8.PoPageContentComponent], encapsulation: 2 });
161
161
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageDefaultComponent, [{
162
162
  type: Component,
163
163
  args: [{ selector: 'po-page-default', template: "<po-page>\n <!-- HEADER -->\n <po-page-header *ngIf=\"hasPageHeader()\" [p-breadcrumb]=\"breadcrumb\" [p-title]=\"title\">\n <!-- OPERATIONS -->\n <div class=\"po-page-header-actions\">\n <po-dropdown\n *ngIf=\"visibleActions.length > limitPrimaryActions\"\n [p-label]=\"literals.otherActions\"\n [p-actions]=\"dropdownActions\"\n >\n </po-dropdown>\n\n <po-button\n *ngIf=\"visibleActions.length === 3 && visibleActions[2] && !isMobile\"\n [p-disabled]=\"actionIsDisabled(visibleActions[2])\"\n [p-label]=\"visibleActions[2].label\"\n (p-click)=\"callAction(visibleActions[2])\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"visibleActions[1] && (visibleActions.length === 2 || !isMobile)\"\n [p-disabled]=\"actionIsDisabled(visibleActions[1])\"\n [p-label]=\"visibleActions[1].label\"\n (p-click)=\"callAction(visibleActions[1])\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"visibleActions[0]\"\n p-type=\"primary\"\n [p-disabled]=\"actionIsDisabled(visibleActions[0])\"\n [p-icon]=\"visibleActions[0].icon\"\n [p-label]=\"visibleActions[0].label\"\n (p-click)=\"callAction(visibleActions[0])\"\n >\n </po-button>\n </div>\n </po-page-header>\n\n <!-- CONTENT -->\n <po-page-content>\n <ng-content></ng-content>\n </po-page-content>\n</po-page>\n" }]
@@ -3,9 +3,9 @@ import { PoPageDetailBaseComponent } from './po-page-detail-base.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../po-page.component";
5
5
  import * as i2 from "@angular/common";
6
- import * as i3 from "../po-page-content/po-page-content.component";
7
- import * as i4 from "../po-page-header/po-page-header.component";
8
- import * as i5 from "../../po-button/po-button.component";
6
+ import * as i3 from "../po-page-header/po-page-header.component";
7
+ import * as i4 from "../../po-button/po-button.component";
8
+ import * as i5 from "../po-page-content/po-page-content.component";
9
9
  function PoPageDetailComponent_po_page_header_1_div_1_po_button_1_Template(rf, ctx) { if (rf & 1) {
10
10
  const _r6 = i0.ɵɵgetCurrentView();
11
11
  i0.ɵɵelementStart(0, "po-button", 6);
@@ -124,7 +124,7 @@ PoPageDetailComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPag
124
124
  } if (rf & 2) {
125
125
  i0.ɵɵadvance(1);
126
126
  i0.ɵɵproperty("ngIf", ctx.hasPageHeader());
127
- } }, directives: [i1.PoPageComponent, i2.NgIf, i3.PoPageContentComponent, i4.PoPageHeaderComponent, i5.PoButtonComponent], encapsulation: 2 });
127
+ } }, directives: [i1.PoPageComponent, i2.NgIf, i3.PoPageHeaderComponent, i4.PoButtonComponent, i5.PoPageContentComponent], encapsulation: 2 });
128
128
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageDetailComponent, [{
129
129
  type: Component,
130
130
  args: [{ selector: 'po-page-detail', template: "<po-page>\n <!-- HEADER -->\n <po-page-header *ngIf=\"hasPageHeader()\" [p-breadcrumb]=\"breadcrumb\" [p-title]=\"title\">\n <!-- OPERATIONS -->\n <div *ngIf=\"hasAnyAction()\" class=\"po-page-header-actions\">\n <po-button\n *ngIf=\"hasEvent('back')\"\n [p-icon]=\"hasEditOrRemoveFn('icon')\"\n [p-label]=\"literals.back\"\n [p-type]=\"hasEditOrRemoveFn('type')\"\n (p-click)=\"back.emit()\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"hasEvent('remove')\"\n [p-icon]=\"hasEditFn('icon')\"\n [p-label]=\"literals.remove\"\n [p-type]=\"hasEditFn('type')\"\n (p-click)=\"remove.emit()\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"hasEvent('edit')\"\n p-icon=\"po-icon-edit\"\n p-type=\"primary\"\n [p-label]=\"literals.edit\"\n (p-click)=\"edit.emit()\"\n >\n </po-button>\n </div>\n </po-page-header>\n\n <!-- CONTENT -->\n <po-page-content>\n <ng-content> </ng-content>\n </po-page-content>\n</po-page>\n" }]
@@ -3,9 +3,9 @@ import { PoPageEditBaseComponent } from './po-page-edit-base.component';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../po-page.component";
5
5
  import * as i2 from "@angular/common";
6
- import * as i3 from "../po-page-content/po-page-content.component";
7
- import * as i4 from "../po-page-header/po-page-header.component";
8
- import * as i5 from "../../po-button/po-button.component";
6
+ import * as i3 from "../po-page-header/po-page-header.component";
7
+ import * as i4 from "../../po-button/po-button.component";
8
+ import * as i5 from "../po-page-content/po-page-content.component";
9
9
  function PoPageEditComponent_po_page_header_1_div_1_po_button_1_Template(rf, ctx) { if (rf & 1) {
10
10
  const _r6 = i0.ɵɵgetCurrentView();
11
11
  i0.ɵɵelementStart(0, "po-button", 7);
@@ -127,7 +127,7 @@ PoPageEditComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageE
127
127
  } if (rf & 2) {
128
128
  i0.ɵɵadvance(1);
129
129
  i0.ɵɵproperty("ngIf", ctx.hasPageHeader());
130
- } }, directives: [i1.PoPageComponent, i2.NgIf, i3.PoPageContentComponent, i4.PoPageHeaderComponent, i5.PoButtonComponent], encapsulation: 2 });
130
+ } }, directives: [i1.PoPageComponent, i2.NgIf, i3.PoPageHeaderComponent, i4.PoButtonComponent, i5.PoPageContentComponent], encapsulation: 2 });
131
131
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageEditComponent, [{
132
132
  type: Component,
133
133
  args: [{ selector: 'po-page-edit', template: "<po-page>\n <!-- HEADER -->\n <po-page-header *ngIf=\"hasPageHeader()\" [p-breadcrumb]=\"breadcrumb\" [p-title]=\"title\">\n <!-- OPERATIONS -->\n <div *ngIf=\"hasAnyAction()\" class=\"po-page-header-actions\">\n <po-button\n *ngIf=\"hasEvent('cancel')\"\n [p-icon]=\"getIcon('cancel')\"\n [p-label]=\"literals.cancel\"\n [p-type]=\"getType('cancel')\"\n (p-click)=\"cancel.emit()\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"hasEvent('saveNew')\"\n [p-disabled]=\"disableSubmit\"\n [p-icon]=\"getIcon('saveNew')\"\n [p-label]=\"literals.saveNew\"\n [p-type]=\"getType('saveNew')\"\n (p-click)=\"saveNew.emit()\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"hasEvent('save')\"\n p-icon=\"po-icon-ok\"\n p-type=\"primary\"\n [p-disabled]=\"disableSubmit\"\n [p-label]=\"literals.save\"\n (p-click)=\"save.emit()\"\n >\n </po-button>\n </div>\n </po-page-header>\n\n <!-- CONTENT -->\n <po-page-content>\n <ng-content> </ng-content>\n </po-page-content>\n</po-page>\n" }]
@@ -7,11 +7,11 @@ import * as i1 from "./../../../services/po-language/po-language.service";
7
7
  import * as i2 from "@angular/router";
8
8
  import * as i3 from "../po-page.component";
9
9
  import * as i4 from "@angular/common";
10
- import * as i5 from "../po-page-content/po-page-content.component";
11
- import * as i6 from "../po-page-header/po-page-header.component";
12
- import * as i7 from "../../po-button/po-button.component";
13
- import * as i8 from "../../po-dropdown/po-dropdown.component";
14
- import * as i9 from "../../po-disclaimer-group/po-disclaimer-group.component";
10
+ import * as i5 from "../po-page-header/po-page-header.component";
11
+ import * as i6 from "../../po-button/po-button.component";
12
+ import * as i7 from "../../po-dropdown/po-dropdown.component";
13
+ import * as i8 from "../../po-disclaimer-group/po-disclaimer-group.component";
14
+ import * as i9 from "../po-page-content/po-page-content.component";
15
15
  const _c0 = ["filterInput"];
16
16
  function PoPageListComponent_po_page_header_1_po_button_3_Template(rf, ctx) { if (rf & 1) {
17
17
  const _r8 = i0.ɵɵgetCurrentView();
@@ -309,7 +309,7 @@ PoPageListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoPageL
309
309
  } if (rf & 2) {
310
310
  i0.ɵɵadvance(1);
311
311
  i0.ɵɵproperty("ngIf", ctx.hasPageHeader());
312
- } }, directives: [i3.PoPageComponent, i4.NgIf, i5.PoPageContentComponent, i6.PoPageHeaderComponent, i7.PoButtonComponent, i8.PoDropdownComponent, i4.NgClass, i9.PoDisclaimerGroupComponent], encapsulation: 2 });
312
+ } }, directives: [i3.PoPageComponent, i4.NgIf, i5.PoPageHeaderComponent, i6.PoButtonComponent, i7.PoDropdownComponent, i4.NgClass, i8.PoDisclaimerGroupComponent, i9.PoPageContentComponent], encapsulation: 2 });
313
313
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageListComponent, [{
314
314
  type: Component,
315
315
  args: [{ selector: 'po-page-list', template: "<po-page>\n <!-- HEADER -->\n <po-page-header\n *ngIf=\"hasPageHeader()\"\n [class.po-page-list-header-padding]=\"filter && !visibleActions.length\"\n [p-breadcrumb]=\"breadcrumb\"\n [p-title]=\"title\"\n >\n <!-- OPERATIONS -->\n <div class=\"po-page-list-operations\">\n <div class=\"po-page-list-actions\" [class.po-page-list-actions-padding]=\"filter\">\n <po-button\n *ngIf=\"visibleActions[0]\"\n p-type=\"primary\"\n [p-disabled]=\"actionIsDisabled(actions[0])\"\n [p-icon]=\"visibleActions[0].icon\"\n [p-label]=\"visibleActions[0].label\"\n (p-click)=\"callAction(visibleActions[0])\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"visibleActions[1] && (visibleActions.length === 2 || !isMobile)\"\n [p-disabled]=\"actionIsDisabled(actions[1])\"\n [p-label]=\"visibleActions[1].label\"\n (p-click)=\"callAction(visibleActions[1])\"\n >\n </po-button>\n\n <po-button\n *ngIf=\"visibleActions.length === 3 && visibleActions[2] && !isMobile\"\n [p-disabled]=\"actionIsDisabled(visibleActions[2])\"\n [p-label]=\"visibleActions[2].label\"\n (p-click)=\"callAction(visibleActions[2])\"\n >\n </po-button>\n\n <po-dropdown\n *ngIf=\"visibleActions.length > limitPrimaryActions\"\n [p-actions]=\"dropdownActions\"\n [p-label]=\"literals.otherActions\"\n >\n </po-dropdown>\n </div>\n\n <!-- FILTER -->\n <div\n class=\"po-page-list-filter-wrapper\"\n *ngIf=\"filter\"\n [ngClass]=\"hasCustomFilterSize() ? filterSizeClass(filter.width) : ''\"\n >\n <div\n class=\"po-field-container-content po-page-filter-content\"\n [ngClass]=\"\n hasCustomFilterSize()\n ? filter.advancedAction\n ? 'po-page-filter-input-variable-size'\n : 'po-page-filter-input-variable-size-wo-adv-search'\n : ''\n \"\n >\n <div class=\"po-field-icon-container-right\">\n <span class=\"po-icon po-icon-search po-field-icon\" (click)=\"callActionFilter('action')\"> </span>\n </div>\n\n <input\n #filterInput\n class=\"po-input po-input-icon-right\"\n name=\"model\"\n type=\"text\"\n [placeholder]=\"filter.placeholder || ''\"\n (keypress)=\"onkeypress($event.keyCode)\"\n />\n </div>\n\n <div class=\"po-page-list-filter-search\" *ngIf=\"filter.advancedAction\">\n <span\n class=\"po-page-list-filter-search-link\"\n tabindex=\"0\"\n (click)=\"callActionFilter('advancedAction')\"\n (keydown.enter)=\"callActionFilter('advancedAction')\"\n >\n {{ advancedSearch }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- DISCLAIMER -->\n <po-disclaimer-group\n *ngIf=\"!!disclaimerGroup\"\n [class.po-page-list-disclaimer-group]=\"!!disclaimerGroup?.disclaimers?.length\"\n [p-disclaimers]=\"disclaimerGroup?.disclaimers\"\n [p-hide-remove-all]=\"disclaimerGroup?.hideRemoveAll\"\n [p-title]=\"disclaimerGroup?.title\"\n (p-change)=\"onChangeDisclaimerGroup($event)\"\n (p-remove)=\"onRemoveDisclaimer($event)\"\n (p-remove-all)=\"onRemoveAllDisclaimers($event)\"\n >\n </po-disclaimer-group>\n </po-page-header>\n\n <!-- CONTENT -->\n <po-page-content>\n <ng-content></ng-content>\n </po-page-content>\n</po-page>\n" }]
@@ -310,7 +310,7 @@ PoSlideComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoSlideCom
310
310
  i0.ɵɵproperty("ngIf", !ctx.hideArrows && ctx.hasSlides && ctx.slides.length > 1);
311
311
  i0.ɵɵadvance(1);
312
312
  i0.ɵɵproperty("ngIf", ctx.hasSlides && ctx.slides.length > 1);
313
- } }, directives: [i2.NgForOf, i2.NgIf, i3.PoSlideItemComponent, i4.PoSlideControlComponent, i5.PoSlideCirclesComponent], encapsulation: 2 });
313
+ } }, directives: [i2.NgForOf, i3.PoSlideItemComponent, i2.NgIf, i4.PoSlideControlComponent, i5.PoSlideCirclesComponent], encapsulation: 2 });
314
314
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoSlideComponent, [{
315
315
  type: Component,
316
316
  args: [{ selector: 'po-slide', template: "<div class=\"po-slide-wrapper\">\n <div class=\"po-slide-outer\">\n <div class=\"po-slide-inner\" #slide>\n <ng-container *ngFor=\"let item of slideItems; let index = index\">\n <po-slide-item\n [p-action]=\"item.action\"\n [p-data]=\"item\"\n [p-image]=\"item.image\"\n [p-image-height]=\"imageHeight\"\n [p-template]=\"slideContentTemplate\"\n [p-alt]=\"item.alt\"\n [p-link]=\"item.link\"\n >\n </po-slide-item>\n </ng-container>\n </div>\n\n <po-slide-control\n *ngIf=\"!hideArrows && hasSlides && slides.length > 1\"\n p-control=\"previous\"\n (p-click)=\"previousControl()\"\n >\n </po-slide-control>\n\n <po-slide-control *ngIf=\"!hideArrows && hasSlides && slides.length > 1\" p-control=\"next\" (p-click)=\"nextControl()\">\n </po-slide-control>\n </div>\n\n <po-slide-circles\n *ngIf=\"hasSlides && slides.length > 1\"\n [p-current-slide-index]=\"currentSlideIndex\"\n [p-items]=\"slideItems\"\n (p-click)=\"goToItem($event)\"\n >\n </po-slide-circles>\n</div>\n" }]
@@ -245,7 +245,7 @@ PoStepperComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoSteppe
245
245
  i0.ɵɵproperty("ngForOf", ctx.stepList)("ngForTrackBy", ctx.trackByFn);
246
246
  i0.ɵɵadvance(1);
247
247
  i0.ɵɵproperty("ngIf", ctx.usePoSteps);
248
- } }, directives: [i1.NgForOf, i1.NgIf, i2.PoStepperStepComponent], encapsulation: 2 });
248
+ } }, directives: [i1.NgForOf, i2.PoStepperStepComponent, i1.NgIf], encapsulation: 2 });
249
249
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoStepperComponent, [{
250
250
  type: Component,
251
251
  args: [{ selector: 'po-stepper', template: "<div class=\"po-stepper po-stepper-{{ orientation }}\">\n <div class=\"po-stepper-container\">\n <po-stepper-step\n *ngFor=\"let step of stepList; let index = index; trackBy: trackByFn\"\n class=\"po-stepper-step-position\"\n [p-circle-content]=\"index + 1\"\n [p-label]=\"step.label\"\n [p-orientation]=\"orientation\"\n [p-status]=\"step.status\"\n [p-step-icons]=\"stepIcons\"\n [p-step-size]=\"stepSize\"\n [p-next-status]=\"poSteps.get(index + 1)?.status\"\n (p-activated)=\"onStepActive(step)\"\n (p-click)=\"changeStep(index, step)\"\n (p-enter)=\"changeStep(index, step)\"\n >\n </po-stepper-step>\n </div>\n\n <div *ngIf=\"usePoSteps\" class=\"po-stepper-content\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
@@ -88,7 +88,7 @@ PoTableSubtitleFooterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
88
88
  i0.ɵɵproperty("ngForOf", ctx.subtitles);
89
89
  i0.ɵɵadvance(1);
90
90
  i0.ɵɵproperty("ngIf", ctx.showSubtitle);
91
- } }, directives: [i1.NgForOf, i1.NgIf, i2.PoTableSubtitleCircleComponent, i3.PoTableShowSubtitleComponent], encapsulation: 2 });
91
+ } }, directives: [i1.NgForOf, i2.PoTableSubtitleCircleComponent, i1.NgIf, i3.PoTableShowSubtitleComponent], encapsulation: 2 });
92
92
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoTableSubtitleFooterComponent, [{
93
93
  type: Component,
94
94
  args: [{ selector: 'po-table-subtitle-footer', template: "<div class=\"po-table-subtitle-footer-container\">\n <div *ngFor=\"let subtitle of subtitles\" class=\"po-table-subtitle-footer\">\n <po-table-subtitle-circle p-hide-title=\"true\" [p-subtitle]=\"subtitle\"> </po-table-subtitle-circle>\n <span class=\"po-table-subtitle-text\">{{ subtitle.label }}</span>\n </div>\n <po-table-show-subtitle *ngIf=\"showSubtitle\" [p-literals]=\"literals\" [p-subtitles]=\"subtitles\">\n </po-table-show-subtitle>\n</div>\n" }]