@arsedizioni/ars-utils 18.2.68 → 18.2.70
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/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +13 -14
- package/esm2022/clipper.ui/ui/references/references.component.mjs +13 -14
- package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +3 -11
- package/esm2022/help/components/help-viewer/help-viewer.component.mjs +13 -15
- package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +13 -15
- package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +8 -3
- package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +13 -15
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +25 -35
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-help.mjs +12 -14
- package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +12 -14
- package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +18 -15
- package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
- package/package.json +1 -1
- package/ui.application/ui/components/chips-selector/chips-selector.component.d.ts +1 -1
|
@@ -14,7 +14,7 @@ import { DialogService } from '@arsedizioni/ars-utils/ui';
|
|
|
14
14
|
import { ExtendedModule } from '@ngbracket/ngx-layout/extended';
|
|
15
15
|
import { FlexModule } from '@ngbracket/ngx-layout/flex';
|
|
16
16
|
import { BehaviorSubject, Subject, fromEvent, of as observableOf } from 'rxjs';
|
|
17
|
-
import { debounceTime,
|
|
17
|
+
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
18
18
|
import { HelpService } from '../../services/help.service';
|
|
19
19
|
import * as i0 from "@angular/core";
|
|
20
20
|
import * as i1 from "@ngbracket/ngx-layout/flex";
|
|
@@ -202,9 +202,8 @@ export class HelpViewerComponent {
|
|
|
202
202
|
});
|
|
203
203
|
// React to window size change
|
|
204
204
|
fromEvent(window, 'resize')
|
|
205
|
-
.pipe(takeUntil(this.unsubscribe), debounceTime(
|
|
205
|
+
.pipe(takeUntil(this.unsubscribe), debounceTime(250))
|
|
206
206
|
.subscribe(() => {
|
|
207
|
-
// Update view
|
|
208
207
|
this.resize();
|
|
209
208
|
});
|
|
210
209
|
this.getToc();
|
|
@@ -229,19 +228,18 @@ export class HelpViewerComponent {
|
|
|
229
228
|
* Resize
|
|
230
229
|
*/
|
|
231
230
|
resize() {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
elem.setAttribute('style', 'padding:0 0 0 10px;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
238
|
-
this.resize();
|
|
239
|
-
}
|
|
231
|
+
let elem = document.getElementById('helpviewer-scrollable');
|
|
232
|
+
if (elem) {
|
|
233
|
+
const height = this.dialogService.getCurrentDialogScrollableHeight(['helpviewer-fixed'], window.innerHeight);
|
|
234
|
+
if (height != elem.clientHeight) {
|
|
235
|
+
elem.setAttribute('style', 'padding:0 0 0 10px;height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
240
236
|
}
|
|
241
|
-
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
setTimeout(() => {
|
|
242
240
|
this.resize();
|
|
243
|
-
}
|
|
244
|
-
}
|
|
241
|
+
}, 100);
|
|
242
|
+
}
|
|
245
243
|
}
|
|
246
244
|
/**
|
|
247
245
|
* Handle filter pane visibility
|
|
@@ -466,4 +464,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
466
464
|
type: ViewChild,
|
|
467
465
|
args: ['indexPane']
|
|
468
466
|
}] } });
|
|
469
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvY29tcG9uZW50cy9oZWxwLXZpZXdlci9oZWxwLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvaGVscC9jb21wb25lbnRzL2hlbHAtdmlld2VyL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTZCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxh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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQsIFNpZ25hbCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXRTaWRlbmF2LCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2V4dGVuZGVkJztcclxuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dC9mbGV4JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIZWxwVmlld2VyRGlhbG9nRGF0YSB7XHJcbiAgaWQ/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhJbmZvIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHBhcmVudD86IEluZGV4SW5mbyB8IG51bGw7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGl0ZW1zQ291bnQ/OiBudW1iZXIgfCBudWxsO1xyXG4gIHN1YkZvbGRlcnM/OiBJbmRleEluZm9bXSB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbmRleE5vZGUgZXh0ZW5kcyBJbmRleEluZm8ge1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgbGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoaXRlbTogSW5kZXhJbmZvLCBsZXZlbDogbnVtYmVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIEZsYXR0ZW5lZCBpbXBsZW1lbnRhdGlvblxyXG4gICAgdGhpcy5leHBhbmRhYmxlID0gaXRlbS5zdWJGb2xkZXJzICYmIGl0ZW0uc3ViRm9sZGVycy5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xyXG5cclxuICAgIC8vIERhdGFcclxuICAgIHRoaXMuaWQgPSBpdGVtLmlkO1xyXG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgdGhpcy5pdGVtc0NvdW50ID0gaXRlbS5pdGVtc0NvdW50O1xyXG4gICAgdGhpcy5wYXJlbnQgPSBpdGVtLnBhcmVudDtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEluZGV4VHJlZURhdGFTb3VyY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGRhdGFDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEluZGV4SW5mb1tdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEluZGV4SW5mb1tdIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFDaGFuZ2UudmFsdWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YUNoYW5nZS51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbHppZSB0aGUgZGF0YSBzb3VyY2VcclxuICAgKiBAcGFyYW0gZGF0YSA6IGRhdGFcclxuICAgKi9cclxuICBpbml0aWFsaXplKGRhdGE6IEluZGV4SW5mb1tdKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dChkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgYSBub2RlIGJ5IGlkIHJlY3Vyc2l2ZWx5XHJcbiAgICogQHBhcmFtIG5vZGU6IHRoZSBzb3VyY2Ugbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBpZCB0byBzZWFyY2ggZm9yXHJcbiAgICovXHJcbiAgZmluZE5vZGUobm9kZTogSW5kZXhJbmZvLCBpZDogc3RyaW5nKTogSW5kZXhJbmZvIHtcclxuICAgIGxldCBjaGlsZHJlbjtcclxuICAgIGlmIChub2RlICYmIG5vZGUuaWQgPT09IGlkKSByZXR1cm4gbm9kZTtcclxuICAgIGlmIChub2RlKSBjaGlsZHJlbiA9IG5vZGUuc3ViRm9sZGVycztcclxuICAgIGVsc2UgY2hpbGRyZW4gPSB0aGlzLmRhdGE7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBuLnBhcmVudCA9IG5vZGU7XHJcbiAgICAgICAgX24gPSB0aGlzLmZpbmROb2RlKG4sIGlkKTtcclxuICAgICAgICBpZiAoX24pIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBfbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBub2RlIGlkIHRvIHJlbW92ZVxyXG4gICAqL1xyXG4gIHJlbW92ZU5vZGUoaWQ6IHN0cmluZykge1xyXG4gICAgbGV0IG4gPSB0aGlzLmZpbmROb2RlKG51bGwsIGlkKTtcclxuICAgIGlmICghbikgcmV0dXJuO1xyXG4gICAgaWYgKG4ucGFyZW50KSB7XHJcbiAgICAgIGxldCBpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShuLnBhcmVudC5zdWJGb2xkZXJzLCAnaWQnLCBpZCk7XHJcbiAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgIG4ucGFyZW50LnN1YkZvbGRlcnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIG4ucGFyZW50Lml0ZW1zQ291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBhIG5ldyBub2RlXHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGUgbmV3IG5vZGVcclxuICAgKi9cclxuICBpbnNlcnROb2RlKG5vZGU6IEluZGV4SW5mbykge1xyXG4gICAgaWYgKG5vZGUucGFyZW50KSB7XHJcbiAgICAgIG5vZGUucGFyZW50LnN1YkZvbGRlcnMudW5zaGlmdChub2RlKTtcclxuICAgICAgbm9kZS5wYXJlbnQuaXRlbXNDb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAobikge1xyXG4gICAgICBuLm5hbWUgPSBuYW1lO1xyXG4gICAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oZWxwLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbSW5kZXhUcmVlRGF0YVNvdXJjZV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRmxleE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRQcm9ncmVzc0Jhck1vZHVsZSwgTWF0RGlhbG9nVGl0bGUsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBOZ1N0eWxlLCBFeHRlbmRlZE1vZHVsZSwgTWF0U2lkZW5hdk1vZHVsZSwgTWF0VHJlZU1vZHVsZSwgTmdDbGFzcywgU2FmZUh0bWxQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVscFZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdpbmRleFBhbmUnKSBpbmRleFBhbmUhOiBNYXRTaWRlbmF2O1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxIZWxwVmlld2VyQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IEhlbHBWaWV3ZXJEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBpZDogXCIxXCIgfTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBoZWxwU2VydmljZSA9IGluamVjdChIZWxwU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gIHByb3RlY3RlZCBidXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgcGFnZSA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xyXG4gIHByaXZhdGUgaW5kZXhJZDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIGluZGV4UGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBpbmRleE5vZGU6IEluZGV4SW5mbyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBoaXN0b3J5ID0gc2lnbmFsKFtdKTtcclxuICBwcm90ZWN0ZWQgY2FuR29CYWNrOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5KCk/Lmxlbmd0aCA+IDE7XHJcbiAgfSlcclxuXHJcbiAgLyoqXHJcbiAqIE1hbmFnZSBmbGF0IHRyZWUgdmlld1xyXG4gKi9cclxuICBwcml2YXRlIHRyZWUgPSBpbmplY3QoSW5kZXhUcmVlRGF0YVNvdXJjZSk7XHJcbiAgcHJpdmF0ZSB0cmVlRmxhdHRlbmVyOiBNYXRUcmVlRmxhdHRlbmVyPEluZGV4SW5mbywgSW5kZXhOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxJbmRleE5vZGU+O1xyXG4gIHByb3RlY3RlZCB0cmVlRGF0YTogTWF0VHJlZUZsYXREYXRhU291cmNlPEluZGV4SW5mbywgSW5kZXhOb2RlPjtcclxuICBwcml2YXRlIGZvbGRlcnM6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBJbmRleEluZm8pOiBPYnNlcnZhYmxlPEluZGV4SW5mb1tdPiA9PlxyXG4gICAgb2JzZXJ2YWJsZU9mKG5vZGUuc3ViRm9sZGVycyk7XHJcbiAgcHJpdmF0ZSBnZXRMZXZlbCA9IChub2RlOiBJbmRleE5vZGUpID0+IG5vZGUubGV2ZWw7XHJcbiAgcHJpdmF0ZSBpc0V4cGFuZGFibGUgPSAobm9kZTogSW5kZXhOb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XHJcbiAgcHJvdGVjdGVkIGhhc0NoaWxkID0gKF86IG51bWJlciwgX25vZGU6IEluZGV4Tm9kZSkgPT4gX25vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtZXIgPSAoaXRlbTogSW5kZXhJbmZvLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IEluZGV4Tm9kZShpdGVtLCBsZXZlbCk7XHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gU2V0dXAgdHJlZSBzdHJ1Y3R1cmVcclxuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcclxuICAgICAgdGhpcy5nZXRDaGlsZHJlblxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEluZGV4Tm9kZT4oXHJcbiAgICAgIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlRGF0YSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UoXHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudHJlZUZsYXR0ZW5lclxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgZGF0YSBjaGFuZ2VcclxuICAgIHRoaXMudHJlZS5kYXRhQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+ICh0aGlzLnRyZWVEYXRhLmRhdGEgPSBkYXRhKSk7XHJcblxyXG4gICAgLy8gT2JzZXJ2ZSBsYXlvdXQgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5TbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5NZWRpdW0sXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWExhcmdlLFxyXG4gICAgICBdKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpKSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmJyZWFrcG9pbnRzW3F1ZXJ5XSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoMTAwKSwgbWFwKCgpID0+IHdpbmRvdy5pbm5lcldpZHRoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHZpZXdcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmdldFRvYygpO1xyXG5cclxuICAgIHRoaXMuaW5kZXhJZCA9IHRoaXMuZGlhbG9nRGF0YS5pZDtcclxuICAgIGlmICh0aGlzLmluZGV4SWQpIHtcclxuICAgICAgdGhpcy5nZXRDaGFwdGVyKHRoaXMuaW5kZXhJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsdGVyUGFuZVZpc2liaWxpdHkoKTtcclxuICAgICAgdGhpcy5pbmRleFBhbmVDbG9zZWQgPSAhdGhpcy5pbmRleFBhbmUub3BlbmVkO1xyXG4gICAgfSwgMCk7XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNpemUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNpemUoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscHZpZXdlci1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydoZWxwdmlld2VyLWZpeGVkJ10sXHJcbiAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChoZWlnaHQgIT0gZWxlbS5jbGllbnRIZWlnaHQpIHtcclxuICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdzdHlsZScsICdwYWRkaW5nOjAgMCAwIDEwcHg7aGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudDttYXgtaGVpZ2h0OicgKyBoZWlnaHQgKyAncHggIWltcG9ydGFudCcpO1xyXG4gICAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuKiBIYW5kbGUgZmlsdGVyIHBhbmUgdmlzaWJpbGl0eVxyXG4qL1xyXG4gIHByaXZhdGUgaGFuZGxlRmlsdGVyUGFuZVZpc2liaWxpdHkoKSB7XHJcbiAgICBpZiAodGhpcy5pbmRleFBhbmUpIHtcclxuICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5NZWRpdW0pKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXhQYW5lLm9wZW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5pbmRleFBhbmUuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmluZGV4UGFuZS5vcGVuZWQgJiYgIXRoaXMuaW5kZXhQYW5lQ2xvc2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmluZGV4UGFuZS5vcGVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGhpZGUgaW5kZXggcGFuZSBtYW51YWxseVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB0b2dnbGVJbmRleFBhbmUoKSB7XHJcbiAgICB0aGlzLmluZGV4UGFuZUNsb3NlZCA9ICF0aGlzLmluZGV4UGFuZUNsb3NlZDtcclxuICAgIHRoaXMuaW5kZXhQYW5lPy50b2dnbGUoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSB0b2NcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0VG9jKCk6IHZvaWQge1xyXG4gICAgdGhpcy5idXN5LnNldCh0cnVlKTtcclxuICAgIHRoaXMuaGVscFNlcnZpY2VcclxuICAgICAgLmdldFRvYygpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mb2xkZXJzID0gci52YWx1ZS5zdWJGb2xkZXJzO1xyXG4gICAgICAgICAgICB0aGlzLnRyZWUuaW5pdGlhbGl6ZShyLnZhbHVlLnN1YkZvbGRlcnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWFjdCB0byBjbGljayBldmVudCBhbmQgZmluZCBuZXcgaGVscCB0YXJnZXQgdG8gZ28gdG9cclxuICAgKiBAcGFyYW0gZXZlbnQgOiB0aGUgY2xpY2sgZXZlbnRcclxuICAgKiBAcmV0dXJucyA6IGFsd2F5cyBmYWxzZSwgdG8gc3RvcCBuYXZpZ2F0aW9uXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdvdG9DaGFwdGVyKGV2ZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChldmVudC5zcmNFbGVtZW50Lm5vZGVOYW1lICE9PSAnQScpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCB0YWcgPSBldmVudC5zcmNFbGVtZW50Lm91dGVySFRNTDtcclxuICAgIGxldCBpZCA9ICcnO1xyXG4gICAgbGV0IHAgPSB0YWcuaW5kZXhPZignaGVscC10YXJnZXQ9XCInKTtcclxuICAgIGlmIChwICE9PSAtMSkge1xyXG4gICAgICBwICs9IDEzO1xyXG4gICAgICB3aGlsZSAodGFnW3BdICE9PSAnXCInKSB7XHJcbiAgICAgICAgaWQgKz0gdGFnW3BdO1xyXG4gICAgICAgIHArKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGlkKSB0aGlzLmdldENoYXB0ZXIoaWQpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZCBhIG5vZGUgYnkgaWRcclxuICAgKiBAcGFyYW0gaWQgOiBmb2xkZXIgaWRcclxuICAgKiBAcmV0dXJuczogdGhlIGZvbGRlciBpbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmaW5kRm9sZGVyKGlkOiBzdHJpbmcpOiBJbmRleEluZm8ge1xyXG4gICAgbGV0IG5vZGUgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuZm9sZGVycykge1xyXG4gICAgICB0aGlzLmZvbGRlcnMuc29tZSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgbm9kZSA9IHRoaXMudHJlZS5maW5kTm9kZShuLCBpZCk7XHJcbiAgICAgICAgaWYgKG5vZGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4cGFuZCBjdXJyZW50IGZvZGxlciBub2RlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHBhbmRDdXJyZW50Rm9sZGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5kZXhOb2RlKSB7XHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKFxyXG4gICAgICAgIFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMsXHJcbiAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgdGhpcy5pbmRleE5vZGUuaWRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmluZGV4Tm9kZS5wYXJlbnQpIHtcclxuICAgICAgICAvLyBBcHBseSBwcmV2aW91cyBzZWxlY3Rpb25cclxuICAgICAgICBsZXQgbiA9IHRoaXMuaW5kZXhOb2RlLnBhcmVudDtcclxuICAgICAgICB3aGlsZSAobikge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQoXHJcbiAgICAgICAgICAgIFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLCAnaWQnLCBuLmlkKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIG4gPSBuLnBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGEgbmV3IGNoYXB0ZXJcclxuICAgKiBAcGFyYW0gaWQgdGhlIGNoYXB0ZXIgaWQjYW5jaG9yXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIDogdGhlIHBvc2l0aW9uIHRvIHNjcm9sbCB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRDaGFwdGVyKGlkOiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAvLyBEZXRlY3QgYW5jaG9yIGlmIGV4aXN0c1xyXG4gICAgbGV0IGFuY2hvcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBwID0gaWQuaW5kZXhPZignIycpO1xyXG4gICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgIGFuY2hvciA9IGlkLnN1YnN0cmluZyhwICsgMSk7XHJcbiAgICAgIGlkID0gaWQuc3Vic3RyaW5nKDAsIHApO1xyXG4gICAgfVxyXG4gICAgaWYgKGlkICE9PSAnLicpIHtcclxuICAgICAgdGhpcy5idXN5LnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5oZWxwU2VydmljZS5nZXRDaGFwdGVyKGlkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoXCJDYXBpdG9sbyBub24gdHJvdmF0by5cIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFwb3NpdGlvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeSgpLnB1c2goeyBpZDogdGhpcy5pbmRleElkLCBwb3NpdGlvbjogdGhpcy5nZXRQb3NpdGlvbigpIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5kZXhJZCA9IGlkO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFnZS5zZXQoci52YWx1ZS5kYXRhKTtcclxuICAgICAgICAgICAgICBmb3VuZCA9IHIudmFsdWUuY2hhcHRlcj8ubmFtZT8ubGVuZ3RoID4gMDtcclxuICAgICAgICAgICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBmb2xkZXJcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhOb2RlID0gdGhpcy5maW5kRm9sZGVyKGlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kQ3VycmVudEZvbGRlcigpO1xyXG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIHBvc2l0aW9uaW5nXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdvdG9Qb3NpdGlvbihhbmNob3IsIHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICghZm91bmQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldENoYXB0ZXIoXCIxXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5idXN5LnNldChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXBvc2l0aW9uKVxyXG4gICAgICAgIHRoaXMuaGlzdG9yeSgpLnB1c2goeyBpZDogdGhpcy5pbmRleElkLCBwb3NpdGlvbjogdGhpcy5nZXRQb3NpdGlvbigpIH0pO1xyXG4gICAgICAvLyBNb3ZlIG9uIHRoZSBzYW1lIGNoYXB0ZXJcclxuICAgICAgdGhpcy5nb3RvUG9zaXRpb24oYW5jaG9yLCBwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHb3RvIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIGFuY2hvciB0aGUgYW5jaG9yIHRvIGdvIHRvXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBvZmZzZXQgdG8gZ28gdG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ290b1Bvc2l0aW9uKGFuY2hvcjogc3RyaW5nLCBwb3NpdGlvbjogbnVtYmVyID0gMCk6IHZvaWQge1xyXG4gICAgLy8gSGFuZGxlIHBvc2l0aW9uaW5nXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gSGFuZGxlIGFuY2hvciBmaXJzdFxyXG4gICAgICBpZiAoYW5jaG9yKSB7XHJcbiAgICAgICAgbGV0IGVsbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShhbmNob3IudG9VcHBlckNhc2UoKSk7XHJcbiAgICAgICAgaWYgKGVsbXMpIHBvc2l0aW9uID0gZWxtc1swXS5vZmZzZXRUb3A7XHJcbiAgICAgIH1cclxuICAgICAgLy8gVGhlbiBwb3NpdGlvblxyXG4gICAgICBpZiAocG9zaXRpb24gPiAwKSB0aGlzLnNldFBvc2l0aW9uKHBvc2l0aW9uIC0gMSk7XHJcbiAgICAgIGVsc2UgdGhpcy5zZXRQb3NpdGlvbigwKTtcclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzY3JvbGwgcG9zaXRpb25cclxuICAgKiBAcmV0dXJuczogdGhlIG5ldyBzY3JvbGwgdG9wXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldFBvc2l0aW9uKCk6IG51bWJlciB7XHJcbiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwdmlld2VyLXNjcm9sbGVyJyk7XHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICByZXR1cm4gZWxlbS5zY3JvbGxUb3A7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBzY3JvbGwgcG9zaXRpb25cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gOiB0aGUgcG9zaXRpb24gdG8gZ28gdG9cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2V0UG9zaXRpb24ocG9zaXRpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscHZpZXdlci1zY3JvbGxlcicpO1xyXG4gICAgaWYgKGVsZW0pIHtcclxuICAgICAgZWxlbS5zY3JvbGxUbygwLCBwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHbyBiYWNrXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaGlzdG9yeSB8fCB0aGlzLmhpc3RvcnkubGVuZ3RoID09PSAwKSByZXR1cm47XHJcbiAgICBsZXQgbiA9IHRoaXMuaGlzdG9yeSgpLnBvcCgpO1xyXG4gICAgdGhpcy5nZXRDaGFwdGVyKG4uaWQsIG4ucG9zaXRpb24gKyAxKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaGVscHZpZXdlci1maXhlZFwiPlxyXG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6NnB4XCI+XHJcbiAgICBAaWYgKGJ1c3koKSkge1xyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgei1pbmRleD1cIjExXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLW1lbnVcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIk1vc3RyYSBtZW51XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGluZGljZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUluZGV4UGFuZSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIj5cclxuICAgICAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5HdWlkYTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGNsYXNzPVwiZGlhbG9nLWNsb3NlXCI+XHJcbiAgICAgICAgQGlmIChjYW5Hb0JhY2soKSkge1xyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkluZGlldHJvXCIgKGNsaWNrKT1cImJhY2soKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuIFxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgaWQ9XCJoZWxwdmlld2VyLXNjcm9sbGFibGVcIj5cclxuICA8bWF0LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJmaWxsXCI+XHJcbiAgICA8bWF0LWRyYXdlciAjaW5kZXhQYW5lIG1vZGU9XCJzaWRlXCIgW2F1dG9Gb2N1c109XCJmYWxzZVwiIGNsYXNzPVwiZHJhd2VyLXNtYWxsIGRyYXdlci10cmFuc3BhcmVudFwiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cInRyZWVEYXRhXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCIgY2xhc3M9XCJ0cmVlIFwiIHN0eWxlPVwibWF4LXdpZHRoOjMxMHB4XCI+XHJcbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgbWF0VHJlZU5vZGVUb2dnbGUgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgICAgICAgICAgW21hdFRyZWVOb2RlUGFkZGluZ0luZGVudF09XCIyMFwiIGNsYXNzPVwidHJlZS1ub2RlIHRyZWUtbm9kZS1zaW1wbGUgdHJlZS1ub2RlLXN0eWxlXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0Q2hhcHRlcihub2RlLmlkKTtcIiBbbmdDbGFzc109XCJ7J3RyZWUtbm9kZS1hY3RpdmF0ZWQnOiBpbmRleE5vZGUgJiYgaW5kZXhOb2RlLmlkID09PSBub2RlLmlkfVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3koKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbCB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCI+e3tub2RlLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlO3doZW46IGhhc0NoaWxkXCIgbWF0VHJlZU5vZGVQYWRkaW5nIFttYXRUcmVlTm9kZVBhZGRpbmdJbmRlbnRdPVwiMjBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidHJlZS1ub2RlIHRyZWUtbm9kZS1zaW1wbGUgdHJlZS1ub2RlLXN0eWxlXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RyZWUtbm9kZS1hY3RpdmF0ZWQnOiBpbmRleE5vZGUgJiYgaW5kZXhOb2RlLmlkID09PSBub2RlLmlkIH1cIiAoY2xpY2spPVwiZ2V0Q2hhcHRlcihub2RlLmlkKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3koKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGwgY2xhc3M9XCJzbWFsbCB1cHBlcmNhc2VcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FwcmkvY2hpdWRpICcgKyBub2RlLm5hbWVcIiBjbGFzcz1cInNtYWxsLWljb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3RyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnZXhwYW5kX21vcmUnIDogJ2NoZXZyb25fcmlnaHQnfX1cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj57e25vZGUubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgICAgICAgIDwvbWF0LXRyZWU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtZHJhd2VyPlxyXG4gICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDAgMjRweDtcIj5cclxuICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmlsbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsbFwiIGlkPVwiaGVscHZpZXdlci1zY3JvbGxlclwiIChjbGljayk9XCJnb3RvQ2hhcHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgIFtpbm5lckh0bWxdPVwiKHBhZ2UoKSA/PyAnJykgfCBzYWZlSHRtbFwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWRyYXdlci1jb250YWluZXI+XHJcbjwvZGl2PiJdfQ==
|
|
467
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvY29tcG9uZW50cy9oZWxwLXZpZXdlci9oZWxwLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvaGVscC9jb21wb25lbnRzL2hlbHAtdmlld2VyL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQTZCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwTSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxh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QyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDdkQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBOVZVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDhFQVZkLFdBQVcsQ0FBQyxZQUFZLEVBQUUsaUJBSy9CLENBQUMsbUJBQW1CLENBQUMsa0lDNUpsQyxxcEhBdUVNLDBoS0R1Rk0sVUFBVSwraEdBQUUsZUFBZSwySUFBRSxnQkFBZ0IsNFRBQUUsYUFBYSxtTEFBRSxvQkFBb0IseU5BQUUsY0FBYywrSEFBRSxnQkFBZ0Isd0dBQ25ILGNBQWMsaWlCQUFFLGdCQUFnQix3ZEFBRSxhQUFhLHFvQkFBRSxPQUFPLCtFQUFFLFlBQVk7OzJGQUV0RSxtQkFBbUI7a0JBWC9CLFNBQVM7MkJBQ0YsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxFQUFFLGlCQUc3QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsbUJBQW1CLENBQUMsY0FDcEIsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQjt3QkFDNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQzs4QkFHMUQsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50cyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQsIFNpZ25hbCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXRTaWRlbmF2LCBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyLCBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2V4dGVuZGVkJztcclxuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gJ0BuZ2JyYWNrZXQvbmd4LWxheW91dC9mbGV4JztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSGVscFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oZWxwLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIZWxwVmlld2VyRGlhbG9nRGF0YSB7XHJcbiAgaWQ/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW5kZXhJbmZvIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHBhcmVudD86IEluZGV4SW5mbyB8IG51bGw7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGl0ZW1zQ291bnQ/OiBudW1iZXIgfCBudWxsO1xyXG4gIHN1YkZvbGRlcnM/OiBJbmRleEluZm9bXSB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBJbmRleE5vZGUgZXh0ZW5kcyBJbmRleEluZm8ge1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgbGV2ZWw6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoaXRlbTogSW5kZXhJbmZvLCBsZXZlbDogbnVtYmVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIEZsYXR0ZW5lZCBpbXBsZW1lbnRhdGlvblxyXG4gICAgdGhpcy5leHBhbmRhYmxlID0gaXRlbS5zdWJGb2xkZXJzICYmIGl0ZW0uc3ViRm9sZGVycy5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xyXG5cclxuICAgIC8vIERhdGFcclxuICAgIHRoaXMuaWQgPSBpdGVtLmlkO1xyXG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgdGhpcy5pdGVtc0NvdW50ID0gaXRlbS5pdGVtc0NvdW50O1xyXG4gICAgdGhpcy5wYXJlbnQgPSBpdGVtLnBhcmVudDtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEluZGV4VHJlZURhdGFTb3VyY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGRhdGFDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEluZGV4SW5mb1tdPihbXSk7XHJcblxyXG4gIGdldCBkYXRhKCk6IEluZGV4SW5mb1tdIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFDaGFuZ2UudmFsdWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YUNoYW5nZS51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbHppZSB0aGUgZGF0YSBzb3VyY2VcclxuICAgKiBAcGFyYW0gZGF0YSA6IGRhdGFcclxuICAgKi9cclxuICBpbml0aWFsaXplKGRhdGE6IEluZGV4SW5mb1tdKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dChkYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmQgYSBub2RlIGJ5IGlkIHJlY3Vyc2l2ZWx5XHJcbiAgICogQHBhcmFtIG5vZGU6IHRoZSBzb3VyY2Ugbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBpZCB0byBzZWFyY2ggZm9yXHJcbiAgICovXHJcbiAgZmluZE5vZGUobm9kZTogSW5kZXhJbmZvLCBpZDogc3RyaW5nKTogSW5kZXhJbmZvIHtcclxuICAgIGxldCBjaGlsZHJlbjtcclxuICAgIGlmIChub2RlICYmIG5vZGUuaWQgPT09IGlkKSByZXR1cm4gbm9kZTtcclxuICAgIGlmIChub2RlKSBjaGlsZHJlbiA9IG5vZGUuc3ViRm9sZGVycztcclxuICAgIGVsc2UgY2hpbGRyZW4gPSB0aGlzLmRhdGE7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgbGV0IF9uID0gbnVsbDtcclxuICAgICAgY2hpbGRyZW4uc29tZShuID0+IHtcclxuICAgICAgICBuLnBhcmVudCA9IG5vZGU7XHJcbiAgICAgICAgX24gPSB0aGlzLmZpbmROb2RlKG4sIGlkKTtcclxuICAgICAgICBpZiAoX24pIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBfbjtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgbm9kZVxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBub2RlIGlkIHRvIHJlbW92ZVxyXG4gICAqL1xyXG4gIHJlbW92ZU5vZGUoaWQ6IHN0cmluZykge1xyXG4gICAgbGV0IG4gPSB0aGlzLmZpbmROb2RlKG51bGwsIGlkKTtcclxuICAgIGlmICghbikgcmV0dXJuO1xyXG4gICAgaWYgKG4ucGFyZW50KSB7XHJcbiAgICAgIGxldCBpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShuLnBhcmVudC5zdWJGb2xkZXJzLCAnaWQnLCBpZCk7XHJcbiAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgIG4ucGFyZW50LnN1YkZvbGRlcnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIG4ucGFyZW50Lml0ZW1zQ291bnQtLTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGkgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRJbmRleEJ5S2V5KHRoaXMuZGF0YSwgJ2lkJywgaWQpO1xyXG4gICAgICBpZiAoaSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBhIG5ldyBub2RlXHJcbiAgICogQHBhcmFtIG5vZGUgOiB0aGUgbmV3IG5vZGVcclxuICAgKi9cclxuICBpbnNlcnROb2RlKG5vZGU6IEluZGV4SW5mbykge1xyXG4gICAgaWYgKG5vZGUucGFyZW50KSB7XHJcbiAgICAgIG5vZGUucGFyZW50LnN1YkZvbGRlcnMudW5zaGlmdChub2RlKTtcclxuICAgICAgbm9kZS5wYXJlbnQuaXRlbXNDb3VudCsrO1xyXG4gICAgfSBlbHNlIHRoaXMuZGF0YS51bnNoaWZ0KG5vZGUpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW5hbWUgYSBub2RlXHJcbiAgICogQHBhcmFtIGlkIDogdGhlIG5vZGUgaWRcclxuICAgKiBAcGFyYW0gbmFtZSA6IHRoZSBuZXcgbm9kZSBuYW1lXHJcbiAgICovXHJcbiAgcmVuYW1lTm9kZShpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCBuID0gdGhpcy5maW5kTm9kZShudWxsLCBpZCk7XHJcbiAgICBpZiAobikge1xyXG4gICAgICBuLm5hbWUgPSBuYW1lO1xyXG4gICAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGRhdGFcclxuICAgKi9cclxuICB1cGRhdGUoKSB7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgaG9zdDogeyAnQmluZCc6IFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpIH0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlbHAtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oZWxwLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbSW5kZXhUcmVlRGF0YVNvdXJjZV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRmxleE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRQcm9ncmVzc0Jhck1vZHVsZSwgTWF0RGlhbG9nVGl0bGUsIE1hdERpYWxvZ0NvbnRlbnQsXHJcbiAgICBOZ1N0eWxlLCBFeHRlbmRlZE1vZHVsZSwgTWF0U2lkZW5hdk1vZHVsZSwgTWF0VHJlZU1vZHVsZSwgTmdDbGFzcywgU2FmZUh0bWxQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVscFZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdpbmRleFBhbmUnKSBpbmRleFBhbmUhOiBNYXRTaWRlbmF2O1xyXG5cclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxIZWxwVmlld2VyQ29tcG9uZW50Pik7XHJcbiAgcHJvdGVjdGVkIGRpYWxvZ0RhdGE6IEhlbHBWaWV3ZXJEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgPz8geyBpZDogXCIxXCIgfTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBoZWxwU2VydmljZSA9IGluamVjdChIZWxwU2VydmljZSk7XHJcbiAgcHJvdGVjdGVkIGJyZWFrcG9pbnRPYnNlcnZlciA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xyXG4gIHByb3RlY3RlZCBidXN5ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcm90ZWN0ZWQgcGFnZSA9IHNpZ25hbDxzdHJpbmc+KG51bGwpO1xyXG4gIHByaXZhdGUgaW5kZXhJZDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIGluZGV4UGFuZUNsb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBpbmRleE5vZGU6IEluZGV4SW5mbyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBoaXN0b3J5ID0gc2lnbmFsKFtdKTtcclxuICBwcm90ZWN0ZWQgY2FuR29CYWNrOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5KCk/Lmxlbmd0aCA+IDE7XHJcbiAgfSlcclxuXHJcbiAgLyoqXHJcbiAqIE1hbmFnZSBmbGF0IHRyZWUgdmlld1xyXG4gKi9cclxuICBwcml2YXRlIHRyZWUgPSBpbmplY3QoSW5kZXhUcmVlRGF0YVNvdXJjZSk7XHJcbiAgcHJpdmF0ZSB0cmVlRmxhdHRlbmVyOiBNYXRUcmVlRmxhdHRlbmVyPEluZGV4SW5mbywgSW5kZXhOb2RlPjtcclxuICBwcm90ZWN0ZWQgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxJbmRleE5vZGU+O1xyXG4gIHByb3RlY3RlZCB0cmVlRGF0YTogTWF0VHJlZUZsYXREYXRhU291cmNlPEluZGV4SW5mbywgSW5kZXhOb2RlPjtcclxuICBwcml2YXRlIGZvbGRlcnM6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBnZXRDaGlsZHJlbiA9IChub2RlOiBJbmRleEluZm8pOiBPYnNlcnZhYmxlPEluZGV4SW5mb1tdPiA9PlxyXG4gICAgb2JzZXJ2YWJsZU9mKG5vZGUuc3ViRm9sZGVycyk7XHJcbiAgcHJpdmF0ZSBnZXRMZXZlbCA9IChub2RlOiBJbmRleE5vZGUpID0+IG5vZGUubGV2ZWw7XHJcbiAgcHJpdmF0ZSBpc0V4cGFuZGFibGUgPSAobm9kZTogSW5kZXhOb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XHJcbiAgcHJvdGVjdGVkIGhhc0NoaWxkID0gKF86IG51bWJlciwgX25vZGU6IEluZGV4Tm9kZSkgPT4gX25vZGUuZXhwYW5kYWJsZTtcclxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtZXIgPSAoaXRlbTogSW5kZXhJbmZvLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IEluZGV4Tm9kZShpdGVtLCBsZXZlbCk7XHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gU2V0dXAgdHJlZSBzdHJ1Y3R1cmVcclxuICAgIHRoaXMudHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxyXG4gICAgICB0aGlzLnRyYW5zZm9ybWVyLFxyXG4gICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICB0aGlzLmlzRXhwYW5kYWJsZSxcclxuICAgICAgdGhpcy5nZXRDaGlsZHJlblxyXG4gICAgKTtcclxuICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEluZGV4Tm9kZT4oXHJcbiAgICAgIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgIHRoaXMuaXNFeHBhbmRhYmxlXHJcbiAgICApO1xyXG4gICAgdGhpcy50cmVlRGF0YSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UoXHJcbiAgICAgIHRoaXMudHJlZUNvbnRyb2wsXHJcbiAgICAgIHRoaXMudHJlZUZsYXR0ZW5lclxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBTdWJzY3JpYmUgZGF0YSBjaGFuZ2VcclxuICAgIHRoaXMudHJlZS5kYXRhQ2hhbmdlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZShkYXRhID0+ICh0aGlzLnRyZWVEYXRhLmRhdGEgPSBkYXRhKSk7XHJcblxyXG4gICAgLy8gT2JzZXJ2ZSBsYXlvdXQgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJcclxuICAgICAgLm9ic2VydmUoW1xyXG4gICAgICAgIEJyZWFrcG9pbnRzLlhTbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5TbWFsbCxcclxuICAgICAgICBCcmVha3BvaW50cy5NZWRpdW0sXHJcbiAgICAgICAgQnJlYWtwb2ludHMuTGFyZ2UsXHJcbiAgICAgICAgQnJlYWtwb2ludHMuWExhcmdlLFxyXG4gICAgICBdKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgZm9yIChjb25zdCBxdWVyeSBvZiBPYmplY3Qua2V5cyhyZXN1bHQuYnJlYWtwb2ludHMpKSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0LmJyZWFrcG9pbnRzW3F1ZXJ5XSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoMjUwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5nZXRUb2MoKTtcclxuXHJcbiAgICB0aGlzLmluZGV4SWQgPSB0aGlzLmRpYWxvZ0RhdGEuaWQ7XHJcbiAgICBpZiAodGhpcy5pbmRleElkKSB7XHJcbiAgICAgIHRoaXMuZ2V0Q2hhcHRlcih0aGlzLmluZGV4SWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgIHRoaXMuaW5kZXhQYW5lQ2xvc2VkID0gIXRoaXMuaW5kZXhQYW5lLm9wZW5lZDtcclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGVscHZpZXdlci1zY3JvbGxhYmxlJyk7XHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgWydoZWxwdmlld2VyLWZpeGVkJ10sXHJcbiAgICAgICAgd2luZG93LmlubmVySGVpZ2h0XHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChoZWlnaHQgIT0gZWxlbS5jbGllbnRIZWlnaHQpIHtcclxuICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAncGFkZGluZzowIDAgMCAxMHB4O2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSwgMTAwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4qIEhhbmRsZSBmaWx0ZXIgcGFuZSB2aXNpYmlsaXR5XHJcbiovXHJcbiAgcHJpdmF0ZSBoYW5kbGVGaWx0ZXJQYW5lVmlzaWJpbGl0eSgpIHtcclxuICAgIGlmICh0aGlzLmluZGV4UGFuZSkge1xyXG4gICAgICBpZiAodGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlhTbWFsbCkgfHxcclxuICAgICAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQoQnJlYWtwb2ludHMuU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLk1lZGl1bSkpIHtcclxuICAgICAgICBpZiAodGhpcy5pbmRleFBhbmUub3BlbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmluZGV4UGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW5kZXhQYW5lLm9wZW5lZCAmJiAhdGhpcy5pbmRleFBhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5kZXhQYW5lLm9wZW4oKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgaGlkZSBpbmRleCBwYW5lIG1hbnVhbGx5XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZUluZGV4UGFuZSgpIHtcclxuICAgIHRoaXMuaW5kZXhQYW5lQ2xvc2VkID0gIXRoaXMuaW5kZXhQYW5lQ2xvc2VkO1xyXG4gICAgdGhpcy5pbmRleFBhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIHRvY1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRUb2MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1c3kuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5oZWxwU2VydmljZVxyXG4gICAgICAuZ2V0VG9jKClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvbGRlcnMgPSByLnZhbHVlLnN1YkZvbGRlcnM7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZS5pbml0aWFsaXplKHIudmFsdWUuc3ViRm9sZGVycyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5idXN5LnNldChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlYWN0IHRvIGNsaWNrIGV2ZW50IGFuZCBmaW5kIG5ldyBoZWxwIHRhcmdldCB0byBnbyB0b1xyXG4gICAqIEBwYXJhbSBldmVudCA6IHRoZSBjbGljayBldmVudFxyXG4gICAqIEByZXR1cm5zIDogYWx3YXlzIGZhbHNlLCB0byBzdG9wIG5hdmlnYXRpb25cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ290b0NoYXB0ZXIoZXZlbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGV2ZW50LnNyY0VsZW1lbnQubm9kZU5hbWUgIT09ICdBJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgbGV0IHRhZyA9IGV2ZW50LnNyY0VsZW1lbnQub3V0ZXJIVE1MO1xyXG4gICAgbGV0IGlkID0gJyc7XHJcbiAgICBsZXQgcCA9IHRhZy5pbmRleE9mKCdoZWxwLXRhcmdldD1cIicpO1xyXG4gICAgaWYgKHAgIT09IC0xKSB7XHJcbiAgICAgIHAgKz0gMTM7XHJcbiAgICAgIHdoaWxlICh0YWdbcF0gIT09ICdcIicpIHtcclxuICAgICAgICBpZCArPSB0YWdbcF07XHJcbiAgICAgICAgcCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaWQpIHRoaXMuZ2V0Q2hhcHRlcihpZCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIGEgbm9kZSBieSBpZFxyXG4gICAqIEBwYXJhbSBpZCA6IGZvbGRlciBpZFxyXG4gICAqIEByZXR1cm5zOiB0aGUgZm9sZGVyIGluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGZpbmRGb2xkZXIoaWQ6IHN0cmluZyk6IEluZGV4SW5mbyB7XHJcbiAgICBsZXQgbm9kZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5mb2xkZXJzKSB7XHJcbiAgICAgIHRoaXMuZm9sZGVycy5zb21lKChuOiBhbnkpID0+IHtcclxuICAgICAgICBub2RlID0gdGhpcy50cmVlLmZpbmROb2RlKG4sIGlkKTtcclxuICAgICAgICBpZiAobm9kZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhwYW5kIGN1cnJlbnQgZm9kbGVyIG5vZGVcclxuICAgKi9cclxuICBwcml2YXRlIGV4cGFuZEN1cnJlbnRGb2xkZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbmRleE5vZGUpIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQoXHJcbiAgICAgICAgU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcyxcclxuICAgICAgICAgICdpZCcsXHJcbiAgICAgICAgICB0aGlzLmluZGV4Tm9kZS5pZFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRoaXMuaW5kZXhOb2RlLnBhcmVudCkge1xyXG4gICAgICAgIC8vIEFwcGx5IHByZXZpb3VzIHNlbGVjdGlvblxyXG4gICAgICAgIGxldCBuID0gdGhpcy5pbmRleE5vZGUucGFyZW50O1xyXG4gICAgICAgIHdoaWxlIChuKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChcclxuICAgICAgICAgICAgU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkodGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMsICdpZCcsIG4uaWQpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbiA9IG4ucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYSBuZXcgY2hhcHRlclxyXG4gICAqIEBwYXJhbSBpZCB0aGUgY2hhcHRlciBpZCNhbmNob3JcclxuICAgKiBAcGFyYW0gcG9zaXRpb24gOiB0aGUgcG9zaXRpb24gdG8gc2Nyb2xsIHRvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldENoYXB0ZXIoaWQ6IHN0cmluZywgcG9zaXRpb246IG51bWJlciA9IDApOiB2b2lkIHtcclxuICAgIC8vIERldGVjdCBhbmNob3IgaWYgZXhpc3RzXHJcbiAgICBsZXQgYW5jaG9yOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IHAgPSBpZC5pbmRleE9mKCcjJyk7XHJcbiAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgYW5jaG9yID0gaWQuc3Vic3RyaW5nKHAgKyAxKTtcclxuICAgICAgaWQgPSBpZC5zdWJzdHJpbmcoMCwgcCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaWQgIT09ICcuJykge1xyXG4gICAgICB0aGlzLmJ1c3kuc2V0KHRydWUpO1xyXG4gICAgICB0aGlzLmhlbHBTZXJ2aWNlLmdldENoYXB0ZXIoaWQpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihcIkNhcGl0b2xvIG5vbiB0cm92YXRvLlwiKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoIXBvc2l0aW9uKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5KCkucHVzaCh7IGlkOiB0aGlzLmluZGV4SWQsIHBvc2l0aW9uOiB0aGlzLmdldFBvc2l0aW9uKCkgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbmRleElkID0gaWQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlLnNldChyLnZhbHVlLmRhdGEpO1xyXG4gICAgICAgICAgICAgIGZvdW5kID0gci52YWx1ZS5jaGFwdGVyPy5uYW1lPy5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGZvbGRlclxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleE5vZGUgPSB0aGlzLmZpbmRGb2xkZXIoaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRDdXJyZW50Rm9sZGVyKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcG9zaXRpb25pbmdcclxuICAgICAgICAgICAgICAgIHRoaXMuZ290b1Bvc2l0aW9uKGFuY2hvciwgcG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0Q2hhcHRlcihcIjFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJ1c3kuc2V0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghcG9zaXRpb24pXHJcbiAgICAgICAgdGhpcy5oaXN0b3J5KCkucHVzaCh7IGlkOiB0aGlzLmluZGV4SWQsIHBvc2l0aW9uOiB0aGlzLmdldFBvc2l0aW9uKCkgfSk7XHJcbiAgICAgIC8vIE1vdmUgb24gdGhlIHNhbWUgY2hhcHRlclxyXG4gICAgICB0aGlzLmdvdG9Qb3NpdGlvbihhbmNob3IsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvdG8gcG9zaXRpb25cclxuICAgKiBAcGFyYW0gYW5jaG9yIHRoZSBhbmNob3IgdG8gZ28gdG9cclxuICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIG9mZnNldCB0byBnbyB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnb3RvUG9zaXRpb24oYW5jaG9yOiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIgPSAwKTogdm9pZCB7XHJcbiAgICAvLyBIYW5kbGUgcG9zaXRpb25pbmdcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBIYW5kbGUgYW5jaG9yIGZpcnN0XHJcbiAgICAgIGlmIChhbmNob3IpIHtcclxuICAgICAgICBsZXQgZWxtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGFuY2hvci50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICBpZiAoZWxtcykgcG9zaXRpb24gPSBlbG1zWzBdLm9mZnNldFRvcDtcclxuICAgICAgfVxyXG4gICAgICAvLyBUaGVuIHBvc2l0aW9uXHJcbiAgICAgIGlmIChwb3NpdGlvbiA+IDApIHRoaXMuc2V0UG9zaXRpb24ocG9zaXRpb24gLSAxKTtcclxuICAgICAgZWxzZSB0aGlzLnNldFBvc2l0aW9uKDApO1xyXG4gICAgfSwgNTApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHNjcm9sbCBwb3NpdGlvblxyXG4gICAqIEByZXR1cm5zOiB0aGUgbmV3IHNjcm9sbCB0b3BcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb24oKTogbnVtYmVyIHtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hlbHB2aWV3ZXItc2Nyb2xsZXInKTtcclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIHJldHVybiBlbGVtLnNjcm9sbFRvcDtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHNjcm9sbCBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiA6IHRoZSBwb3NpdGlvbiB0byBnbyB0b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoZWxwdmlld2VyLXNjcm9sbGVyJyk7XHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBlbGVtLnNjcm9sbFRvKDAsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdvIGJhY2tcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYmFjaygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oaXN0b3J5IHx8IHRoaXMuaGlzdG9yeS5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIGxldCBuID0gdGhpcy5oaXN0b3J5KCkucG9wKCk7XHJcbiAgICB0aGlzLmdldENoYXB0ZXIobi5pZCwgbi5wb3NpdGlvbiArIDEpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJoZWxwdmlld2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBzdHlsZT1cImhlaWdodDo2cHhcIj5cclxuICAgIEBpZiAoYnVzeSgpKSB7XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciB6LWluZGV4PVwiMTFcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctbWVudVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTW9zdHJhIG1lbnVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNb3N0cmEgaW5kaWNlJ1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSW5kZXhQYW5lKClcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgIDxoMiBtYXQtZGlhbG9nLXRpdGxlPkd1aWRhPC9oMj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwcHhcIiBmeExheW91dEFsaWduPVwiZW5kXCIgY2xhc3M9XCJkaWFsb2ctY2xvc2VcIj5cclxuICAgICAgICBAaWYgKGNhbkdvQmFjaygpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cInN0YXJ0XCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiSW5kaWV0cm9cIiAoY2xpY2spPVwiYmFjaygpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+YXJyb3dfYmFjazwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJzdGFydFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkNoaXVkaVwiIChjbGljayk9XCJjbG9zZSgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gXHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBpZD1cImhlbHB2aWV3ZXItc2Nyb2xsYWJsZVwiPlxyXG4gIDxtYXQtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImZpbGxcIj5cclxuICAgIDxtYXQtZHJhd2VyICNpbmRleFBhbmUgbW9kZT1cInNpZGVcIiBbYXV0b0ZvY3VzXT1cImZhbHNlXCIgY2xhc3M9XCJkcmF3ZXItc21hbGwgZHJhd2VyLXRyYW5zcGFyZW50XCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwidHJlZURhdGFcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIiBjbGFzcz1cInRyZWUgXCIgc3R5bGU9XCJtYXgtd2lkdGg6MzEwcHhcIj5cclxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVRvZ2dsZSBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgICAgICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cIjIwXCIgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZSB0cmVlLW5vZGUtc3R5bGVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJnZXRDaGFwdGVyKG5vZGUuaWQpO1wiIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGluZGV4Tm9kZSAmJiBpbmRleE5vZGUuaWQgPT09IG5vZGUuaWR9XCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCBjbGFzcz1cInNtYWxsIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQgY2xhc3M9XCJzbWFsbC1pY29uLWJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIj57e25vZGUubmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmcgW21hdFRyZWVOb2RlUGFkZGluZ0luZGVudF09XCIyMFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0cmVlLW5vZGUgdHJlZS1ub2RlLXNpbXBsZSB0cmVlLW5vZGUtc3R5bGVcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJlZS1ub2RlLWFjdGl2YXRlZCc6IGluZGV4Tm9kZSAmJiBpbmRleE5vZGUuaWQgPT09IG5vZGUuaWQgfVwiIChjbGljayk9XCJnZXRDaGFwdGVyKG5vZGUuaWQpXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnVzeSgpXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4RmlsbCBjbGFzcz1cInNtYWxsIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBtYXQtaWNvbi1idXR0b24gbWF0VHJlZU5vZGVUb2dnbGVcclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQXByaS9jaGl1ZGkgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwic21hbGwtaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdleHBhbmRfbW9yZScgOiAnY2hldnJvbl9yaWdodCd9fVxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPnt7bm9kZS5uYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgPC9tYXQtdHJlZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1kcmF3ZXI+XHJcbiAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMCAyNHB4O1wiPlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhGaWxsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxsXCIgaWQ9XCJoZWxwdmlld2VyLXNjcm9sbGVyXCIgKGNsaWNrKT1cImdvdG9DaGFwdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgW2lubmVySHRtbF09XCIocGFnZSgpID8/ICcnKSB8IHNhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
|
|
@@ -4,7 +4,7 @@ import { MatPaginatorModule } from '@angular/material/paginator';
|
|
|
4
4
|
import { BroadcastService, ScreenService, SelectableModel, SystemUtils } from '@arsedizioni/ars-utils/core';
|
|
5
5
|
import { SupportService, SupportMessages } from '@arsedizioni/ars-utils/support.common';
|
|
6
6
|
import { DialogService } from '@arsedizioni/ars-utils/ui';
|
|
7
|
-
import { Subject, debounceTime,
|
|
7
|
+
import { Subject, debounceTime, fromEvent, takeUntil } from 'rxjs';
|
|
8
8
|
import { SupportNotificationComponent } from './notification/notification.component';
|
|
9
9
|
import { FormatPipe } from '@arsedizioni/ars-utils/core';
|
|
10
10
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
@@ -52,9 +52,8 @@ export class SupportNotificationsBrowserComponent {
|
|
|
52
52
|
ngOnInit() {
|
|
53
53
|
// React to window size change
|
|
54
54
|
fromEvent(window, 'resize')
|
|
55
|
-
.pipe(takeUntil(this.unsubscribe), debounceTime(
|
|
55
|
+
.pipe(takeUntil(this.unsubscribe), debounceTime(250))
|
|
56
56
|
.subscribe(() => {
|
|
57
|
-
// Update view
|
|
58
57
|
this.resize();
|
|
59
58
|
});
|
|
60
59
|
// React to message broadcasting
|
|
@@ -81,19 +80,18 @@ export class SupportNotificationsBrowserComponent {
|
|
|
81
80
|
* Resize dialog
|
|
82
81
|
*/
|
|
83
82
|
resize() {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
90
|
-
this.resize();
|
|
91
|
-
}
|
|
83
|
+
let elem = document.getElementById('notifications-browser-scrollable');
|
|
84
|
+
if (elem) {
|
|
85
|
+
const height = this.dialogService.getCurrentDialogScrollableHeight(['notifications-browser-fixed'], window.innerHeight);
|
|
86
|
+
if (height != elem.clientHeight) {
|
|
87
|
+
elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
|
|
92
88
|
}
|
|
93
|
-
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
setTimeout(() => {
|
|
94
92
|
this.resize();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
93
|
+
}, 100);
|
|
94
|
+
}
|
|
97
95
|
}
|
|
98
96
|
onContextMenu(event, item) {
|
|
99
97
|
event.preventDefault();
|
|
@@ -266,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
266
264
|
type: ViewChild,
|
|
267
265
|
args: ['contextMenuTrigger']
|
|
268
266
|
}] } });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LnVpL3VpL25vdGlmaWNhdGlvbnMtYnJvd3Nlci9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQudWkvdWkvbm90aWZpY2F0aW9ucy1icm93c2VyL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBb0MsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxSCxPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFD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QUFZLEVBQUUsME9DakM1QyxzaE5BbUlNLG8xSUQ3Rk0sVUFBVSxnaUdBQUUsY0FBYyw4SEFBRSxlQUFlLHdVQUFFLGdCQUFnQiw2VEFBRSxjQUFjLG9MQUNyRixhQUFhLG1MQUFFLGtCQUFrQiwyYUFBRSxjQUFjLDBXQUFFLFdBQVcsaXhCQUFFLGFBQWEsczFCQUFFLGNBQWMsMlBBQUUsZ0JBQWdCLG9JQUFFLGdCQUFnQix3R0FDakksY0FBYyxraUJBQUUsaUJBQWlCLCtXQUFFLGdCQUFnQiwySEFBRSxrQkFBa0IsZ1NBQUUsVUFBVTs7MkZBRTFFLG9DQUFvQztrQkFWaEQsU0FBUzsyQkFDRixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYzt3QkFDckYsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7d0JBQ2pJLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsNEJBQTRCLENBQUM7OEJBSzVGLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIsIE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU3VwcG9ydFNlcnZpY2UsIFN1cHBvcnRNZXNzYWdlcywgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaWFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXRQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2V4dGVuZGVkJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1RpdGxlLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtGbGV4TW9kdWxlLCBNYXREaWFsb2dUaXRsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXREaWFsb2dDbG9zZSxcclxuICAgIE1hdEljb25Nb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRCYWRnZU1vZHVsZSwgTWF0RGl2aWRlck1vZHVsZSwgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIEV4dGVuZGVkTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0RGlhbG9nQWN0aW9ucywgTWF0UGFnaW5hdG9yTW9kdWxlLCBGb3JtYXRQaXBlLCBTdXBwb3J0Tm90aWZpY2F0aW9uQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydE5vdGlmaWNhdGlvbnNCcm93c2VyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudVRyaWdnZXInKSBjb250ZXh0TWVudSE6IE1hdE1lbnVUcmlnZ2VyO1xyXG5cclxuXHJcbiAgcHJvdGVjdGVkIHNjcmVlblNlcnZpY2UgPSBpbmplY3QoU2NyZWVuU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBzdXBwb3J0U2VydmljZSA9IGluamVjdChTdXBwb3J0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3RhYmxlTW9kZWw8YW55LCBudW1iZXI+KHRydWUsICdpZCcpO1xyXG4gIHByb3RlY3RlZCBzZWFyY2hQYXJhbXM6IFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zID0ge1xyXG4gICAgZmlyc3Q6IDAsXHJcbiAgICBjb3VudDogMjVcclxuICB9O1xyXG4gIHByb3RlY3RlZCB0b3RhbCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcclxuICBwcm90ZWN0ZWQgaXRlbXMgPSBzaWduYWw8YW55PihudWxsKTtcclxuICBwcm90ZWN0ZWQgY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogJzBweCcsIHk6ICcwcHgnIH07XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSwgZGVib3VuY2VUaW1lKDEwMCksIG1hcCgoKSA9PiB3aW5kb3cuaW5uZXJXaWR0aCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIC8vIFVwZGF0ZSB2aWV3XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gbWVzc2FnZSBicm9hZGNhc3RpbmdcclxuICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5nZXRNZXNzYWdlKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gU3VwcG9ydE1lc3NhZ2VzLk5PVElGSUNBVElPTl9SRUFEKSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMsXHJcbiAgICAgICAgICAgICdpZCcsXHJcbiAgICAgICAgICAgIG1lc3NhZ2UuZGF0YVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uaXNSZWFkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgdGhpcy5maW5kKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplIGRpYWxvZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydub3RpZmljYXRpb25zLWJyb3dzZXItZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSBlbGVtLmNsaWVudEhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25Db250ZXh0TWVudShldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55ID0gZXZlbnQuY2xpZW50WSArICdweCc7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51Lm1lbnVEYXRhID0geyBpdGVtOiBpdGVtIH07XHJcbiAgICB0aGlzLmNvbnRleHRNZW51Lm9wZW5NZW51KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgc2Nyb2xsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGwoKSB7XHJcbiAgICAvLyBTY3JvbGwgdG8gdG9wXHJcbiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub3RpZmljYXRpb25zLWJyb3dzZXItc2Nyb2xsZXInKTtcclxuICAgIGlmIChlbGVtKSBlbGVtLnBhcmVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBtZW51IGJ1dHRvbnMgdmlzaWJpbGl0eSB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB1cGRhdGVNZW51QnV0dG9uc1Zpc2liaWxpdHkoKSB7XHJcbiAgICB0aGlzLml0ZW1zKCk/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICBuLmlzTWVudU9wZW4gPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAgKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gICAgICogQHJldHVybnM6IHRoZSBzZWxlY3RlZCBpZHMgYXMgYW4gYXJyYXlcclxuICAgICAqL1xyXG4gIHByaXZhdGUgZ2V0U2VsZXRlY3RJZHMoKTogbnVtYmVyW10ge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcignTGEgc2VsZXppb25lIG5vbiBwdcOyIGNvbnRlbmVyZSBwacO5IGRpIDUwIGVsZW1lbnRpLicpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBpZHM6IG51bWJlcltdID0gW107XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICBpZHMucHVzaChuLmlkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiogUmV0dXJuIGl0ZW0gc3RhdGUgY3NzIGNsYXNzXHJcbiogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4qL1xyXG4gIHByb3RlY3RlZCBnZXRJdGVtU3RhdGVDc3NDbGFzcyhpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbS5pc1JlYWQpIHJldHVybiAndW5yZWFkLWJnJztcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFpdGVtLmlzUmVhZCkgcmV0dXJuICdOb24gbGV0dG8nO1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBhIG5ldyBzZWFyY2hcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZmluZCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUGFyYW1zLmZpcnN0ID0gMDtcclxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mZXRjaCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2goKSB7XHJcbiAgICBpZiAoIXRoaXMuc3VwcG9ydFNlcnZpY2UubG9nZ2VkSW4oKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3koJ0NhcmljYW1lbnRvIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLnF1ZXJ5Tm90aWZpY2F0aW9ucyh0aGlzLnNlYXJjaFBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnNldChyLnZhbHVlPy5pdGVtcyA/PyBbXSk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWwuc2V0KHIudmFsdWU/LnRvdGFsID8/IDApO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jbGVhckJ1c3koKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBhIG5ldyBwYWdlIHJlc3VsdFxyXG4gICAqIEBwYXJhbSBlIDogdGhlIE1hdFBhZ2luYXRvciBQYWdlRXZlbnQgZGF0YVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmZXRjaE1vcmUoZTogYW55KSB7XHJcbiAgICBsZXQgZmlyc3QgPSBlLnBhZ2VJbmRleCAqIHRoaXMuc2VhcmNoUGFyYW1zLmNvdW50O1xyXG4gICAgdGhpcy5zZWFyY2hQYXJhbXMuZmlyc3QgPSBmaXJzdDtcclxuICAgIHRoaXMuZmV0Y2goKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBNYXJrIGEgbm90aWZpY2F0aW9uIGFzIHJlYWQgb3IgdW5yZWFkXHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBzZXQgb3IgbnVsbCB0byB1c2Ugc2VsZWN0aW9uXHJcbiAgICogQHBhcmFtIHVubWFyayA6IHRydWUgdG8gc2V0IGFzIHVucmVhZCBvciBmYWxzZSB0byBzZXQgYXMgcmVhZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXJrKGl0ZW06IGFueSA9IG51bGwsIHVubWFyazogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXRoaXMuc3VwcG9ydFNlcnZpY2UubG9nZ2VkSW4oKSkgcmV0dXJuO1xyXG4gICAgaWYgKCFpdGVtICYmICF0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSBpdGVtID8gW2l0ZW0uaWRdIDogdGhpcy5nZXRTZWxldGVjdElkcygpO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3koJ0FnZ2lvcm5hbWVudG8gaW4gY29yc28uLi4nKTtcclxuICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UubWFya05vdGlmaWNhdGlvbnMoe1xyXG4gICAgICBpZHM6IGlkcyxcclxuICAgICAgdW5tYXJrOiB1bm1hcmtcclxuICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWRzLmZvckVhY2goKGlkOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcygpW2ldLmlzUmVhZCA9ICF1bm1hcms7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zdXBwb3J0U2VydmljZS5jb3VudFVucmVhZE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGRpc3BsYXlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvdyhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFN1cHBvcnROb3RpZmljYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAndmlzdWFsaXp6YSBub3RpZmljYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBpZDogaXRlbS5pZCB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc5MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1oZWFkZXJcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsID5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+Tm92aXTDoCBlIGluZm9ybWF6aW9uaTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4RmlsbCBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjIwMHB4XCIgZnhGbGV4QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoyMDBweFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0ICNzZWFyY2hJbnB1dD1cIm1hdElucHV0XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFBhcmFtcy5hbnlcIiBtYXhsZW5ndGg9XCIyMDBcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiZmluZCgpXCIgYXV0b2ZvY3VzIHBsYWNlaG9sZGVyPVwiSW5zZXJpc2NpIHRlc3RvICsgSU5WSU8uLi5cIiAvPlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hQYXJhbXMuYW55KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hQYXJhbXMuYW55ID0gJydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgQGlmIChzZWxlY3Rpb24/Lmhhc1ZhbHVlKCkpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBkYSBlc2VndWlyZSBzdWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSBwZXIgZWxlbWVudGkgc2VsZXppb25hdGknXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVTZWxlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW21hdEJhZGdlXT1cInNlbGVjdGlvbj8uYWxsLmxlbmd0aFwiPmNoZWNrbGlzdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudVNlbGVjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VsZWN0aW9uPy5jbGVhcigpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVzZWxlemlvbmEgdHV0dGknXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5EZXNlbGV6aW9uYSB0dXR0aVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGxlZ2dlcmUnXCIgKGNsaWNrKT1cIm1hcmsobnVsbCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+b3V0bGluZWRfZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBkYSBsZWdnZXJlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBnacOgIGxldHRvJ1wiIChjbGljayk9XCJtYXJrKG51bGwpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlXCI+XHJcbiAgPGRpdiBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxlclwiPlxyXG4gICAgQGlmICh0b3RhbCgpID09PSAwKSB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48aT5OZXNzdW4gZWxlbWVudG8gZGEgdmlzdWFsaXp6YXJlLjwvaT48L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICA8ZGl2IChtb3VzZWVudGVyKT1cIml0ZW0uaXNPdmVyID0gdHJ1ZTtcIiAobW91c2VsZWF2ZSk9XCJpdGVtLmlzT3ZlciA9IGZhbHNlXCJcclxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNnB4XCIgZnhGaWxsIFtuZ0NsYXNzXT1cInsnbmV3cy1zZWxlY3RlZCc6IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmlkKSwgXHJcbiAgICAgICAgICAnbmV3cy1yZWFkJzogaXRlbS5pc1JlYWR9XCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjZweFwiIFtuZ0NsYXNzXT1cImdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW0pXCIgW21hdFRvb2x0aXBdPVwiZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChzY3JlZW5TZXJ2aWNlLmlzVG91Y2hhYmxlIHx8IGl0ZW0uaXNPdmVyIHx8IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5pZCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24/LmlzU2VsZWN0ZWQoaXRlbS5pZClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwic2hvdyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTEgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAge3sgKGl0ZW0ucHVibGlzaGluZ0RhdGUgPz8gaXRlbS5jcmVhdGVkKSB8IGZvcm1hdDonRCc6J2RkL01NL3l5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0udGl0bGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgIHt7aXRlbS5wcm9kdWN0TmFtZXN9fVxyXG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm9kdWN0TW9kdWxlc05hbWVzKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4+IHwge3tpdGVtLnByb2R1Y3RNb2R1bGVzTmFtZXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKGl0ZW0uaXNPdmVyIHx8IGl0ZW0uaXNNZW51T3BlbiB8fCBzZWxlY3Rpb24/LmlzU2VsZWN0ZWQoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJNZW51XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pJ1wiXHJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbnRleHRNZW51XCIgW21hdE1lbnVUcmlnZ2VyRGF0YV09XCJ7aXRlbTogaXRlbX1cIiAoY2xpY2spPVwiaXRlbS5pc01lbnVPcGVuID0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgI2NvbnRleHRNZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWRcIiBbc3R5bGUubGVmdF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnhcIlxyXG4gICAgICAgIFtzdHlsZS50b3BdPVwiY29udGV4dE1lbnVQb3NpdGlvbi55XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbnRleHRNZW51XCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LW1lbnUgI2NvbnRleHRNZW51PVwibWF0TWVudVwiIChjbG9zZWQpPVwidXBkYXRlTWVudUJ1dHRvbnNWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICBAaWYgKGl0ZW0uaXNSZWFkKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBkYSBsZWdnZXJlJ1wiIChjbGljayk9XCJtYXJrKGl0ZW0sIHRydWUpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5mbGFnPC9tYXQtaWNvbj5TZWduYSBjb21lIGRhIGxlZ2dlcmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghaXRlbS5pc1JlYWQpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGdpw6AgbGV0dG8nXCIgKGNsaWNrKT1cIm1hcmsoaXRlbSlcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm91dGxpbmVkX2ZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJub3RpZmljYXRpb25zLWJyb3dzZXItZml4ZWRcIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiIGZ4RmlsbD5cclxuICAgIDwhLS0gbGVnZW5kIC0tPlxyXG4gICAgPGRpdiBmeEZsZXgubHQtbWQ9XCIxMDBcIiBjbGFzcz1cImxlZ2VuZC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCB1bnJlYWQtYmdcIj48L2Rpdj5cclxuICAgICAgZGEgbGVnZ2VyZVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4RmxleC5sdC1tZD1cIjEwMFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvciBbaGlkZVBhZ2VTaXplXT1cInRydWVcIiBbbGVuZ3RoXT1cInRvdGFsKClcIiBbcGFnZVNpemVdPVwic2VhcmNoUGFyYW1zLmNvdW50XCJcclxuICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiIChwYWdlKT1cImZldGNoTW9yZSgkZXZlbnQpXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LnVpL3VpL25vdGlmaWNhdGlvbnMtYnJvd3Nlci9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQudWkvdWkvbm90aWZpY2F0aW9ucy1icm93c2VyL25vdGlmaWNhdGlvbnMtYnJvd3Nlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBZ0Isa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBb0MsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxSCxPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMs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QUFFLGFBQWEsczFCQUFFLGNBQWMsMlBBQUUsZ0JBQWdCLG9JQUFFLGdCQUFnQix3R0FDakksY0FBYyxraUJBQUUsaUJBQWlCLCtXQUFFLGdCQUFnQiwySEFBRSxrQkFBa0IsZ1NBQUUsVUFBVTs7MkZBRTFFLG9DQUFvQztrQkFWaEQsU0FBUzsyQkFDRixFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsY0FHaEMsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYzt3QkFDckYsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7d0JBQ2pJLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsNEJBQTRCLENBQUM7OEJBSzVGLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDVyxXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxuICBzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0TWVudVRyaWdnZXIsIE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBCcm9hZGNhc3RTZXJ2aWNlLCBTY3JlZW5TZXJ2aWNlLCBTZWxlY3RhYmxlTW9kZWwsIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgU3VwcG9ydFNlcnZpY2UsIFN1cHBvcnRNZXNzYWdlcywgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBEaWFsb2dTZXJ2aWNlXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3VwcG9ydE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtYXRQaXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2V4dGVuZGVkJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1RpdGxlLCBNYXREaWFsb2dDbG9zZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZmxleCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBob3N0OiB7ICdCaW5kJzogU3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCkgfSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy1icm93c2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ub3RpZmljYXRpb25zLWJyb3dzZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtGbGV4TW9kdWxlLCBNYXREaWFsb2dUaXRsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXREaWFsb2dDbG9zZSxcclxuICAgIE1hdEljb25Nb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXRNZW51TW9kdWxlLCBNYXRCYWRnZU1vZHVsZSwgTWF0RGl2aWRlck1vZHVsZSwgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIEV4dGVuZGVkTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0RGlhbG9nQWN0aW9ucywgTWF0UGFnaW5hdG9yTW9kdWxlLCBGb3JtYXRQaXBlLCBTdXBwb3J0Tm90aWZpY2F0aW9uQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydE5vdGlmaWNhdGlvbnNCcm93c2VyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRvcicpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcclxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudVRyaWdnZXInKSBjb250ZXh0TWVudSE6IE1hdE1lbnVUcmlnZ2VyO1xyXG5cclxuXHJcbiAgcHJvdGVjdGVkIHNjcmVlblNlcnZpY2UgPSBpbmplY3QoU2NyZWVuU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBzdXBwb3J0U2VydmljZSA9IGluamVjdChTdXBwb3J0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3RhYmxlTW9kZWw8YW55LCBudW1iZXI+KHRydWUsICdpZCcpO1xyXG4gIHByb3RlY3RlZCBzZWFyY2hQYXJhbXM6IFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zID0ge1xyXG4gICAgZmlyc3Q6IDAsXHJcbiAgICBjb3VudDogMjVcclxuICB9O1xyXG4gIHByb3RlY3RlZCB0b3RhbCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcclxuICBwcm90ZWN0ZWQgaXRlbXMgPSBzaWduYWw8YW55PihudWxsKTtcclxuICBwcm90ZWN0ZWQgY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogJzBweCcsIHk6ICcwcHgnIH07XHJcblxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFJlYWN0IHRvIHdpbmRvdyBzaXplIGNoYW5nZVxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSwgZGVib3VuY2VUaW1lKDI1MCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFJlYWN0IHRvIG1lc3NhZ2UgYnJvYWRjYXN0aW5nXHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2UuZ2V0TWVzc2FnZSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IFN1cHBvcnRNZXNzYWdlcy5OT1RJRklDQVRJT05fUkVBRCkge1xyXG4gICAgICAgICAgY29uc3QgaXRlbSA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgICB0aGlzLml0ZW1zLFxyXG4gICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICBtZXNzYWdlLmRhdGFcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBpdGVtLmlzUmVhZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXNpemUoKTtcclxuICAgIHRoaXMuZmluZCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2l6ZSBkaWFsb2dcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2l6ZSgpIHtcclxuICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlJyk7XHJcbiAgICBpZiAoZWxlbSkge1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmRpYWxvZ1NlcnZpY2UuZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICAgICAgWydub3RpZmljYXRpb25zLWJyb3dzZXItZml4ZWQnXSxcclxuICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhlaWdodCAhPSBlbGVtLmNsaWVudEhlaWdodCkge1xyXG4gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdzdHlsZScsICdoZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50O21heC1oZWlnaHQ6JyArIGhlaWdodCArICdweCAhaW1wb3J0YW50Jyk7ICAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2l6ZSgpO1xyXG4gICAgICB9LCAxMDApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25Db250ZXh0TWVudShldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYICsgJ3B4JztcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbi55ID0gZXZlbnQuY2xpZW50WSArICdweCc7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51Lm1lbnVEYXRhID0geyBpdGVtOiBpdGVtIH07XHJcbiAgICB0aGlzLmNvbnRleHRNZW51Lm9wZW5NZW51KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgc2Nyb2xsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGwoKSB7XHJcbiAgICAvLyBTY3JvbGwgdG8gdG9wXHJcbiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub3RpZmljYXRpb25zLWJyb3dzZXItc2Nyb2xsZXInKTtcclxuICAgIGlmIChlbGVtKSBlbGVtLnBhcmVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBtZW51IGJ1dHRvbnMgdmlzaWJpbGl0eSB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCB1cGRhdGVNZW51QnV0dG9uc1Zpc2liaWxpdHkoKSB7XHJcbiAgICB0aGlzLml0ZW1zKCk/LmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICBuLmlzTWVudU9wZW4gPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAgKiBHZXQgYWxsIHNlbGVjdGVkIGlkc1xyXG4gICAgICogQHJldHVybnM6IHRoZSBzZWxlY3RlZCBpZHMgYXMgYW4gYXJyYXlcclxuICAgICAqL1xyXG4gIHByaXZhdGUgZ2V0U2VsZXRlY3RJZHMoKTogbnVtYmVyW10ge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uPy5hbGw/Lmxlbmd0aCA+IDUwKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcignTGEgc2VsZXppb25lIG5vbiBwdcOyIGNvbnRlbmVyZSBwacO5IGRpIDUwIGVsZW1lbnRpLicpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBpZHM6IG51bWJlcltdID0gW107XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24/LmFsbD8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbj8uYWxsPy5mb3JFYWNoKChuOiBhbnkpID0+IHtcclxuICAgICAgICBpZHMucHVzaChuLmlkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiogUmV0dXJuIGl0ZW0gc3RhdGUgY3NzIGNsYXNzXHJcbiogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBldmFsdWF0ZVxyXG4qL1xyXG4gIHByb3RlY3RlZCBnZXRJdGVtU3RhdGVDc3NDbGFzcyhpdGVtOiBhbnkpIHtcclxuICAgIGlmICghaXRlbS5pc1JlYWQpIHJldHVybiAndW5yZWFkLWJnJztcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBpdGVtIHN0YXRlIHRvb2x0aXAgdGV4dFxyXG4gICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gZXZhbHVhdGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFpdGVtLmlzUmVhZCkgcmV0dXJuICdOb24gbGV0dG8nO1xyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBhIG5ldyBzZWFyY2hcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZmluZCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUGFyYW1zLmZpcnN0ID0gMDtcclxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xyXG4gICAgICB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mZXRjaCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgZGF0YVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2goKSB7XHJcbiAgICBpZiAoIXRoaXMuc3VwcG9ydFNlcnZpY2UubG9nZ2VkSW4oKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3koJ0NhcmljYW1lbnRvIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLnN1cHBvcnRTZXJ2aWNlLnF1ZXJ5Tm90aWZpY2F0aW9ucyh0aGlzLnNlYXJjaFBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnNldChyLnZhbHVlPy5pdGVtcyA/PyBbXSk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWwuc2V0KHIudmFsdWU/LnRvdGFsID8/IDApO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jbGVhckJ1c3koKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdyBhIG5ldyBwYWdlIHJlc3VsdFxyXG4gICAqIEBwYXJhbSBlIDogdGhlIE1hdFBhZ2luYXRvciBQYWdlRXZlbnQgZGF0YVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmZXRjaE1vcmUoZTogYW55KSB7XHJcbiAgICBsZXQgZmlyc3QgPSBlLnBhZ2VJbmRleCAqIHRoaXMuc2VhcmNoUGFyYW1zLmNvdW50O1xyXG4gICAgdGhpcy5zZWFyY2hQYXJhbXMuZmlyc3QgPSBmaXJzdDtcclxuICAgIHRoaXMuZmV0Y2goKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBNYXJrIGEgbm90aWZpY2F0aW9uIGFzIHJlYWQgb3IgdW5yZWFkXHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBzZXQgb3IgbnVsbCB0byB1c2Ugc2VsZWN0aW9uXHJcbiAgICogQHBhcmFtIHVubWFyayA6IHRydWUgdG8gc2V0IGFzIHVucmVhZCBvciBmYWxzZSB0byBzZXQgYXMgcmVhZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBtYXJrKGl0ZW06IGFueSA9IG51bGwsIHVubWFyazogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIXRoaXMuc3VwcG9ydFNlcnZpY2UubG9nZ2VkSW4oKSkgcmV0dXJuO1xyXG4gICAgaWYgKCFpdGVtICYmICF0aGlzLnNlbGVjdGlvbj8uYWxsPy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSBpdGVtID8gW2l0ZW0uaWRdIDogdGhpcy5nZXRTZWxldGVjdElkcygpO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmJ1c3koJ0FnZ2lvcm5hbWVudG8gaW4gY29yc28uLi4nKTtcclxuICAgIHRoaXMuc3VwcG9ydFNlcnZpY2UubWFya05vdGlmaWNhdGlvbnMoe1xyXG4gICAgICBpZHM6IGlkcyxcclxuICAgICAgdW5tYXJrOiB1bm1hcmtcclxuICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWRzLmZvckVhY2goKGlkOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBpID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kSW5kZXhCeUtleShcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICAnaWQnLFxyXG4gICAgICAgICAgICAgICAgaWRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcygpW2ldLmlzUmVhZCA9ICF1bm1hcms7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5zdXBwb3J0U2VydmljZS5jb3VudFVucmVhZE5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSBub3RpZmljYXRpb25cclxuICAgKiBAcGFyYW0gaXRlbSA6IHRoZSBpdGVtIHRvIGRpc3BsYXlcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2hvdyhpdGVtOiBhbnkpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFN1cHBvcnROb3RpZmljYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAndmlzdWFsaXp6YSBub3RpZmljYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgZGF0YTogeyBpZDogaXRlbS5pZCB9LFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6ICc5MDBweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJyxcclxuICAgICAgaGVpZ2h0OiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9ucy1icm93c2VyLWZpeGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1oZWFkZXJcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhGaWxsID5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+Tm92aXTDoCBlIGluZm9ybWF6aW9uaTwvaDI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwic3RhcnRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIiBhcmlhLWxhYmVsPVwiQ2hpdWRpXCJcclxuICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3cgd3JhcFwiIGZ4RmlsbCBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIjIwMHB4XCIgZnhGbGV4QWxpZ249XCJlbmRcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDoyMDBweFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5DZXJjYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0ICNzZWFyY2hJbnB1dD1cIm1hdElucHV0XCIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFBhcmFtcy5hbnlcIiBtYXhsZW5ndGg9XCIyMDBcIlxyXG4gICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiZmluZCgpXCIgYXV0b2ZvY3VzIHBsYWNlaG9sZGVyPVwiSW5zZXJpc2NpIHRlc3RvICsgSU5WSU8uLi5cIiAvPlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hQYXJhbXMuYW55KSB7XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0YWJpbmRleD1cIi0xXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiUHVsaXNjaVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hQYXJhbXMuYW55ID0gJydcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGZ4RmxleD1cIipcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgQGlmIChzZWxlY3Rpb24/Lmhhc1ZhbHVlKCkpIHtcclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBkYSBlc2VndWlyZSBzdWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aVwiXHJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSBwZXIgZWxlbWVudGkgc2VsZXppb25hdGknXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVTZWxlY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW21hdEJhZGdlXT1cInNlbGVjdGlvbj8uYWxsLmxlbmd0aFwiPmNoZWNrbGlzdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudVNlbGVjdGlvbnM9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2VsZWN0aW9uPy5jbGVhcigpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInRGVzZWxlemlvbmEgdHV0dGknXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5EZXNlbGV6aW9uYSB0dXR0aVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGxlZ2dlcmUnXCIgKGNsaWNrKT1cIm1hcmsobnVsbCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+b3V0bGluZWRfZmxhZzwvbWF0LWljb24+U2VnbmEgY29tZSBkYSBsZWdnZXJlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBnacOgIGxldHRvJ1wiIChjbGljayk9XCJtYXJrKG51bGwpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxhYmxlXCI+XHJcbiAgPGRpdiBpZD1cIm5vdGlmaWNhdGlvbnMtYnJvd3Nlci1zY3JvbGxlclwiPlxyXG4gICAgQGlmICh0b3RhbCgpID09PSAwKSB7XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48aT5OZXNzdW4gZWxlbWVudG8gZGEgdmlzdWFsaXp6YXJlLjwvaT48L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBpdGVtcygpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xyXG4gICAgICA8ZGl2IChtb3VzZWVudGVyKT1cIml0ZW0uaXNPdmVyID0gdHJ1ZTtcIiAobW91c2VsZWF2ZSk9XCJpdGVtLmlzT3ZlciA9IGZhbHNlXCJcclxuICAgICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5ld3NcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNnB4XCIgZnhGaWxsIFtuZ0NsYXNzXT1cInsnbmV3cy1zZWxlY3RlZCc6IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmlkKSwgXHJcbiAgICAgICAgICAnbmV3cy1yZWFkJzogaXRlbS5pc1JlYWR9XCI+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjZweFwiIFtuZ0NsYXNzXT1cImdldEl0ZW1TdGF0ZUNzc0NsYXNzKGl0ZW0pXCIgW21hdFRvb2x0aXBdPVwiZ2V0SXRlbVN0YXRlVG9vbHRpcChpdGVtKVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgQGlmIChzY3JlZW5TZXJ2aWNlLmlzVG91Y2hhYmxlIHx8IGl0ZW0uaXNPdmVyIHx8IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5pZCkgOiBudWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24/LmlzU2VsZWN0ZWQoaXRlbS5pZClcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiAoY2xpY2spPVwic2hvdyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLTEgdXBwZXJjYXNlXCI+XHJcbiAgICAgICAgICAgICAge3sgKGl0ZW0ucHVibGlzaGluZ0RhdGUgPz8gaXRlbS5jcmVhdGVkKSB8IGZvcm1hdDonRCc6J2RkL01NL3l5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdj57e2l0ZW0udGl0bGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby0yIHVwcGVyY2FzZVwiPlxyXG4gICAgICAgICAgICAgIHt7aXRlbS5wcm9kdWN0TmFtZXN9fVxyXG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5wcm9kdWN0TW9kdWxlc05hbWVzKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4+IHwge3tpdGVtLnByb2R1Y3RNb2R1bGVzTmFtZXN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjUwcHhcIiBmeEZsZXhBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICBAaWYgKGl0ZW0uaXNPdmVyIHx8IGl0ZW0uaXNNZW51T3BlbiB8fCBzZWxlY3Rpb24/LmlzU2VsZWN0ZWQoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJNZW51XCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pJ1wiXHJcbiAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbnRleHRNZW51XCIgW21hdE1lbnVUcmlnZ2VyRGF0YV09XCJ7aXRlbTogaXRlbX1cIiAoY2xpY2spPVwiaXRlbS5pc01lbnVPcGVuID0gdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgI2NvbnRleHRNZW51VHJpZ2dlcj1cIm1hdE1lbnVUcmlnZ2VyXCIgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWRcIiBbc3R5bGUubGVmdF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnhcIlxyXG4gICAgICAgIFtzdHlsZS50b3BdPVwiY29udGV4dE1lbnVQb3NpdGlvbi55XCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImNvbnRleHRNZW51XCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LW1lbnUgI2NvbnRleHRNZW51PVwibWF0TWVudVwiIChjbG9zZWQpPVwidXBkYXRlTWVudUJ1dHRvbnNWaXNpYmlsaXR5KClcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0TWVudUNvbnRlbnQgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgICAgICBAaWYgKGl0ZW0uaXNSZWFkKSB7XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW2F0dHIuYXJpYS1sYWJlbF09XCInU2VnbmEgY29tZSBkYSBsZWdnZXJlJ1wiIChjbGljayk9XCJtYXJrKGl0ZW0sIHRydWUpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5mbGFnPC9tYXQtaWNvbj5TZWduYSBjb21lIGRhIGxlZ2dlcmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGlmICghaXRlbS5pc1JlYWQpIHtcclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZWduYSBjb21lIGRhIGdpw6AgbGV0dG8nXCIgKGNsaWNrKT1cIm1hcmsoaXRlbSlcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm91dGxpbmVkX2ZsYWc8L21hdC1pY29uPlNlZ25hIGNvbWUgZ2nDoCBsZXR0b1xyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9tYXQtbWVudT5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJub3RpZmljYXRpb25zLWJyb3dzZXItZml4ZWRcIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlblwiIGZ4RmlsbD5cclxuICAgIDwhLS0gbGVnZW5kIC0tPlxyXG4gICAgPGRpdiBmeEZsZXgubHQtbWQ9XCIxMDBcIiBjbGFzcz1cImxlZ2VuZC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZCB1bnJlYWQtYmdcIj48L2Rpdj5cclxuICAgICAgZGEgbGVnZ2VyZVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4RmxleC5sdC1tZD1cIjEwMFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvciBbaGlkZVBhZ2VTaXplXT1cInRydWVcIiBbbGVuZ3RoXT1cInRvdGFsKClcIiBbcGFnZVNpemVdPVwic2VhcmNoUGFyYW1zLmNvdW50XCJcclxuICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwidHJ1ZVwiIChwYWdlKT1cImZldGNoTW9yZSgkZXZlbnQpXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -10,7 +10,7 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
10
10
|
import { MatSelectModule } from '@angular/material/select';
|
|
11
11
|
import { SystemUtils } from '@arsedizioni/ars-utils/core';
|
|
12
12
|
import { ExtendedModule, FlexModule } from '@ngbracket/ngx-layout';
|
|
13
|
-
import { debounceTime,
|
|
13
|
+
import { debounceTime, fromEvent, Subject, takeUntil } from 'rxjs';
|
|
14
14
|
import { ButtonSelectorComponent } from '../button-selector/button-selector.component';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
16
16
|
import * as i1 from "@angular/forms";
|
|
@@ -122,7 +122,7 @@ export class ChipsSelectorComponent {
|
|
|
122
122
|
ngOnInit() {
|
|
123
123
|
// React to window size change
|
|
124
124
|
fromEvent(window, 'resize')
|
|
125
|
-
.pipe(takeUntil(this.unsubscribe), debounceTime(
|
|
125
|
+
.pipe(takeUntil(this.unsubscribe), debounceTime(250))
|
|
126
126
|
.subscribe(() => {
|
|
127
127
|
if (this.collapseAt() > 0) {
|
|
128
128
|
// Close the options menu if open
|
|
@@ -151,6 +151,11 @@ export class ChipsSelectorComponent {
|
|
|
151
151
|
? (elem?.clientWidth ?? -1)
|
|
152
152
|
: (window.innerWidth ?? -1));
|
|
153
153
|
}
|
|
154
|
+
else {
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
this.updateContainerWidth();
|
|
157
|
+
}, 100);
|
|
158
|
+
}
|
|
154
159
|
}
|
|
155
160
|
writeValue(value) {
|
|
156
161
|
if (this.value !== value) {
|
|
@@ -232,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
232
237
|
type: HostBinding,
|
|
233
238
|
args: ['attr.aria-describedBy']
|
|
234
239
|
}] } });
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvY2hpcHMtc2VsZWN0b3IvY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvY2hpcHMtc2VsZWN0b3IvY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6TyxPQUFPLEVBQXdCLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxF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REgsUUFBUTtzQkFEWCxLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFnQkYsV0FBVztzQkFEZCxLQUFLO2dCQWFTLEVBQUU7c0JBQWhCLFdBQVc7Z0JBRVIsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFJUyxXQUFXO3NCQUFoRCxXQUFXO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBSZW5kZXJlcjIsIFNlbGYsIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sLCBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBOYW1lVmFsdWVJdGVtLCBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IEV4dGVuZGVkTW9kdWxlLCBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0JztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZnJvbUV2ZW50LCBtYXAsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCdXR0b25TZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi1zZWxlY3Rvci9idXR0b24tc2VsZWN0b3IuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NoaXBzLXNlbGVjdG9yJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtOZ1N0eWxlLCBOZ0NsYXNzLCBGbGV4TW9kdWxlLCBFeHRlbmRlZE1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgTWF0Q2hpcHNNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0QmFkZ2VNb2R1bGUsXHJcbiAgICBCdXR0b25TZWxlY3RvckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogQ2hpcHNTZWxlY3RvckNvbXBvbmVudCB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jaGlwcy1zZWxlY3Rvci5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGlwc1NlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5hbWVWYWx1ZUl0ZW08YW55PltdPigpO1xyXG5cclxuICBwcm90ZWN0ZWQgY29udGFpbmVySWQ6IHN0cmluZyA9IGBjaGlwcy1zZWxlY3Rvci1jb250YWluZXItLSR7U3lzdGVtVXRpbHMuZ2VuZXJhdGVVVUlEKCl9YDtcclxuICBwcm90ZWN0ZWQgY29udGFpbmVyV2lkdGggPSBzaWduYWwoLTYpO1xyXG4gIHByaXZhdGUgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGZvY3VzZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgb3B0aW9ucyA9IGlucHV0PE5hbWVWYWx1ZUl0ZW08YW55PltdPigpO1xyXG4gIGNvbGxhcHNlZFdpZHRoID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcbiAgY29sbGFwc2VBdCA9IGlucHV0PG51bWJlcj4oLTEpO1xyXG4gIGNvbGxhcHNlQXRDb250YWluZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgY29sbGFwc2VEaXNwbGF5TW9kZSA9IGlucHV0PCdkcm9wZG93bicgfCAnYnV0dG9uJz4oJ2Ryb3Bkb3duJyk7XHJcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcbiAgbXVsdGlwbGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgbW9kZSA9IGlucHV0PCdjb2xsYXBzZWQnIHwgJ2RpbmFteWMnPignZGluYW15YycpO1xyXG4gIGNvbGxhcHNlZDogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3QgY3cgPSB0aGlzLmNvbnRhaW5lcldpZHRoKCk7XHJcbiAgICBjb25zdCBtdyA9IHRoaXMuY29sbGFwc2VBdCgpO1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZSgpID09PSAnY29sbGFwc2VkJyB8fCAobXcgPT09IC0xIHx8IChjdyA+IDAgJiYgbXcgPiAwICYmIGN3IDwgbXcpKTtcclxuICB9KVxyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlOiBOYW1lVmFsdWVJdGVtPGFueT5bXSB8IGFueSB8IG51bGwgPSBbXVxyXG4gIHNldCB2YWx1ZSh2YWx1ZTogTmFtZVZhbHVlSXRlbTxhbnk+W10gfCBhbnkgfCBudWxsKSB7XHJcbiAgICBsZXQgdjEgPSAwO1xyXG4gICAgbGV0IHYyID0gMDtcclxuICAgIGlmICh0aGlzLl92YWx1ZT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLl92YWx1ZS5mb3JFYWNoKChuOiBOYW1lVmFsdWVJdGVtPGFueT4pID0+IHYxICs9IG4udmFsdWUpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICB2MiA9IHZhbHVlLnZhbHVlO1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IFt2YWx1ZV1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2YWx1ZT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKG46IE5hbWVWYWx1ZUl0ZW08YW55PikgPT4gdjIgKz0gbi52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIGlmICh2MiAhPT0gdjEpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VkLmVtaXQodGhpcy5fdmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5fdmFsdWUgfHwgdGhpcy5fdmFsdWU/Lmxlbmd0aCA9PT0gMDtcclxuICB9XHJcbiAgZ2V0IGVycm9yU3RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZXJyb3JzICE9IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBnZXQgcmVxdWlyZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGdldCBkaXNhYmxlZCgpIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcclxuICB9XHJcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcclxuICB9XHJcbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2U6IChfOiBhbnkpID0+IHZvaWQgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4geyB9O1xyXG5cclxuICBASG9zdEJpbmRpbmcoKSBpZCA9IGBjaGlwcy1zZWxlY3Rvci0tJHtTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKX1gO1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmxvYXRpbmcnKVxyXG4gIGdldCBzaG91bGRMYWJlbEZsb2F0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcclxuICB9XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkQnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG5cclxuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoMTAwKSwgbWFwKCgpID0+IHdpbmRvdy5pbm5lcldpZHRoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VBdCgpID4gMCkge1xyXG4gICAgICAgICAgLy8gQ2xvc2UgdGhlIG9wdGlvbnMgbWVudSBpZiBvcGVuXHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lcldpZHRoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lcldpZHRoKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9LCAyNTApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGNvbnRhaW5lciB3aWR0aFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlQ29udGFpbmVyV2lkdGgoKSB7XHJcbiAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jb250YWluZXJJZCk7XHJcbiAgICBpZiAoZWxlbSAmJiBlbGVtLmNsaWVudFdpZHRoID4gMCkge1xyXG4gICAgICB0aGlzLmNvbnRhaW5lcldpZHRoLnNldChcclxuICAgICAgICB0aGlzLmNvbGxhcHNlQXRDb250YWluZXIoKVxyXG4gICAgICAgICAgPyAoZWxlbT8uY2xpZW50V2lkdGggPz8gLTEpXHJcbiAgICAgICAgICA6ICh3aW5kb3cuaW5uZXJXaWR0aCA/PyAtMSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsdWUgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm47XHJcbiAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpO1xyXG4gICAgaWYgKGVsZW0pIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShlbGVtLCAnZGlzYWJsZWQnLCBpc0Rpc2FibGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm47XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgZWxlbS5mb2N1cygpO1xyXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzZWxlY3Rpb25cclxuICAgKiBAcGFyYW0gZSA6IHRoZSBjbGljayBldmVudFxyXG4gICAqL1xyXG4gIGNsZWFyKGU6IEV2ZW50KSB7XHJcbiAgICB0aGlzLnZhbHVlID0gW107XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0IHNpbmdsZSBlbGVtZW50XHJcbiAgICogQHBhcmFtIGl0ZW0gOiB0aGUgaXRlbSB0byBzZWxlY3RcclxuICAgKi9cclxuICBzZWxlY3QoaXRlbTogTmFtZVZhbHVlSXRlbTxhbnk+IHwgbnVsbCkge1xyXG4gICAgaWYgKGl0ZW0pIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IFtpdGVtXTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgW2lkXT1cImNvbnRhaW5lcklkXCIgY2xhc3M9XCJjaGlwcy1jb250YWluZXJcIj5cclxuICAgIEBpZihjb250YWluZXJXaWR0aCgpID4gMCkge1xyXG4gICAgQGlmKGNvbGxhcHNlZCgpKSB7XHJcbiAgICBAaWYoY29sbGFwc2VEaXNwbGF5TW9kZSgpID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgW25nU3R5bGVdPVwieydtaW4td2lkdGgnOiBjb2xsYXBzZWRXaWR0aCgpID4gMCA/IGNvbGxhcHNlZFdpZHRoKCkrJy5weCcgOiAnMTAwJSd9XCJcclxuICAgICAgICBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICAgICAgQGlmKGxhYmVsKCkpIHtcclxuICAgICAgICA8bWF0LWxhYmVsPnt7bGFiZWwoKX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwidmFsdWVcIiBuYW1lPVwidmFsdWVcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICAgICAgQGlmICh2YWx1ZSAmJiAodmFsdWUubGVuZ3RoIHx8IDApID4gMCkge1xyXG4gICAgICAgICAgICAgICAge3t2YWx1ZVswXS5zaG9ydE5hbWUgPz8gdmFsdWVbMF0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBAaWYgKHZhbHVlICYmICh2YWx1ZS5sZW5ndGggfHwgMCkgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbGxhcHNlZC1hZGRpdGlvbmFsLXNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICgre3sodmFsdWUubGVuZ3RoIHx8IDApIC0gMX19IHt7dmFsdWUubGVuZ3RoID09PSAyID8gJ2FsdHJvJyA6ICdhbHRyaSd9fSlcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0LXRyaWdnZXI+XHJcbiAgICAgICAgICAgIEBmb3IgKG8gb2Ygb3B0aW9ucygpOyB0cmFjayBvLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJvXCI+XHJcbiAgICAgICAgICAgICAgICB7e28ubmFtZX19IFxyXG4gICAgICAgICAgICAgICAgQGlmKG8uYmFnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7ICh7e28uYmFnfX0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgQGlmICh2YWx1ZSAmJiAodmFsdWUubGVuZ3RoIHx8IDApID4gMCkge1xyXG4gICAgICAgIDxidXR0b24gbWF0U3VmZml4IHRhYmluZGV4PVwiLTFcIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIiAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9IEBlbHNlIHtcclxuXHJcbiAgICA8YnV0dG9uLXNlbGVjdG9yIFtsYWJlbF09XCJsYWJlbCgpXCIgW29wdGlvbnNdPVwib3B0aW9ucygpXCIgW3dpZHRoXT1cImNvbGxhcHNlZFdpZHRoKClcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgICBuYW1lPVwidmFsdWVcIj48L2J1dHRvbi1zZWxlY3Rvcj5cclxuXHJcbiAgICB9XHJcbiAgICB9IEBlbHNlIHtcclxuICAgIDxtYXQtY2hpcC1saXN0Ym94IFttdWx0aXBsZV09XCJtdWx0aXBsZSgpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIG5hbWU9XCJ2YWx1ZVwiPlxyXG4gICAgICAgIEBmb3IgKG8gb2Ygb3B0aW9ucygpOyB0cmFjayBvLnZhbHVlKSB7XHJcbiAgICAgICAgPG1hdC1jaGlwLW9wdGlvbiBbbWF0QmFkZ2VdPVwiby5iYWdcIiBbdmFsdWVdPVwib1wiPnt7by5zaG9ydE5hbWUgPz8gby5uYW1lfX08L21hdC1jaGlwLW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICA8L21hdC1jaGlwLWxpc3Rib3g+XHJcbiAgICB9XHJcbiAgICB9XHJcbjwvZGl2PiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvY2hpcHMtc2VsZWN0b3IvY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uL3VpL2NvbXBvbmVudHMvY2hpcHMtc2VsZWN0b3IvY2hpcHMtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6TyxPQUFPLEVBQXdCLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxF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QUFPO3NCQUFoQixNQUFNO2dCQTJESCxRQUFRO3NCQURYLEtBQUs7Z0JBV0YsUUFBUTtzQkFEWCxLQUFLO2dCQWdCRixXQUFXO3NCQURkLEtBQUs7Z0JBYVMsRUFBRTtzQkFBaEIsV0FBVztnQkFFUixnQkFBZ0I7c0JBRG5CLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUlTLFdBQVc7c0JBQWhELFdBQVc7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgTmdDbGFzcywgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFJlbmRlcmVyMiwgU2VsZiwgU2lnbmFsLCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wsIE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IE5hbWVWYWx1ZUl0ZW0sIFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUsIEZsZXhNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJ1dHRvblNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uLXNlbGVjdG9yL2J1dHRvbi1zZWxlY3Rvci5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2hpcHMtc2VsZWN0b3InLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nU3R5bGUsIE5nQ2xhc3MsIEZsZXhNb2R1bGUsIEV4dGVuZGVkTW9kdWxlLCBGb3Jtc01vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRDaGlwc01vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRCYWRnZU1vZHVsZSxcclxuICAgIEJ1dHRvblNlbGVjdG9yQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBDaGlwc1NlbGVjdG9yQ29tcG9uZW50IH1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGlwcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NoaXBzLXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIENoaXBzU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmFtZVZhbHVlSXRlbTxhbnk+W10+KCk7XHJcblxyXG4gIHByb3RlY3RlZCBjb250YWluZXJJZDogc3RyaW5nID0gYGNoaXBzLXNlbGVjdG9yLWNvbnRhaW5lci0tJHtTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKX1gO1xyXG4gIHByb3RlY3RlZCBjb250YWluZXJXaWR0aCA9IHNpZ25hbCgtNik7XHJcbiAgcHJpdmF0ZSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgZm9jdXNlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICBvcHRpb25zID0gaW5wdXQ8TmFtZVZhbHVlSXRlbTxhbnk+W10+KCk7XHJcbiAgY29sbGFwc2VkV2lkdGggPSBpbnB1dDxudW1iZXI+KC0xKTtcclxuICBjb2xsYXBzZUF0ID0gaW5wdXQ8bnVtYmVyPigtMSk7XHJcbiAgY29sbGFwc2VBdENvbnRhaW5lciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBjb2xsYXBzZURpc3BsYXlNb2RlID0gaW5wdXQ8J2Ryb3Bkb3duJyB8ICdidXR0b24nPignZHJvcGRvd24nKTtcclxuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcclxuICBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBtb2RlID0gaW5wdXQ8J2NvbGxhcHNlZCcgfCAnZGluYW15Yyc+KCdkaW5hbXljJyk7XHJcbiAgY29sbGFwc2VkOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBjdyA9IHRoaXMuY29udGFpbmVyV2lkdGgoKTtcclxuICAgIGNvbnN0IG13ID0gdGhpcy5jb2xsYXBzZUF0KCk7XHJcbiAgICByZXR1cm4gdGhpcy5tb2RlKCkgPT09ICdjb2xsYXBzZWQnIHx8IChtdyA9PT0gLTEgfHwgKGN3ID4gMCAmJiBtdyA+IDAgJiYgY3cgPCBtdykpO1xyXG4gIH0pXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IE5hbWVWYWx1ZUl0ZW08YW55PltdIHwgYW55IHwgbnVsbCA9IFtdXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBOYW1lVmFsdWVJdGVtPGFueT5bXSB8IGFueSB8IG51bGwpIHtcclxuICAgIGxldCB2MSA9IDA7XHJcbiAgICBsZXQgdjIgPSAwO1xyXG4gICAgaWYgKHRoaXMuX3ZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuX3ZhbHVlLmZvckVhY2goKG46IE5hbWVWYWx1ZUl0ZW08YW55PikgPT4gdjEgKz0gbi52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmFsdWUgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIHYyID0gdmFsdWUudmFsdWU7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gW3ZhbHVlXVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgobjogTmFtZVZhbHVlSXRlbTxhbnk+KSA9PiB2MiArPSBuLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gICAgaWYgKHYyICE9PSB2MSkge1xyXG4gICAgICB0aGlzLmNoYW5nZWQuZW1pdCh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLl92YWx1ZSB8fCB0aGlzLl92YWx1ZT8ubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuICBnZXQgZXJyb3JTdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5lcnJvcnMgIT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCkge1xyXG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmRpc2FibGVkICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sLmRpc2FibGVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZTogKF86IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHsgfTtcclxuICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7IH07XHJcblxyXG4gIEBIb3N0QmluZGluZygpIGlkID0gYGNoaXBzLXNlbGVjdG9yLS0ke1N5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpfWA7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpXHJcbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xyXG4gIH1cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRCeScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuICApIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBSZWFjdCB0byB3aW5kb3cgc2l6ZSBjaGFuZ2VcclxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSksIGRlYm91bmNlVGltZSgyNTApKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZUF0KCkgPiAwKSB7XHJcbiAgICAgICAgICAvLyBDbG9zZSB0aGUgb3B0aW9ucyBtZW51IGlmIG9wZW5cclxuICAgICAgICAgIHRoaXMudXBkYXRlQ29udGFpbmVyV2lkdGgoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29udGFpbmVyV2lkdGgoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH0sIDI1MCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgY29udGFpbmVyIHdpZHRoXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb250YWluZXJXaWR0aCgpIHtcclxuICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbnRhaW5lcklkKTtcclxuICAgIGlmIChlbGVtICYmIGVsZW0uY2xpZW50V2lkdGggPiAwKSB7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyV2lkdGguc2V0KFxyXG4gICAgICAgIHRoaXMuY29sbGFwc2VBdENvbnRhaW5lcigpXHJcbiAgICAgICAgICA/IChlbGVtPy5jbGllbnRXaWR0aCA/PyAtMSlcclxuICAgICAgICAgIDogKHdpbmRvdy5pbm5lcldpZHRoID8/IC0xKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lcldpZHRoKCk7XHJcbiAgICAgIH0sIDEwMClcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnZhbHVlICE9PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKTtcclxuICAgIGlmIChlbGVtKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbSwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvbnRhaW5lckNsaWNrKCkge1xyXG4gICAgaWYgKCF0aGlzLmZvY3VzZWQpIHtcclxuICAgICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgICBsZXQgZWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpO1xyXG4gICAgICBpZiAoZWxlbSkge1xyXG4gICAgICAgIGVsZW0uZm9jdXMoKTtcclxuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgc2VsZWN0aW9uXHJcbiAgICogQHBhcmFtIGUgOiB0aGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICBjbGVhcihlOiBFdmVudCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IFtdO1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBzaW5nbGUgZWxlbWVudFxyXG4gICAqIEBwYXJhbSBpdGVtIDogdGhlIGl0ZW0gdG8gc2VsZWN0XHJcbiAgICovXHJcbiAgc2VsZWN0KGl0ZW06IE5hbWVWYWx1ZUl0ZW08YW55PiB8IG51bGwpIHtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBbaXRlbV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IFtpZF09XCJjb250YWluZXJJZFwiIGNsYXNzPVwiY2hpcHMtY29udGFpbmVyXCI+XHJcbiAgICBAaWYoY29udGFpbmVyV2lkdGgoKSA+IDApIHtcclxuICAgIEBpZihjb2xsYXBzZWQoKSkge1xyXG4gICAgQGlmKGNvbGxhcHNlRGlzcGxheU1vZGUoKSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgPG1hdC1mb3JtLWZpZWxkIFtuZ1N0eWxlXT1cInsnbWluLXdpZHRoJzogY29sbGFwc2VkV2lkdGgoKSA+IDAgPyBjb2xsYXBzZWRXaWR0aCgpKycucHgnIDogJzEwMCUnfVwiXHJcbiAgICAgICAgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxyXG4gICAgICAgIEBpZihsYWJlbCgpKSB7XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e2xhYmVsKCl9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInZhbHVlXCIgbmFtZT1cInZhbHVlXCIgW211bHRpcGxlXT1cIm11bHRpcGxlKClcIj5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QtdHJpZ2dlcj5cclxuICAgICAgICAgICAgICAgIEBpZiAodmFsdWUgJiYgKHZhbHVlLmxlbmd0aCB8fCAwKSA+IDApIHtcclxuICAgICAgICAgICAgICAgIHt7dmFsdWVbMF0uc2hvcnROYW1lID8/IHZhbHVlWzBdLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgQGlmICh2YWx1ZSAmJiAodmFsdWUubGVuZ3RoIHx8IDApID4gMSkge1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xsYXBzZWQtYWRkaXRpb25hbC1zZWxlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAoK3t7KHZhbHVlLmxlbmd0aCB8fCAwKSAtIDF9fSB7e3ZhbHVlLmxlbmd0aCA9PT0gMiA/ICdhbHRybycgOiAnYWx0cmknfX0pXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxyXG4gICAgICAgICAgICBAZm9yIChvIG9mIG9wdGlvbnMoKTsgdHJhY2sgby52YWx1ZSkge1xyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib1wiPlxyXG4gICAgICAgICAgICAgICAge3tvLm5hbWV9fSBcclxuICAgICAgICAgICAgICAgIEBpZihvLmJhZykge1xyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOyAoe3tvLmJhZ319KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIEBpZiAodmFsdWUgJiYgKHZhbHVlLmxlbmd0aCB8fCAwKSA+IDApIHtcclxuICAgICAgICA8YnV0dG9uIG1hdFN1ZmZpeCB0YWJpbmRleD1cIi0xXCIgbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJQdWxpc2NpXCIgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICB9XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgfSBAZWxzZSB7XHJcblxyXG4gICAgPGJ1dHRvbi1zZWxlY3RvciBbbGFiZWxdPVwibGFiZWwoKVwiIFtvcHRpb25zXT1cIm9wdGlvbnMoKVwiIFt3aWR0aF09XCJjb2xsYXBzZWRXaWR0aCgpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgbmFtZT1cInZhbHVlXCI+PC9idXR0b24tc2VsZWN0b3I+XHJcblxyXG4gICAgfVxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8bWF0LWNoaXAtbGlzdGJveCBbbXVsdGlwbGVdPVwibXVsdGlwbGUoKVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiBuYW1lPVwidmFsdWVcIj5cclxuICAgICAgICBAZm9yIChvIG9mIG9wdGlvbnMoKTsgdHJhY2sgby52YWx1ZSkge1xyXG4gICAgICAgIDxtYXQtY2hpcC1vcHRpb24gW21hdEJhZGdlXT1cIm8uYmFnXCIgW3ZhbHVlXT1cIm9cIj57e28uc2hvcnROYW1lID8/IG8ubmFtZX19PC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgICAgICAgfVxyXG4gICAgPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4gICAgfVxyXG4gICAgfVxyXG48L2Rpdj4iXX0=
|