@arsedizioni/ars-utils 18.2.326 → 18.2.327
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/clipper.ui/ui/document-menu/document-menu.component.d.ts +1 -1
- package/clipper.ui/ui/search-result-manager/search-result-manager.d.ts +2 -2
- package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +22 -24
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +21 -23
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import { ClipperSearchResultManager } from '../search-result-manager/search-resu
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class ClipperDocumentMenuComponent {
|
|
6
6
|
useSelections: import("@angular/core").InputSignal<boolean>;
|
|
7
|
-
selectionSource: import("@angular/core").InputSignal<"
|
|
7
|
+
selectionSource: import("@angular/core").InputSignal<"bag" | "selection" | "none">;
|
|
8
8
|
protected selection: Signal<ClipperDocumentInfo[]>;
|
|
9
9
|
parent: import("@angular/core").InputSignal<ClipperSearchResultManager>;
|
|
10
10
|
item: import("@angular/core").InputSignal<ClipperDocumentInfo>;
|
|
@@ -104,8 +104,8 @@ export declare class ClipperSearchResultManager extends ClipperDocumentManager i
|
|
|
104
104
|
*/
|
|
105
105
|
prepareResults(data?: ClipperSearchResult | null, facets?: ClipperSearchFacetsResult | null, months?: ClipperSearchCalendarSnapshotResult | null, month?: ClipperSearchCalendarSnapshotResult | null, date?: Date | null): void;
|
|
106
106
|
/**
|
|
107
|
-
* Save current document list or just the selected documents as a csv
|
|
108
|
-
*/
|
|
107
|
+
* Save current document list or just the selected documents as a csv
|
|
108
|
+
*/
|
|
109
109
|
exportResults(): void;
|
|
110
110
|
/**
|
|
111
111
|
* Return item state css class
|
|
@@ -304,35 +304,33 @@ export class ClipperSearchResultManager extends ClipperDocumentManager {
|
|
|
304
304
|
}
|
|
305
305
|
}
|
|
306
306
|
if (facets || months || month) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
this.
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
else if (months || month) {
|
|
317
|
-
if (months) {
|
|
318
|
-
this.calendar?.update(months, 'months', date ?? new Date());
|
|
307
|
+
setTimeout(() => {
|
|
308
|
+
if (facets) {
|
|
309
|
+
this.facets?.update(facets.facets, facets.interval);
|
|
310
|
+
if (this.facets && this.snapshot) {
|
|
311
|
+
this.snapshot.facets = this.facets.save();
|
|
312
|
+
this.snapshot.facets.hasTooManyResults = this.snapshot.total >= 1000;
|
|
313
|
+
}
|
|
314
|
+
this.hasCalendar.set(false);
|
|
315
|
+
this.hasFacets.set(this.facets?.hasFacets());
|
|
319
316
|
}
|
|
320
|
-
if (month) {
|
|
321
|
-
|
|
317
|
+
else if (months || month) {
|
|
318
|
+
if (months) {
|
|
319
|
+
this.calendar?.update(months, 'months', date ?? new Date());
|
|
320
|
+
}
|
|
321
|
+
if (month) {
|
|
322
|
+
this.calendar?.update(month, 'month', date ?? new Date());
|
|
323
|
+
}
|
|
324
|
+
this.hasFacets.set(false);
|
|
325
|
+
this.hasCalendar.set(true);
|
|
322
326
|
}
|
|
323
|
-
|
|
324
|
-
this.hasFacets.set(false);
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
this.hasFacets.set(false);
|
|
328
|
-
this.hasCalendar.set(false);
|
|
329
|
-
}
|
|
327
|
+
}, 250);
|
|
330
328
|
}
|
|
331
329
|
this.changeDetector.markForCheck();
|
|
332
330
|
}
|
|
333
331
|
/**
|
|
334
|
-
* Save current document list or just the selected documents as a csv
|
|
335
|
-
*/
|
|
332
|
+
* Save current document list or just the selected documents as a csv
|
|
333
|
+
*/
|
|
336
334
|
exportResults() {
|
|
337
335
|
if (this.snapshot?.total > 0 || this.hasAnySelection()) {
|
|
338
336
|
this.exportItems(this.getSeletectIds(), this.filterParams);
|
|
@@ -525,4 +523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
525
523
|
type: ViewChild,
|
|
526
524
|
args: ['calendar']
|
|
527
525
|
}] } });
|
|
528
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZUFBZSxFQUFFLFlBQVksRUFBa0UsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hQLE9BQU8sRUFDSCxVQUFVLEVBQ0ssYUFBYSxFQUFtQixXQUFXLEVBQzFELFlBQVksRUFDZixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQVV4RixNQUFNLE9BQU8sMEJBQ1QsU0FBUSxzQkFBc0I7SUFQbEM7O1FBYWMsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLE1BQU0sQ0FB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LENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO29CQUM3RixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFWixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBOWdCUSwwQkFBMEI7a0dBQTFCLDBCQUEwQixpWEFMekIsYUFBYTs7MkZBS2QsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixDQUFDO2lCQUNsRzs4QkFJMkIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNELE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDSSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBpbmplY3QsXHJcbiAgICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQ2xpcHBlckRvY3VtZW50SW5mbywgQ2xpcHBlck1lc3NhZ2VzLCBDbGlwcGVyTW9kZWwsIENsaXBwZXJTZWFyY2hDYWxlbmRhclNuYXBzaG90UmVzdWx0LCBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0LCBDbGlwcGVyU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoUmVzdWx0LCBDbGlwcGVyU29ydCwgQ2xpcHBlclV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBEYXRlRm9ybWF0LFxyXG4gICAgTmFtZVZhbHVlSXRlbSwgU2NyZWVuU2VydmljZSwgU2VsZWN0YWJsZU1vZGVsLCBTeXN0ZW1VdGlscyxcclxuICAgIFRoZW1lU2VydmljZVxyXG59IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IHN0YXJ0T2ZEYXksIHN0YXJ0T2ZUb2RheSwgc3ViRGF5cyB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRzVXRpbHMgfSBmcm9tICcuLi8uLi9kb2N1bWVudHMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vZG9jdW1lbnQtbWFuYWdlci9kb2N1bWVudC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWNhbGVuZGFyL3NlYXJjaC1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWZhY2V0cy9zZWFyY2gtZmFjZXRzLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2PicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBpbXBvcnRzOiBbQ2xpcHBlckRvY3VtZW50TWFuYWdlciwgQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudCwgQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyXHJcbiAgICBleHRlbmRzIENsaXBwZXJEb2N1bWVudE1hbmFnZXJcclxuICAgIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICAgIEBWaWV3Q2hpbGQoJ2ZhY2V0cycpIGZhY2V0cyE6IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyITogQ2xpcHBlclNlYXJjaENhbGVuZGFyQ29tcG9uZW50O1xyXG5cclxuICAgIHByb3RlY3RlZCB1bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgcHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2UgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcclxuICAgIHB1YmxpYyBzY3JlZW5TZXJ2aWNlID0gaW5qZWN0KFNjcmVlblNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0YWJsZU1vZGVsPGFueSwgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNuYXBzaG90OiBDbGlwcGVyU2VhcmNoUmVzdWx0IHwgbnVsbCA9IG5ldyBDbGlwcGVyU2VhcmNoUmVzdWx0KCk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyQnVzeSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zID0gbmV3IENsaXBwZXJTZWFyY2hQYXJhbXMoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lSGFzQmFja2Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmUyQ2xvc2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgc29ydE9wdGlvbnM6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdID0gW107XHJcbiAgICBwcm90ZWN0ZWQgc29ydE1vZGU6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPiB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIHNjcm9sbGVySWQ6IHN0cmluZyA9ICdzY3JvbGxlcl8nICsgU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVzdG9yYWJsZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBoYXNGYWNldHMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGhhc0NhbGVuZGFyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBoYXNSZWdpb25zID0gKCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9ycz8uZmlsdGVyKG4gPT4gbi52YWx1ZSA9PT0gJ0xSJykubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH07XHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIG1lbnUgYnV0dG9ucyB2aXNpYmlsaXR5IHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Lml0ZW1zPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgbi5pc01lbnVPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcm9sbCBvbiB0b3AgbyBsaXN0IGFyZWFcclxuICAgICAqIEBwYXJhbSB0b3A6IHRoZSB0b3AgcG9zaXRpb25cclxuICAgICAqL1xyXG4gICAgc2Nyb2xsKHRvcDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnNjcm9sbGVySWQpO1xyXG4gICAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgICAgIGVsZW0uc2Nyb2xsVG8oeyB0b3A6IHRvcCwgbGVmdDogMCwgYmVoYXZpb3I6ICdhdXRvJyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBpZiBldmVyeSBlbGVtZW50IGFyZSBzZWxlY3RlZFxyXG4gICAgICovXHJcbiAgICBhbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmN1cnJlbnQ/LnNlbGVjdGVkPy5sZW5ndGggPT09IHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXN0ZXIgc2VsZWN0aW9uIHRvZ2dsZVxyXG4gICAgICogQHBhcmFtIHNlbGVjdDogdHJ1ZSB0byBzZWxlY3QgYWxsIGVsZW1lbnRzIGZhbHNlIHRvIGRlc2VsZWN0IGFsbCBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBzZWxlY3RBbGwoc2VsZWN0OiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmIChzZWxlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2gobiA9PiB0aGlzLnNlbGVjdGlvbj8uc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3Q/Lml0ZW1zPy5mb3JFYWNoKG4gPT4gdGhpcy5zZWxlY3Rpb24/LmRlc2VsZWN0KG4sIG4uZG9jdW1lbnRJZCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgc2VsZWN0aW9ucyBleGlzdHNcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKi9cclxuICAgIGhhc0FueVNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENoZWNrIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICogQHJldHVybnMgdHJ1ZSBpZiBvbmx5IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzU2luZ2xlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIGZpcnN0IHNlbGVjdGVkIGl0ZW0gXHJcbiAgICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCBpdGVtIG9yIG51bGwgICAgXHJcbiAgICAqL1xyXG4gICAgZ2V0U2luZ2xlU2VsZWN0aW9uKCk6IENsaXBwZXJEb2N1bWVudEluZm8gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYXNBbnlTZWxlY3Rpb24oKSA/IHRoaXMuc2VsZWN0aW9uPy5hbGxbMF0gOiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENsZWFyIHNlbGVjdGlvblxyXG4gICAgKi9cclxuICAgIGNsZWFyU2VsZWN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtcyBvciBudWxsXHJcbiAgICogQHJldHVybnMgUmV0dXJuIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgaXRlbXNcclxuICAgKi9cclxuICAgIGNvdW50U2VsZWN0aW9ucygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA+IDApID8gdGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAqIEdldCB0aGUgc2VsZWN0ZWQgaWRcclxuICAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24/LmFsbFswXS5kb2N1bWVudElkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICovXHJcbiAgICBnZXRTZWxldGVjdElkcygpOiBzdHJpbmdbXSB8IG51bGwge1xyXG4gICAgICAgIGlmICgodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID4gMTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcignTGEgc2VsZXppb25lIG5vbiBwdcOyIGNvbnRlbmVyZSBwacO5IGRpIDEwMCBlbGVtZW50aS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmFsbD8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaWRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFsbCBzZWxlY3RlZCBpZHNcclxuICAgICAqIEByZXR1cm5zIGEgdHVwbGUgbGlzdCB3aXRoIGlkIGFuZCBkYXRhXHJcbiAgICAgKi9cclxuICAgIGdldFNlbGV0ZWN0SWRzQW5kRGF0YSgpOiBbc3RyaW5nLCBDbGlwcGVyRG9jdW1lbnRJbmZvXVtdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGE6IFtzdHJpbmcsIENsaXBwZXJEb2N1bWVudEluZm9dW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKFtuLmRvY3VtZW50SWQsIG5dKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0IGl0ZW1zXHJcbiAgICAgKiBAcGFyYW0gaXRlbXMgOiB0aGUgaXRlbXMgdG8gcHJvY2Vzc1xyXG4gICAgICogQHBhcmFtIHBhcmFtcyA6IHRoZSBjdXJyZW50IHNlYXJjaCBwYXJhbXNcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdEl0ZW1zKGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10sIHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZlRvZGF5KCk7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVllYXIgPVxyXG4gICAgICAgICAgICAhcGFyYW1zLnNvcnRNb2RlIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LkRhdGVEZXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZUFzYyB8fFxyXG4gICAgICAgICAgICBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlNvdXJjZURhdGVEZXNjO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlSZWxldmFuY2UgPSBwYXJhbXMuc29ydE1vZGUgPT09IENsaXBwZXJTb3J0LlJlbGV2YW5jZTtcclxuICAgICAgICBjb25zdCBncm91cEJ5UG9wdWxhcml0eSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUG9wdWxhcml0eTtcclxuICAgICAgICBsZXQgZ3JvdXAgPSAnJztcclxuICAgICAgICBpdGVtcz8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgbi5kb2N1bWVudElkID0gbi5kb2N1bWVudElkID8/IG4uaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy51cGRhdGVDdXJyZW50KG4sIG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuUXVlc2l0aSkge1xyXG4gICAgICAgICAgICAgICAgbi5pbmZvID0gXCJRdWVzaXRvIG7CsCBcIiArIG4ubnVtYmVyICsgXCIgZGVsIFwiICsgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIFwiZCBNTU0geXl5eVwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuU2NhZGVuemUgfHxcclxuICAgICAgICAgICAgICAgIG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAobi5tb2RlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlNjYWRlbnplOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NjYWRlbnphJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2VnbmFsYXppb25pOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuLm9yaWdpbkRlc2NyaXB0aW9uID0gJ1NlZ25hbGF6aW9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gbi5leHBpcmluZ0luZm8uc3BsaXQoJ3wnKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSBuLmV4cGlyaW5nRGVzY3JpcHRpb24gPSBwYXJ0c1syXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmV4cGlyaW5nRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5leHBpcmluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKG4uZGF0ZSwgMTUpKTtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJpbmcgPSB0b2RheSA8PSBuLmRhdGUgJiYgdG9kYXkgPj0gZDtcclxuICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IG4uZGF0ZSA8IHRvZGF5O1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICgobi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLkFydGljb2xpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLk5ld3MpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi50YWdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pbmZvID0gbi50YWdzLnRvVXBwZXJDYXNlKCkuc3Vic3RyaW5nKDEpLnJlcGxhY2VBbGwoXCIjXCIsIFwiLCBcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8gJiZcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5KdXJpcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi5kYXRlID8/IG4ucHVibGlzaGluZ0RhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkID0gc3RhcnRPZkRheShzdWJEYXlzKHN0YXJ0T2ZUb2RheSgpLCA3KSlcclxuICAgICAgICAgICAgICAgICAgICBuLmlzTmV3ID0gbi5kYXRlID4gZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLmFuY2hvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yVHlwZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2hvcnM6IGFueSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycy5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlID09PSAyMCkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlICE9PSBhbmNob3JUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYS50eXBlID49IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9ycy5wdXNoKHsgdGV4dDogYS50eXBlRGVzY3JpcHRpb24gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JUeXBlID0gYS50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY29yZSA9IGEuc2NvcmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29yZSA+IDcpIHNjb3JlIC09IDc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNjb3JlID4gNSkgc2NvcmUgLT0gNTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiAzKSBzY29yZSAtPSAzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogYS50ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGEudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudElkOiBhLmRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IGEudXJpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyeVJlbGV2YW50OiBzY29yZSA+IDAuNlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBuLmFuY2hvcnMgPSBhbmNob3JzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4udmFsaWRpdHlTdGF0ZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBuLnZhbGlkaXR5RGVzY3JpcHRpb24gPSAnSWwgZG9jdW1lbnRvIG5vbiDDqCBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobi52YWxpZFVudGlsRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBpcmluZ0RhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4udmFsaWRVbnRpbERhdGUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGlyaW5nRGF0ZSA8IHRvZGF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnZhbGlkaXR5RGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbCBkb2N1bWVudG8gbm9uIMOoIHBpw7kgdmlnZW50ZSBkYWwgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShleHBpcmluZ0RhdGUpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLnZhbGlkaXR5RGVzY3JpcHRpb24gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJbCBkb2N1bWVudG8gbm9uIHNhcsOgIHBpw7kgdmlnZW50ZSBkYWwgJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShleHBpcmluZ0RhdGUpICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlzRXhwaXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLmV4cGlyaW5nRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBzdGFydE9mRGF5KHN1YkRheXMobi5kYXRlLCAxNSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmluZyA9IHRvZGF5IDw9IG4uZGF0ZSAmJiB0b2RheSA+PSBkO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gbi5kYXRlIDwgdG9kYXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGdyb3VwQnlZZWFyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB5ZWFyID0gU3lzdGVtVXRpbHMuZm9ybWF0RGF0ZShuLmRhdGUsIERhdGVGb3JtYXQuTG9uZ01vbnRoQW5kWWVhcikudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0geWVhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPSB5ZWFyO1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwID0geWVhcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChncm91cEJ5UmVsZXZhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnRWxlbWVudGkgcGnDuSByaWxldmFudGkgcGVyIGxhIHJpY2VyY2E6ICcgKyBwYXJhbXMudGV4dDtcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChncm91cEJ5UG9wdWxhcml0eSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmdyb3VwID0gJ0VsZW1lbnRpIHBpw7kgcG9wb2xhcmkgaW4gb3JkaW5lIGRlY3Jlc2NlbnRlJztcclxuICAgICAgICAgICAgICAgICAgICBncm91cCA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZXBhcmUgcmVzdWx0c1xyXG4gICAgICogQHBhcmFtIGRhdGEgOiB0aGUgb3B0aW9uYWwgcmVzdWx0IGxpc3QgdG8gcHJlcGFyZVxyXG4gICAgICogQHBhcmFtIGZhY2V0cyA6IHRoZSBvcHRpb25hbCBmYWNldHMgbGlzdCB0byBwcmVwYXJlXHJcbiAgICAgKiBAcGFyYW0gbW9udGhzIDogdGhlIG9wdGlvbmFsIHNuYXBzaG90IG1vbnRocyBcclxuICAgICAqIEBwYXJhbSBtb250aCA6IHRoZSBvcHRpb25hbCBzbmFwc2hvdCBtb250aFxyXG4gICAgICogQHBhcmFtIGRhdGUgOiB0aGUgb3B0aW5hbCBzbmFwc2hvdCBjdXJyZW50IGRhdGVcclxuICAgICAqL1xyXG4gICAgcHJlcGFyZVJlc3VsdHMoXHJcbiAgICAgICAgZGF0YT86IENsaXBwZXJTZWFyY2hSZXN1bHQgfCBudWxsLFxyXG4gICAgICAgIGZhY2V0cz86IENsaXBwZXJTZWFyY2hGYWNldHNSZXN1bHQgfCBudWxsLFxyXG4gICAgICAgIG1vbnRocz86IENsaXBwZXJTZWFyY2hDYWxlbmRhclNuYXBzaG90UmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBtb250aD86IENsaXBwZXJTZWFyY2hDYWxlbmRhclNuYXBzaG90UmVzdWx0IHwgbnVsbCxcclxuICAgICAgICBkYXRlPzogRGF0ZSB8IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uY3VycmVudC5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90ID0gZGF0YTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc25hcHNob3QuaXRlbXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZVJlc3VsdEl0ZW1zKHRoaXMuc25hcHNob3QuaXRlbXMsIHRoaXMuZmlsdGVyUGFyYW1zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmFjZXRzIHx8IG1vbnRocyB8fCBtb250aCkge1xyXG4gICAgICAgICAgICBpZiAoZmFjZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cz8udXBkYXRlKGZhY2V0cy5mYWNldHMsIGZhY2V0cy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzID0gdGhpcy5mYWNldHM/LnNhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cy5oYXNUb29NYW55UmVzdWx0cyA9IHRoaXMuc25hcHNob3QudG90YWwgPj0gMTAwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldCh0aGlzLmZhY2V0cz8uaGFzRmFjZXRzKCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNDYWxlbmRhci5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1vbnRocyB8fCBtb250aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKG1vbnRocykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXI/LnVwZGF0ZShtb250aHMsICdtb250aHMnLCBkYXRlID8/IG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcj8udXBkYXRlKG1vbnRoLCAnbW9udGgnLCBkYXRlID8/IG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ2FsZW5kYXIuc2V0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0NhbGVuZGFyLnNldChmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiogU2F2ZSBjdXJyZW50IGRvY3VtZW50IGxpc3Qgb3IganVzdCB0aGUgc2VsZWN0ZWQgZG9jdW1lbnRzIGFzIGEgY3N2XHJcbiovXHJcbiAgICBleHBvcnRSZXN1bHRzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNuYXBzaG90Py50b3RhbCA+IDAgfHwgdGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmV4cG9ydEl0ZW1zKHRoaXMuZ2V0U2VsZXRlY3RJZHMoKSwgdGhpcy5maWx0ZXJQYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIGl0ZW0gc3RhdGUgY3NzIGNsYXNzXHJcbiAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVDc3NDbGFzcyhpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXNSZWFkICE9PSB0cnVlICYmIENsaXBwZXJVdGlscy5pc0NsaXBwZXJNb2RlbFJlYWRhYmxlKGl0ZW0ubW9kZWwpKSByZXR1cm4gJ3VucmVhZC1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5pc0V4cGlyZWQpIHJldHVybiAnZXhwaXJlZC1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID09PSAzKSByZXR1cm4gJ3BvcHVsYXItYmcnO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpIHJldHVybiAndmVyeS1wb3B1bGFyLWJnJztcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybiB0aGUgaXRlbSBzdGF0ZSB0b29sdGlwIHRleHRcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgICAqL1xyXG4gICAgZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoaXRlbS5pc1JlYWQgIT09IHRydWUgJiYgQ2xpcHBlclV0aWxzLmlzQ2xpcHBlck1vZGVsUmVhZGFibGUoaXRlbS5tb2RlbCkpIHJldHVybiAnTm9uIGxldHRvJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLmlzRXhwaXJlZCkgcmV0dXJuICdOb24gcGnDuSB2aWdlbnRlJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIGFsdG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA+IDMpXHJcbiAgICAgICAgICAgIHJldHVybiAnRG9jdW1lbnRvIGNvbiBudW1lcm8gZGkgY2l0YXppb25pIG1vbHRvIGFsdG8nO1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogUmV0dXJuIHRoZSBpdGVtIGljb25cclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1JY29uKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoaXRlbS5tb2RlbCkge1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlOiByZXR1cm4gJ2dhdmVsJztcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQXJ0aWNvbGk6XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLlF1ZXNpdGk6XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk1ldG9kaURpQW5hbGlzaTogcmV0dXJuICdleHRlbnNpb24nO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ3VwZGF0ZWQnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRvZ2dsZSB0aGUgcmVhZCBmbGFnXHJcbiAgICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAgICogQHBhcmFuIGU6IHRoZSBvcHRpb25hbCBjbGljayBldmVudFxyXG4gICAgICovXHJcbiAgICB0b2dnbGVSZWFkKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8sIGU6IEV2ZW50IHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2V0UmVhZCghaXRlbT8uaXNSZWFkLCBpdGVtKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFRvZ2dsZSB0aGUgc2VsZWN0aW9uIGZsYWdcclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byB1cGRhdGVcclxuICAgICogQHBhcmFuIGU6IHRoZSBvcHRpb25hbCBjbGljayBldmVudFxyXG4gICAgKi9cclxuICAgIHRvZ2dsZVNlbGVjdGlvbihpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvLCBlOiBFdmVudCB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgZT8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbj8udG9nZ2xlKGl0ZW0sIGl0ZW0uZG9jdW1lbnRJZClcclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIHNlbGVjdGVkIGlkXHJcbiAgICAqL1xyXG4gICAgc2V0UmVhZCh2YWx1ZTogYm9vbGVhbiwgaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbyA9IG51bGwpIHtcclxuICAgICAgICBsZXQgZG9jdW1lbnRJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgZG9jdW1lbnRJZHMgPSBbaXRlbS5kb2N1bWVudElkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnRJZHMgPSB0aGlzLnNlbGVjdGlvbj8uYWxsPy5tYXAobiA9PiBuLmRvY3VtZW50SWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jbGlwcGVyU2VydmljZS51cGRhdGVTdGF0ZSh7IGRvY3VtZW50SWRzOiBkb2N1bWVudElkcywgaXNSZWFkOiB2YWx1ZSB9KVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLmlzUmVhZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGRhc2hib2FyZFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UudXBkYXRlVW5yZWFkSXRlbXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENsaXBwZXJVdGlscy5nZXRDbGlwcGVyTW9kdWxlRnJvbU1vZGVsKGl0ZW0ubW9kZWwpLCB2YWx1ZSA/IC0xIDogMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBPcGVuIGFuIGl0ZW1cclxuICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICogQHBhcmFtIHF1ZXJ5OiB0aGUgY3VycmVudCBxdWVyeSBvciBudWxsXHJcbiAqIEBwYXJhbSBuZXdXaW5kb3c6IHRydWUgaWYgdGhlIGRvY3VtZW50IG11c3QgYmUgb3BlbiBpbnRvIGEgbmV3IHdpbmRvd1xyXG4gKi9cclxuICAgIG92ZXJyaWRlIG9wZW4oZG9jdW1lbnRJZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwsIG5ld1dpbmRvdzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKCFuZXdXaW5kb3cpIHRoaXMub3BlbkRvY3VtZW50KGRvY3VtZW50SWQsIHF1ZXJ5KTtcclxuICAgICAgICBlbHNlIHdpbmRvdy5vcGVuKCcvZG9jdW1lbnRvLycgKyBkb2N1bWVudElkLCAnX2JsYW5rJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPcGVuIGEgZG9jdW1lbnRcclxuICAgICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICAgKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICAgICAqL1xyXG4gICAgb3BlbkRvY3VtZW50KGRvY3VtZW50SWQ6IHN0cmluZywgcXVlcnk6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICAgICAgQ2xpcHBlckRvY3VtZW50c1V0aWxzLm9wZW5Eb2N1bWVudChcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgICAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICBkb2N1bWVudElkLFxyXG4gICAgICAgICAgICBxdWVyeSA/PyB0aGlzLmZpbHRlclBhcmFtcy50ZXh0LFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5nZXRUaGVtZSgpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy8vXHJcbiAgICAvLyBSZXN0b3JhYmxlXHJcbiAgICAvLy9cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNhdmUgcmVzdG9yYWJsZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICogQHBhcmFtIHNjcm9sbCA6IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBzYXZlKGlkOiBzdHJpbmcsIHNjcm9sbDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2luYXRvcj8ucGFnZUluZGV4ID8/IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgdG90YWw6IHRoaXMuc25hcHNob3Q/LnRvdGFsID8/IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VTaXplID8/IDE1XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFjZXRzOiB0aGlzLmZhY2V0cz8uc2F2ZSgpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB0aGlzLmZpbHRlclBhcmFtcyxcclxuICAgICAgICAgICAgICAgIHNjcm9sbDogc2Nyb2xsLFxyXG4gICAgICAgICAgICAgICAgc29ydDogeyBtb2RlOiB0aGlzLnNvcnRNb2RlLCBvcHRpb25zOiB0aGlzLnNvcnRPcHRpb25zIH0sXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLnNuYXBzaG90XHJcbiAgICAgICAgICAgICAgICAgICAgPyB7IGl0ZW1zOiB0aGlzLnNuYXBzaG90Lml0ZW1zLCB0b3RhbDogdGhpcy5zbmFwc2hvdC50b3RhbCB9XHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3RvcmUgZGF0YVxyXG4gICAgICogQHBhcmFtIGlkIDogdGhlIHJlc3RvcmFibGUgaWRcclxuICAgICAqL1xyXG4gICAgcmVzdG9yZShpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGlkKTtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSBkYXRhLmZpbHRlclBhcmFtcztcclxuICAgICAgICAgICAgICAgIHRoaXMuc25hcHNob3QgPSBkYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnRNb2RlID0gZGF0YS5zb3J0Lm1vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnRPcHRpb25zID0gZGF0YS5zb3J0Lm9wdGlvbnM7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mYWNldHMgJiYgZGF0YS5mYWNldHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWNldHMucmVzdG9yZShkYXRhLmZhY2V0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRmFjZXRzLnNldChkYXRhLmZhY2V0cy5oYXNGYWNldHMgPT09IHRydWUgPyB0cnVlIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IgJiYgZGF0YS5wYWdpbmF0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gZGF0YS5wYWdpbmF0b3IucGFnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0b3IucGFnZVNpemUgPSBkYXRhLnBhZ2luYXRvci5zaXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5sZW5ndGggPSBkYXRhLnBhZ2luYXRvci50b3RhbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGwoZGF0YS5zY3JvbGwgPz8gMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5DT01NQU5EX1NFQVJDSF9SRVNUT1JFRCwgZGF0YS5maWx0ZXJQYXJhbXMpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA3NTApO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
526
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQWEsU0FBUyxFQUFFLE1BQU0sRUFDdkMsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBdUIsZUFBZSxFQUFFLFlBQVksRUFBa0UsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hQLE9BQU8sRUFDSCxVQUFVLEVBQ0ssYUFBYSxFQUFtQixXQUFXLEVBQzFELFlBQVksRUFDZixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQVV4RixNQUFNLE9BQU8sMEJBQ1QsU0FBUSxzQkFBc0I7SUFQbEM7O1FBYWMsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLE1BQU0sQ0FB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RUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7b0JBQzdGLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVaLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0E3Z0JRLDBCQUEwQjtrR0FBMUIsMEJBQTBCLGlYQUx6QixhQUFhOzsyRkFLZCwwQkFBMEI7a0JBTnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsOEJBQThCLENBQUM7aUJBQ2xHOzhCQUkyQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0QsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNJLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCwgT25EZXN0cm95LCBWaWV3Q2hpbGQsIGluamVjdCxcclxuICAgIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBDbGlwcGVyRG9jdW1lbnRJbmZvLCBDbGlwcGVyTWVzc2FnZXMsIENsaXBwZXJNb2RlbCwgQ2xpcHBlclNlYXJjaENhbGVuZGFyU25hcHNob3RSZXN1bHQsIENsaXBwZXJTZWFyY2hGYWNldHNSZXN1bHQsIENsaXBwZXJTZWFyY2hQYXJhbXMsIENsaXBwZXJTZWFyY2hSZXN1bHQsIENsaXBwZXJTb3J0LCBDbGlwcGVyVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICAgIERhdGVGb3JtYXQsXHJcbiAgICBOYW1lVmFsdWVJdGVtLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzLFxyXG4gICAgVGhlbWVTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgc3RhcnRPZkRheSwgc3RhcnRPZlRvZGF5LCBzdWJEYXlzIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudHNVdGlscyB9IGZyb20gJy4uLy4uL2RvY3VtZW50cyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1hbmFnZXIgfSBmcm9tICcuLi9kb2N1bWVudC1tYW5hZ2VyL2RvY3VtZW50LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtY2FsZW5kYXIvc2VhcmNoLWNhbGVuZGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZmFjZXRzL3NlYXJjaC1mYWNldHMuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZTogJzxkaXY+PC9kaXY+JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICAgIGltcG9ydHM6IFtDbGlwcGVyRG9jdW1lbnRNYW5hZ2VyLCBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50LCBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlYXJjaFJlc3VsdE1hbmFnZXJcclxuICAgIGV4dGVuZHMgQ2xpcHBlckRvY3VtZW50TWFuYWdlclxyXG4gICAgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgncGFnaW5hdG9yJykgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xyXG4gICAgQFZpZXdDaGlsZCgnZmFjZXRzJykgZmFjZXRzITogQ2xpcHBlclNlYXJjaEZhY2V0c0NvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJykgY2FsZW5kYXIhOiBDbGlwcGVyU2VhcmNoQ2FsZW5kYXJDb21wb25lbnQ7XHJcblxyXG4gICAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICBwcm90ZWN0ZWQgYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XHJcbiAgICBwcml2YXRlIHRoZW1lU2VydmljZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xyXG4gICAgcHVibGljIHNjcmVlblNlcnZpY2UgPSBpbmplY3QoU2NyZWVuU2VydmljZSk7XHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3RhYmxlTW9kZWw8YW55LCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgc25hcHNob3Q6IENsaXBwZXJTZWFyY2hSZXN1bHQgfCBudWxsID0gbmV3IENsaXBwZXJTZWFyY2hSZXN1bHQoKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJCdXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYXJhbXM6IENsaXBwZXJTZWFyY2hQYXJhbXMgPSBuZXcgQ2xpcHBlclNlYXJjaFBhcmFtcygpO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmVIYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGZpbHRlclBhbmVDbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBmaWx0ZXJQYW5lMkhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZmlsdGVyUGFuZTJDbG9zZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb3RlY3RlZCBzb3J0T3B0aW9uczogTmFtZVZhbHVlSXRlbTxudW1iZXI+W10gPSBbXTtcclxuICAgIHByb3RlY3RlZCBzb3J0TW9kZTogTmFtZVZhbHVlSXRlbTxudW1iZXI+IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgc2Nyb2xsZXJJZDogc3RyaW5nID0gJ3Njcm9sbGVyXycgKyBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKTtcclxuICAgIHByb3RlY3RlZCByZXN0b3JhYmxlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgcHJvdGVjdGVkIGhhc0ZhY2V0cyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcm90ZWN0ZWQgaGFzQ2FsZW5kYXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJvdGVjdGVkIGhhc1JlZ2lvbnMgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3JzPy5maWx0ZXIobiA9PiBuLnZhbHVlID09PSAnTFInKS5sZW5ndGggPz8gMCkgPiAwO1xyXG4gICAgfTtcclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgbWVudSBidXR0b25zIHZpc2liaWxpdHkgd2hlbiB0aGUgbWVudSBpcyBjbG9zZWRcclxuICAgICAqL1xyXG4gICAgdXBkYXRlTWVudUJ1dHRvbnNWaXNpYmlsaXR5KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNuYXBzaG90KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QuaXRlbXM/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBuLmlzTWVudU9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2Nyb2xsIG9uIHRvcCBvIGxpc3QgYXJlYVxyXG4gICAgICogQHBhcmFtIHRvcDogdGhlIHRvcCBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBzY3JvbGwodG9wOiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc2Nyb2xsZXJJZCk7XHJcbiAgICAgICAgaWYgKGVsZW0pIHtcclxuICAgICAgICAgICAgZWxlbS5zY3JvbGxUbyh7IHRvcDogdG9wLCBsZWZ0OiAwLCBiZWhhdmlvcjogJ2F1dG8nIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrIGlmIGV2ZXJ5IGVsZW1lbnQgYXJlIHNlbGVjdGVkXHJcbiAgICAgKi9cclxuICAgIGFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uY3VycmVudD8uc2VsZWN0ZWQ/Lmxlbmd0aCA9PT0gdGhpcy5zbmFwc2hvdD8uaXRlbXM/Lmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hc3RlciBzZWxlY3Rpb24gdG9nZ2xlXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0OiB0cnVlIHRvIHNlbGVjdCBhbGwgZWxlbWVudHMgZmFsc2UgdG8gZGVzZWxlY3QgYWxsIGVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIHNlbGVjdEFsbChzZWxlY3Q6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90Py5pdGVtcz8uZm9yRWFjaChuID0+IHRoaXMuc2VsZWN0aW9uPy5zZWxlY3Qobiwgbi5kb2N1bWVudElkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zbmFwc2hvdD8uaXRlbXM/LmZvckVhY2gobiA9PiB0aGlzLnNlbGVjdGlvbj8uZGVzZWxlY3Qobiwgbi5kb2N1bWVudElkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBDaGVjayBpZiBzZWxlY3Rpb25zIGV4aXN0c1xyXG4gICAgKiBAcmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IGlzIHNlbGVjdGVkXHJcbiAgICAqL1xyXG4gICAgaGFzQW55U2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID8/IDApID4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQ2hlY2sgaWYgb25seSBvbmUgZWxlbWVudCBpcyBzZWxlY3RlZFxyXG4gICAgKiBAcmV0dXJucyB0cnVlIGlmIG9ubHkgb25lIGVsZW1lbnQgaXMgc2VsZWN0ZWRcclxuICAgICovXHJcbiAgICBoYXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPT09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCB0aGUgZmlyc3Qgc2VsZWN0ZWQgaXRlbSBcclxuICAgICogQHJldHVybnMgdGhlIHNlbGVjdGVkIGl0ZW0gb3IgbnVsbCAgICBcclxuICAgICovXHJcbiAgICBnZXRTaW5nbGVTZWxlY3Rpb24oKTogQ2xpcHBlckRvY3VtZW50SW5mbyB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhc0FueVNlbGVjdGlvbigpID8gdGhpcy5zZWxlY3Rpb24/LmFsbFswXSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICogQ2xlYXIgc2VsZWN0aW9uXHJcbiAgICAqL1xyXG4gICAgY2xlYXJTZWxlY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uPy5jbGVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGl0ZW1zIG9yIG51bGxcclxuICAgKiBAcmV0dXJucyBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWxlY3RlZCBpdGVtc1xyXG4gICAqL1xyXG4gICAgY291bnRTZWxlY3Rpb25zKCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID4gMCkgPyB0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICogR2V0IHRoZSBzZWxlY3RlZCBpZFxyXG4gICovXHJcbiAgICBnZXRTZWxldGVjdElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbj8uYWxsWzBdLmRvY3VtZW50SWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gKi9cclxuICAgIGdldFNlbGV0ZWN0SWRzKCk6IHN0cmluZ1tdIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCh0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGggPz8gMCkgPiAxMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKCdMYSBzZWxlemlvbmUgbm9uIHB1w7IgY29udGVuZXJlIHBpw7kgZGkgMTAwIGVsZW1lbnRpLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgaWRzLnB1c2gobi5kb2N1bWVudElkKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpZHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gICAgICogQHJldHVybnMgYSB0dXBsZSBsaXN0IHdpdGggaWQgYW5kIGRhdGFcclxuICAgICAqL1xyXG4gICAgZ2V0U2VsZXRlY3RJZHNBbmREYXRhKCk6IFtzdHJpbmcsIENsaXBwZXJEb2N1bWVudEluZm9dW10gfCBudWxsIHtcclxuICAgICAgICBpZiAoKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA/PyAwKSA+IDEwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0xhIHNlbGV6aW9uZSBub24gcHXDsiBjb250ZW5lcmUgcGnDuSBkaSAxMDAgZWxlbWVudGkuJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YTogW3N0cmluZywgQ2xpcHBlckRvY3VtZW50SW5mb11bXSA9IFtdO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5hbGw/LmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goW24uZG9jdW1lbnRJZCwgbl0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlcGFyZSByZXN1bHQgaXRlbXNcclxuICAgICAqIEBwYXJhbSBpdGVtcyA6IHRoZSBpdGVtcyB0byBwcm9jZXNzXHJcbiAgICAgKiBAcGFyYW0gcGFyYW1zIDogdGhlIGN1cnJlbnQgc2VhcmNoIHBhcmFtc1xyXG4gICAgICovXHJcbiAgICBwcmVwYXJlUmVzdWx0SXRlbXMoaXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSwgcGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zKSB7XHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mVG9kYXkoKTtcclxuICAgICAgICBjb25zdCBncm91cEJ5WWVhciA9XHJcbiAgICAgICAgICAgICFwYXJhbXMuc29ydE1vZGUgfHxcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5EYXRlQXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuRGF0ZURlc2MgfHxcclxuICAgICAgICAgICAgcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5Tb3VyY2VEYXRlQXNjIHx8XHJcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuU291cmNlRGF0ZURlc2M7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBCeVJlbGV2YW5jZSA9IHBhcmFtcy5zb3J0TW9kZSA9PT0gQ2xpcHBlclNvcnQuUmVsZXZhbmNlO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwQnlQb3B1bGFyaXR5ID0gcGFyYW1zLnNvcnRNb2RlID09PSBDbGlwcGVyU29ydC5Qb3B1bGFyaXR5O1xyXG4gICAgICAgIGxldCBncm91cCA9ICcnO1xyXG4gICAgICAgIGl0ZW1zPy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICBuLmRvY3VtZW50SWQgPSBuLmRvY3VtZW50SWQgPz8gbi5pZDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LnVwZGF0ZUN1cnJlbnQobiwgbi5kb2N1bWVudElkKTtcclxuICAgICAgICAgICAgaWYgKG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5RdWVzaXRpKSB7XHJcbiAgICAgICAgICAgICAgICBuLmluZm8gPSBcIlF1ZXNpdG8gbsKwIFwiICsgbi5udW1iZXIgKyBcIiBkZWwgXCIgKyBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKG4uZGF0ZSwgXCJkIE1NTSB5eXl5XCIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG4ubW9kZWwgPT09IENsaXBwZXJNb2RlbC5TY2FkZW56ZSB8fFxyXG4gICAgICAgICAgICAgICAgbi5tb2RlbCA9PT0gQ2xpcHBlck1vZGVsLlNlZ25hbGF6aW9uaSkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChuLm1vZGVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuU2NhZGVuemU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4ub3JpZ2luRGVzY3JpcHRpb24gPSAnU2NhZGVuemEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5TZWduYWxhemlvbmk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG4ub3JpZ2luRGVzY3JpcHRpb24gPSAnU2VnbmFsYXppb25lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0luZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcGFydHMgPSBuLmV4cGlyaW5nSW5mby5zcGxpdCgnfCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIG4uZXhwaXJpbmdEZXNjcmlwdGlvbiA9IHBhcnRzWzJdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uZXhwaXJpbmdEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLmV4cGlyaW5nRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBzdGFydE9mRGF5KHN1YkRheXMobi5kYXRlLCAxNSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmluZyA9IHRvZGF5IDw9IG4uZGF0ZSAmJiB0b2RheSA+PSBkO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gbi5kYXRlIDwgdG9kYXk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKChuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuQXJ0aWNvbGkgfHxcclxuICAgICAgICAgICAgICAgICAgICBuLm1vZGVsID09PSBDbGlwcGVyTW9kZWwuTmV3cykgJiZcclxuICAgICAgICAgICAgICAgICAgICBuLnRhZ3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmluZm8gPSBuLnRhZ3MudG9VcHBlckNhc2UoKS5zdWJzdHJpbmcoMSkucmVwbGFjZUFsbChcIiNcIiwgXCIsIFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChuLm1vZGVsICE9PSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2byAmJlxyXG4gICAgICAgICAgICAgICAgICAgIG4ubW9kZWwgIT09IENsaXBwZXJNb2RlbC5Ob3JtYXRpdmFWaWdlbnRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi5tb2RlbCAhPT0gQ2xpcHBlck1vZGVsLkp1cmlzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kYXRlID0gc3RhcnRPZkRheShuZXcgRGF0ZShuLmRhdGUgPz8gbi5wdWJsaXNoaW5nRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBzdGFydE9mRGF5KHN1YkRheXMoc3RhcnRPZlRvZGF5KCksIDcpKVxyXG4gICAgICAgICAgICAgICAgICAgIG4uaXNOZXcgPSBuLmRhdGUgPiBkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG4uYW5jaG9ycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhbmNob3JUeXBlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yczogYW55ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgbi5hbmNob3JzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnR5cGUgPT09IDIwKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnR5cGUgIT09IGFuY2hvclR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhLnR5cGUgPj0gMylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzLnB1c2goeyB0ZXh0OiBhLnR5cGVEZXNjcmlwdGlvbiB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvclR5cGUgPSBhLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjb3JlID0gYS5zY29yZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3JlID4gNykgc2NvcmUgLT0gNztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiA1KSBzY29yZSAtPSA1O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzY29yZSA+IDMpIHNjb3JlIC09IDM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhLnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50SWQ6IGEuZG9jdW1lbnRJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogYS51cmksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ5UmVsZXZhbnQ6IHNjb3JlID4gMC42XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIG4uYW5jaG9ycyA9IGFuY2hvcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi52YWxpZGl0eVN0YXRlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9ICdJbCBkb2N1bWVudG8gbm9uIMOoIHBpw7kgdmlnZW50ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuLnZhbGlkVW50aWxEYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGlyaW5nRGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUobi52YWxpZFVudGlsRGF0ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwaXJpbmdEYXRlIDwgdG9kYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gw6ggcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4udmFsaWRpdHlEZXNjcmlwdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsIGRvY3VtZW50byBub24gc2Fyw6AgcGnDuSB2aWdlbnRlIGRhbCAnICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGV4cGlyaW5nRGF0ZSkgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNFeHBpcmVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobi5leHBpcmluZ0RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKG4uZXhwaXJpbmdEYXRlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZCA9IHN0YXJ0T2ZEYXkoc3ViRGF5cyhuLmRhdGUsIDE1KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyaW5nID0gdG9kYXkgPD0gbi5kYXRlICYmIHRvZGF5ID49IGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5pc0V4cGlyZWQgPSBuLmRhdGUgPCB0b2RheTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZ3JvdXBCeVllYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHllYXIgPSBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKG4uZGF0ZSwgRGF0ZUZvcm1hdC5Mb25nTW9udGhBbmRZZWFyKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwICE9PSB5ZWFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5ncm91cCA9IHllYXI7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSB5ZWFyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdyb3VwQnlSZWxldmFuY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5ncm91cCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICdFbGVtZW50aSBwacO5IHJpbGV2YW50aSBwZXIgbGEgcmljZXJjYTogJyArIHBhcmFtcy50ZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwID0gJ25vbmUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdyb3VwQnlQb3B1bGFyaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG4uZ3JvdXAgPSAnRWxlbWVudGkgcGnDuSBwb3BvbGFyaSBpbiBvcmRpbmUgZGVjcmVzY2VudGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwID0gJ25vbmUnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlcGFyZSByZXN1bHRzXHJcbiAgICAgKiBAcGFyYW0gZGF0YSA6IHRoZSBvcHRpb25hbCByZXN1bHQgbGlzdCB0byBwcmVwYXJlXHJcbiAgICAgKiBAcGFyYW0gZmFjZXRzIDogdGhlIG9wdGlvbmFsIGZhY2V0cyBsaXN0IHRvIHByZXBhcmVcclxuICAgICAqIEBwYXJhbSBtb250aHMgOiB0aGUgb3B0aW9uYWwgc25hcHNob3QgbW9udGhzIFxyXG4gICAgICogQHBhcmFtIG1vbnRoIDogdGhlIG9wdGlvbmFsIHNuYXBzaG90IG1vbnRoXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSA6IHRoZSBvcHRpbmFsIHNuYXBzaG90IGN1cnJlbnQgZGF0ZVxyXG4gICAgICovXHJcbiAgICBwcmVwYXJlUmVzdWx0cyhcclxuICAgICAgICBkYXRhPzogQ2xpcHBlclNlYXJjaFJlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgZmFjZXRzPzogQ2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdCB8IG51bGwsXHJcbiAgICAgICAgbW9udGhzPzogQ2xpcHBlclNlYXJjaENhbGVuZGFyU25hcHNob3RSZXN1bHQgfCBudWxsLFxyXG4gICAgICAgIG1vbnRoPzogQ2xpcHBlclNlYXJjaENhbGVuZGFyU25hcHNob3RSZXN1bHQgfCBudWxsLFxyXG4gICAgICAgIGRhdGU/OiBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5jdXJyZW50LmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc25hcHNob3QgPSBkYXRhO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlUmVzdWx0SXRlbXModGhpcy5zbmFwc2hvdC5pdGVtcywgdGhpcy5maWx0ZXJQYXJhbXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmYWNldHMgfHwgbW9udGhzIHx8IG1vbnRoKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGZhY2V0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRzPy51cGRhdGUoZmFjZXRzLmZhY2V0cywgZmFjZXRzLmludGVydmFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zbmFwc2hvdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyA9IHRoaXMuZmFjZXRzLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMuaGFzVG9vTWFueVJlc3VsdHMgPSB0aGlzLnNuYXBzaG90LnRvdGFsID49IDEwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzQ2FsZW5kYXIuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0ZhY2V0cy5zZXQodGhpcy5mYWNldHM/Lmhhc0ZhY2V0cygpKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9udGhzIHx8IG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vbnRocykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy51cGRhdGUobW9udGhzLCAnbW9udGhzJywgZGF0ZSA/PyBuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vbnRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXI/LnVwZGF0ZShtb250aCwgJ21vbnRoJywgZGF0ZSA/PyBuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0NhbGVuZGFyLnNldCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMjUwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAqIFNhdmUgY3VycmVudCBkb2N1bWVudCBsaXN0IG9yIGp1c3QgdGhlIHNlbGVjdGVkIGRvY3VtZW50cyBhcyBhIGNzdlxyXG4gICAgKi9cclxuICAgIGV4cG9ydFJlc3VsdHMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc25hcHNob3Q/LnRvdGFsID4gMCB8fCB0aGlzLmhhc0FueVNlbGVjdGlvbigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0SXRlbXModGhpcy5nZXRTZWxldGVjdElkcygpLCB0aGlzLmZpbHRlclBhcmFtcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXR1cm4gaXRlbSBzdGF0ZSBjc3MgY2xhc3NcclxuICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgKi9cclxuICAgIGdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoaXRlbS5pc1JlYWQgIT09IHRydWUgJiYgQ2xpcHBlclV0aWxzLmlzQ2xpcHBlck1vZGVsUmVhZGFibGUoaXRlbS5tb2RlbCkpIHJldHVybiAndW5yZWFkLWJnJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLmlzRXhwaXJlZCkgcmV0dXJuICdleHBpcmVkLWJnJztcclxuICAgICAgICBlbHNlIGlmIChpdGVtLnBvcHVsYXJpdHkgPT09IDMpIHJldHVybiAncG9wdWxhci1iZyc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMykgcmV0dXJuICd2ZXJ5LXBvcHVsYXItYmcnO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4gICAgICovXHJcbiAgICBnZXRJdGVtU3RhdGVUb29sdGlwKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChpdGVtLmlzUmVhZCAhPT0gdHJ1ZSAmJiBDbGlwcGVyVXRpbHMuaXNDbGlwcGVyTW9kZWxSZWFkYWJsZShpdGVtLm1vZGVsKSkgcmV0dXJuICdOb24gbGV0dG8nO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0uaXNFeHBpcmVkKSByZXR1cm4gJ05vbiBwacO5IHZpZ2VudGUnO1xyXG4gICAgICAgIGVsc2UgaWYgKGl0ZW0ucG9wdWxhcml0eSA9PT0gMykgcmV0dXJuICdEb2N1bWVudG8gY29uIG51bWVybyBkaSBjaXRhemlvbmkgYWx0byc7XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5wb3B1bGFyaXR5ID4gMylcclxuICAgICAgICAgICAgcmV0dXJuICdEb2N1bWVudG8gY29uIG51bWVybyBkaSBjaXRhemlvbmkgbW9sdG8gYWx0byc7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZXR1cm4gdGhlIGl0ZW0gaWNvblxyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGV2YWx1YXRlXHJcbiAgICAqL1xyXG4gICAgZ2V0SXRlbUljb24oaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbyk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLm1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ2xpcHBlck1vZGVsLk5vcm1hdGl2YVZpZ2VudGU6IHJldHVybiAnZ2F2ZWwnO1xyXG4gICAgICAgICAgICBjYXNlIENsaXBwZXJNb2RlbC5BcnRpY29saTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuUXVlc2l0aTpcclxuICAgICAgICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTWV0b2RpRGlBbmFsaXNpOiByZXR1cm4gJ2V4dGVuc2lvbic7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAndXBkYXRlZCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVG9nZ2xlIHRoZSByZWFkIGZsYWdcclxuICAgICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gdXBkYXRlXHJcbiAgICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIHRvZ2dsZVJlYWQoaXRlbTogQ2xpcHBlckRvY3VtZW50SW5mbywgZTogRXZlbnQgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZT8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5zZXRSZWFkKCFpdGVtPy5pc1JlYWQsIGl0ZW0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogVG9nZ2xlIHRoZSBzZWxlY3Rpb24gZmxhZ1xyXG4gICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIHVwZGF0ZVxyXG4gICAgKiBAcGFyYW4gZTogdGhlIG9wdGlvbmFsIGNsaWNrIGV2ZW50XHJcbiAgICAqL1xyXG4gICAgdG9nZ2xlU2VsZWN0aW9uKGl0ZW06IENsaXBwZXJEb2N1bWVudEluZm8sIGU6IEV2ZW50IHwgbnVsbCA9IG51bGwpIHtcclxuICAgICAgICBlPy5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGU/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5kb2N1bWVudElkKVxyXG5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEdldCB0aGUgc2VsZWN0ZWQgaWRcclxuICAgICovXHJcbiAgICBzZXRSZWFkKHZhbHVlOiBib29sZWFuLCBpdGVtOiBDbGlwcGVyRG9jdW1lbnRJbmZvID0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkb2N1bWVudElkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudElkcyA9IFtpdGVtLmRvY3VtZW50SWRdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBbnlTZWxlY3Rpb24oKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudElkcyA9IHRoaXMuc2VsZWN0aW9uPy5hbGw/Lm1hcChuID0+IG4uZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNsaXBwZXJTZXJ2aWNlLnVwZGF0ZVN0YXRlKHsgZG9jdW1lbnRJZHM6IGRvY3VtZW50SWRzLCBpc1JlYWQ6IHZhbHVlIH0pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc1JlYWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzQW55U2VsZWN0aW9uKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmFsbD8uZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4uaXNSZWFkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZGFzaGJvYXJkXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGlwcGVyU2VydmljZS51cGRhdGVVbnJlYWRJdGVtcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ2xpcHBlclV0aWxzLmdldENsaXBwZXJNb2R1bGVGcm9tTW9kZWwoaXRlbS5tb2RlbCksIHZhbHVlID8gLTEgOiAxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIE9wZW4gYW4gaXRlbVxyXG4gKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gKiBAcGFyYW0gcXVlcnk6IHRoZSBjdXJyZW50IHF1ZXJ5IG9yIG51bGxcclxuICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAqL1xyXG4gICAgb3ZlcnJpZGUgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIHF1ZXJ5OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCwgbmV3V2luZG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBpZiAoIW5ld1dpbmRvdykgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCwgcXVlcnkpO1xyXG4gICAgICAgIGVsc2Ugd2luZG93Lm9wZW4oJy9kb2N1bWVudG8vJyArIGRvY3VtZW50SWQsICdfYmxhbmsnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9wZW4gYSBkb2N1bWVudFxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgICAqIEBwYXJhbSBxdWVyeTogdGhlIGN1cnJlbnQgcXVlcnkgb3IgbnVsbFxyXG4gICAgICovXHJcbiAgICBvcGVuRG9jdW1lbnQoZG9jdW1lbnRJZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIWRvY3VtZW50SWQpIHJldHVybjtcclxuICAgICAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2UsXHJcbiAgICAgICAgICAgIGRvY3VtZW50SWQsXHJcbiAgICAgICAgICAgIHF1ZXJ5ID8/IHRoaXMuZmlsdGVyUGFyYW1zLnRleHQsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLmdldFRoZW1lKCkpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvLy9cclxuICAgIC8vIFJlc3RvcmFibGVcclxuICAgIC8vL1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2F2ZSByZXN0b3JhYmxlIGRhdGFcclxuICAgICAqIEBwYXJhbSBpZCA6IHRoZSByZXN0b3JhYmxlIGlkXHJcbiAgICAgKiBAcGFyYW0gc2Nyb2xsIDogdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICAgKi9cclxuICAgIHNhdmUoaWQ6IHN0cmluZywgc2Nyb2xsOiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICB0b3RhbDogdGhpcy5zbmFwc2hvdD8udG90YWwgPz8gMCxcclxuICAgICAgICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvcj8ucGFnZVNpemUgPz8gMTVcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWNldHM6IHRoaXMuZmFjZXRzPy5zYXZlKCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHRoaXMuZmlsdGVyUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBzY3JvbGwsXHJcbiAgICAgICAgICAgICAgICBzb3J0OiB7IG1vZGU6IHRoaXMuc29ydE1vZGUsIG9wdGlvbnM6IHRoaXMuc29ydE9wdGlvbnMgfSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuc25hcHNob3RcclxuICAgICAgICAgICAgICAgICAgICA/IHsgaXRlbXM6IHRoaXMuc25hcHNob3QuaXRlbXMsIHRvdGFsOiB0aGlzLnNuYXBzaG90LnRvdGFsIH1cclxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0gaWQgOiB0aGUgcmVzdG9yYWJsZSBpZFxyXG4gICAgICovXHJcbiAgICByZXN0b3JlKGlkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oaWQpO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IGRhdGEuZmlsdGVyUGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IGRhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ydE1vZGUgPSBkYXRhLnNvcnQubW9kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc29ydE9wdGlvbnMgPSBkYXRhLnNvcnQub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZhY2V0cyAmJiBkYXRhLmZhY2V0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY2V0cy5yZXN0b3JlKGRhdGEuZmFjZXRzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNGYWNldHMuc2V0KGRhdGEuZmFjZXRzLmhhc0ZhY2V0cyA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZ2luYXRvciAmJiBkYXRhLnBhZ2luYXRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSBkYXRhLnBhZ2luYXRvci5wYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5wYWdlU2l6ZSA9IGRhdGEucGFnaW5hdG9yLnNpemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmxlbmd0aCA9IGRhdGEucGFnaW5hdG9yLnRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbChkYXRhLnNjcm9sbCA/PyAwKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfU0VBUkNIX1JFU1RPUkVELCBkYXRhLmZpbHRlclBhcmFtcylcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH0sIDc1MCk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1163,35 +1163,33 @@ class ClipperSearchResultManager extends ClipperDocumentManager {
|
|
|
1163
1163
|
}
|
|
1164
1164
|
}
|
|
1165
1165
|
if (facets || months || month) {
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
this.
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
else if (months || month) {
|
|
1176
|
-
if (months) {
|
|
1177
|
-
this.calendar?.update(months, 'months', date ?? new Date());
|
|
1166
|
+
setTimeout(() => {
|
|
1167
|
+
if (facets) {
|
|
1168
|
+
this.facets?.update(facets.facets, facets.interval);
|
|
1169
|
+
if (this.facets && this.snapshot) {
|
|
1170
|
+
this.snapshot.facets = this.facets.save();
|
|
1171
|
+
this.snapshot.facets.hasTooManyResults = this.snapshot.total >= 1000;
|
|
1172
|
+
}
|
|
1173
|
+
this.hasCalendar.set(false);
|
|
1174
|
+
this.hasFacets.set(this.facets?.hasFacets());
|
|
1178
1175
|
}
|
|
1179
|
-
if (month) {
|
|
1180
|
-
|
|
1176
|
+
else if (months || month) {
|
|
1177
|
+
if (months) {
|
|
1178
|
+
this.calendar?.update(months, 'months', date ?? new Date());
|
|
1179
|
+
}
|
|
1180
|
+
if (month) {
|
|
1181
|
+
this.calendar?.update(month, 'month', date ?? new Date());
|
|
1182
|
+
}
|
|
1183
|
+
this.hasFacets.set(false);
|
|
1184
|
+
this.hasCalendar.set(true);
|
|
1181
1185
|
}
|
|
1182
|
-
|
|
1183
|
-
this.hasFacets.set(false);
|
|
1184
|
-
}
|
|
1185
|
-
else {
|
|
1186
|
-
this.hasFacets.set(false);
|
|
1187
|
-
this.hasCalendar.set(false);
|
|
1188
|
-
}
|
|
1186
|
+
}, 250);
|
|
1189
1187
|
}
|
|
1190
1188
|
this.changeDetector.markForCheck();
|
|
1191
1189
|
}
|
|
1192
1190
|
/**
|
|
1193
|
-
* Save current document list or just the selected documents as a csv
|
|
1194
|
-
*/
|
|
1191
|
+
* Save current document list or just the selected documents as a csv
|
|
1192
|
+
*/
|
|
1195
1193
|
exportResults() {
|
|
1196
1194
|
if (this.snapshot?.total > 0 || this.hasAnySelection()) {
|
|
1197
1195
|
this.exportItems(this.getSeletectIds(), this.filterParams);
|