@igo2/context 17.0.0-next.4 → 17.0.0-next.6

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 (41) hide show
  1. package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +3 -3
  2. package/esm2022/lib/context-import-export/context-import-export.module.mjs +1 -1
  3. package/esm2022/lib/context-import-export/shared/context-export.utils.mjs +1 -1
  4. package/esm2022/lib/context-import-export/shared/context-import.service.mjs +1 -1
  5. package/esm2022/lib/context-import-export/shared/context-import.utils.mjs +1 -1
  6. package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +1 -1
  7. package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +1 -1
  8. package/esm2022/lib/context-manager/context-form/context-form.component.mjs +3 -3
  9. package/esm2022/lib/context-manager/context-item/context-item.component.mjs +3 -3
  10. package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +1 -1
  11. package/esm2022/lib/context-manager/context-list/context-list.component.mjs +7 -7
  12. package/esm2022/lib/context-manager/context-manager.module.mjs +1 -1
  13. package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +1 -1
  14. package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +3 -3
  15. package/esm2022/lib/context-manager/index.mjs +1 -1
  16. package/esm2022/lib/context-manager/shared/context.interface.mjs +1 -1
  17. package/esm2022/lib/context-manager/shared/context.service.mjs +1 -1
  18. package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +1 -1
  19. package/esm2022/lib/context-manager/shared/map-context.directive.mjs +1 -1
  20. package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +3 -3
  21. package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +1 -1
  22. package/esm2022/lib/context-map-button/context-map-button.module.mjs +1 -1
  23. package/esm2022/lib/context-map-button/index.mjs +1 -1
  24. package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +3 -3
  25. package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +1 -1
  26. package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +1 -1
  27. package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +3 -3
  28. package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +1 -1
  29. package/esm2022/lib/context.module.mjs +1 -1
  30. package/esm2022/lib/share-map/index.mjs +1 -1
  31. package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +3 -3
  32. package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +3 -3
  33. package/esm2022/lib/share-map/share-map/share-map.component.mjs +1 -1
  34. package/esm2022/lib/share-map/share-map.module.mjs +1 -1
  35. package/esm2022/lib/share-map/shared/share-map.service.mjs +1 -1
  36. package/esm2022/lib/sidenav/sidenav.component.mjs +3 -3
  37. package/esm2022/lib/sidenav/sidenav.module.mjs +1 -1
  38. package/fesm2022/igo2-context.mjs +26 -26
  39. package/fesm2022/igo2-context.mjs.map +1 -1
  40. package/lib/context-manager/context-list/context-list.component.d.ts +1 -1
  41. package/package.json +7 -7
@@ -139,7 +139,7 @@ export class ContextListComponent {
139
139
  {
140
140
  id: 'emptyContext',
141
141
  title: this.languageService.translate.instant('igo.context.contextManager.emptyContext'),
142
- icon: 'map-outline',
142
+ icon: 'star',
143
143
  tooltip: this.languageService.translate.instant('igo.context.contextManager.emptyContextTooltip'),
144
144
  handler: () => {
145
145
  this.createContext(true);
@@ -148,7 +148,7 @@ export class ContextListComponent {
148
148
  {
149
149
  id: 'contextFromMap',
150
150
  title: this.languageService.translate.instant('igo.context.contextManager.contextMap'),
151
- icon: 'map-check',
151
+ icon: 'map',
152
152
  tooltip: this.languageService.translate.instant('igo.context.contextManager.contextMapTooltip'),
153
153
  handler: () => {
154
154
  this.createContext(false);
@@ -281,8 +281,8 @@ export class ContextListComponent {
281
281
  .replace(/[\u0300-\u036f]/g, '')
282
282
  .toLowerCase();
283
283
  }
284
- toggleSort(sortAlpha) {
285
- this.sortedAlpha = sortAlpha;
284
+ toggleSort() {
285
+ this.sortedAlpha = !this.sortedAlpha;
286
286
  }
287
287
  clearFilter() {
288
288
  this.term = '';
@@ -355,7 +355,7 @@ export class ContextListComponent {
355
355
  this.show.emit(context);
356
356
  }
357
357
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ConfigService }, { token: i2.AuthService }, { token: i3.MatDialog }, { token: i4.LanguageService }, { token: i5.StorageService }], target: i0.ɵɵFactoryTarget.Component });
358
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextListComponent, isStandalone: true, selector: "igo-context-list", inputs: { contexts: "contexts", selectedContext: "selectedContext", map: "map", defaultContextId: "defaultContextId", term: "term" }, outputs: { select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, ngImport: i0, template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n\n <div class=\"actions-container\">\n <button\n *ngIf=\"!sortedAlpha\"\n class=\"sort-alpha\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.sortAlphabetically' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort(true)\"\n >\n <mat-icon\n color=\"primary\"\n svgIcon=\"sort-alphabetical-variant\"\n ></mat-icon>\n </button>\n <button\n *ngIf=\"sortedAlpha\"\n class=\"sort-alpha\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.sortContextOrder' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort(false)\"\n >\n <mat-icon color=\"warn\" svgIcon=\"sort-variant-remove\"></mat-icon>\n </button>\n\n <igo-actionbar\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"plus\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n >\n </igo-actionbar>\n\n <button\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\" svgIcon=\"filter-menu\"></mat-icon>\n </button>\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <button\n *ngIf=\"!user.childs; else withSubMenu\"\n mat-menu-item\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n <ng-template #withSubMenu>\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let child of user.childs\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n </mat-menu>\n </ng-template>\n </ng-container>\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\"\n >\n </mat-checkbox>\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <ng-template\n ngFor\n let-groupContexts\n [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n >\n <igo-collapsible\n *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n >\n <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </igo-collapsible>\n\n <ng-template\n *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n ngFor\n let-context\n [ngForOf]=\"$any(groupContexts).value\"\n >\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"isEmpty\" class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n</igo-list>\n", styles: [":host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ActionbarComponent, selector: "igo-actionbar", inputs: ["store", "mode", "withToggleButton", "horizontal", "color", "iconColor", "withTitle", "withTooltip", "scrollActive", "withIcon", "icon", "xPosition", "yPosition", "overlayClass"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "component", type: ContextItemComponent, selector: "igo-context-item", inputs: ["showFavorite", "context", "default", "selected"], outputs: ["edit", "delete", "save", "clone", "hide", "show", "favorite", "managePermissions", "manageTools"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
358
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: ContextListComponent, isStandalone: true, selector: "igo-context-list", inputs: { contexts: "contexts", selectedContext: "selectedContext", map: "map", defaultContextId: "defaultContextId", term: "term" }, outputs: { select: "select", unselect: "unselect", edit: "edit", delete: "delete", save: "save", clone: "clone", create: "create", hide: "hide", show: "show", showHiddenContexts: "showHiddenContexts", favorite: "favorite", managePermissions: "managePermissions", manageTools: "manageTools", filterPermissionsChanged: "filterPermissionsChanged" }, ngImport: i0, template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <div class=\"actions-container\">\n <button\n class=\"sort-alpha\"\n [class.--active]=\"sortedAlpha\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.sortAlphabetically' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <mat-icon color=\"primary\">sort_by_alpha</mat-icon>\n </button>\n\n <igo-actionbar\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n >\n </igo-actionbar>\n\n <button\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">fitler_alt</mat-icon>\n </button>\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <button\n *ngIf=\"!user.childs; else withSubMenu\"\n mat-menu-item\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n <ng-template #withSubMenu>\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let child of user.childs\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n </mat-menu>\n </ng-template>\n </ng-container>\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\"\n >\n </mat-checkbox>\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <ng-template\n ngFor\n let-groupContexts\n [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n >\n <igo-collapsible\n *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n >\n <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </igo-collapsible>\n\n <ng-template\n *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n ngFor\n let-context\n [ngForOf]=\"$any(groupContexts).value\"\n >\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"isEmpty\" class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n</igo-list>\n", styles: [":host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.sort-alpha.--active mat-icon{color:red}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"], dependencies: [{ kind: "component", type: ListComponent, selector: "igo-list", inputs: ["navigation", "selection"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i9.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ActionbarComponent, selector: "igo-actionbar", inputs: ["store", "mode", "withToggleButton", "horizontal", "color", "iconColor", "withTitle", "withTooltip", "scrollActive", "withIcon", "icon", "xPosition", "yPosition", "overlayClass"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: CollapsibleComponent, selector: "igo-collapsible", inputs: ["title", "collapsed"], outputs: ["toggle"] }, { kind: "component", type: ContextItemComponent, selector: "igo-context-item", inputs: ["showFavorite", "context", "default", "selected"], outputs: ["edit", "delete", "save", "clone", "hide", "show", "favorite", "managePermissions", "manageTools"] }, { kind: "directive", type: ListItemDirective, selector: "[igoListItem]", inputs: ["color", "focused", "selected", "disabled"], outputs: ["beforeSelect", "beforeFocus", "beforeUnselect", "beforeUnfocus", "beforeDisable", "beforeEnable", "focus", "unfocus", "select", "unselect", "disable", "enable"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
359
359
  }
360
360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: ContextListComponent, decorators: [{
361
361
  type: Component,
@@ -378,7 +378,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
378
378
  AsyncPipe,
379
379
  KeyValuePipe,
380
380
  TranslateModule
381
- ], template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n\n <div class=\"actions-container\">\n <button\n *ngIf=\"!sortedAlpha\"\n class=\"sort-alpha\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.sortAlphabetically' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort(true)\"\n >\n <mat-icon\n color=\"primary\"\n svgIcon=\"sort-alphabetical-variant\"\n ></mat-icon>\n </button>\n <button\n *ngIf=\"sortedAlpha\"\n class=\"sort-alpha\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.sortContextOrder' | translate\"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort(false)\"\n >\n <mat-icon color=\"warn\" svgIcon=\"sort-variant-remove\"></mat-icon>\n </button>\n\n <igo-actionbar\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"plus\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n >\n </igo-actionbar>\n\n <button\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\" svgIcon=\"filter-menu\"></mat-icon>\n </button>\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <button\n *ngIf=\"!user.childs; else withSubMenu\"\n mat-menu-item\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n <ng-template #withSubMenu>\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let child of user.childs\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n </mat-menu>\n </ng-template>\n </ng-container>\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\"\n >\n </mat-checkbox>\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <ng-template\n ngFor\n let-groupContexts\n [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n >\n <igo-collapsible\n *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n >\n <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </igo-collapsible>\n\n <ng-template\n *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n ngFor\n let-context\n [ngForOf]=\"$any(groupContexts).value\"\n >\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"isEmpty\" class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n</igo-list>\n", styles: [":host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"] }]
381
+ ], template: "<igo-list [navigation]=\"true\">\n <div class=\"context-filter-container\">\n <mat-form-field *ngIf=\"showFilter()\" floatLabel=\"always\">\n <mat-label>{{\n 'igo.context.contextManager.filterPlaceHolder' | translate\n }}</mat-label>\n <input\n matInput\n type=\"text\"\n [placeholder]=\"\n 'igo.context.contextManager.filterPlaceHolder' | translate\n \"\n [(ngModel)]=\"term\"\n />\n <button\n mat-icon-button\n matSuffix\n class=\"clear-button\"\n *ngIf=\"term.length\"\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearFilter()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <div class=\"actions-container\">\n <button\n class=\"sort-alpha\"\n [class.--active]=\"sortedAlpha\"\n mat-icon-button\n [matTooltip]=\"\n 'igo.context.contextManager.sortAlphabetically' | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleSort()\"\n >\n <mat-icon color=\"primary\">sort_by_alpha</mat-icon>\n </button>\n\n <igo-actionbar\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"add-context-button\"\n [iconColor]=\"color\"\n [store]=\"actionStore\"\n [withIcon]=\"true\"\n icon=\"add\"\n [withTitle]=\"actionbarMode === 'overlay'\"\n [horizontal]=\"false\"\n [mode]=\"actionbarMode\"\n >\n </igo-actionbar>\n\n <button\n *ngIf=\"auth.authenticated && contextConfigs\"\n class=\"users-filter\"\n mat-icon-button\n [matTooltip]=\"'igo.context.contextManager.filterUser' | translate\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"accountMenu\"\n >\n <mat-icon color=\"primary\">fitler_alt</mat-icon>\n </button>\n <mat-menu #accountMenu=\"matMenu\">\n <ng-container *ngFor=\"let user of users\">\n <button\n *ngIf=\"!user.childs; else withSubMenu\"\n mat-menu-item\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n <ng-template #withSubMenu>\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subAccountMenu\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(user).checked\"\n [indeterminate]=\"getPermission(user).indeterminate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(user)\"\n >\n </mat-checkbox>\n <span>{{ user.title }}</span>\n </button>\n\n <mat-menu #subAccountMenu=\"matMenu\">\n <button\n mat-menu-item\n *ngFor=\"let child of user.childs\"\n class=\"profil-menu\"\n >\n <mat-checkbox\n [checked]=\"getPermission(child).checked\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"handleToggleCategory(child, user)\"\n >\n {{ child.title }}\n </mat-checkbox>\n </button>\n </mat-menu>\n </ng-template>\n </ng-container>\n\n <button mat-menu-item class=\"profil-menu\">\n <mat-checkbox\n [checked]=\"showHidden\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"showHiddenContexts.emit()\"\n >\n </mat-checkbox>\n <span>\n {{ 'igo.context.contextManager.showHidden' | translate }}\n </span>\n </button>\n </mat-menu>\n </div>\n </div>\n\n <ng-template\n ngFor\n let-groupContexts\n [ngForOf]=\"$any(contexts$ | async) | keyvalue\"\n >\n <igo-collapsible\n *ngIf=\"$any(groupContexts).value.length && auth.authenticated\"\n [title]=\"titleMapping[$any(groupContexts).key] | translate\"\n [collapsed]=\"$any(collapsed[titleMapping[$any(groupContexts).key]])\"\n (toggle)=\"collapsed[titleMapping[$any(groupContexts).key]] = $any($event)\"\n >\n <ng-template ngFor let-context [ngForOf]=\"$any(groupContexts).value\">\n <igo-context-item\n igoListItem\n color=\"accent\"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n context.id &&\n this.defaultContextId &&\n this.defaultContextId === context.id\n \"\n (edit)=\"edit.emit(context)\"\n (delete)=\"delete.emit(context)\"\n (clone)=\"clone.emit(context)\"\n (save)=\"save.emit(context)\"\n (hide)=\"hideContext(context)\"\n (show)=\"showContext(context)\"\n (favorite)=\"favorite.emit(context)\"\n (manageTools)=\"manageTools.emit(context)\"\n (managePermissions)=\"managePermissions.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </igo-collapsible>\n\n <ng-template\n *ngIf=\"$any(groupContexts).value.length && !auth.authenticated\"\n ngFor\n let-context\n [ngForOf]=\"$any(groupContexts).value\"\n >\n <igo-context-item\n igoListItem\n color=\"accent\"\n [showFavorite]=\"\n configService.getConfig('favoriteContext4NonAuthenticated')\n \"\n [selected]=\"selectedContext && selectedContext.uri === context.uri\"\n [context]=\"context\"\n [default]=\"\n contextConfigs\n ? defaultContextId === context.id\n : defaultContextId === context.uri\n \"\n (favorite)=\"favorite.emit(context)\"\n (select)=\"select.emit(context)\"\n (unselect)=\"unselect.emit(context)\"\n >\n </igo-context-item>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"isEmpty\" class=\"no-result\">\n {{ 'igo.context.contextManager.noResult' | translate }}\n </div>\n</igo-list>\n", styles: [":host ::ng-deep mat-form-field .mat-mdc-form-field-subscript-wrapper{display:none}.context-filter-container{display:flex;align-items:center;padding:8px 4px}.context-filter-container mat-form-field{flex:1}.sort-alpha.--active mat-icon{color:red}.context-filter-min-width{width:calc(100% - 135px);margin:5px;padding-left:6px}.profil-menu{padding-left:8px}.profil-menu mat-checkbox{margin-right:8px}.add-context-button{margin:0;width:40px;display:inline-flex;overflow:hidden}.actions-container{margin-left:4px}.no-result{padding:16px}\n"] }]
382
382
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ConfigService }, { type: i2.AuthService }, { type: i3.MatDialog }, { type: i4.LanguageService }, { type: i5.StorageService }], propDecorators: { contexts: [{
383
383
  type: Input
384
384
  }], selectedContext: [{
@@ -418,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
418
418
  }], term: [{
419
419
  type: Input
420
420
  }] } });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1saXN0L2NvbnRleHQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL2NvbnRleHQtbGlzdC9jb250ZXh0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxD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LE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBd0JILElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgS2V5VmFsdWVQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aW9uU3RvcmUsXHJcbiAgQWN0aW9uYmFyQ29tcG9uZW50LFxyXG4gIEFjdGlvbmJhck1vZGUsXHJcbiAgQ29sbGFwc2libGVDb21wb25lbnQsXHJcbiAgTGlzdENvbXBvbmVudCxcclxuICBMaXN0SXRlbURpcmVjdGl2ZVxyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XHJcbmltcG9ydCB0eXBlIHsgSWdvTWFwIH0gZnJvbSAnQGlnbzIvZ2VvJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBCb29rbWFya0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbnRleHQtbWFwLWJ1dHRvbi9ib29rbWFyay1idXR0b24vYm9va21hcmstZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRleHRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGV4dC1pdGVtL2NvbnRleHQtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRleHRQcm9maWxzLFxyXG4gIENvbnRleHRTZXJ2aWNlT3B0aW9ucyxcclxuICBDb250ZXh0VXNlclBlcm1pc3Npb24sXHJcbiAgQ29udGV4dHNMaXN0LFxyXG4gIERldGFpbGVkQ29udGV4dFxyXG59IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENvbnRleHRMaXN0Q29udHJvbHNFbnVtIH0gZnJvbSAnLi9jb250ZXh0LWxpc3QuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1jb250ZXh0LWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbnRleHQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTGlzdENvbXBvbmVudCxcclxuICAgIE5nSWYsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBBY3Rpb25iYXJDb21wb25lbnQsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgTmdGb3IsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIENvbGxhcHNpYmxlQ29tcG9uZW50LFxyXG4gICAgQ29udGV4dEl0ZW1Db21wb25lbnQsXHJcbiAgICBMaXN0SXRlbURpcmVjdGl2ZSxcclxuICAgIEFzeW5jUGlwZSxcclxuICAgIEtleVZhbHVlUGlwZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRleHRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBjb250ZXh0Q29uZmlnczogQ29udGV4dFNlcnZpY2VPcHRpb25zO1xyXG4gIHByaXZhdGUgY29udGV4dHNJbml0aWFsOiBDb250ZXh0c0xpc3QgPSB7IG91cnM6IFtdIH07XHJcbiAgY29udGV4dHMkOiBCZWhhdmlvclN1YmplY3Q8Q29udGV4dHNMaXN0PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICB0aGlzLmNvbnRleHRzSW5pdGlhbFxyXG4gICk7XHJcblxyXG4gIGNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBjb250ZXh0cygpOiBDb250ZXh0c0xpc3Qge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHRzO1xyXG4gIH1cclxuICBzZXQgY29udGV4dHModmFsdWU6IENvbnRleHRzTGlzdCkge1xyXG4gICAgdGhpcy5fY29udGV4dHMgPSB2YWx1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb250ZXh0czogQ29udGV4dHNMaXN0ID0geyBvdXJzOiBbXSB9O1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZENvbnRleHQ6IERldGFpbGVkQ29udGV4dDtcclxuXHJcbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRlZmF1bHRDb250ZXh0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRleHRDb25maWdzXHJcbiAgICAgID8gdGhpcy5fZGVmYXVsdENvbnRleHRJZFxyXG4gICAgICA6ICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnZmF2b3JpdGUuY29udGV4dC51cmknKSBhcyBzdHJpbmcpIHx8XHJcbiAgICAgICAgICB0aGlzLl9kZWZhdWx0Q29udGV4dElkO1xyXG4gIH1cclxuICBzZXQgZGVmYXVsdENvbnRleHRJZCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kZWZhdWx0Q29udGV4dElkID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2RlZmF1bHRDb250ZXh0SWQ6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGNvbGxhcHNlZDogeyBjb250ZXh0U2NvcGUgfVtdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgdW5zZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgZWRpdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGV0YWlsZWRDb250ZXh0PigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGV0YWlsZWRDb250ZXh0PigpO1xyXG4gIEBPdXRwdXQoKSBjbG9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGV0YWlsZWRDb250ZXh0PigpO1xyXG4gIEBPdXRwdXQoKSBjcmVhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdGl0bGU6IHN0cmluZzsgZW1wdHk6IGJvb2xlYW4gfT4oKTtcclxuICBAT3V0cHV0KCkgaGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGV0YWlsZWRDb250ZXh0PigpO1xyXG4gIEBPdXRwdXQoKSBzaG93ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIHNob3dIaWRkZW5Db250ZXh0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBAT3V0cHV0KCkgZmF2b3JpdGUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgbWFuYWdlUGVybWlzc2lvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgbWFuYWdlVG9vbHMgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyUGVybWlzc2lvbnNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxcclxuICAgIENvbnRleHRVc2VyUGVybWlzc2lvbltdXHJcbiAgPigpO1xyXG5cclxuICBwdWJsaWMgdGl0bGVNYXBwaW5nID0ge1xyXG4gICAgb3VyczogJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLm91ckNvbnRleHRzJyxcclxuICAgIHNoYXJlZDogJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLnNoYXJlZENvbnRleHRzJyxcclxuICAgIHB1YmxpYzogJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLnB1YmxpY0NvbnRleHRzJ1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyB1c2VyczogQ29udGV4dFByb2ZpbHNbXTtcclxuICBwdWJsaWMgcGVybWlzc2lvbnM6IENvbnRleHRVc2VyUGVybWlzc2lvbltdID0gW107XHJcblxyXG4gIHB1YmxpYyBhY3Rpb25TdG9yZSA9IG5ldyBBY3Rpb25TdG9yZShbXSk7XHJcbiAgcHVibGljIGFjdGlvbmJhck1vZGUgPSBBY3Rpb25iYXJNb2RlLk92ZXJsYXk7XHJcblxyXG4gIHB1YmxpYyBjb2xvciA9ICdwcmltYXJ5JztcclxuXHJcbiAgcHVibGljIHNob3dIaWRkZW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGV4dCBmaWx0ZXIgdGVybVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHRlcm0odmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdGVybSA9IHZhbHVlO1xyXG4gICAgdGhpcy5uZXh0KCk7XHJcbiAgfVxyXG4gIGdldCB0ZXJtKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVybTtcclxuICB9XHJcbiAgcHVibGljIF90ZXJtOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgZ2V0IHNvcnRlZEFscGhhKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NvcnRlZEFscGhhO1xyXG4gIH1cclxuICBzZXQgc29ydGVkQWxwaGEodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3NvcnRlZEFscGhhID0gdmFsdWU7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc29ydGVkQWxwaGE6IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBzaG93Q29udGV4dEZpbHRlciA9IENvbnRleHRMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcclxuXHJcbiAgcHVibGljIHRocmVzaG9sZFRvRmlsdGVyID0gNTtcclxuXHJcbiAgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAhdGhpcy5jb250ZXh0cy5vdXJzLmxlbmd0aCAmJlxyXG4gICAgICAhdGhpcy5jb250ZXh0cy5wdWJsaWM/Lmxlbmd0aCAmJlxyXG4gICAgICAhdGhpcy5jb250ZXh0cy5zaGFyZWQ/Lmxlbmd0aFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHB1YmxpYyBhdXRoOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuY29udGV4dENvbmZpZ3MgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdjb250ZXh0Jyk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY2hhbmdlJCQgPSB0aGlzLmNoYW5nZSRcclxuICAgICAgLnBpcGUoZGVib3VuY2UoKCkgPT4gdGltZXIoNTApKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0cyQubmV4dCh0aGlzLmZpbHRlckNvbnRleHRzTGlzdCh0aGlzLmNvbnRleHRzKSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWN0aW9uU3RvcmUubG9hZChbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ2VtcHR5Q29udGV4dCcsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmVtcHR5Q29udGV4dCdcclxuICAgICAgICApLFxyXG4gICAgICAgIGljb246ICdtYXAtb3V0bGluZScsXHJcbiAgICAgICAgdG9vbHRpcDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZW1wdHlDb250ZXh0VG9vbHRpcCdcclxuICAgICAgICApLFxyXG4gICAgICAgIGhhbmRsZXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlQ29udGV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ2NvbnRleHRGcm9tTWFwJyxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuY29udGV4dE1hcCdcclxuICAgICAgICApLFxyXG4gICAgICAgIGljb246ICdtYXAtY2hlY2snLFxyXG4gICAgICAgIHRvb2x0aXA6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmNvbnRleHRNYXBUb29sdGlwJ1xyXG4gICAgICAgICksXHJcbiAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVDb250ZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuZXh0KCkge1xyXG4gICAgdGhpcy5jaGFuZ2UkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyQ29udGV4dHNMaXN0KGNvbnRleHRzOiBDb250ZXh0c0xpc3QpOiBDb250ZXh0c0xpc3Qge1xyXG4gICAgaWYgKHRoaXMudGVybSA9PT0gJycpIHtcclxuICAgICAgaWYgKHRoaXMuc29ydGVkQWxwaGEpIHtcclxuICAgICAgICBjb250ZXh0cyA9IHRoaXMuc29ydENvbnRleHRzTGlzdChjb250ZXh0cyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbnRleHRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgb3VycyA9IGNvbnRleHRzLm91cnMuZmlsdGVyKChjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyTm9ybWFsaXplZCA9IHRoaXMudGVybVxyXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQgPSBjb250ZXh0LnRpdGxlXHJcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQuaW5jbHVkZXMoZmlsdGVyTm9ybWFsaXplZCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbGV0IHVwZGF0ZUNvbnRleHRzOiBDb250ZXh0c0xpc3QgPSB7XHJcbiAgICAgICAgb3Vyc1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29udGV4dHMucHVibGljKSB7XHJcbiAgICAgICAgY29uc3QgcHVibGljcyA9IGNvbnRleHRzLnB1YmxpYy5maWx0ZXIoKGNvbnRleHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGZpbHRlck5vcm1hbGl6ZWQgPSB0aGlzLnRlcm1cclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcclxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQgPSBjb250ZXh0LnRpdGxlXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgICByZXR1cm4gY29udGV4dFRpdGxlTm9ybWFsaXplZC5pbmNsdWRlcyhmaWx0ZXJOb3JtYWxpemVkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB1cGRhdGVDb250ZXh0cy5wdWJsaWMgPSBwdWJsaWNzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb250ZXh0cy5zaGFyZWQpIHtcclxuICAgICAgICBjb25zdCBzaGFyZWQgPSBjb250ZXh0cy5zaGFyZWQuZmlsdGVyKChjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJOb3JtYWxpemVkID0gdGhpcy50ZXJtXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgICBjb25zdCBjb250ZXh0VGl0bGVOb3JtYWxpemVkID0gY29udGV4dC50aXRsZVxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4gICAgICAgICAgcmV0dXJuIGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQuaW5jbHVkZXMoZmlsdGVyTm9ybWFsaXplZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdXBkYXRlQ29udGV4dHMuc2hhcmVkID0gc2hhcmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zb3J0ZWRBbHBoYSkge1xyXG4gICAgICAgIHVwZGF0ZUNvbnRleHRzID0gdGhpcy5zb3J0Q29udGV4dHNMaXN0KHVwZGF0ZUNvbnRleHRzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdXBkYXRlQ29udGV4dHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RmlsdGVyKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLnNob3dDb250ZXh0RmlsdGVyKSB7XHJcbiAgICAgIGNhc2UgQ29udGV4dExpc3RDb250cm9sc0VudW0uYWx3YXlzOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBjYXNlIENvbnRleHRMaXN0Q29udHJvbHNFbnVtLm5ldmVyOlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBsZXQgdG90YWxMZW5ndGggPSB0aGlzLmNvbnRleHRzLm91cnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuY29udGV4dHMucHVibGljXHJcbiAgICAgICAgICA/ICh0b3RhbExlbmd0aCArPSB0aGlzLmNvbnRleHRzLnB1YmxpYy5sZW5ndGgpXHJcbiAgICAgICAgICA6ICh0b3RhbExlbmd0aCArPSAwKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRzLnNoYXJlZFxyXG4gICAgICAgICAgPyAodG90YWxMZW5ndGggKz0gdGhpcy5jb250ZXh0cy5zaGFyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgOiAodG90YWxMZW5ndGggKz0gMCk7XHJcbiAgICAgICAgaWYgKHRvdGFsTGVuZ3RoID49IHRoaXMudGhyZXNob2xkVG9GaWx0ZXIpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzb3J0Q29udGV4dHNMaXN0KGNvbnRleHRzOiBDb250ZXh0c0xpc3QpIHtcclxuICAgIGlmIChjb250ZXh0cykge1xyXG4gICAgICBjb25zdCBjb250ZXh0c0xpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbnRleHRzKSk7XHJcbiAgICAgIGNvbnRleHRzTGlzdC5vdXJzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChjb250ZXh0c0xpc3Quc2hhcmVkKSB7XHJcbiAgICAgICAgY29udGV4dHNMaXN0LnNoYXJlZC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHRzTGlzdC5wdWJsaWMpIHtcclxuICAgICAgICBjb250ZXh0c0xpc3QucHVibGljLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZShhLnRpdGxlKSA8IHRoaXMubm9ybWFsaXplKGIudGl0bGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZShhLnRpdGxlKSA+IHRoaXMubm9ybWFsaXplKGIudGl0bGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbnRleHRzTGlzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5vcm1hbGl6ZShzdHI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHN0clxyXG4gICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXHJcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU29ydChzb3J0QWxwaGE6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc29ydGVkQWxwaGEgPSBzb3J0QWxwaGE7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpbHRlcigpIHtcclxuICAgIHRoaXMudGVybSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29udGV4dChlbXB0eT86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlhbG9nXHJcbiAgICAgIC5vcGVuKEJvb2ttYXJrRGlhbG9nQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogZmFsc2UgfSlcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgodGl0bGU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmICh0aXRsZSkge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGUuZW1pdCh7IHRpdGxlLCBlbXB0eSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGVybWlzc2lvbih1c2VyPyk6IENvbnRleHRVc2VyUGVybWlzc2lvbiB7XHJcbiAgICBpZiAodXNlcikge1xyXG4gICAgICBjb25zdCBwZXJtaXNzaW9uID0gdGhpcy5wZXJtaXNzaW9ucy5maW5kKChwKSA9PiBwLm5hbWUgPT09IHVzZXIubmFtZSk7XHJcbiAgICAgIHJldHVybiBwZXJtaXNzaW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlVG9nZ2xlQ2F0ZWdvcnkodXNlciwgcGFyZW50Pykge1xyXG4gICAgY29uc3QgcGVybWlzc2lvbiA9IHRoaXMuZ2V0UGVybWlzc2lvbih1c2VyKTtcclxuICAgIGlmIChwZXJtaXNzaW9uKSB7XHJcbiAgICAgIHBlcm1pc3Npb24uY2hlY2tlZCA9ICFwZXJtaXNzaW9uLmNoZWNrZWQ7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxyXG4gICAgICAgICdjb250ZXh0cy5wZXJtaXNzaW9ucy4nICsgcGVybWlzc2lvbi5uYW1lLFxyXG4gICAgICAgIHBlcm1pc3Npb24uY2hlY2tlZFxyXG4gICAgICApO1xyXG4gICAgICBwZXJtaXNzaW9uLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGxldCBpbmRldGVybWluYXRlID0gZmFsc2U7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgcGFyZW50LmNoaWxkcykge1xyXG4gICAgICAgIGNvbnN0IGNQZXJtaXNzaW9uID0gdGhpcy5nZXRQZXJtaXNzaW9uKGMpO1xyXG4gICAgICAgIGlmIChjUGVybWlzc2lvbi5jaGVja2VkICE9PSBwZXJtaXNzaW9uLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGluZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHBhcmVudFBlcm1pc3Npb24gPSB0aGlzLmdldFBlcm1pc3Npb24ocGFyZW50KTtcclxuICAgICAgaWYgKHBhcmVudFBlcm1pc3Npb24pIHtcclxuICAgICAgICBwYXJlbnRQZXJtaXNzaW9uLmNoZWNrZWQgPSBwZXJtaXNzaW9uLmNoZWNrZWQ7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoXHJcbiAgICAgICAgICAnY29udGV4dHMucGVybWlzc2lvbnMuJyArIHBhcmVudFBlcm1pc3Npb24ubmFtZSxcclxuICAgICAgICAgIHBlcm1pc3Npb24uY2hlY2tlZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcGFyZW50UGVybWlzc2lvbi5pbmRldGVybWluYXRlID0gaW5kZXRlcm1pbmF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh1c2VyLmNoaWxkcykge1xyXG4gICAgICBmb3IgKGNvbnN0IGMgb2YgdXNlci5jaGlsZHMpIHtcclxuICAgICAgICBjb25zdCBjaGlsZHJlblBlcm1pc3Npb24gPSB0aGlzLmdldFBlcm1pc3Npb24oYyk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY2hpbGRyZW5QZXJtaXNzaW9uICYmXHJcbiAgICAgICAgICBjaGlsZHJlblBlcm1pc3Npb24uY2hlY2tlZCAhPT0gcGVybWlzc2lvbi5jaGVja2VkXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjaGlsZHJlblBlcm1pc3Npb24uY2hlY2tlZCA9IHBlcm1pc3Npb24uY2hlY2tlZDtcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxyXG4gICAgICAgICAgICAnY29udGV4dHMucGVybWlzc2lvbnMuJyArIGNoaWxkcmVuUGVybWlzc2lvbi5uYW1lLFxyXG4gICAgICAgICAgICBwZXJtaXNzaW9uLmNoZWNrZWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWx0ZXJQZXJtaXNzaW9uc0NoYW5nZWQuZW1pdCh0aGlzLnBlcm1pc3Npb25zKTtcclxuICB9XHJcblxyXG4gIGhpZGVDb250ZXh0KGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xyXG4gICAgY29udGV4dC5oaWRkZW4gPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLnNob3dIaWRkZW4pIHtcclxuICAgICAgY29uc3QgY29udGV4dHM6IENvbnRleHRzTGlzdCA9IHsgb3VyczogW10sIHNoYXJlZDogW10sIHB1YmxpYzogW10gfTtcclxuICAgICAgY29udGV4dHMub3VycyA9IHRoaXMuY29udGV4dHMub3Vycy5maWx0ZXIoKGMpID0+IGMuaWQgIT09IGNvbnRleHQuaWQpO1xyXG4gICAgICBjb250ZXh0cy5zaGFyZWQgPSB0aGlzLmNvbnRleHRzLnNoYXJlZC5maWx0ZXIoKGMpID0+IGMuaWQgIT09IGNvbnRleHQuaWQpO1xyXG4gICAgICBjb250ZXh0cy5wdWJsaWMgPSB0aGlzLmNvbnRleHRzLnB1YmxpYy5maWx0ZXIoKGMpID0+IGMuaWQgIT09IGNvbnRleHQuaWQpO1xyXG4gICAgICB0aGlzLmNvbnRleHRzID0gY29udGV4dHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhpZGUuZW1pdChjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIHNob3dDb250ZXh0KGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xyXG4gICAgY29udGV4dC5oaWRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvdy5lbWl0KGNvbnRleHQpO1xyXG4gIH1cclxufVxyXG4iLCI8aWdvLWxpc3QgW25hdmlnYXRpb25dPVwidHJ1ZVwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGV4dC1maWx0ZXItY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwic2hvd0ZpbHRlcigpXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICAgICAgPG1hdC1sYWJlbD57e1xuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZmlsdGVyUGxhY2VIb2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5maWx0ZXJQbGFjZUhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0ZXJtXCJcbiAgICAgIC8+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgY2xhc3M9XCJjbGVhci1idXR0b25cIlxuICAgICAgICAqbmdJZj1cInRlcm0ubGVuZ3RoXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNsZWFyXCJcbiAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCIhc29ydGVkQWxwaGFcIlxuICAgICAgICBjbGFzcz1cInNvcnQtYWxwaGFcIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLnNvcnRBbHBoYWJldGljYWxseScgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTb3J0KHRydWUpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBzdmdJY29uPVwic29ydC1hbHBoYWJldGljYWwtdmFyaWFudFwiXG4gICAgICAgID48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic29ydGVkQWxwaGFcIlxuICAgICAgICBjbGFzcz1cInNvcnQtYWxwaGFcIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLnNvcnRDb250ZXh0T3JkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTb3J0KGZhbHNlKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwic29ydC12YXJpYW50LXJlbW92ZVwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGlnby1hY3Rpb25iYXJcbiAgICAgICAgKm5nSWY9XCJhdXRoLmF1dGhlbnRpY2F0ZWQgJiYgY29udGV4dENvbmZpZ3NcIlxuICAgICAgICBjbGFzcz1cImFkZC1jb250ZXh0LWJ1dHRvblwiXG4gICAgICAgIFtpY29uQ29sb3JdPVwiY29sb3JcIlxuICAgICAgICBbc3RvcmVdPVwiYWN0aW9uU3RvcmVcIlxuICAgICAgICBbd2l0aEljb25dPVwidHJ1ZVwiXG4gICAgICAgIGljb249XCJwbHVzXCJcbiAgICAgICAgW3dpdGhUaXRsZV09XCJhY3Rpb25iYXJNb2RlID09PSAnb3ZlcmxheSdcIlxuICAgICAgICBbaG9yaXpvbnRhbF09XCJmYWxzZVwiXG4gICAgICAgIFttb2RlXT1cImFjdGlvbmJhck1vZGVcIlxuICAgICAgPlxuICAgICAgPC9pZ28tYWN0aW9uYmFyPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiYXV0aC5hdXRoZW50aWNhdGVkICYmIGNvbnRleHRDb25maWdzXCJcbiAgICAgICAgY2xhc3M9XCJ1c2Vycy1maWx0ZXJcIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmZpbHRlclVzZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJhY2NvdW50TWVudVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwiZmlsdGVyLW1lbnVcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bWF0LW1lbnUgI2FjY291bnRNZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJzXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCIhdXNlci5jaGlsZHM7IGVsc2Ugd2l0aFN1Yk1lbnVcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgY2xhc3M9XCJwcm9maWwtbWVudVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRQZXJtaXNzaW9uKHVzZXIpLmNoZWNrZWRcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJnZXRQZXJtaXNzaW9uKHVzZXIpLmluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVUb2dnbGVDYXRlZ29yeSh1c2VyKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDxzcGFuPnt7IHVzZXIudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICN3aXRoU3ViTWVudT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwic3ViQWNjb3VudE1lbnVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInByb2ZpbC1tZW51XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFBlcm1pc3Npb24odXNlcikuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0UGVybWlzc2lvbih1c2VyKS5pbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVRvZ2dsZUNhdGVnb3J5KHVzZXIpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdXNlci50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICA8bWF0LW1lbnUgI3N1YkFjY291bnRNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiB1c2VyLmNoaWxkc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWwtbWVudVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJnZXRQZXJtaXNzaW9uKGNoaWxkKS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVUb2dnbGVDYXRlZ29yeShjaGlsZCwgdXNlcilcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJwcm9maWwtbWVudVwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInNob3dIaWRkZW5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInNob3dIaWRkZW5Db250ZXh0cy5lbWl0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5zaG93SGlkZGVuJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L21hdC1tZW51PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGVcbiAgICBuZ0ZvclxuICAgIGxldC1ncm91cENvbnRleHRzXG4gICAgW25nRm9yT2ZdPVwiJGFueShjb250ZXh0cyQgfCBhc3luYykgfCBrZXl2YWx1ZVwiXG4gID5cbiAgICA8aWdvLWNvbGxhcHNpYmxlXG4gICAgICAqbmdJZj1cIiRhbnkoZ3JvdXBDb250ZXh0cykudmFsdWUubGVuZ3RoICYmIGF1dGguYXV0aGVudGljYXRlZFwiXG4gICAgICBbdGl0bGVdPVwidGl0bGVNYXBwaW5nWyRhbnkoZ3JvdXBDb250ZXh0cykua2V5XSB8IHRyYW5zbGF0ZVwiXG4gICAgICBbY29sbGFwc2VkXT1cIiRhbnkoY29sbGFwc2VkW3RpdGxlTWFwcGluZ1skYW55KGdyb3VwQ29udGV4dHMpLmtleV1dKVwiXG4gICAgICAodG9nZ2xlKT1cImNvbGxhcHNlZFt0aXRsZU1hcHBpbmdbJGFueShncm91cENvbnRleHRzKS5rZXldXSA9ICRhbnkoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb250ZXh0IFtuZ0Zvck9mXT1cIiRhbnkoZ3JvdXBDb250ZXh0cykudmFsdWVcIj5cbiAgICAgICAgPGlnby1jb250ZXh0LWl0ZW1cbiAgICAgICAgICBpZ29MaXN0SXRlbVxuICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRDb250ZXh0ICYmIHNlbGVjdGVkQ29udGV4dC51cmkgPT09IGNvbnRleHQudXJpXCJcbiAgICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgICBbZGVmYXVsdF09XCJcbiAgICAgICAgICAgIGNvbnRleHQuaWQgJiZcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbnRleHRJZCAmJlxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29udGV4dElkID09PSBjb250ZXh0LmlkXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoZWRpdCk9XCJlZGl0LmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChkZWxldGUpPVwiZGVsZXRlLmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChjbG9uZSk9XCJjbG9uZS5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAoc2F2ZSk9XCJzYXZlLmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChoaWRlKT1cImhpZGVDb250ZXh0KGNvbnRleHQpXCJcbiAgICAgICAgICAoc2hvdyk9XCJzaG93Q29udGV4dChjb250ZXh0KVwiXG4gICAgICAgICAgKGZhdm9yaXRlKT1cImZhdm9yaXRlLmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChtYW5hZ2VUb29scyk9XCJtYW5hZ2VUb29scy5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAobWFuYWdlUGVybWlzc2lvbnMpPVwibWFuYWdlUGVybWlzc2lvbnMuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3QuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKHVuc2VsZWN0KT1cInVuc2VsZWN0LmVtaXQoY29udGV4dClcIlxuICAgICAgICA+XG4gICAgICAgIDwvaWdvLWNvbnRleHQtaXRlbT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pZ28tY29sbGFwc2libGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ0lmPVwiJGFueShncm91cENvbnRleHRzKS52YWx1ZS5sZW5ndGggJiYgIWF1dGguYXV0aGVudGljYXRlZFwiXG4gICAgICBuZ0ZvclxuICAgICAgbGV0LWNvbnRleHRcbiAgICAgIFtuZ0Zvck9mXT1cIiRhbnkoZ3JvdXBDb250ZXh0cykudmFsdWVcIlxuICAgID5cbiAgICAgIDxpZ28tY29udGV4dC1pdGVtXG4gICAgICAgIGlnb0xpc3RJdGVtXG4gICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgW3Nob3dGYXZvcml0ZV09XCJcbiAgICAgICAgICBjb25maWdTZXJ2aWNlLmdldENvbmZpZygnZmF2b3JpdGVDb250ZXh0NE5vbkF1dGhlbnRpY2F0ZWQnKVxuICAgICAgICBcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRDb250ZXh0ICYmIHNlbGVjdGVkQ29udGV4dC51cmkgPT09IGNvbnRleHQudXJpXCJcbiAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgICAgIFtkZWZhdWx0XT1cIlxuICAgICAgICAgIGNvbnRleHRDb25maWdzXG4gICAgICAgICAgICA/IGRlZmF1bHRDb250ZXh0SWQgPT09IGNvbnRleHQuaWRcbiAgICAgICAgICAgIDogZGVmYXVsdENvbnRleHRJZCA9PT0gY29udGV4dC51cmlcbiAgICAgICAgXCJcbiAgICAgICAgKGZhdm9yaXRlKT1cImZhdm9yaXRlLmVtaXQoY29udGV4dClcIlxuICAgICAgICAoc2VsZWN0KT1cInNlbGVjdC5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgKHVuc2VsZWN0KT1cInVuc2VsZWN0LmVtaXQoY29udGV4dClcIlxuICAgICAgPlxuICAgICAgPC9pZ28tY29udGV4dC1pdGVtPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdiAqbmdJZj1cImlzRW1wdHlcIiBjbGFzcz1cIm5vLXJlc3VsdFwiPlxuICAgIHt7ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5ub1Jlc3VsdCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9kaXY+XG48L2lnby1saXN0PlxuIl19
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1saXN0L2NvbnRleHQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL2NvbnRleHQtbGlzdC9jb250ZXh0LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxD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ZixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csd0JBQXdCO3NCQUFqQyxNQUFNO2dCQXdCSCxJQUFJO3NCQURQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIEtleVZhbHVlUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BpZ28yL2F1dGgnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGlvblN0b3JlLFxyXG4gIEFjdGlvbmJhckNvbXBvbmVudCxcclxuICBBY3Rpb25iYXJNb2RlLFxyXG4gIENvbGxhcHNpYmxlQ29tcG9uZW50LFxyXG4gIExpc3RDb21wb25lbnQsXHJcbiAgTGlzdEl0ZW1EaXJlY3RpdmVcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xyXG5pbXBvcnQgdHlwZSB7IElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQm9va21hcmtEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb250ZXh0LW1hcC1idXR0b24vYm9va21hcmstYnV0dG9uL2Jvb2ttYXJrLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZXh0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbnRleHQtaXRlbS9jb250ZXh0LWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBDb250ZXh0UHJvZmlscyxcclxuICBDb250ZXh0U2VydmljZU9wdGlvbnMsXHJcbiAgQ29udGV4dFVzZXJQZXJtaXNzaW9uLFxyXG4gIENvbnRleHRzTGlzdCxcclxuICBEZXRhaWxlZENvbnRleHRcclxufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0TGlzdENvbnRyb2xzRW51bSB9IGZyb20gJy4vY29udGV4dC1saXN0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tY29udGV4dC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250ZXh0LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIExpc3RDb21wb25lbnQsXHJcbiAgICBOZ0lmLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgQWN0aW9uYmFyQ29tcG9uZW50LFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE5nRm9yLFxyXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXHJcbiAgICBDb2xsYXBzaWJsZUNvbXBvbmVudCxcclxuICAgIENvbnRleHRJdGVtQ29tcG9uZW50LFxyXG4gICAgTGlzdEl0ZW1EaXJlY3RpdmUsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBLZXlWYWx1ZVBpcGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwdWJsaWMgY29udGV4dENvbmZpZ3M6IENvbnRleHRTZXJ2aWNlT3B0aW9ucztcclxuICBwcml2YXRlIGNvbnRleHRzSW5pdGlhbDogQ29udGV4dHNMaXN0ID0geyBvdXJzOiBbXSB9O1xyXG4gIGNvbnRleHRzJDogQmVoYXZpb3JTdWJqZWN0PENvbnRleHRzTGlzdD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgdGhpcy5jb250ZXh0c0luaXRpYWxcclxuICApO1xyXG5cclxuICBjaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgY29udGV4dHMoKTogQ29udGV4dHNMaXN0IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0cztcclxuICB9XHJcbiAgc2V0IGNvbnRleHRzKHZhbHVlOiBDb250ZXh0c0xpc3QpIHtcclxuICAgIHRoaXMuX2NvbnRleHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLm5leHQoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY29udGV4dHM6IENvbnRleHRzTGlzdCA9IHsgb3VyczogW10gfTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDb250ZXh0OiBEZXRhaWxlZENvbnRleHQ7XHJcblxyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBkZWZhdWx0Q29udGV4dElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0Q29uZmlnc1xyXG4gICAgICA/IHRoaXMuX2RlZmF1bHRDb250ZXh0SWRcclxuICAgICAgOiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ2Zhdm9yaXRlLmNvbnRleHQudXJpJykgYXMgc3RyaW5nKSB8fFxyXG4gICAgICAgICAgdGhpcy5fZGVmYXVsdENvbnRleHRJZDtcclxuICB9XHJcbiAgc2V0IGRlZmF1bHRDb250ZXh0SWQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fZGVmYXVsdENvbnRleHRJZCA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9kZWZhdWx0Q29udGV4dElkOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjb2xsYXBzZWQ6IHsgY29udGV4dFNjb3BlIH1bXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIHVuc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgY2xvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgY3JlYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRpdGxlOiBzdHJpbmc7IGVtcHR5OiBib29sZWFuIH0+KCk7XHJcbiAgQE91dHB1dCgpIGhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPERldGFpbGVkQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgc2hvdyA9IG5ldyBFdmVudEVtaXR0ZXI8RGV0YWlsZWRDb250ZXh0PigpO1xyXG4gIEBPdXRwdXQoKSBzaG93SGlkZGVuQ29udGV4dHMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGZhdm9yaXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIG1hbmFnZVBlcm1pc3Npb25zID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIG1hbmFnZVRvb2xzID0gbmV3IEV2ZW50RW1pdHRlcjxEZXRhaWxlZENvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlclBlcm1pc3Npb25zQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XHJcbiAgICBDb250ZXh0VXNlclBlcm1pc3Npb25bXVxyXG4gID4oKTtcclxuXHJcbiAgcHVibGljIHRpdGxlTWFwcGluZyA9IHtcclxuICAgIG91cnM6ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5vdXJDb250ZXh0cycsXHJcbiAgICBzaGFyZWQ6ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5zaGFyZWRDb250ZXh0cycsXHJcbiAgICBwdWJsaWM6ICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5wdWJsaWNDb250ZXh0cydcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdXNlcnM6IENvbnRleHRQcm9maWxzW107XHJcbiAgcHVibGljIHBlcm1pc3Npb25zOiBDb250ZXh0VXNlclBlcm1pc3Npb25bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgYWN0aW9uU3RvcmUgPSBuZXcgQWN0aW9uU3RvcmUoW10pO1xyXG4gIHB1YmxpYyBhY3Rpb25iYXJNb2RlID0gQWN0aW9uYmFyTW9kZS5PdmVybGF5O1xyXG5cclxuICBwdWJsaWMgY29sb3IgPSAncHJpbWFyeSc7XHJcblxyXG4gIHB1YmxpYyBzaG93SGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRleHQgZmlsdGVyIHRlcm1cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCB0ZXJtKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3Rlcm0gPSB2YWx1ZTtcclxuICAgIHRoaXMubmV4dCgpO1xyXG4gIH1cclxuICBnZXQgdGVybSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rlcm07XHJcbiAgfVxyXG4gIHB1YmxpYyBfdGVybTogc3RyaW5nID0gJyc7XHJcblxyXG4gIGdldCBzb3J0ZWRBbHBoYSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0ZWRBbHBoYTtcclxuICB9XHJcbiAgc2V0IHNvcnRlZEFscGhhKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9zb3J0ZWRBbHBoYSA9IHZhbHVlO1xyXG4gICAgdGhpcy5uZXh0KCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NvcnRlZEFscGhhOiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgc2hvd0NvbnRleHRGaWx0ZXIgPSBDb250ZXh0TGlzdENvbnRyb2xzRW51bS5hbHdheXM7XHJcblxyXG4gIHB1YmxpYyB0aHJlc2hvbGRUb0ZpbHRlciA9IDU7XHJcblxyXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgIXRoaXMuY29udGV4dHMub3Vycy5sZW5ndGggJiZcclxuICAgICAgIXRoaXMuY29udGV4dHMucHVibGljPy5sZW5ndGggJiZcclxuICAgICAgIXRoaXMuY29udGV4dHMuc2hhcmVkPy5sZW5ndGhcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgYXV0aDogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvbnRleHRDb25maWdzID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnY29udGV4dCcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNoYW5nZSQkID0gdGhpcy5jaGFuZ2UkXHJcbiAgICAgIC5waXBlKGRlYm91bmNlKCgpID0+IHRpbWVyKDUwKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGV4dHMkLm5leHQodGhpcy5maWx0ZXJDb250ZXh0c0xpc3QodGhpcy5jb250ZXh0cykpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFjdGlvblN0b3JlLmxvYWQoW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6ICdlbXB0eUNvbnRleHQnLFxyXG4gICAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lbXB0eUNvbnRleHQnXHJcbiAgICAgICAgKSxcclxuICAgICAgICBpY29uOiAnc3RhcicsXHJcbiAgICAgICAgdG9vbHRpcDogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZW1wdHlDb250ZXh0VG9vbHRpcCdcclxuICAgICAgICApLFxyXG4gICAgICAgIGhhbmRsZXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlQ29udGV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogJ2NvbnRleHRGcm9tTWFwJyxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuY29udGV4dE1hcCdcclxuICAgICAgICApLFxyXG4gICAgICAgIGljb246ICdtYXAnLFxyXG4gICAgICAgIHRvb2x0aXA6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmNvbnRleHRNYXBUb29sdGlwJ1xyXG4gICAgICAgICksXHJcbiAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVDb250ZXh0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuZXh0KCkge1xyXG4gICAgdGhpcy5jaGFuZ2UkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyQ29udGV4dHNMaXN0KGNvbnRleHRzOiBDb250ZXh0c0xpc3QpOiBDb250ZXh0c0xpc3Qge1xyXG4gICAgaWYgKHRoaXMudGVybSA9PT0gJycpIHtcclxuICAgICAgaWYgKHRoaXMuc29ydGVkQWxwaGEpIHtcclxuICAgICAgICBjb250ZXh0cyA9IHRoaXMuc29ydENvbnRleHRzTGlzdChjb250ZXh0cyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbnRleHRzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgb3VycyA9IGNvbnRleHRzLm91cnMuZmlsdGVyKChjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyTm9ybWFsaXplZCA9IHRoaXMudGVybVxyXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQgPSBjb250ZXh0LnRpdGxlXHJcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcclxuICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQuaW5jbHVkZXMoZmlsdGVyTm9ybWFsaXplZCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbGV0IHVwZGF0ZUNvbnRleHRzOiBDb250ZXh0c0xpc3QgPSB7XHJcbiAgICAgICAgb3Vyc1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29udGV4dHMucHVibGljKSB7XHJcbiAgICAgICAgY29uc3QgcHVibGljcyA9IGNvbnRleHRzLnB1YmxpYy5maWx0ZXIoKGNvbnRleHQpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGZpbHRlck5vcm1hbGl6ZWQgPSB0aGlzLnRlcm1cclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcclxuICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcclxuICAgICAgICAgIGNvbnN0IGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQgPSBjb250ZXh0LnRpdGxlXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgICByZXR1cm4gY29udGV4dFRpdGxlTm9ybWFsaXplZC5pbmNsdWRlcyhmaWx0ZXJOb3JtYWxpemVkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB1cGRhdGVDb250ZXh0cy5wdWJsaWMgPSBwdWJsaWNzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb250ZXh0cy5zaGFyZWQpIHtcclxuICAgICAgICBjb25zdCBzaGFyZWQgPSBjb250ZXh0cy5zaGFyZWQuZmlsdGVyKChjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJOb3JtYWxpemVkID0gdGhpcy50ZXJtXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgICBjb25zdCBjb250ZXh0VGl0bGVOb3JtYWxpemVkID0gY29udGV4dC50aXRsZVxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpO1xyXG4gICAgICAgICAgcmV0dXJuIGNvbnRleHRUaXRsZU5vcm1hbGl6ZWQuaW5jbHVkZXMoZmlsdGVyTm9ybWFsaXplZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdXBkYXRlQ29udGV4dHMuc2hhcmVkID0gc2hhcmVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zb3J0ZWRBbHBoYSkge1xyXG4gICAgICAgIHVwZGF0ZUNvbnRleHRzID0gdGhpcy5zb3J0Q29udGV4dHNMaXN0KHVwZGF0ZUNvbnRleHRzKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdXBkYXRlQ29udGV4dHM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93RmlsdGVyKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLnNob3dDb250ZXh0RmlsdGVyKSB7XHJcbiAgICAgIGNhc2UgQ29udGV4dExpc3RDb250cm9sc0VudW0uYWx3YXlzOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBjYXNlIENvbnRleHRMaXN0Q29udHJvbHNFbnVtLm5ldmVyOlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBsZXQgdG90YWxMZW5ndGggPSB0aGlzLmNvbnRleHRzLm91cnMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuY29udGV4dHMucHVibGljXHJcbiAgICAgICAgICA/ICh0b3RhbExlbmd0aCArPSB0aGlzLmNvbnRleHRzLnB1YmxpYy5sZW5ndGgpXHJcbiAgICAgICAgICA6ICh0b3RhbExlbmd0aCArPSAwKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRzLnNoYXJlZFxyXG4gICAgICAgICAgPyAodG90YWxMZW5ndGggKz0gdGhpcy5jb250ZXh0cy5zaGFyZWQubGVuZ3RoKVxyXG4gICAgICAgICAgOiAodG90YWxMZW5ndGggKz0gMCk7XHJcbiAgICAgICAgaWYgKHRvdGFsTGVuZ3RoID49IHRoaXMudGhyZXNob2xkVG9GaWx0ZXIpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzb3J0Q29udGV4dHNMaXN0KGNvbnRleHRzOiBDb250ZXh0c0xpc3QpIHtcclxuICAgIGlmIChjb250ZXh0cykge1xyXG4gICAgICBjb25zdCBjb250ZXh0c0xpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbnRleHRzKSk7XHJcbiAgICAgIGNvbnRleHRzTGlzdC5vdXJzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChjb250ZXh0c0xpc3Quc2hhcmVkKSB7XHJcbiAgICAgICAgY29udGV4dHNMaXN0LnNoYXJlZC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPCB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5ub3JtYWxpemUoYS50aXRsZSkgPiB0aGlzLm5vcm1hbGl6ZShiLnRpdGxlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHRzTGlzdC5wdWJsaWMpIHtcclxuICAgICAgICBjb250ZXh0c0xpc3QucHVibGljLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZShhLnRpdGxlKSA8IHRoaXMubm9ybWFsaXplKGIudGl0bGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm5vcm1hbGl6ZShhLnRpdGxlKSA+IHRoaXMubm9ybWFsaXplKGIudGl0bGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNvbnRleHRzTGlzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5vcm1hbGl6ZShzdHI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHN0clxyXG4gICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXHJcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlU29ydCgpIHtcclxuICAgIHRoaXMuc29ydGVkQWxwaGEgPSAhdGhpcy5zb3J0ZWRBbHBoYTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVyKCkge1xyXG4gICAgdGhpcy50ZXJtID0gJyc7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb250ZXh0KGVtcHR5PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaWFsb2dcclxuICAgICAgLm9wZW4oQm9va21hcmtEaWFsb2dDb21wb25lbnQsIHsgZGlzYWJsZUNsb3NlOiBmYWxzZSB9KVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0aXRsZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRpdGxlKSB7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZS5lbWl0KHsgdGl0bGUsIGVtcHR5IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQZXJtaXNzaW9uKHVzZXI/KTogQ29udGV4dFVzZXJQZXJtaXNzaW9uIHtcclxuICAgIGlmICh1c2VyKSB7XHJcbiAgICAgIGNvbnN0IHBlcm1pc3Npb24gPSB0aGlzLnBlcm1pc3Npb25zLmZpbmQoKHApID0+IHAubmFtZSA9PT0gdXNlci5uYW1lKTtcclxuICAgICAgcmV0dXJuIHBlcm1pc3Npb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVUb2dnbGVDYXRlZ29yeSh1c2VyLCBwYXJlbnQ/KSB7XHJcbiAgICBjb25zdCBwZXJtaXNzaW9uID0gdGhpcy5nZXRQZXJtaXNzaW9uKHVzZXIpO1xyXG4gICAgaWYgKHBlcm1pc3Npb24pIHtcclxuICAgICAgcGVybWlzc2lvbi5jaGVja2VkID0gIXBlcm1pc3Npb24uY2hlY2tlZDtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoXHJcbiAgICAgICAgJ2NvbnRleHRzLnBlcm1pc3Npb25zLicgKyBwZXJtaXNzaW9uLm5hbWUsXHJcbiAgICAgICAgcGVybWlzc2lvbi5jaGVja2VkXHJcbiAgICAgICk7XHJcbiAgICAgIHBlcm1pc3Npb24uaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgbGV0IGluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgYyBvZiBwYXJlbnQuY2hpbGRzKSB7XHJcbiAgICAgICAgY29uc3QgY1Blcm1pc3Npb24gPSB0aGlzLmdldFBlcm1pc3Npb24oYyk7XHJcbiAgICAgICAgaWYgKGNQZXJtaXNzaW9uLmNoZWNrZWQgIT09IHBlcm1pc3Npb24uY2hlY2tlZCkge1xyXG4gICAgICAgICAgaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyZW50UGVybWlzc2lvbiA9IHRoaXMuZ2V0UGVybWlzc2lvbihwYXJlbnQpO1xyXG4gICAgICBpZiAocGFyZW50UGVybWlzc2lvbikge1xyXG4gICAgICAgIHBhcmVudFBlcm1pc3Npb24uY2hlY2tlZCA9IHBlcm1pc3Npb24uY2hlY2tlZDtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldChcclxuICAgICAgICAgICdjb250ZXh0cy5wZXJtaXNzaW9ucy4nICsgcGFyZW50UGVybWlzc2lvbi5uYW1lLFxyXG4gICAgICAgICAgcGVybWlzc2lvbi5jaGVja2VkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBwYXJlbnRQZXJtaXNzaW9uLmluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHVzZXIuY2hpbGRzKSB7XHJcbiAgICAgIGZvciAoY29uc3QgYyBvZiB1c2VyLmNoaWxkcykge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuUGVybWlzc2lvbiA9IHRoaXMuZ2V0UGVybWlzc2lvbihjKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBjaGlsZHJlblBlcm1pc3Npb24gJiZcclxuICAgICAgICAgIGNoaWxkcmVuUGVybWlzc2lvbi5jaGVja2VkICE9PSBwZXJtaXNzaW9uLmNoZWNrZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNoaWxkcmVuUGVybWlzc2lvbi5jaGVja2VkID0gcGVybWlzc2lvbi5jaGVja2VkO1xyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoXHJcbiAgICAgICAgICAgICdjb250ZXh0cy5wZXJtaXNzaW9ucy4nICsgY2hpbGRyZW5QZXJtaXNzaW9uLm5hbWUsXHJcbiAgICAgICAgICAgIHBlcm1pc3Npb24uY2hlY2tlZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbHRlclBlcm1pc3Npb25zQ2hhbmdlZC5lbWl0KHRoaXMucGVybWlzc2lvbnMpO1xyXG4gIH1cclxuXHJcbiAgaGlkZUNvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmhpZGRlbiA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0hpZGRlbikge1xyXG4gICAgICBjb25zdCBjb250ZXh0czogQ29udGV4dHNMaXN0ID0geyBvdXJzOiBbXSwgc2hhcmVkOiBbXSwgcHVibGljOiBbXSB9O1xyXG4gICAgICBjb250ZXh0cy5vdXJzID0gdGhpcy5jb250ZXh0cy5vdXJzLmZpbHRlcigoYykgPT4gYy5pZCAhPT0gY29udGV4dC5pZCk7XHJcbiAgICAgIGNvbnRleHRzLnNoYXJlZCA9IHRoaXMuY29udGV4dHMuc2hhcmVkLmZpbHRlcigoYykgPT4gYy5pZCAhPT0gY29udGV4dC5pZCk7XHJcbiAgICAgIGNvbnRleHRzLnB1YmxpYyA9IHRoaXMuY29udGV4dHMucHVibGljLmZpbHRlcigoYykgPT4gYy5pZCAhPT0gY29udGV4dC5pZCk7XHJcbiAgICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcclxuICAgIH1cclxuICAgIHRoaXMuaGlkZS5lbWl0KGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XHJcbiAgICBjb250ZXh0LmhpZGRlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93LmVtaXQoY29udGV4dCk7XHJcbiAgfVxyXG59XHJcbiIsIjxpZ28tbGlzdCBbbmF2aWdhdGlvbl09XCJ0cnVlXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250ZXh0LWZpbHRlci1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJzaG93RmlsdGVyKClcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCI+XG4gICAgICA8bWF0LWxhYmVsPnt7XG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5maWx0ZXJQbGFjZUhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmZpbHRlclBsYWNlSG9sZGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInRlcm1cIlxuICAgICAgLz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICBjbGFzcz1cImNsZWFyLWJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwidGVybS5sZW5ndGhcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic29ydC1hbHBoYVwiXG4gICAgICAgIFtjbGFzcy4tLWFjdGl2ZV09XCJzb3J0ZWRBbHBoYVwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuc29ydEFscGhhYmV0aWNhbGx5JyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNvcnQoKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIj5zb3J0X2J5X2FscGhhPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aWdvLWFjdGlvbmJhclxuICAgICAgICAqbmdJZj1cImF1dGguYXV0aGVudGljYXRlZCAmJiBjb250ZXh0Q29uZmlnc1wiXG4gICAgICAgIGNsYXNzPVwiYWRkLWNvbnRleHQtYnV0dG9uXCJcbiAgICAgICAgW2ljb25Db2xvcl09XCJjb2xvclwiXG4gICAgICAgIFtzdG9yZV09XCJhY3Rpb25TdG9yZVwiXG4gICAgICAgIFt3aXRoSWNvbl09XCJ0cnVlXCJcbiAgICAgICAgaWNvbj1cImFkZFwiXG4gICAgICAgIFt3aXRoVGl0bGVdPVwiYWN0aW9uYmFyTW9kZSA9PT0gJ292ZXJsYXknXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwiZmFsc2VcIlxuICAgICAgICBbbW9kZV09XCJhY3Rpb25iYXJNb2RlXCJcbiAgICAgID5cbiAgICAgIDwvaWdvLWFjdGlvbmJhcj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImF1dGguYXV0aGVudGljYXRlZCAmJiBjb250ZXh0Q29uZmlnc1wiXG4gICAgICAgIGNsYXNzPVwidXNlcnMtZmlsdGVyXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5maWx0ZXJVc2VyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWNjb3VudE1lbnVcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCI+Zml0bGVyX2FsdDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxtYXQtbWVudSAjYWNjb3VudE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlcnNcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiF1c2VyLmNoaWxkczsgZWxzZSB3aXRoU3ViTWVudVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBjbGFzcz1cInByb2ZpbC1tZW51XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFBlcm1pc3Npb24odXNlcikuY2hlY2tlZFwiXG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImdldFBlcm1pc3Npb24odXNlcikuaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVRvZ2dsZUNhdGVnb3J5KHVzZXIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPHNwYW4+e3sgdXNlci50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3dpdGhTdWJNZW51PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJzdWJBY2NvdW50TWVudVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsLW1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0UGVybWlzc2lvbih1c2VyKS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJnZXRQZXJtaXNzaW9uKHVzZXIpLmluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlVG9nZ2xlQ2F0ZWdvcnkodXNlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8c3Bhbj57eyB1c2VyLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjc3ViQWNjb3VudE1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIHVzZXIuY2hpbGRzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInByb2ZpbC1tZW51XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFBlcm1pc3Npb24oY2hpbGQpLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVRvZ2dsZUNhdGVnb3J5KGNoaWxkLCB1c2VyKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY2hpbGQudGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInByb2ZpbC1tZW51XCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgW2NoZWNrZWRdPVwic2hvd0hpZGRlblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwic2hvd0hpZGRlbkNvbnRleHRzLmVtaXQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLnNob3dIaWRkZW4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZVxuICAgIG5nRm9yXG4gICAgbGV0LWdyb3VwQ29udGV4dHNcbiAgICBbbmdGb3JPZl09XCIkYW55KGNvbnRleHRzJCB8IGFzeW5jKSB8IGtleXZhbHVlXCJcbiAgPlxuICAgIDxpZ28tY29sbGFwc2libGVcbiAgICAgICpuZ0lmPVwiJGFueShncm91cENvbnRleHRzKS52YWx1ZS5sZW5ndGggJiYgYXV0aC5hdXRoZW50aWNhdGVkXCJcbiAgICAgIFt0aXRsZV09XCJ0aXRsZU1hcHBpbmdbJGFueShncm91cENvbnRleHRzKS5rZXldIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtjb2xsYXBzZWRdPVwiJGFueShjb2xsYXBzZWRbdGl0bGVNYXBwaW5nWyRhbnkoZ3JvdXBDb250ZXh0cykua2V5XV0pXCJcbiAgICAgICh0b2dnbGUpPVwiY29sbGFwc2VkW3RpdGxlTWFwcGluZ1skYW55KGdyb3VwQ29udGV4dHMpLmtleV1dID0gJGFueSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNvbnRleHQgW25nRm9yT2ZdPVwiJGFueShncm91cENvbnRleHRzKS52YWx1ZVwiPlxuICAgICAgICA8aWdvLWNvbnRleHQtaXRlbVxuICAgICAgICAgIGlnb0xpc3RJdGVtXG4gICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZENvbnRleHQgJiYgc2VsZWN0ZWRDb250ZXh0LnVyaSA9PT0gY29udGV4dC51cmlcIlxuICAgICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICAgIFtkZWZhdWx0XT1cIlxuICAgICAgICAgICAgY29udGV4dC5pZCAmJlxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29udGV4dElkICYmXG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb250ZXh0SWQgPT09IGNvbnRleHQuaWRcbiAgICAgICAgICBcIlxuICAgICAgICAgIChlZGl0KT1cImVkaXQuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKGRlbGV0ZSk9XCJkZWxldGUuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKGNsb25lKT1cImNsb25lLmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChzYXZlKT1cInNhdmUuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKGhpZGUpPVwiaGlkZUNvbnRleHQoY29udGV4dClcIlxuICAgICAgICAgIChzaG93KT1cInNob3dDb250ZXh0KGNvbnRleHQpXCJcbiAgICAgICAgICAoZmF2b3JpdGUpPVwiZmF2b3JpdGUuZW1pdChjb250ZXh0KVwiXG4gICAgICAgICAgKG1hbmFnZVRvb2xzKT1cIm1hbmFnZVRvb2xzLmVtaXQoY29udGV4dClcIlxuICAgICAgICAgIChtYW5hZ2VQZXJtaXNzaW9ucyk9XCJtYW5hZ2VQZXJtaXNzaW9ucy5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAoc2VsZWN0KT1cInNlbGVjdC5lbWl0KGNvbnRleHQpXCJcbiAgICAgICAgICAodW5zZWxlY3QpPVwidW5zZWxlY3QuZW1pdChjb250ZXh0KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9pZ28tY29udGV4dC1pdGVtPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lnby1jb2xsYXBzaWJsZT5cblxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nSWY9XCIkYW55KGdyb3VwQ29udGV4dHMpLnZhbHVlLmxlbmd0aCAmJiAhYXV0aC5hdXRoZW50aWNhdGVkXCJcbiAgICAgIG5nRm9yXG4gICAgICBsZXQtY29udGV4dFxuICAgICAgW25nRm9yT2ZdPVwiJGFueShncm91cENvbnRleHRzKS52YWx1ZVwiXG4gICAgPlxuICAgICAgPGlnby1jb250ZXh0LWl0ZW1cbiAgICAgICAgaWdvTGlzdEl0ZW1cbiAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICBbc2hvd0Zhdm9yaXRlXT1cIlxuICAgICAgICAgIGNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdmYXZvcml0ZUNvbnRleHQ0Tm9uQXV0aGVudGljYXRlZCcpXG4gICAgICAgIFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZENvbnRleHQgJiYgc2VsZWN0ZWRDb250ZXh0LnVyaSA9PT0gY29udGV4dC51cmlcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgW2RlZmF1bHRdPVwiXG4gICAgICAgICAgY29udGV4dENvbmZpZ3NcbiAgICAgICAgICAgID8gZGVmYXVsdENvbnRleHRJZCA9PT0gY29udGV4dC5pZFxuICAgICAgICAgICAgOiBkZWZhdWx0Q29udGV4dElkID09PSBjb250ZXh0LnVyaVxuICAgICAgICBcIlxuICAgICAgICAoZmF2b3JpdGUpPVwiZmF2b3JpdGUuZW1pdChjb250ZXh0KVwiXG4gICAgICAgIChzZWxlY3QpPVwic2VsZWN0LmVtaXQoY29udGV4dClcIlxuICAgICAgICAodW5zZWxlY3QpPVwidW5zZWxlY3QuZW1pdChjb250ZXh0KVwiXG4gICAgICA+XG4gICAgICA8L2lnby1jb250ZXh0LWl0ZW0+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2ICpuZ0lmPVwiaXNFbXB0eVwiIGNsYXNzPVwibm8tcmVzdWx0XCI+XG4gICAge3sgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLm5vUmVzdWx0JyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbjwvaWdvLWxpc3Q+XG4iXX0=
@@ -74,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
74
74
  ]
75
75
  }]
76
76
  }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tYW5hZ2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1tYW5hZ2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFckU7O0dBRUc7QUEyQkgsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsdUJBQXVCO1NBQ2xDLENBQUM7SUFDSixDQUFDO3VHQUxVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLFlBeEJoQyxvQkFBb0I7WUFDcEIsMkJBQTJCO1lBQzNCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQiwyQkFBMkI7WUFDM0Isa0NBQWtDO1lBQ2xDLHFCQUFxQjtZQUNyQixtQkFBbUIsYUFHbkIsb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0IsMkJBQTJCO1lBQzNCLGtDQUFrQztZQUNsQyxxQkFBcUI7WUFDckIsbUJBQW1CO3dHQUdWLHVCQUF1QixZQXhCaEMsb0JBQW9CO1lBRXBCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBRXBCLDJCQUEyQjs7MkZBa0JsQix1QkFBdUI7a0JBMUJuQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMscUJBQXFCO3dCQUNyQixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMscUJBQXFCO3dCQUNyQixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbnRleHRFZGl0QmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1lZGl0L2NvbnRleHQtZWRpdC1iaW5kaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRleHRFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWVkaXQvY29udGV4dC1lZGl0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRleHRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWZvcm0vY29udGV4dC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRleHRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWl0ZW0vY29udGV4dC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRleHRMaXN0QmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1saXN0L2NvbnRleHQtbGlzdC1iaW5kaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRleHRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWxpc3QvY29udGV4dC1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbnRleHRQZXJtaXNzaW9uc0JpbmRpbmdEaXJlY3RpdmUgfSBmcm9tICcuL2NvbnRleHQtcGVybWlzc2lvbnMvY29udGV4dC1wZXJtaXNzaW9ucy1iaW5kaW5nLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbnRleHRQZXJtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1wZXJtaXNzaW9ucy9jb250ZXh0LXBlcm1pc3Npb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheWVyQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL2xheWVyLWNvbnRleHQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTWFwQ29udGV4dERpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL21hcC1jb250ZXh0LmRpcmVjdGl2ZSc7XHJcblxyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgaW1wb3J0IHRoZSBjb21wb25lbnRzL2RpcmVjdGl2ZXMgZGlyZWN0bHkgb3IgQ09OVEVYVF9NQU5BR0VSX0RJUkVDVElWRVMgZm9yIHRoZSBzZXRcclxuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29udGV4dExpc3RDb21wb25lbnQsXHJcbiAgICBDb250ZXh0TGlzdEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgICBDb250ZXh0SXRlbUNvbXBvbmVudCxcclxuICAgIENvbnRleHRGb3JtQ29tcG9uZW50LFxyXG4gICAgQ29udGV4dEVkaXRDb21wb25lbnQsXHJcbiAgICBDb250ZXh0RWRpdEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgICBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQsXHJcbiAgICBDb250ZXh0UGVybWlzc2lvbnNCaW5kaW5nRGlyZWN0aXZlLFxyXG4gICAgTGF5ZXJDb250ZXh0RGlyZWN0aXZlLFxyXG4gICAgTWFwQ29udGV4dERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ29udGV4dExpc3RDb21wb25lbnQsXHJcbiAgICBDb250ZXh0TGlzdEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgICBDb250ZXh0SXRlbUNvbXBvbmVudCxcclxuICAgIENvbnRleHRGb3JtQ29tcG9uZW50LFxyXG4gICAgQ29udGV4dEVkaXRDb21wb25lbnQsXHJcbiAgICBDb250ZXh0RWRpdEJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgICBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQsXHJcbiAgICBDb250ZXh0UGVybWlzc2lvbnNCaW5kaW5nRGlyZWN0aXZlLFxyXG4gICAgTGF5ZXJDb250ZXh0RGlyZWN0aXZlLFxyXG4gICAgTWFwQ29udGV4dERpcmVjdGl2ZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElnb0NvbnRleHRNYW5hZ2VyTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0NvbnRleHRNYW5hZ2VyTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogSWdvQ29udGV4dE1hbmFnZXJNb2R1bGVcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tYW5hZ2VyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1tYW5hZ2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFckU7O0dBRUc7QUEyQkgsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsdUJBQXVCO1NBQ2xDLENBQUM7SUFDSixDQUFDO3VHQUxVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLFlBeEJoQyxvQkFBb0I7WUFDcEIsMkJBQTJCO1lBQzNCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQiwyQkFBMkI7WUFDM0Isa0NBQWtDO1lBQ2xDLHFCQUFxQjtZQUNyQixtQkFBbUIsYUFHbkIsb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0IsMkJBQTJCO1lBQzNCLGtDQUFrQztZQUNsQyxxQkFBcUI7WUFDckIsbUJBQW1CO3dHQUdWLHVCQUF1QixZQXhCaEMsb0JBQW9CO1lBRXBCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBRXBCLDJCQUEyQjs7MkZBa0JsQix1QkFBdUI7a0JBMUJuQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMscUJBQXFCO3dCQUNyQixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMscUJBQXFCO3dCQUNyQixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udGV4dEVkaXRCaW5kaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0LWVkaXQvY29udGV4dC1lZGl0LWJpbmRpbmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbnRleHRFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LWVkaXQvY29udGV4dC1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1mb3JtL2NvbnRleHQtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGV4dEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtaXRlbS9jb250ZXh0LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRleHRMaXN0QmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1saXN0L2NvbnRleHQtbGlzdC1iaW5kaW5nLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZXh0TGlzdENvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1saXN0L2NvbnRleHQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGV4dFBlcm1pc3Npb25zQmluZGluZ0RpcmVjdGl2ZSB9IGZyb20gJy4vY29udGV4dC1wZXJtaXNzaW9ucy9jb250ZXh0LXBlcm1pc3Npb25zLWJpbmRpbmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbnRleHRQZXJtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1wZXJtaXNzaW9ucy9jb250ZXh0LXBlcm1pc3Npb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYXllckNvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9sYXllci1jb250ZXh0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNYXBDb250ZXh0RGlyZWN0aXZlIH0gZnJvbSAnLi9zaGFyZWQvbWFwLWNvbnRleHQuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbXBvcnQgdGhlIGNvbXBvbmVudHMvZGlyZWN0aXZlcyBkaXJlY3RseSBvciBDT05URVhUX01BTkFHRVJfRElSRUNUSVZFUyBmb3IgdGhlIHNldFxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29udGV4dExpc3RDb21wb25lbnQsXG4gICAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICAgIENvbnRleHRJdGVtQ29tcG9uZW50LFxuICAgIENvbnRleHRGb3JtQ29tcG9uZW50LFxuICAgIENvbnRleHRFZGl0Q29tcG9uZW50LFxuICAgIENvbnRleHRFZGl0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQsXG4gICAgQ29udGV4dFBlcm1pc3Npb25zQmluZGluZ0RpcmVjdGl2ZSxcbiAgICBMYXllckNvbnRleHREaXJlY3RpdmUsXG4gICAgTWFwQ29udGV4dERpcmVjdGl2ZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ29udGV4dExpc3RDb21wb25lbnQsXG4gICAgQ29udGV4dExpc3RCaW5kaW5nRGlyZWN0aXZlLFxuICAgIENvbnRleHRJdGVtQ29tcG9uZW50LFxuICAgIENvbnRleHRGb3JtQ29tcG9uZW50LFxuICAgIENvbnRleHRFZGl0Q29tcG9uZW50LFxuICAgIENvbnRleHRFZGl0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQsXG4gICAgQ29udGV4dFBlcm1pc3Npb25zQmluZGluZ0RpcmVjdGl2ZSxcbiAgICBMYXllckNvbnRleHREaXJlY3RpdmUsXG4gICAgTWFwQ29udGV4dERpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIElnb0NvbnRleHRNYW5hZ2VyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29Db250ZXh0TWFuYWdlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSWdvQ29udGV4dE1hbmFnZXJNb2R1bGVcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
106
106
  type: HostListener,
107
107
  args: ['scopeChanged', ['$event']]
108
108
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wZXJtaXNzaW9ucy1iaW5kaW5nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1wZXJtaXNzaW9ucy9jb250ZXh0LXBlcm1pc3Npb25zLWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFHWixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQU05RSxNQUFNLE9BQU8sa0NBQWtDO0lBMEVuQztJQUNBO0lBQ0E7SUFDQTtJQTVFRixTQUFTLENBQThCO0lBQ3ZDLGVBQWUsQ0FBZTtJQUd0QyxlQUFlLENBQUMsVUFBNkI7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsc0RBQXNELEVBQ3RELHNEQUFzRCxDQUN2RCxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWM7YUFDaEIsd0JBQXdCLENBQ3ZCLFNBQVMsRUFDVCxVQUFVLENBQUMsTUFBTSxFQUNqQixVQUFVLENBQUMsY0FBYyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxF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QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlCNUMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNlbGZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29udGV4dCxcclxuICBDb250ZXh0UGVybWlzc2lvbixcclxuICBEZXRhaWxlZENvbnRleHRcclxufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtcGVybWlzc2lvbnMuY29tcG9uZW50JztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2lnb0NvbnRleHRQZXJtaXNzaW9uc0JpbmRpbmddJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0UGVybWlzc2lvbnNCaW5kaW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgY29tcG9uZW50OiBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQ7XHJcbiAgcHJpdmF0ZSBlZGl0ZWRDb250ZXh0JCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignYWRkUGVybWlzc2lvbicsIFsnJGV2ZW50J10pXHJcbiAgb25BZGRQZXJtaXNzaW9uKHBlcm1pc3Npb246IENvbnRleHRQZXJtaXNzaW9uKSB7XHJcbiAgICBpZiAoIXBlcm1pc3Npb24ucHJvZmlsKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmVycm9ycy5hZGRQZXJtaXNzaW9uRW1wdHknLFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvblRpdGxlJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLmNvbXBvbmVudC5jb250ZXh0LmlkO1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZVxyXG4gICAgICAuYWRkUGVybWlzc2lvbkFzc29jaWF0aW9uKFxyXG4gICAgICAgIGNvbnRleHRJZCxcclxuICAgICAgICBwZXJtaXNzaW9uLnByb2ZpbCxcclxuICAgICAgICBwZXJtaXNzaW9uLnR5cGVQZXJtaXNzaW9uXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgocHJvZmlscykgPT4ge1xyXG4gICAgICAgIGZvciAoY29uc3QgcCBvZiBwcm9maWxzKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLnR5cGVQZXJtaXNzaW9uXS5wdXNoKHApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwcm9maWwgPSBwZXJtaXNzaW9uLnByb2ZpbDtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAnaWdvLmNvbnRleHQucGVybWlzc2lvbi5kaWFsb2cuYWRkTXNnJyxcclxuICAgICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5hZGRUaXRsZScsXHJcbiAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICB7IHZhbHVlOiBwcm9maWwgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigncmVtb3ZlUGVybWlzc2lvbicsIFsnJGV2ZW50J10pXHJcbiAgb25SZW1vdmVQZXJtaXNzaW9uKHBlcm1pc3Npb246IENvbnRleHRQZXJtaXNzaW9uKSB7XHJcbiAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLmNvbXBvbmVudC5jb250ZXh0LmlkO1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZVxyXG4gICAgICAuZGVsZXRlUGVybWlzc2lvbkFzc29jaWF0aW9uKGNvbnRleHRJZCwgcGVybWlzc2lvbi5pZClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9uc1tcclxuICAgICAgICAgIHBlcm1pc3Npb24udHlwZVBlcm1pc3Npb25cclxuICAgICAgICBdLmZpbmRJbmRleCgocCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHAuaWQgPT09IHBlcm1pc3Npb24uaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnNbcGVybWlzc2lvbi50eXBlUGVybWlzc2lvbl0uc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgICAgY29uc3QgcHJvZmlsID0gcGVybWlzc2lvbi5wcm9maWw7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLmRlbGV0ZU1zZycsXHJcbiAgICAgICAgICAnaWdvLmNvbnRleHQucGVybWlzc2lvbi5kaWFsb2cuZGVsZXRlVGl0bGUnLFxyXG4gICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgeyB2YWx1ZTogcHJvZmlsIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3Njb3BlQ2hhbmdlZCcsIFsnJGV2ZW50J10pXHJcbiAgb25TY29wZUNoYW5nZWQoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgY29uc3Qgc2NvcGUgPSBjb250ZXh0LnNjb3BlO1xyXG4gICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUoY29udGV4dC5pZCwgeyBzY29wZSB9KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLnNjb3BlQ2hhbmdlZE1zZycsXHJcbiAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLnNjb3BlQ2hhbmdlZFRpdGxlJyxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgeyB2YWx1ZTogJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uc2NvcGUuJyArIHNjb3BlIH1cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIGNvbXBvbmVudDogQ29udGV4dFBlcm1pc3Npb25zQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZWRpdGVkQ29udGV4dCQkID0gdGhpcy5jb250ZXh0U2VydmljZS5lZGl0ZWRDb250ZXh0JC5zdWJzY3JpYmUoXHJcbiAgICAgIChjb250ZXh0KSA9PiB0aGlzLmhhbmRsZUVkaXRlZENvbnRleHRDaGFuZ2UoY29udGV4dClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZWRpdGVkQ29udGV4dCQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmVkaXRlZENvbnRleHQkLm5leHQodW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRWRpdGVkQ29udGV4dENoYW5nZShjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcclxuICAgIHRoaXMuY29tcG9uZW50LmNvbnRleHQgPSBjb250ZXh0O1xyXG5cclxuICAgIGlmIChjb250ZXh0KSB7XHJcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2VcclxuICAgICAgICAuZ2V0UGVybWlzc2lvbnMoY29udGV4dC5pZClcclxuICAgICAgICAuc3Vic2NyaWJlKChwZXJtaXNzaW9uc0FycmF5KSA9PiB7XHJcbiAgICAgICAgICBwZXJtaXNzaW9uc0FycmF5ID0gcGVybWlzc2lvbnNBcnJheSB8fCBbXTtcclxuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0ge1xyXG4gICAgICAgICAgICByZWFkOiBwZXJtaXNzaW9uc0FycmF5LmZpbHRlcigocCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBwLnR5cGVQZXJtaXNzaW9uLnRvU3RyaW5nKCkgPT09ICdyZWFkJztcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHdyaXRlOiBwZXJtaXNzaW9uc0FycmF5LmZpbHRlcigocCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBwLnR5cGVQZXJtaXNzaW9uLnRvU3RyaW5nKCkgPT09ICd3cml0ZSc7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wZXJtaXNzaW9ucy1iaW5kaW5nLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbnRleHQvc3JjL2xpYi9jb250ZXh0LW1hbmFnZXIvY29udGV4dC1wZXJtaXNzaW9ucy9jb250ZXh0LXBlcm1pc3Npb25zLWJpbmRpbmcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFHWixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQU05RSxNQUFNLE9BQU8sa0NBQWtDO0lBMEVuQztJQUNBO0lBQ0E7SUFDQTtJQTVFRixTQUFTLENBQThCO0lBQ3ZDLGVBQWUsQ0FBZTtJQUd0QyxlQUFlLENBQUMsVUFBNkI7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsc0RBQXNELEVBQ3RELHNEQUFzRCxDQUN2RCxDQUFDO1lBQ0YsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGNBQWM7YUFDaEIsd0JBQXdCLENBQ3ZCLFNBQVMsRUFDVCxVQUFVLENBQUMsTUFBTSxFQUNqQixVQUFVLENBQUMsY0FBYyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxF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QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlCNUMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQ29udGV4dCxcbiAgQ29udGV4dFBlcm1pc3Npb24sXG4gIERldGFpbGVkQ29udGV4dFxufSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHRQZXJtaXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1wZXJtaXNzaW9ucy5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaWdvQ29udGV4dFBlcm1pc3Npb25zQmluZGluZ10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRQZXJtaXNzaW9uc0JpbmRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY29tcG9uZW50OiBDb250ZXh0UGVybWlzc2lvbnNDb21wb25lbnQ7XG4gIHByaXZhdGUgZWRpdGVkQ29udGV4dCQkOiBTdWJzY3JpcHRpb247XG5cbiAgQEhvc3RMaXN0ZW5lcignYWRkUGVybWlzc2lvbicsIFsnJGV2ZW50J10pXG4gIG9uQWRkUGVybWlzc2lvbihwZXJtaXNzaW9uOiBDb250ZXh0UGVybWlzc2lvbikge1xuICAgIGlmICghcGVybWlzc2lvbi5wcm9maWwpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvbkVtcHR5JyxcbiAgICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmVycm9ycy5hZGRQZXJtaXNzaW9uVGl0bGUnXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLmNvbXBvbmVudC5jb250ZXh0LmlkO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgIC5hZGRQZXJtaXNzaW9uQXNzb2NpYXRpb24oXG4gICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgcGVybWlzc2lvbi5wcm9maWwsXG4gICAgICAgIHBlcm1pc3Npb24udHlwZVBlcm1pc3Npb25cbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHByb2ZpbHMpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBwIG9mIHByb2ZpbHMpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9uc1twZXJtaXNzaW9uLnR5cGVQZXJtaXNzaW9uXS5wdXNoKHApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb2ZpbCA9IHBlcm1pc3Npb24ucHJvZmlsO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLmFkZE1zZycsXG4gICAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLmFkZFRpdGxlJyxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgeyB2YWx1ZTogcHJvZmlsIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3JlbW92ZVBlcm1pc3Npb24nLCBbJyRldmVudCddKVxuICBvblJlbW92ZVBlcm1pc3Npb24ocGVybWlzc2lvbjogQ29udGV4dFBlcm1pc3Npb24pIHtcbiAgICBjb25zdCBjb250ZXh0SWQgPSB0aGlzLmNvbXBvbmVudC5jb250ZXh0LmlkO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgIC5kZWxldGVQZXJtaXNzaW9uQXNzb2NpYXRpb24oY29udGV4dElkLCBwZXJtaXNzaW9uLmlkKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnNbXG4gICAgICAgICAgcGVybWlzc2lvbi50eXBlUGVybWlzc2lvblxuICAgICAgICBdLmZpbmRJbmRleCgocCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwLmlkID09PSBwZXJtaXNzaW9uLmlkO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQucGVybWlzc2lvbnNbcGVybWlzc2lvbi50eXBlUGVybWlzc2lvbl0uc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBjb25zdCBwcm9maWwgPSBwZXJtaXNzaW9uLnByb2ZpbDtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5kZWxldGVNc2cnLFxuICAgICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5kZWxldGVUaXRsZScsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHsgdmFsdWU6IHByb2ZpbCB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzY29wZUNoYW5nZWQnLCBbJyRldmVudCddKVxuICBvblNjb3BlQ2hhbmdlZChjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgY29uc3Qgc2NvcGUgPSBjb250ZXh0LnNjb3BlO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKGNvbnRleHQuaWQsIHsgc2NvcGUgfSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uZGlhbG9nLnNjb3BlQ2hhbmdlZE1zZycsXG4gICAgICAgICdpZ28uY29udGV4dC5wZXJtaXNzaW9uLmRpYWxvZy5zY29wZUNoYW5nZWRUaXRsZScsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgeyB2YWx1ZTogJ2lnby5jb250ZXh0LnBlcm1pc3Npb24uc2NvcGUuJyArIHNjb3BlIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIGNvbXBvbmVudDogQ29udGV4dFBlcm1pc3Npb25zQ29tcG9uZW50LFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVkaXRlZENvbnRleHQkJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuZWRpdGVkQ29udGV4dCQuc3Vic2NyaWJlKFxuICAgICAgKGNvbnRleHQpID0+IHRoaXMuaGFuZGxlRWRpdGVkQ29udGV4dENoYW5nZShjb250ZXh0KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmVkaXRlZENvbnRleHQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZWRpdGVkQ29udGV4dCQubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFZGl0ZWRDb250ZXh0Q2hhbmdlKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIHRoaXMuY29tcG9uZW50LmNvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2VcbiAgICAgICAgLmdldFBlcm1pc3Npb25zKGNvbnRleHQuaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoKHBlcm1pc3Npb25zQXJyYXkpID0+IHtcbiAgICAgICAgICBwZXJtaXNzaW9uc0FycmF5ID0gcGVybWlzc2lvbnNBcnJheSB8fCBbXTtcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IHtcbiAgICAgICAgICAgIHJlYWQ6IHBlcm1pc3Npb25zQXJyYXkuZmlsdGVyKChwKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwLnR5cGVQZXJtaXNzaW9uLnRvU3RyaW5nKCkgPT09ICdyZWFkJztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd3JpdGU6IHBlcm1pc3Npb25zQXJyYXkuZmlsdGVyKChwKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwLnR5cGVQZXJtaXNzaW9uLnRvU3RyaW5nKCkgPT09ICd3cml0ZSc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=