@byuhbll/components 5.0.1-beta.0 → 5.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/ss-search-bar/simple-search/simple-search.component.mjs +70 -5
- package/esm2022/lib/ss-search-bar/ss-search-bar.component.mjs +9 -3
- package/fesm2022/byuhbll-components.mjs +76 -5
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/ss-search-bar/simple-search/simple-search.component.d.ts +10 -1
- package/lib/ss-search-bar/ss-search-bar.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, inject, HostListener, } from '@angular/core';
|
|
2
2
|
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
3
3
|
import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
|
|
4
4
|
import { Subscription } from 'rxjs';
|
|
5
|
-
import { startWith, filter } from 'rxjs/operators';
|
|
5
|
+
import { startWith, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
6
6
|
import { MatIconModule } from '@angular/material/icon';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -13,9 +13,14 @@ export class SimpleSearchComponent {
|
|
|
13
13
|
constructor() {
|
|
14
14
|
this.fb = inject(FormBuilder);
|
|
15
15
|
this.subscription = new Subscription();
|
|
16
|
+
this.suggestions = [];
|
|
16
17
|
this.simpleSearch = new EventEmitter();
|
|
17
18
|
this.clearSimpleSearch = new EventEmitter();
|
|
19
|
+
this.suggest = new EventEmitter();
|
|
18
20
|
this.isSubmitted = false;
|
|
21
|
+
this.showSuggestions = false;
|
|
22
|
+
this.selectedSuggestionIndex = -1;
|
|
23
|
+
this.skipNextSuggest = false;
|
|
19
24
|
this.searchForm = this.fb.nonNullable.group({
|
|
20
25
|
simpleQuery: ['', Validators.required],
|
|
21
26
|
});
|
|
@@ -32,6 +37,37 @@ export class SimpleSearchComponent {
|
|
|
32
37
|
this.clearQuery = () => {
|
|
33
38
|
this.simpleQuery.setValue('');
|
|
34
39
|
this.clearSimpleSearch.emit();
|
|
40
|
+
this.hideSuggestions();
|
|
41
|
+
};
|
|
42
|
+
this.selectSuggestion = (suggestion) => {
|
|
43
|
+
this.skipNextSuggest = true;
|
|
44
|
+
this.simpleQuery.setValue(suggestion);
|
|
45
|
+
this.hideSuggestions();
|
|
46
|
+
this.emitSimpleSearch();
|
|
47
|
+
};
|
|
48
|
+
this.onInputKeydown = (event) => {
|
|
49
|
+
if (!this.showSuggestions || this.suggestions.length === 0) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
switch (event.key) {
|
|
53
|
+
case 'ArrowDown':
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
this.selectedSuggestionIndex = Math.min(this.selectedSuggestionIndex + 1, this.suggestions.length - 1);
|
|
56
|
+
break;
|
|
57
|
+
case 'ArrowUp':
|
|
58
|
+
event.preventDefault();
|
|
59
|
+
this.selectedSuggestionIndex = Math.max(this.selectedSuggestionIndex - 1, -1);
|
|
60
|
+
break;
|
|
61
|
+
case 'Enter':
|
|
62
|
+
if (this.selectedSuggestionIndex >= 0) {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
this.selectSuggestion(this.suggestions[this.selectedSuggestionIndex]);
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
case 'Escape':
|
|
68
|
+
this.hideSuggestions();
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
35
71
|
};
|
|
36
72
|
this.setupForm = () => {
|
|
37
73
|
this.simpleQuery.setValue(this.config.q || this.config.advancedSearchQueryRows[0]?.query || '');
|
|
@@ -41,6 +77,10 @@ export class SimpleSearchComponent {
|
|
|
41
77
|
this.inputTooltip.disabled = false;
|
|
42
78
|
this.inputTooltip.show();
|
|
43
79
|
};
|
|
80
|
+
this.hideSuggestions = () => {
|
|
81
|
+
this.showSuggestions = false;
|
|
82
|
+
this.selectedSuggestionIndex = -1;
|
|
83
|
+
};
|
|
44
84
|
}
|
|
45
85
|
set config(config) {
|
|
46
86
|
this._config = config;
|
|
@@ -60,16 +100,34 @@ export class SimpleSearchComponent {
|
|
|
60
100
|
.subscribe(() => {
|
|
61
101
|
this.inputTooltip.disabled = true;
|
|
62
102
|
}));
|
|
103
|
+
// Emit suggestion requests with debounce
|
|
104
|
+
this.subscription.add(this.simpleQuery.valueChanges
|
|
105
|
+
.pipe(debounceTime(300), distinctUntilChanged(), filter((value) => value.trim().length > 0))
|
|
106
|
+
.subscribe((value) => {
|
|
107
|
+
if (this.skipNextSuggest) {
|
|
108
|
+
this.skipNextSuggest = false;
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this.suggest.emit(value);
|
|
112
|
+
this.showSuggestions = true;
|
|
113
|
+
this.selectedSuggestionIndex = -1;
|
|
114
|
+
}));
|
|
63
115
|
}
|
|
64
116
|
ngOnDestroy() {
|
|
65
117
|
this.subscription.unsubscribe();
|
|
66
118
|
}
|
|
119
|
+
onDocumentClick(event) {
|
|
120
|
+
const target = event.target;
|
|
121
|
+
if (!target.closest('.ss-container')) {
|
|
122
|
+
this.hideSuggestions();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
67
125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SimpleSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SimpleSearchComponent, isStandalone: true, selector: "lib-ss-simple-search", inputs: { config: "config" }, outputs: { simpleSearch: "simpleSearch", clearSimpleSearch: "clearSimpleSearch" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inputTooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button\n type=\"submit\"\n aria-label=\"search\"\n data-testid=\"searchBtn\"\n [ngClass]=\"{ ensign: config.institution === 'ensign' }\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n</div>\n", styles: ["a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#1c7ec9;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#8ab6f0}.ss-container{position:relative}form{display:flex}.ss-icon{font-size:1em}button[type=submit]{background:#fff;border-radius:0 4px 4px 0;margin:0;width:3em;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:color .2s,background-color .2s}button[type=submit] .ss-icon{color:#0047ba;font-size:1.7em}button[type=submit]:hover .ss-icon{color:#6892ca}button[type=submit].ensign .ss-icon{color:#2b6042}button[type=submit].ensign .ss-icon:hover{color:#357551}#clear{position:absolute;right:3em;top:0%;height:100%;display:flex;justify-content:center;align-items:center;padding:0 0 0 .375rem}#clear .ss-icon{height:auto;color:#acacac;transition:color ease-in-out .05s}#clear:hover .ss-icon{color:#666}input[type=text]{background-color:#fff;color:#000;font-family:inherit;border:none;font-weight:600;margin:0;overflow:hidden;cursor:text;width:calc(100% - 3em);font-size:1em;border-radius:4px 0 0 4px;padding:.56em 2em .56em .56em}input[type=text]:focus{outline:none}input[type=text]:valid+label,input[type=text]:focus+label{font-size:.75em;top:-.8em;padding-top:0;padding-bottom:0;pointer-events:none;margin-top:0;margin-left:.56em;cursor:default}input[type=text]:valid+label:before,input[type=text]:focus+label:before{opacity:1}label{cursor:text;transition:all .1s ease-in-out;position:absolute;padding:.5em .28em;margin-left:.28em;left:0;color:#707070;z-index:1;max-width:calc(100% - 3.4em);white-space:nowrap;line-height:normal;overflow:hidden;text-overflow:ellipsis;border-radius:4px}label:before{transition:all .1s ease-in-out;background-color:#fff;content:\"\";position:absolute;inset:0;opacity:0;z-index:-1}\n"], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SimpleSearchComponent, isStandalone: true, selector: "lib-ss-simple-search", inputs: { config: "config", suggestions: "suggestions" }, outputs: { simpleSearch: "simpleSearch", clearSimpleSearch: "clearSimpleSearch", suggest: "suggest" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inputTooltip", first: true, predicate: MatTooltip, descendants: true }], ngImport: i0, template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n (keydown)=\"onInputKeydown($event)\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button\n type=\"submit\"\n aria-label=\"search\"\n data-testid=\"searchBtn\"\n [ngClass]=\"{ ensign: config.institution === 'ensign' }\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n\n @if (showSuggestions && suggestions.length > 0) {\n <ul class=\"suggestions-list\" role=\"listbox\" data-testid=\"suggestionsList\">\n @for (suggestion of suggestions; track suggestion; let i = $index) {\n <li\n class=\"suggestion-item\"\n [class.selected]=\"i === selectedSuggestionIndex\"\n (click)=\"selectSuggestion(suggestion)\"\n (keydown.enter)=\"selectSuggestion(suggestion)\"\n (keydown.space)=\"selectSuggestion(suggestion); $event.preventDefault()\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"i === selectedSuggestionIndex\"\n data-testid=\"suggestionItem\"\n >\n {{ suggestion }}\n </li>\n }\n </ul>\n }\n</div>\n", styles: ["a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#1c7ec9;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#8ab6f0}.ss-container{position:relative}form{display:flex}.ss-icon{font-size:1em}button[type=submit]{background:#fff;border-radius:0 4px 4px 0;margin:0;width:3em;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:color .2s,background-color .2s}button[type=submit] .ss-icon{color:#0047ba;font-size:1.7em}button[type=submit]:hover .ss-icon{color:#6892ca}button[type=submit].ensign .ss-icon{color:#2b6042}button[type=submit].ensign .ss-icon:hover{color:#357551}#clear{position:absolute;right:3em;top:0%;height:100%;display:flex;justify-content:center;align-items:center;padding:0 0 0 .375rem}#clear .ss-icon{height:auto;color:#acacac;transition:color ease-in-out .05s}#clear:hover .ss-icon{color:#666}input[type=text]{background-color:#fff;color:#000;font-family:inherit;border:none;font-weight:600;margin:0;overflow:hidden;cursor:text;width:calc(100% - 3em);font-size:1em;border-radius:4px 0 0 4px;padding:.56em 2em .56em .56em}input[type=text]:focus{outline:none}input[type=text]:valid+label,input[type=text]:focus+label{font-size:.75em;top:-.8em;padding-top:0;padding-bottom:0;pointer-events:none;margin-top:0;margin-left:.56em;cursor:default}input[type=text]:valid+label:before,input[type=text]:focus+label:before{opacity:1}label{cursor:text;transition:all .1s ease-in-out;position:absolute;padding:.5em .28em;margin-left:.28em;left:0;color:#707070;z-index:1;max-width:calc(100% - 3.4em);white-space:nowrap;line-height:normal;overflow:hidden;text-overflow:ellipsis;border-radius:4px}label:before{transition:all .1s ease-in-out;background-color:#fff;content:\"\";position:absolute;inset:0;opacity:0;z-index:-1}.suggestions-list{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d0d0d0;border-top:none;border-radius:0 0 4px 4px;list-style:none;margin:0;padding:0;max-height:300px;overflow-y:auto;box-shadow:0 4px 6px #0000001a;z-index:1000}.suggestion-item{padding:.75em 1em;cursor:pointer;transition:background-color .15s ease;color:#333;font-size:1em}.suggestion-item:hover,.suggestion-item.selected{background-color:#f0f0f0}.suggestion-item.selected{background-color:#e6f2ff}.suggestion-item:last-child{border-radius:0 0 4px 4px}\n"], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
69
127
|
}
|
|
70
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SimpleSearchComponent, decorators: [{
|
|
71
129
|
type: Component,
|
|
72
|
-
args: [{ selector: 'lib-ss-simple-search', standalone: true, imports: [MatTooltipModule, MatIconModule, ReactiveFormsModule, CommonModule], template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button\n type=\"submit\"\n aria-label=\"search\"\n data-testid=\"searchBtn\"\n [ngClass]=\"{ ensign: config.institution === 'ensign' }\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n</div>\n", styles: ["a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#1c7ec9;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#8ab6f0}.ss-container{position:relative}form{display:flex}.ss-icon{font-size:1em}button[type=submit]{background:#fff;border-radius:0 4px 4px 0;margin:0;width:3em;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:color .2s,background-color .2s}button[type=submit] .ss-icon{color:#0047ba;font-size:1.7em}button[type=submit]:hover .ss-icon{color:#6892ca}button[type=submit].ensign .ss-icon{color:#2b6042}button[type=submit].ensign .ss-icon:hover{color:#357551}#clear{position:absolute;right:3em;top:0%;height:100%;display:flex;justify-content:center;align-items:center;padding:0 0 0 .375rem}#clear .ss-icon{height:auto;color:#acacac;transition:color ease-in-out .05s}#clear:hover .ss-icon{color:#666}input[type=text]{background-color:#fff;color:#000;font-family:inherit;border:none;font-weight:600;margin:0;overflow:hidden;cursor:text;width:calc(100% - 3em);font-size:1em;border-radius:4px 0 0 4px;padding:.56em 2em .56em .56em}input[type=text]:focus{outline:none}input[type=text]:valid+label,input[type=text]:focus+label{font-size:.75em;top:-.8em;padding-top:0;padding-bottom:0;pointer-events:none;margin-top:0;margin-left:.56em;cursor:default}input[type=text]:valid+label:before,input[type=text]:focus+label:before{opacity:1}label{cursor:text;transition:all .1s ease-in-out;position:absolute;padding:.5em .28em;margin-left:.28em;left:0;color:#707070;z-index:1;max-width:calc(100% - 3.4em);white-space:nowrap;line-height:normal;overflow:hidden;text-overflow:ellipsis;border-radius:4px}label:before{transition:all .1s ease-in-out;background-color:#fff;content:\"\";position:absolute;inset:0;opacity:0;z-index:-1}\n"] }]
|
|
130
|
+
args: [{ selector: 'lib-ss-simple-search', standalone: true, imports: [MatTooltipModule, MatIconModule, ReactiveFormsModule, CommonModule], template: "<div class=\"ss-container\">\n <form [formGroup]=\"searchForm\" (submit)=\"emitSimpleSearch()\" data-testid=\"searchForm\">\n <input\n #searchInput\n data-testid=\"searchInput\"\n id=\"q\"\n name=\"q\"\n type=\"text\"\n required\n aria-required=\"true\"\n aria-label=\"search input\"\n autocapitalize=\"off\"\n formControlName=\"simpleQuery\"\n matTooltip=\"Fill out this field\"\n [matTooltipPosition]=\"'above'\"\n [matTooltipDisabled]=\"true\"\n [attr.aria-invalid]=\"isSubmitted && simpleQuery.invalid\"\n (keydown)=\"onInputKeydown($event)\"\n />\n <label for=\"q\" data-testid=\"label\">{{\n config.scope === 'local'\n ? 'Books, media, special collections and more'\n : 'Ebooks, articles, journals, databases, streaming media and more'\n }}</label>\n <button\n type=\"submit\"\n aria-label=\"search\"\n data-testid=\"searchBtn\"\n [ngClass]=\"{ ensign: config.institution === 'ensign' }\"\n >\n <span class=\"material-symbols-outlined ss-icon\"> search </span>\n </button>\n </form>\n\n @if (simpleQuery.value) {\n <button id=\"clear\" (click)=\"clearQuery()\" data-testid=\"clearBtn\">\n <span class=\"material-symbols-outlined ss-icon\"> cancel </span>\n </button>\n }\n\n @if (showSuggestions && suggestions.length > 0) {\n <ul class=\"suggestions-list\" role=\"listbox\" data-testid=\"suggestionsList\">\n @for (suggestion of suggestions; track suggestion; let i = $index) {\n <li\n class=\"suggestion-item\"\n [class.selected]=\"i === selectedSuggestionIndex\"\n (click)=\"selectSuggestion(suggestion)\"\n (keydown.enter)=\"selectSuggestion(suggestion)\"\n (keydown.space)=\"selectSuggestion(suggestion); $event.preventDefault()\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"i === selectedSuggestionIndex\"\n data-testid=\"suggestionItem\"\n >\n {{ suggestion }}\n </li>\n }\n </ul>\n }\n</div>\n", styles: ["a,button{border:none;background:none;font-family:inherit;padding:0;margin:0;font-size:inherit;color:#1c7ec9;text-decoration:none;cursor:pointer}a:hover,button:hover{color:#8ab6f0}.ss-container{position:relative}form{display:flex}.ss-icon{font-size:1em}button[type=submit]{background:#fff;border-radius:0 4px 4px 0;margin:0;width:3em;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:color .2s,background-color .2s}button[type=submit] .ss-icon{color:#0047ba;font-size:1.7em}button[type=submit]:hover .ss-icon{color:#6892ca}button[type=submit].ensign .ss-icon{color:#2b6042}button[type=submit].ensign .ss-icon:hover{color:#357551}#clear{position:absolute;right:3em;top:0%;height:100%;display:flex;justify-content:center;align-items:center;padding:0 0 0 .375rem}#clear .ss-icon{height:auto;color:#acacac;transition:color ease-in-out .05s}#clear:hover .ss-icon{color:#666}input[type=text]{background-color:#fff;color:#000;font-family:inherit;border:none;font-weight:600;margin:0;overflow:hidden;cursor:text;width:calc(100% - 3em);font-size:1em;border-radius:4px 0 0 4px;padding:.56em 2em .56em .56em}input[type=text]:focus{outline:none}input[type=text]:valid+label,input[type=text]:focus+label{font-size:.75em;top:-.8em;padding-top:0;padding-bottom:0;pointer-events:none;margin-top:0;margin-left:.56em;cursor:default}input[type=text]:valid+label:before,input[type=text]:focus+label:before{opacity:1}label{cursor:text;transition:all .1s ease-in-out;position:absolute;padding:.5em .28em;margin-left:.28em;left:0;color:#707070;z-index:1;max-width:calc(100% - 3.4em);white-space:nowrap;line-height:normal;overflow:hidden;text-overflow:ellipsis;border-radius:4px}label:before{transition:all .1s ease-in-out;background-color:#fff;content:\"\";position:absolute;inset:0;opacity:0;z-index:-1}.suggestions-list{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #d0d0d0;border-top:none;border-radius:0 0 4px 4px;list-style:none;margin:0;padding:0;max-height:300px;overflow-y:auto;box-shadow:0 4px 6px #0000001a;z-index:1000}.suggestion-item{padding:.75em 1em;cursor:pointer;transition:background-color .15s ease;color:#333;font-size:1em}.suggestion-item:hover,.suggestion-item.selected{background-color:#f0f0f0}.suggestion-item.selected{background-color:#e6f2ff}.suggestion-item:last-child{border-radius:0 0 4px 4px}\n"] }]
|
|
73
131
|
}], propDecorators: { searchInput: [{
|
|
74
132
|
type: ViewChild,
|
|
75
133
|
args: ['searchInput']
|
|
@@ -79,9 +137,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
79
137
|
}], config: [{
|
|
80
138
|
type: Input,
|
|
81
139
|
args: [{ required: true }]
|
|
140
|
+
}], suggestions: [{
|
|
141
|
+
type: Input
|
|
82
142
|
}], simpleSearch: [{
|
|
83
143
|
type: Output
|
|
84
144
|
}], clearSimpleSearch: [{
|
|
85
145
|
type: Output
|
|
146
|
+
}], suggest: [{
|
|
147
|
+
type: Output
|
|
148
|
+
}], onDocumentClick: [{
|
|
149
|
+
type: HostListener,
|
|
150
|
+
args: ['document:click', ['$event']]
|
|
86
151
|
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3Mtc2VhcmNoLWJhci9zaW1wbGUtc2VhcmNoL3NpbXBsZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvc2ltcGxlLXNlYXJjaC9zaW1wbGUtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFlLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFVL0MsTUFBTSxPQUFPLHFCQUFxQjtJQVBsQztRQVFxQixPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTWxDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO1FBQ2hELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDN0MsZ0JBQVcsR0FB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WSxDQUFDOzhCQU0zQyxXQUFXO3NCQUE1QyxTQUFTO3VCQUFDLGFBQWE7Z0JBSU8sWUFBWTtzQkFBMUMsU0FBUzt1QkFBQyxVQUFVO2dCQUdVLE1BQU07c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU9mLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwLCBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlYXJjaENvbmZpZyB9IGZyb20gJy4uL21vZGVscy9zZWFyY2gtY29uZmlnLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItc3Mtc2ltcGxlLXNlYXJjaCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBwcml2YXRlIHNlYXJjaElucHV0ITogRWxlbWVudFJlZjtcbiAgICAvLyBUaGUgdG9vbHRpcCBpcyBkaXNhYmxlZCBpbiB0aGUgdGVtcGxhdGUuXG4gICAgLy8gSXQgaXMgZW5hYmxlZCBhbmQgZGlzcGxheWVkIGlmIGEgdXNlciBzZWFyY2hlcyBhZ2FpbnN0IGFuIGVtcHR5IHF1ZXJ5IChzaW1wbGUgb3IgcTEpLlxuICAgIC8vIEFueSBjaGFuZ2UgdG8gdGhlIHNlYXJjaCBmaWVsZCBkaXNhYmxlcyB0aGUgdG9vbHRpcC5cbiAgICBAVmlld0NoaWxkKE1hdFRvb2x0aXApIHByaXZhdGUgaW5wdXRUb29sdGlwITogTWF0VG9vbHRpcDtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIF9jb25maWchOiBTZWFyY2hDb25maWc7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IGNvbmZpZyhjb25maWc6IFNlYXJjaENvbmZpZykge1xuICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMuc2V0dXBGb3JtKCk7XG4gICAgfVxuICAgIGdldCBjb25maWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gICAgfVxuICAgIEBPdXRwdXQoKSBzaW1wbGVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaENvbmZpZz4oKTtcbiAgICBAT3V0cHV0KCkgY2xlYXJTaW1wbGVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgcHJvdGVjdGVkIGlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNlYXJjaEZvcm0gPSB0aGlzLmZiLm5vbk51bGxhYmxlLmdyb3VwKHtcbiAgICAgICAgc2ltcGxlUXVlcnk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG5cbiAgICBnZXQgc2ltcGxlUXVlcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEZvcm0uZ2V0KCdzaW1wbGVRdWVyeScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBFbnN1cmUgdmFsaWRhdGlvbiB0b29sdGlwIGNsb3NlcyB3aGVuIHVzZXMgZW50ZXJzIGEgcXVlcnlcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShzdGFydFdpdGgoJycpKVxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcigoKSA9PiAhIXRoaXMuaW5wdXRUb29sdGlwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dFRvb2x0aXAuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbWl0U2ltcGxlU2VhcmNoID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gRG9uJ3QgcGVyZm9ybSBhIHNlYXJjaCB1bmxlc3MgdGhlcmUgaXMgYSBxdWVyeVxuICAgICAgICBpZiAodGhpcy5zaW1wbGVRdWVyeS5pbnZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dTZWFyY2hWYWxpZGF0aW9uVG9vbFRpcCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2ltcGxlU2VhcmNoLmVtaXQoeyAuLi50aGlzLmNvbmZpZywgcTogdGhpcy5zaW1wbGVRdWVyeS52YWx1ZSB9KTtcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJRdWVyeSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuY2xlYXJTaW1wbGVTZWFyY2guZW1pdCgpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldHVwRm9ybSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS5zZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnEgfHwgdGhpcy5jb25maWcuYWR2YW5jZWRTZWFyY2hRdWVyeVJvd3NbMF0/LnF1ZXJ5IHx8ICcnLFxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNob3dTZWFyY2hWYWxpZGF0aW9uVG9vbFRpcCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuaW5wdXRUb29sdGlwLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRUb29sdGlwLnNob3coKTtcbiAgICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInNzLWNvbnRhaW5lclwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIChzdWJtaXQpPVwiZW1pdFNpbXBsZVNlYXJjaCgpXCIgZGF0YS10ZXN0aWQ9XCJzZWFyY2hGb3JtXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlYXJjaElucHV0XCJcbiAgICAgICAgICAgIGlkPVwicVwiXG4gICAgICAgICAgICBuYW1lPVwicVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgYXJpYS1yZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlYXJjaCBpbnB1dFwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaW1wbGVRdWVyeVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRmlsbCBvdXQgdGhpcyBmaWVsZFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhYm92ZSdcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc1N1Ym1pdHRlZCAmJiBzaW1wbGVRdWVyeS5pbnZhbGlkXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGZvcj1cInFcIiBkYXRhLXRlc3RpZD1cImxhYmVsXCI+e3tcbiAgICAgICAgICAgIGNvbmZpZy5zY29wZSA9PT0gJ2xvY2FsJ1xuICAgICAgICAgICAgICAgID8gJ0Jvb2tzLCBtZWRpYSwgc3BlY2lhbCBjb2xsZWN0aW9ucyBhbmQgbW9yZSdcbiAgICAgICAgICAgICAgICA6ICdFYm9va3MsIGFydGljbGVzLCBqb3VybmFscywgZGF0YWJhc2VzLCBzdHJlYW1pbmcgbWVkaWEgYW5kIG1vcmUnXG4gICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VhcmNoXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VhcmNoQnRuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZW5zaWduOiBjb25maWcuaW5zdGl0dXRpb24gPT09ICdlbnNpZ24nIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgc3MtaWNvblwiPiBzZWFyY2ggPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Zvcm0+XG5cbiAgICBAaWYgKHNpbXBsZVF1ZXJ5LnZhbHVlKSB7XG4gICAgICAgIDxidXR0b24gaWQ9XCJjbGVhclwiIChjbGljayk9XCJjbGVhclF1ZXJ5KClcIiBkYXRhLXRlc3RpZD1cImNsZWFyQnRuXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgc3MtaWNvblwiPiBjYW5jZWwgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc3Mtc2VhcmNoLWJhci9zaW1wbGUtc2VhcmNoL3NpbXBsZS1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NzLXNlYXJjaC1iYXIvc2ltcGxlLXNlYXJjaC9zaW1wbGUtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBZSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQVUvQyxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBUXFCLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFNbEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBU2pDLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWdC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M0IsQ0FBQztJQUNMLENBQUM7OEdBOUhRLHFCQUFxQjtrR0FBckIscUJBQXFCLGtjQU1uQixVQUFVLGdEQ2pDekIsaTVFQTREQSxpM0VEckNjLGdCQUFnQiw0VEFBRSxhQUFhLDhCQUFFLG1CQUFtQix5cUNBQUUsWUFBWTs7MkZBSW5FLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDSSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQzs4QkFNM0MsV0FBVztzQkFBNUMsU0FBUzt1QkFBQyxhQUFhO2dCQUlPLFlBQVk7c0JBQTFDLFNBQVM7dUJBQUMsVUFBVTtnQkFHVSxNQUFNO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPaEIsV0FBVztzQkFBbkIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQXNHUCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0LFxuICAgIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwLCBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgZmlsdGVyLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlYXJjaENvbmZpZyB9IGZyb20gJy4uL21vZGVscy9zZWFyY2gtY29uZmlnLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItc3Mtc2ltcGxlLXNlYXJjaCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBwcml2YXRlIHNlYXJjaElucHV0ITogRWxlbWVudFJlZjtcbiAgICAvLyBUaGUgdG9vbHRpcCBpcyBkaXNhYmxlZCBpbiB0aGUgdGVtcGxhdGUuXG4gICAgLy8gSXQgaXMgZW5hYmxlZCBhbmQgZGlzcGxheWVkIGlmIGEgdXNlciBzZWFyY2hlcyBhZ2FpbnN0IGFuIGVtcHR5IHF1ZXJ5IChzaW1wbGUgb3IgcTEpLlxuICAgIC8vIEFueSBjaGFuZ2UgdG8gdGhlIHNlYXJjaCBmaWVsZCBkaXNhYmxlcyB0aGUgdG9vbHRpcC5cbiAgICBAVmlld0NoaWxkKE1hdFRvb2x0aXApIHByaXZhdGUgaW5wdXRUb29sdGlwITogTWF0VG9vbHRpcDtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIF9jb25maWchOiBTZWFyY2hDb25maWc7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2V0IGNvbmZpZyhjb25maWc6IFNlYXJjaENvbmZpZykge1xuICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMuc2V0dXBGb3JtKCk7XG4gICAgfVxuICAgIGdldCBjb25maWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gICAgfVxuICAgIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBPdXRwdXQoKSBzaW1wbGVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPFNlYXJjaENvbmZpZz4oKTtcbiAgICBAT3V0cHV0KCkgY2xlYXJTaW1wbGVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIHN1Z2dlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBwcm90ZWN0ZWQgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gLTE7XG4gICAgcHJpdmF0ZSBza2lwTmV4dFN1Z2dlc3QgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc2VhcmNoRm9ybSA9IHRoaXMuZmIubm9uTnVsbGFibGUuZ3JvdXAoe1xuICAgICAgICBzaW1wbGVRdWVyeTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcblxuICAgIGdldCBzaW1wbGVRdWVyeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRm9ybS5nZXQoJ3NpbXBsZVF1ZXJ5JykgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIEVuc3VyZSB2YWxpZGF0aW9uIHRvb2x0aXAgY2xvc2VzIHdoZW4gdXNlcyBlbnRlcnMgYSBxdWVyeVxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aCgnJykpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKCgpID0+ICEhdGhpcy5pbnB1dFRvb2x0aXApKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0VG9vbHRpcC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW1pdCBzdWdnZXN0aW9uIHJlcXVlc3RzIHdpdGggZGVib3VuY2VcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigodmFsdWUpID0+IHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHRTdWdnZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0U3VnZ2VzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VnZ2VzdC5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gLTE7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVtaXRTaW1wbGVTZWFyY2ggPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICAvLyBEb24ndCBwZXJmb3JtIGEgc2VhcmNoIHVubGVzcyB0aGVyZSBpcyBhIHF1ZXJ5XG4gICAgICAgIGlmICh0aGlzLnNpbXBsZVF1ZXJ5LmludmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NlYXJjaFZhbGlkYXRpb25Ub29sVGlwKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaW1wbGVTZWFyY2guZW1pdCh7IC4uLnRoaXMuY29uZmlnLCBxOiB0aGlzLnNpbXBsZVF1ZXJ5LnZhbHVlIH0pO1xuICAgICAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBjbGVhclF1ZXJ5ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNpbXBsZVF1ZXJ5LnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jbGVhclNpbXBsZVNlYXJjaC5lbWl0KCk7XG4gICAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25zKCk7XG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBzZWxlY3RTdWdnZXN0aW9uID0gKHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLnNraXBOZXh0U3VnZ2VzdCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2ltcGxlUXVlcnkuc2V0VmFsdWUoc3VnZ2VzdGlvbik7XG4gICAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25zKCk7XG4gICAgICAgIHRoaXMuZW1pdFNpbXBsZVNlYXJjaCgpO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgb25JbnB1dEtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dTdWdnZXN0aW9ucyB8fCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4ID0gTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN1Z2dlc3Rpb25JbmRleCA9IE1hdGgubWF4KHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggLSAxLCAtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24odGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVTdWdnZXN0aW9ucygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoIXRhcmdldC5jbG9zZXN0KCcuc3MtY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZVN1Z2dlc3Rpb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRm9ybSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zaW1wbGVRdWVyeS5zZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnEgfHwgdGhpcy5jb25maWcuYWR2YW5jZWRTZWFyY2hRdWVyeVJvd3NbMF0/LnF1ZXJ5IHx8ICcnLFxuICAgICAgICApO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNob3dTZWFyY2hWYWxpZGF0aW9uVG9vbFRpcCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuaW5wdXRUb29sdGlwLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRUb29sdGlwLnNob3coKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBoaWRlU3VnZ2VzdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd1N1Z2dlc3Rpb25zID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdWdnZXN0aW9uSW5kZXggPSAtMTtcbiAgICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInNzLWNvbnRhaW5lclwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiIChzdWJtaXQpPVwiZW1pdFNpbXBsZVNlYXJjaCgpXCIgZGF0YS10ZXN0aWQ9XCJzZWFyY2hGb3JtXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlYXJjaElucHV0XCJcbiAgICAgICAgICAgIGlkPVwicVwiXG4gICAgICAgICAgICBuYW1lPVwicVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgYXJpYS1yZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlYXJjaCBpbnB1dFwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaW1wbGVRdWVyeVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRmlsbCBvdXQgdGhpcyBmaWVsZFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhYm92ZSdcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc1N1Ym1pdHRlZCAmJiBzaW1wbGVRdWVyeS5pbnZhbGlkXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uSW5wdXRLZXlkb3duKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwicVwiIGRhdGEtdGVzdGlkPVwibGFiZWxcIj57e1xuICAgICAgICAgICAgY29uZmlnLnNjb3BlID09PSAnbG9jYWwnXG4gICAgICAgICAgICAgICAgPyAnQm9va3MsIG1lZGlhLCBzcGVjaWFsIGNvbGxlY3Rpb25zIGFuZCBtb3JlJ1xuICAgICAgICAgICAgICAgIDogJ0Vib29rcywgYXJ0aWNsZXMsIGpvdXJuYWxzLCBkYXRhYmFzZXMsIHN0cmVhbWluZyBtZWRpYSBhbmQgbW9yZSdcbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWFyY2hcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWFyY2hCdG5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBlbnNpZ246IGNvbmZpZy5pbnN0aXR1dGlvbiA9PT0gJ2Vuc2lnbicgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBzcy1pY29uXCI+IHNlYXJjaCA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZm9ybT5cblxuICAgIEBpZiAoc2ltcGxlUXVlcnkudmFsdWUpIHtcbiAgICAgICAgPGJ1dHRvbiBpZD1cImNsZWFyXCIgKGNsaWNrKT1cImNsZWFyUXVlcnkoKVwiIGRhdGEtdGVzdGlkPVwiY2xlYXJCdG5cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBzcy1pY29uXCI+IGNhbmNlbCA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBpZiAoc2hvd1N1Z2dlc3Rpb25zICYmIHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHVsIGNsYXNzPVwic3VnZ2VzdGlvbnMtbGlzdFwiIHJvbGU9XCJsaXN0Ym94XCIgZGF0YS10ZXN0aWQ9XCJzdWdnZXN0aW9uc0xpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKHN1Z2dlc3Rpb24gb2Ygc3VnZ2VzdGlvbnM7IHRyYWNrIHN1Z2dlc3Rpb247IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3VnZ2VzdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImkgPT09IHNlbGVjdGVkU3VnZ2VzdGlvbkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwic2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBzZWxlY3RlZFN1Z2dlc3Rpb25JbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic3VnZ2VzdGlvbkl0ZW1cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgc3VnZ2VzdGlvbiB9fVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgfVxuPC9kaXY+XG4iXX0=
|