barsa-novin-ray-core 1.0.392 → 1.0.394
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/esm2020/lib/abstract-classes/layout-item-base.mjs +4 -1
- package/esm2020/lib/constants.mjs +2 -2
- package/esm2020/lib/services/form-panel.service.mjs +4 -1
- package/fesm2015/barsa-novin-ray-core.mjs +13 -7
- package/fesm2015/barsa-novin-ray-core.mjs.map +1 -1
- package/fesm2020/barsa-novin-ray-core.mjs +7 -1
- package/fesm2020/barsa-novin-ray-core.mjs.map +1 -1
- package/lib/abstract-classes/layout-item-base.d.ts +1 -0
- package/lib/services/form-panel.service.d.ts +2 -0
- package/package.json +1 -1
|
@@ -12,6 +12,9 @@ export class LayoutItemBaseComponent extends BaseComponent {
|
|
|
12
12
|
this.formPanelService.isSearchPanel$.subscribe((isSearchPanel) => {
|
|
13
13
|
this.isSearchPanel = isSearchPanel;
|
|
14
14
|
});
|
|
15
|
+
this.formPanelService.isSearcPanelInSideContent$.subscribe((isSearcPanelInSideContent) => {
|
|
16
|
+
this.isSearcPanelInSideContent = isSearcPanelInSideContent;
|
|
17
|
+
});
|
|
15
18
|
this.formPanelService.searchPanelIsObject$.subscribe((searchPanelIsObject) => {
|
|
16
19
|
this.searchPanelIsObject = searchPanelIsObject;
|
|
17
20
|
});
|
|
@@ -33,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
33
36
|
}], rtl: [{
|
|
34
37
|
type: Input
|
|
35
38
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWl0ZW0tYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLW5vdmluLXJheS1jb3JlL3NyYy9saWIvYWJzdHJhY3QtY2xhc3Nlcy9sYXlvdXQtaXRlbS1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBUzNDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxhQUFhO0lBUXRELFlBQXNCLGdCQUFrQyxFQUFZLElBQXVCO1FBQ3ZGLEtBQUssRUFBRSxDQUFDO1FBRFUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFZLFNBQUksR0FBSixJQUFJLENBQW1CO1FBR3ZGLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMseUJBQXlCLEVBQUUsRUFBRTtZQUNyRixJQUFJLENBQUMseUJBQXlCLEdBQUcseUJBQXlCLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUN6RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztvSEFyQlEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsa0pBSHRCLEVBQUU7MkZBR0gsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDt1SUFFWSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0VW5pcXVlSWQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybVBhbmVsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm0tcGFuZWwuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXRTZXR0aW5nIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JucmMtbGF5b3V0LWl0ZW0tYmFzZScsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExheW91dEl0ZW1CYXNlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgY29uZmlnOiBMYXlvdXRTZXR0aW5nO1xuICAgIEBJbnB1dCgpIGlzUGFuZWw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcnRsOiBib29sZWFuO1xuICAgIGlzU2VhcmNoUGFuZWw6IGJvb2xlYW47XG4gICAgaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudDogYm9vbGVhbjtcbiAgICBzZWFyY2hQYW5lbElzT2JqZWN0OiBib29sZWFuO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGZvcm1QYW5lbFNlcnZpY2U6IEZvcm1QYW5lbFNlcnZpY2UsIHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuaWQgPSBnZXRVbmlxdWVJZCg0KTtcbiAgICAgICAgdGhpcy5mb3JtUGFuZWxTZXJ2aWNlLmlzU2VhcmNoUGFuZWwkLnN1YnNjcmliZSgoaXNTZWFyY2hQYW5lbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1NlYXJjaFBhbmVsID0gaXNTZWFyY2hQYW5lbDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybVBhbmVsU2VydmljZS5pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50JC5zdWJzY3JpYmUoKGlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudCA9IGlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQ7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm1QYW5lbFNlcnZpY2Uuc2VhcmNoUGFuZWxJc09iamVjdCQuc3Vic2NyaWJlKChzZWFyY2hQYW5lbElzT2JqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFBhbmVsSXNPYmplY3QgPSBzZWFyY2hQYW5lbElzT2JqZWN0O1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -395,7 +395,7 @@ export function FindLayoutSettingFromLayout94(layout94, layoutTitle) {
|
|
|
395
395
|
if (!layoutTitle) {
|
|
396
396
|
return null;
|
|
397
397
|
}
|
|
398
|
-
if (layout94.Title === layoutTitle) {
|
|
398
|
+
if (layout94.Caption === layoutTitle || layout94.Title === layoutTitle) {
|
|
399
399
|
return layout94;
|
|
400
400
|
}
|
|
401
401
|
let tempLayout94 = null;
|
|
@@ -714,4 +714,4 @@ export const PdfMimeType = '.pdf';
|
|
|
714
714
|
export const AllFilesMimeType = '.txt,.ppt,.pdf,.*';
|
|
715
715
|
export const VideoMimeType = 'video/*';
|
|
716
716
|
export const AudioMimeType = 'audio/*';
|
|
717
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFjeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFlLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFHbkMsTUFBTSxDQUFOLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM1Qiw2RUFBVyxDQUFBO0lBQ1gscUZBQWUsQ0FBQTtJQUNmLG1GQUFjLENBQUE7SUFDZCxtRkFBYyxDQUFBO0FBQ2xCLENBQUMsRUFMVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBSy9CO0FBQ0QsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxTQUFzQixFQUN0QixPQUFnQixFQUNoQixnQkFBNEIsRUFDNUIsMEJBQW1DLEVBQ25DLElBQTBCLEVBRTFCLFVBQWlDLEVBQ2pDLE9BQTJCO0lBRTNCLFFBQVEsSUFBSSxFQUFFO1FBQ1YsS0FBSyxvQkFBb0IsQ0FBQyxXQUFXO1lBQ2pDLE9BQU8sb0JBQW9CLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RyxLQUFLLG9CQUFvQixDQUFDLGNBQWM7WUFDcEMsT0FBTyxrQ0FBa0MsQ0FDckMsU0FBUyxFQUNULE9BQU8sRUFDUCwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLE9BQU8sQ0FDVixDQUFDO1FBQ04sS0FBSyxvQkFBb0IsQ0FBQyxjQUFjO1lBQ3BDLE1BQU0sZ0JBQWdC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LElBQUksQ0FBQztJQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDN0MsT0FBTyxVQUFVLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFDRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsZUFBZTtJQUM3QyxJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUMxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDaEMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDOUU7SUFDRCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUM7QUFDRCxNQUFNLFVBQVUsT0FBTyxDQUFDLElBQVk7SUFDaEMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUNELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBSTtJQUN4QixJQUFJLENBQUMsSUFBSSxFQUFF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VSxjQUFjLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUNyRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN0QztTQUFNO1FBQ0gsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ25EO0FBQ0wsQ0FBQztBQVVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FDckIsdUdBQXVHLENBQUM7QUFDNUcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLHdDQUF3QyxDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IF9pc051bWJlclZhbHVlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEJhcnNhQXBpIH0gZnJvbSAnLi9hYnN0cmFjdC1jbGFzc2VzL2JhcnNhLWFwaSc7XG5pbXBvcnQge1xuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBDb2xTZXR0aW5nLFxuICAgIENvbW1hbmRDb250cm9sSW5mb01vZGVsLFxuICAgIEZvcm1TZXR0aW5nLFxuICAgIEdlbmVyYWxDb250cm9sSW5mb01vZGVsLFxuICAgIEdyaWRTZXR0aW5nLFxuICAgIExheW91dFNldHRpbmcsXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxuICAgIFNvcnRTZXR0aW5nXG59IGZyb20gJy4vYWJzdHJhY3QtY2xhc3Nlcy9tb2RlbHMnO1xuaW1wb3J0IHsgRGF0ZUhpanJpU2VydmljZSwgRGF0ZU1pbGFkaVNlcnZpY2UsIERhdGVTZXJ2aWNlLCBEYXRlU2hhbXNpU2VydmljZSB9IGZyb20gJy4vZGF0ZS1zZXJ2aWNlcyc7XG5pbXBvcnQgKiBhcyBEZXZpY2UgZnJvbSAnLi9kZXZpY2UnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbG9nLnNlcnZpY2UnO1xuXG5leHBvcnQgZW51bSBUYWJsZUhlYWRlcldpZHRoTW9kZSB7XG4gICAgRml0VG9Db2x1bW4sXG4gICAgRml0VG9Sb3dDb250ZW50LFxuICAgIEZpdFRvQ29udGFpbmVyLFxuICAgIEZyZWVDb2x1bW5TaXplXG59XG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlV2lkdGhPZkxpc3RDb2x1bW4oXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBjYW5WaWV3OiBib29sZWFuLFxuICAgIGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW10sXG4gICAgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3c6IGJvb2xlYW4sXG4gICAgbW9kZTogVGFibGVIZWFkZXJXaWR0aE1vZGUsXG5cbiAgICBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sXG4gICAgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdXG4pOiB7IGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTsgY29udGV4dE1lbnVXaWR0aDogbnVtYmVyIH0ge1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29sdW1uOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZUNvbHVtbldpZHRoKGNvbnRhaW5lciwgY29sdW1ucywgbW9EYXRhTGlzdCwgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3csIGNvbnRleHRNZW51SXRlbXMpO1xuICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZUNvbHVtbldpZHRoRml0VG9Db250YWluZXIoXG4gICAgICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIGNhblZpZXcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3csXG4gICAgICAgICAgICAgICAgY29udGV4dE1lbnVJdGVtcyxcbiAgICAgICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgICApO1xuICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxuICAgICAgICAgICAgY29uc3QgY29udGV4dE1lbnVXaWR0aCA9IF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zLCBkaXNhYmxlQ29udGV4dE1lbnVPdmVyZmxvdyk7XG4gICAgICAgICAgICBjb25zdCBuZXdDb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHsgLi4uY29sdW1uLCAkV2lkdGgyOiBjb2x1bW4uJFdpZHRoIH0pKTtcbiAgICAgICAgICAgIHJldHVybiB7IGNvbHVtbnM6IG5ld0NvbHVtbnMsIGNvbnRleHRNZW51V2lkdGg6IGNvbnRleHRNZW51V2lkdGggfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICBjYW5WaWV3LFxuICAgICAgICAgICAgICAgIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93LFxuICAgICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgICAgKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQ29sdW1uV2lkdGgoXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10sXG4gICAgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93OiBib29sZWFuLFxuICAgIGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW11cbik6IHsgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdOyBjb250ZXh0TWVudVdpZHRoOiBudW1iZXIgfSB7XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgY29sQ2FwdGlvbldpZHRoID0gbWVhc3VyZVRleHQoY29sdW1uLkFsaWFzKSArIDE2ICsgMTA7XG4gICAgICAgIGNvbHVtbi4kV2lkdGgyID0gYCR7TWF0aC5jZWlsKGNvbENhcHRpb25XaWR0aCl9cHhgO1xuICAgICAgICAvLyBpZiAobW9kZSA9PT0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db2x1bW4pIHtcbiAgICAgICAgLy8gfSBlbHNlIGlmIChtYXhXaWR0aCA8IGNvbENhcHRpb25XaWR0aCkge1xuICAgICAgICAvLyAgICAgY29sdW1uLiRXaWR0aDIgPSBgJHtNYXRoLmNlaWwoY29sQ2FwdGlvbldpZHRoKX1weGA7XG4gICAgICAgIC8vIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb250ZXh0TWVudVdpZHRoID0gX2NhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXMsIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93KTtcbiAgICByZXR1cm4geyBjb2x1bW5zOiBbLi4uY29sdW1uc10sIGNvbnRleHRNZW51V2lkdGggfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2x1bW5XaWR0aEJ5TWF4TW9Db250ZW50V2lkdGgobW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pIHtcbiAgICBjb25zdCB3aWR0aCA9IGNhbGN1bGF0ZU1vRGF0YUxpc3RDb250ZW50V2lkdGhCeUNvbHVtbk5hbWUobW9EYXRhTGlzdCwgY29sdW1uKTtcbiAgICBjb2x1bW4uJFdpZHRoMiA9IGAke01hdGguY2VpbCh3aWR0aCl9cHhgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTW9EYXRhTGlzdENvbnRlbnRXaWR0aEJ5Q29sdW1uTmFtZShcbiAgICBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sXG4gICAgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uXG4pOiBudW1iZXIge1xuICAgIGxldCBtYXhXaWR0aCA9IDA7XG4gICAgbW9EYXRhTGlzdC5mb3JFYWNoKChjLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjYXB0aW9uID0gZ2V0Q29sdW1uVmFsdWVPZk1vRGF0YUxpc3QoY29sdW1uLk5hbWUsIGMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGNhcHRpb25XaWR0aCA9IG1lYXN1cmVUZXh0KGNhcHRpb24pICsgMTY7XG4gICAgICAgIGlmIChtYXhXaWR0aCA8IGNhcHRpb25XaWR0aCkge1xuICAgICAgICAgICAgbWF4V2lkdGggPSBjYXB0aW9uV2lkdGg7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKG1heFdpZHRoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgY2FuVmlldzogYm9vbGVhbixcbiAgICBkaXNhYmxlQ29udGV4dE1lbnVPdmVyZmxvdzogYm9vbGVhbixcbiAgICBjb250ZXh0TWVudUl0ZW1zOiBNZW51SXRlbVtdLFxuICAgIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXVxuKTogeyBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107IGNvbnRleHRNZW51V2lkdGg6IG51bWJlciB9IHtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICBsZXQgYWxsQ29sV2lkdGggPSAwO1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4ge1xuICAgICAgICBjb2wuV2lkdGggPSBjb2wuV2lkdGggJiYgY29sLldpZHRoID4gMCA/IGNvbC5XaWR0aCA6IG1lYXN1cmVUZXh0KGNvbC5BbGlhcykgKyAxNjtcbiAgICAgICAgYWxsQ29sV2lkdGggKz0gY29sLldpZHRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNhblZpZXdCdXR0b25XaWR0aCA9IGNhblZpZXcgPyA0MCA6IDA7XG4gICAgY29uc3Qgc2VsZWN0aW9uV2lkdGggPSAzMDtcblxuICAgIGNvbnN0IGNvbnRleHRNZW51V2lkdGggPSBfY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcywgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3cpO1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoQWxsQ29sdW1ucyA9IGNvbnRhaW5lcldpZHRoIC0gc2VsZWN0aW9uV2lkdGggLSBjYW5WaWV3QnV0dG9uV2lkdGggLSBjb250ZXh0TWVudVdpZHRoIC0gMTI7XG4gICAgLy8gYWxsQ29sV2lkdGggKz0gY29udGFpbmVyV2lkdGhBbGxDb2x1bW5zIC0gYWxsQ29sV2lkdGg7Ly8g2YXYrdin2LPYqNmHINii2K7YsduM2YYg2LPYqtmI2YYu2obZiNmGIHdpZHRoINmF2LTYrti124wg2YbYr9in2LHYr1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5jZWlsKChjb250YWluZXJXaWR0aEFsbENvbHVtbnMgKiBjb2wuV2lkdGgpIC8gYWxsQ29sV2lkdGgpO1xuICAgICAgICBjb2wuV2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgY29sLiRXaWR0aDIgPSBgJHtuZXdXaWR0aH1weGA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgY29sdW1uczogWy4uLmNvbHVtbnNdLCBjb250ZXh0TWVudVdpZHRoIH07XG59XG5leHBvcnQgZnVuY3Rpb24gX2NhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW10sIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBsZXQgY29udGV4dE1lbnVXaWR0aCA9IGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMSA/IDQwIDogMDtcbiAgICBjb25zdCBidG5QYWRkaW5nID0gMTQgKyAyICsgMTA7IC8vIHBhZGRpbmcgKyBib3JkZXIgKyBpZiB0ZXh0IGlzIG92ZXJmbG93ZWQgdGhlbiBhZGQgNSBwaXhlbC5zbyB3ZSBhbHdheXMgNSBweCB0byBpdC5cbiAgICBjb25zdCB0ZFBhZGRpbmcgPSAxNSArIDE7IC8vIHBhZGRpbmcgKyBib3JkZXJcbiAgICBjb25zdCBidXR0b25JY29uV2lkdGggPSAxNiArIDY7IC8vIHNpemUgKyBtYXJnaW5cbiAgICBpZiAoZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3cgfHwgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29udGV4dE1lbnVXaWR0aCA9IDA7XG4gICAgICAgIGNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29udGV4dE1lbnVXaWR0aCArPSBtZWFzdXJlVGV4dChjLnRleHQpICsgYnRuUGFkZGluZyArIHRkUGFkZGluZztcbiAgICAgICAgICAgIGNvbnRleHRNZW51V2lkdGggKz0gYy5pY29uID8gYnV0dG9uSWNvbldpZHRoIDogMDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjb250ZXh0TWVudVdpZHRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblZhbHVlT2ZNb0RhdGFMaXN0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBtbzogTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBDb2x1bW5zPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IE5hbWU6IHN0cmluZzsgQ2FwdGlvbjogc3RyaW5nIH1bXSxcbiAgICBjYXB0aW9uPzogYm9vbGVhblxuKTogYW55IHtcbiAgICBsZXQgZmllbGROYW1lID0gQ29sdW1ucyA/IENvbHVtbnMuZmluZCgoYykgPT4gYy5OYW1lID09PSBuYW1lIHx8IGMuQWxpYXMgPT09IG5hbWUpPy5OYW1lIDogbmFtZTtcbiAgICBpZiAoIWZpZWxkTmFtZSkge1xuICAgICAgICBmaWVsZE5hbWUgPSBuYW1lO1xuICAgIH1cbiAgICBsZXQgdmFsID0gZmllbGROYW1lID8gbW9bZmllbGROYW1lXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoY2FwdGlvbikge1xuICAgICAgICBsZXQgY2FwdGlvblZhbCA9IGZpZWxkTmFtZSA/IG1vW2ZpZWxkTmFtZV0/LiRDYXB0aW9uIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHlwZW9mIGNhcHRpb25WYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjYXB0aW9uVmFsID0gbW9bZmllbGROYW1lICsgJyRDYXB0aW9uJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjYXB0aW9uVmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY2FwdGlvblZhbCA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICB2YWwgPSBjYXB0aW9uVmFsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZBbHJlYWR5TG9hZGVkKHBhcmVudE1vZHVsZTogYW55LCBtb2R1bGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocGFyZW50TW9kdWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4gSW1wb3J0ICR7bW9kdWxlTmFtZX0gaW4gdGhlIEFwcE1vZHVsZSBvbmx5LmApO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBtZWFzdXJlVGV4dCh0ZXh0OiBzdHJpbmcsIGZvbnRTaXplPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBtZWFzdXJlVGV4dERvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWFzdXJlVGV4dCcpIGFzIEhUTUxDYW52YXNFbGVtZW50O1xuICAgIGlmICghbWVhc3VyZVRleHREb20pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBjb25zdCBjdHggPSBtZWFzdXJlVGV4dERvbS5nZXRDb250ZXh0KCcyZCcpIGFzIGFueTtcbiAgICBmb250U2l6ZSA9IGZvbnRTaXplID8gZm9udFNpemUgOiAnMC44ODVyZW0nO1xuICAgIGN0eC5mb250ID0gYG5vcm1hbCAke2ZvbnRTaXplfSBJUkFOWWVrYW5EaWdpdHNgO1xuICAgIHJldHVybiBjdHgubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2VucmF0ZUlubGluZU1vSWQoKSB7XG4gICAgcmV0dXJuIChCYXJzYUFwaS5pZEdlbmVyYXRvci0tKS50b1N0cmluZygpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGVudW1WYWx1ZVRvU3RyaW5nU2l6ZSh2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgIHJldHVybiAncyc7XG4gICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgcmV0dXJuICdtJztcbiAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICByZXR1cm4gJ2wnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVVsdkNvbW1hbmRIYW5kbGVyKGJ1dHRvbiwgb3B0aW9ucz8pOiB2b2lkIHtcbiAgICBpZiAoYnV0dG9uLkNvbW1hbmQgJiYgYnV0dG9uLkNvbW1hbmQuSGFuZGxlcikge1xuICAgICAgICBidXR0b24uQ29tbWFuZC5IYW5kbGVyKGJ1dHRvbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChidXR0b24uaGFuZGxlcikge1xuICAgICAgICBidXR0b24uaGFuZGxlci5iaW5kKGJ1dHRvbi5zY29wZSkoYnV0dG9uLCBvcHRpb25zKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcXVlSWQocGFydHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyaW5nQXJyOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHM7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgICBjb25zdCBTNCA9ICgoKDEgKyBNYXRoLnJhbmRvbSgpKSAqIDB4MTAwMDApIHwgMCkudG9TdHJpbmcoMTYpO1xuICAgICAgICBjb25zdCBTNF86IHN0cmluZyA9IFM0Lmxlbmd0aCA+IDAgPyBTNC5zdWJzdHJpbmcoMSkgOiAnJztcbiAgICAgICAgc3RyaW5nQXJyLnB1c2goUzRfKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ0Fyci5qb2luKCctJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlU2VydmljZShsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLCBjdWx0dXJlPyk6IERhdGVTZXJ2aWNlIHtcbiAgICBjb25zdCBkZWZhdWx0Q3VsdHVyZSA9IGN1bHR1cmUgPz8gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlO1xuICAgIHN3aXRjaCAoZGVmYXVsdEN1bHR1cmUpIHtcbiAgICAgICAgY2FzZSAnZmEtSVInOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlU2hhbXNpU2VydmljZShsb2dTZXJ2aWNlKTtcbiAgICAgICAgY2FzZSAnYXItQUUnOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlSGlqcmlTZXJ2aWNlKGxvZ1NlcnZpY2UpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlTWlsYWRpU2VydmljZShsb2dTZXJ2aWNlKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaXNGaXJlZm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VQYXRoKFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBtb0lkOiBzdHJpbmcgfCBudWxsLFxuICAgIGZpbGVJZDogc3RyaW5nLFxuICAgIGZpZWxkRGVmSWQ/OiBzdHJpbmcsXG4gICAgc2l6ZT86IG51bWJlcixcbiAgICBzaXplSD86IG51bWJlclxuKTogc3RyaW5nIHtcbiAgICBtb0lkID0gbW9JZCA9PSBudWxsID8gJycgOiBlbmNvZGVVUklDb21wb25lbnQobW9JZCk7XG4gICAgZmlsZUlkID0gZmlsZUlkID09IG51bGwgPyAnJyA6IGVuY29kZVVSSUNvbXBvbmVudChmaWxlSWQpO1xuICAgIGZpZWxkRGVmSWQgPSBmaWVsZERlZklkID09IG51bGwgPyAnJyA6IGVuY29kZVVSSUNvbXBvbmVudChmaWVsZERlZklkKTtcbiAgICBzaXplID0gc2l6ZSA9PSBudWxsID8gMTI4IDogc2l6ZTtcbiAgICBzaXplSCA9IHNpemVIID09IG51bGwgPyBzaXplIDogc2l6ZUg7XG4gICAgY29uc3QgdXJsID0gYC9JSC5hc2h4P3R5PSR7dHlwZX0mbW9JZD0ke21vSWR9JmlkPSR7ZmlsZUlkfSZmZElkPSR7ZmllbGREZWZJZH0mc2k9JHtzaXplfSZzaUg9JHtzaXplSH1gO1xuICAgIHJldHVybiB1cmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGZ1bmN0aW9uVG9DaGVjayk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmdW5jdGlvblRvQ2hlY2sgJiYge30udG9TdHJpbmcuY2FsbChmdW5jdGlvblRvQ2hlY2spID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIERldmljZVdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gMCA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlclZhbHVlKGZpZWxkVmFsdWUpOiBhbnkge1xuICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gZmllbGRWYWx1ZS5WYWx1ZTtcbiAgICBjb25zdCB2YWx1ZUNhcHRpb246IHN0cmluZyA9IGZpZWxkVmFsdWUuVmFsdWUkQ2FwdGlvbjtcbiAgICBsZXQgdmFsdWVPYmplY3RDYXB0aW9uID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICB2YWx1ZU9iamVjdENhcHRpb24gPSBmaWVsZFZhbHVlLlZhbHVlLiRDYXB0aW9uO1xuICAgIH1cbiAgICBpZiAodmFsdWVPYmplY3RDYXB0aW9uKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZU9iamVjdENhcHRpb247XG4gICAgfVxuICAgIGlmICh2YWx1ZUNhcHRpb24gJiYgIXZhbHVlQ2FwdGlvbi5zdGFydHNXaXRoKCd0bXAnKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVDYXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudEluVmlld3BvcnQyKGVsOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgdG9wID0gZWwub2Zmc2V0VG9wO1xuICAgIGxldCBsZWZ0ID0gZWwub2Zmc2V0TGVmdDtcbiAgICBjb25zdCB3aWR0aCA9IGVsLm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcblxuICAgIHdoaWxlIChlbC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gICAgICAgIHRvcCArPSBlbC5vZmZzZXRUb3A7XG4gICAgICAgIGxlZnQgKz0gZWwub2Zmc2V0TGVmdDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICB0b3AgPCB3aW5kb3cucGFnZVlPZmZzZXQgKyB3aW5kb3cuaW5uZXJIZWlnaHQgJiZcbiAgICAgICAgbGVmdCA8IHdpbmRvdy5wYWdlWE9mZnNldCArIHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgICAgIHRvcCArIGhlaWdodCA+IHdpbmRvdy5wYWdlWU9mZnNldCAmJlxuICAgICAgICBsZWZ0ICsgd2lkdGggPiB3aW5kb3cucGFnZVhPZmZzZXRcbiAgICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFByZXZlbnREZWZhdWxFdmVudChlKTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnRIZWlnaHQoZWxEb206IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBsZXQgcGFyZW50RG9tID0gZWxEb20ucGFyZW50RWxlbWVudDtcbiAgICBsZXQgcGFyZW50SGVpZ2h0ID0gcGFyZW50RG9tPy5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB3aGlsZSAocGFyZW50RG9tICE9IG51bGwgJiYgcGFyZW50SGVpZ2h0IDwgNDApIHtcbiAgICAgICAgcGFyZW50RG9tID0gcGFyZW50RG9tLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHBhcmVudEhlaWdodCA9IHBhcmVudERvbT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRIZWlnaHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wb25lbnREZWZpbmVkKFxuICAgIGNvbnRyb2xVaTogeyBvcmlnaW5hbFh0eXBlOiBzdHJpbmcgfSxcbiAgICBjdXN0b21VaVNldHRpbmc6IHsgTW9kdWxlOiBzdHJpbmc7IE5hbWU6IHN0cmluZzsgU2VsZWN0b3I6IHN0cmluZyB9XG4pOiB7XG4gICAgbW9kdWxlTmFtZTogc3RyaW5nO1xuICAgIG1vZHVsZVBhdGg6IHN0cmluZztcbiAgICBjb21wb25lbnROYW1lOiBzdHJpbmc7XG4gICAgc2VsZWN0b3I6IHN0cmluZztcbn0ge1xuICAgIGxldCBtb2R1bGVOYW1lID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5EZWZhdWx0VWlNb2R1bGU7XG4gICAgbGV0IG1vZHVsZUtlYmFiTmFtZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldEtlYmFiQ2FzZShtb2R1bGVOYW1lKTtcbiAgICBsZXQgY29tcG9uZW50TmFtZSA9IGNvbnRyb2xVaS5vcmlnaW5hbFh0eXBlLnJlcGxhY2UoJy4nLCAnJykucmVwbGFjZSgnXycsICcnKTtcbiAgICBsZXQgc2VsZWN0b3I6IHN0cmluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldEtlYmFiQ2FzZShjb21wb25lbnROYW1lKTtcbiAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnN1YnN0cmluZygxLCBzZWxlY3Rvci5sZW5ndGgpO1xuICAgIHNlbGVjdG9yID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdXN0b21VaVByZWZpeCArICctJyArIHNlbGVjdG9yO1xuICAgIGlmIChjdXN0b21VaVNldHRpbmcgJiYgY3VzdG9tVWlTZXR0aW5nLk1vZHVsZSkge1xuICAgICAgICBtb2R1bGVOYW1lID0gY3VzdG9tVWlTZXR0aW5nLk1vZHVsZTtcbiAgICAgICAgbW9kdWxlS2ViYWJOYW1lID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuR2V0S2ViYWJDYXNlKG1vZHVsZU5hbWUpO1xuICAgICAgICBjb21wb25lbnROYW1lID0gY3VzdG9tVWlTZXR0aW5nLk5hbWU7XG4gICAgICAgIHNlbGVjdG9yID0gY3VzdG9tVWlTZXR0aW5nLlNlbGVjdG9yO1xuICAgIH1cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gbW9kdWxlS2ViYWJOYW1lLnNsaWNlKDEsIG1vZHVsZUtlYmFiTmFtZS5sZW5ndGgpO1xuICAgIHJldHVybiB7IG1vZHVsZU5hbWUsIG1vZHVsZVBhdGgsIGNvbXBvbmVudE5hbWUsIHNlbGVjdG9yIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXZpY2VJc1Bob25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEZXZpY2UuaXNQaG9uZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERldmljZUlzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRGV2aWNlLmlzVGFibGV0KCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGV2aWNlSXNUYWJsZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIERldmljZS5pc1RhYmxldCgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERldmljZUlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ21vYmknKSA+IDAgfHwgZ2V0RGV2aWNlSXNQaG9uZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbFNpemVNb2RlKGVsOiBIVE1MRWxlbWVudCwgZGV2aWNlU2l6ZTogJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyA9ICdsJyk6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZSB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRldmljZVNpemU7XG4gICAgfVxuICAgIGlmIChkZXZpY2VTaXplID09PSAncycgfHwgY29udGFpbmVyV2lkdGggPCA2MDApIHtcbiAgICAgICAgZGV2aWNlU2l6ZSA9ICdzJztcbiAgICB9IGVsc2UgaWYgKGRldmljZVNpemUgPT09ICdtJyB8fCAoY29udGFpbmVyV2lkdGggPiA2MDAgJiYgY29udGFpbmVyV2lkdGggPCAxMjAwKSkge1xuICAgICAgICBkZXZpY2VTaXplID0gJ20nO1xuICAgIH1cbiAgICByZXR1cm4gZGV2aWNlU2l6ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKFxuICAgIGJ5dGVzLFxuICAgIGRlY2ltYWxzID0gMixcbiAgICBzaXplOiAnQnl0ZXMnIHwgJ0tCJyB8ICdNQicgfCAnR0InIHwgJ1RCJyB8ICdQQicgfCAnRUInIHwgJ1pCJyB8ICdZQidcbik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnMCBCeXRlcyc7XG4gICAgfVxuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3QgZG0gPSBkZWNpbWFscyA8IDAgPyAwIDogZGVjaW1hbHM7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgY29uc3QgaSA9IHNpemVzLmZpbmRJbmRleCgoYykgPT4gYyA9PT0gc2l6ZSk7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArICcgJyArIHNpemVzW2ldO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkRXh0ZW5zaW9uKHZhbGlkRXh0ZW5zaW9ucyk6IHN0cmluZyB7XG4gICAgbGV0IF92YWxpZEV4dGVuc2lvbnMgPSAnJztcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWxpZEV4dGVuc2lvbnMpKSB7XG4gICAgICAgIF92YWxpZEV4dGVuc2lvbnMgPSB2YWxpZEV4dGVuc2lvbnMubWFwKChjKSA9PiAnLicgKyBjLkV4dGVuc2lvbikuam9pbignLCcpO1xuICAgIH1cbiAgICByZXR1cm4gX3ZhbGlkRXh0ZW5zaW9ucztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJhcnNhQXBpLkNvbW1vbi5GaWxlLkZpbGVJY29uRGljdDEyOFt0eXBlXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ltYWdlKHR5cGUpOiBib29sZWFuIHtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBbJ2ltZycsICdwbmcnLCAnanBlZycsICdqcGcnLCAnZ2lmJywgJ2JtcCcsICd0aWZmJywgJ2ltYWdlJ10uaW5kZXhPZih0eXBlKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR2V0QWxsQ29sdW1uc1NvcnRlZChjb250ZXh0KTogQXJyYXk8UmVwb3J0Vmlld0NvbHVtbj4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5WaWV3LkNvbHVtbnMnLCBbXSkuZmlsdGVyKFxuICAgICAgICAoYykgPT4gYy5OYW1lICE9PSAnSWQnICYmIGMuTmFtZSAhPT0gJyRTdHlsZUluZGV4JyAmJiAhYy5IaWRkZW5cbiAgICApO1xuXG4gICAgY29uc3QgY29sTGlzdDogQ29sU2V0dGluZ1tdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgICdTZXR0aW5nLlZpZXcuR3JpZFNldHRpbmcuQ29sU2V0dGluZ0xpc3QnLFxuICAgICAgICBbXVxuICAgICk7XG4gICAgY29uc3QgY29sdW1ucyA9IG5ldyBBcnJheTxSZXBvcnRWaWV3Q29sdW1uPigpO1xuICAgIGNvbExpc3QuZm9yRWFjaCgoY29sUykgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5PZkNvbExpc3QgPSBhbGxDb2x1bW5zLmZpbmQoKGMpID0+IGMuTmFtZSA9PT0gY29sUy5OYW1lKTtcbiAgICAgICAgaWYgKGNvbHVtbk9mQ29sTGlzdCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHsgLi4uY29sdW1uT2ZDb2xMaXN0LCBIaWRkZW46IGNvbFMuSXNIaWRkZW4sIFdpZHRoOiBjb2xTLldpZHRoIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgYWxsQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbFNldHRpbmcgPSBjb2xMaXN0LmZpbmQoKGMpID0+IGMuTmFtZSA9PT0gY29sdW1uLk5hbWUpO1xuICAgICAgICBpZiAoIWNvbFNldHRpbmcpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCB7IC4uLmNvbHVtbiwgSGlkZGVuOiBjb2xMaXN0Lmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb2x1bW5zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEdldFZpc2libGVWYWx1ZShvYmplY3QsIGZpZWxkKTogc3RyaW5nIHtcbiAgICBsZXQgb3V0cHV0VmFsdWU7XG4gICAgaWYgKG9iamVjdFtmaWVsZF0/LiRDYXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3V0cHV0VmFsdWUgPSBvYmplY3RbZmllbGRdLiRDYXB0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFZhbHVlID0gb2JqZWN0W2ZpZWxkICsgJyRDYXB0aW9uJ10gIT09IHVuZGVmaW5lZCA/IG9iamVjdFtmaWVsZCArICckQ2FwdGlvbiddIDogb2JqZWN0W2ZpZWxkXTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dFZhbHVlO1xufVxuZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XG4gICAgJEdyb3VwOiBhbnk7XG4gICAgJExldmVsOiBudW1iZXI7XG4gICAgJENvdW50OiBudW1iZXI7XG4gICAgJEV4cGFuZGVkOiBib29sZWFuO1xuICAgICRQYXJlbnQ6IGFueTtcbiAgICAkQ2hpbGRyZW46IGFueVtdO1xuICAgICRWaXNpYmlsaXR5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR3JvdXBCeShjb2xsZWN0aW9uOiBhbnlbXSwgc29ydFNldHRpbmdzOiBTb3J0U2V0dGluZ1tdKTogeyBncm91cGVkOiBHcm91cDsgZ3JvdXBzOiBhbnlbXSB9IHtcbiAgICBjb25zdCBncm91cGVkOiBhbnkgPSB7fTtcblxuICAgIGNvbnN0IGdyb3VwcyA9IHNvcnRTZXR0aW5ncy5tYXAoKGMpID0+IGMuTmFtZSk7XG4gICAgY29uc3QgZ2V0VGl0bGUgPSAobW8sIGZpZWxkTmFtZSk6IHN0cmluZyA9PiBHZXRWaXNpYmxlVmFsdWUobW8sIGZpZWxkTmFtZSk7XG4gICAgY29sbGVjdGlvbi5mb3JFYWNoKChhKSA9PiB7XG4gICAgICAgIGdyb3Vwc1xuICAgICAgICAgICAgLnJlZHVjZSgobywgZywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwVGl0bGUgPSBnZXRUaXRsZShhLCBnKTtcbiAgICAgICAgICAgICAgICBvW2dyb3VwVGl0bGVdID0gb1tncm91cFRpdGxlXSB8fCAoaSArIDEgPT09IGdyb3Vwcy5sZW5ndGggPyBbXSA6IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvW2dyb3VwVGl0bGVdKSkge1xuICAgICAgICAgICAgICAgICAgICBhLiRMZXZlbCA9IGdyb3Vwcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGdldFRpdGxlKGEsIGdyb3Vwc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBncm91cGVkW3RpdGxlXTtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LiRDb3VudCA9IChwYXJlbnQuJENvdW50ID8/IDApICsgMTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPCBncm91cHMubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGdldFRpdGxlKGEsIGdyb3Vwc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRbdGl0bGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LiRDb3VudCA9IG9bZ3JvdXBUaXRsZV0ubGVuZ3RoICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEyID0gRmluZEdyb3VwKGdyb3VwVGl0bGUsIGEpO1xuICAgICAgICAgICAgICAgICAgICBvW2dyb3VwVGl0bGVdLiRFeHBhbmRlZCA9IGEyPy4kRXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgICAgIG9bZ3JvdXBUaXRsZV0uJFZpc2liaWxpdHkgPSBhMj8uJFZpc2liaWxpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvW2dyb3VwVGl0bGVdO1xuICAgICAgICAgICAgfSwgZ3JvdXBlZClcbiAgICAgICAgICAgIC5wdXNoKGEpO1xuICAgIH0pO1xuICAgIHJldHVybiB7IGdyb3VwZWQsIGdyb3VwcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRmluZEdyb3VwKGdyb3VwVGl0bGU6IHN0cmluZywgYTogYW55KTogYW55IHtcbiAgICBpZiAoYS4kR3JvdXAgPT09IGdyb3VwVGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIGlmIChhLiRQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIEZpbmRHcm91cChncm91cFRpdGxlLCBhLiRQYXJlbnQpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBGaWxsQWxsTGF5b3V0Q29udHJvbHMoaXRlbTogTGF5b3V0U2V0dGluZywgbGF5b3V0Q29udHJvbHM6IExheW91dFNldHRpbmdbXSk6IHZvaWQge1xuICAgIGlmIChpdGVtLnh0eXBlID09PSAnTHkuTGF5b3V0Q29udHJvbCcpIHtcbiAgICAgICAgbGF5b3V0Q29udHJvbHMucHVzaChpdGVtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWl0ZW0uaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGl0ZW0uaXRlbXMuZm9yRWFjaCgoYykgPT4gRmlsbEFsbExheW91dENvbnRyb2xzKGMsIGxheW91dENvbnRyb2xzKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gRmluZFRvb2xiYXJJdGVtKHRvb2xiYXJJdGVtczogTWVudUl0ZW1bXSwgdmFsdWU6IHN0cmluZywgcHJvcDogc3RyaW5nID0gJ3RleHQnKTogTWVudUl0ZW0gfCBudWxsIHtcbiAgICBpZiAoIXRvb2xiYXJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBmaW5kSW5BcnJheSA9ICh0b29sYmFySXRlbXM6IE1lbnVJdGVtW10sIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGl0ZW06IE1lbnVJdGVtIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIHRvb2xiYXJJdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGMgPT09ICdvYmplY3QnICYmICFpdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNbcHJvcF0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBjO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjLm1lbnU/Lml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGZpbmRJbkFycmF5KGMubWVudS5pdGVtcywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH07XG4gICAgcmV0dXJuIGZpbmRJbkFycmF5KHRvb2xiYXJJdGVtcywgdmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEZpbmRMYXlvdXRTZXR0aW5nRnJvbUxheW91dDk0KGxheW91dDk0OiBMYXlvdXRTZXR0aW5nLCBsYXlvdXRUaXRsZTogc3RyaW5nKTogTGF5b3V0U2V0dGluZyB8IG51bGwge1xuICAgIGlmICghbGF5b3V0VGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChsYXlvdXQ5NC5UaXRsZSA9PT0gbGF5b3V0VGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGxheW91dDk0O1xuICAgIH1cbiAgICBsZXQgdGVtcExheW91dDk0OiBMYXlvdXRTZXR0aW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGxheW91dDk0Lml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXlvdXQ5NC5pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCF0ZW1wTGF5b3V0OTQpIHtcbiAgICAgICAgICAgICAgICB0ZW1wTGF5b3V0OTQgPSBGaW5kTGF5b3V0U2V0dGluZ0Zyb21MYXlvdXQ5NChsYXlvdXQ5NC5pdGVtc1tpXSwgbGF5b3V0VGl0bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZW1wTGF5b3V0OTQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0R3JpZFNldHRpbmdzKGNvbnRleHQpOiBHcmlkU2V0dGluZyB7XG4gICAgY29uc3QgZ3JpZFNldHRpbmcgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5WaWV3LkdyaWRTZXR0aW5nJywgbnVsbCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgQ29sU2V0dGluZ0xpc3Q6IGdyaWRTZXR0aW5nPy5Db2xTZXR0aW5nTGlzdCA/PyBudWxsLFxuICAgICAgICBTb3J0U2V0dGluZ0xpc3Q6IGdyaWRTZXR0aW5nPy5Tb3J0U2V0dGluZ0xpc3QgPz8gW10sXG4gICAgICAgIEF1dG9TaXplQ29sdW1uczogZ3JpZFNldHRpbmc/LkF1dG9TaXplQ29sdW1ucyA/PyBmYWxzZVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gR2V0RGVmYXVsdE1vT2JqZWN0SW5mbyh0eXBlRGVmSWQ6IHN0cmluZyk6IE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAgIElkOiAnMCcsXG4gICAgICAgICRDYXB0aW9uOiAnJyxcbiAgICAgICAgJFR5cGVEZWZJZDogdHlwZURlZklkLFxuICAgICAgICAkU3RhdGU6ICdOZXcnLFxuICAgICAgICAkVHlwZTogJ0NvbW1vbi5NZXRhT2JqZWN0V2ViJyxcbiAgICAgICAgJEZpZWxkRGljdDoge31cbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldExheW91dDk0T2JqZWN0SW5mbygpOiBMYXlvdXRTZXR0aW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBUeXBlOiAnUm9vdCcsXG4gICAgICAgIENvbnRyb2xJZDogJ9ix24zYtNmHJyxcbiAgICAgICAgeHR5cGU6ICdMeS5MYXlvdXRDb250YWluZXInLFxuICAgICAgICBCb3VuZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDQzMiwgaGVpZ2h0OiAyNCB9LFxuICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFR5cGU6ICdWZXJ0aWNhbEpvaW4nLFxuICAgICAgICAgICAgICAgIHh0eXBlOiAnTHkuTGF5b3V0Sm9pbicsXG4gICAgICAgICAgICAgICAgSXNWZXJ0aWNhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBCb3VuZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDQzMiwgaGVpZ2h0OiA4MiB9LFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtU2V0dGluZ3ModHlwZURlZklkOiBzdHJpbmcpOiBGb3JtU2V0dGluZyB7XG4gICAgY29uc3QgbW8gPSBHZXREZWZhdWx0TW9PYmplY3RJbmZvKHR5cGVEZWZJZCk7XG5cbiAgICBjb25zdCBmb3JtUGFuZWxTZXR0aW5nczogRm9ybVNldHRpbmcgPSB7XG4gICAgICAgIFZpZXc6IHtcbiAgICAgICAgICAgIExheW91dDk0OiBnZXRMYXlvdXQ5NE9iamVjdEluZm8sXG4gICAgICAgICAgICBDb250cm9sSW5mbzogW10sXG4gICAgICAgICAgICBUeXBlRGVmSWQ6IHR5cGVEZWZJZFxuICAgICAgICB9LFxuICAgICAgICBJc1NlYXJjaFBhbmVsOiB0cnVlLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgICBNbzogbW9cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGZvcm1QYW5lbFNldHRpbmdzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1QYW5lbE1ldGFDb25kaXRpb25zKFxuICAgIHR5cGVEZWZJZDogc3RyaW5nLFxuICAgIGNvbnRyb2xzSW5mbzogR2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXSxcbiAgICBjb250cm9sTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnlcbik6IGFueSB7XG4gICAgY29uc3QgZm9ybVNldHRpbmdzID0gZ2V0Rm9ybVNldHRpbmdzKHR5cGVEZWZJZCk7XG4gICAgZm9ybVNldHRpbmdzLlZpZXcuQ29udHJvbEluZm8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbnRyb2xzSW5mbykpO1xuXG4gICAgZm9ybVNldHRpbmdzLlZpZXcuTGF5b3V0OTQuaXRlbXNbMF0uaXRlbXMucHVzaCguLi5jb250cm9sc0luZm8ubWFwKChjKSA9PiBnZXRMYXlvdXRDb250cm9sKGMuQ29udHJvbE5hbWUpKSk7XG4gICAgZm9ybVNldHRpbmdzLkRhdGEuTW9bY29udHJvbE5hbWVdID0gdmFsdWU7XG4gICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSBuZXcgQmFyc2FBcGkuVWwuRm9ybVBhbmVsQ3RybHIoe1xuICAgICAgICBTZXR0aW5nOiBmb3JtU2V0dGluZ3MsXG4gICAgICAgIEZlYXR1cmVzOiB7XG4gICAgICAgICAgICBXb3JrZmxvdzogZmFsc2UsXG4gICAgICAgICAgICBUb29sYmFyOiBmYWxzZSxcbiAgICAgICAgICAgIEluZm9CYXI6IGZhbHNlXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybVBhbmVsQ3RybHI7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3TW9HcmlkRWRpdG9yKGZvcm1TZXR0aW5nczogRm9ybVNldHRpbmcsIHR5cGVkZWZJZDogc3RyaW5nKTogUGFydGlhbDxGb3JtU2V0dGluZz4ge1xuICAgIGNvbnN0IG5ld0Zvcm1TZXR0aW5nczogRm9ybVNldHRpbmcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZvcm1TZXR0aW5ncykpO1xuICAgIHJldHVybiB7IC4uLm5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vLCAkVHlwZURlZklkOiB0eXBlZGVmSWQgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsKFxuICAgIGZvcm1TZXR0aW5nczogRm9ybVNldHRpbmcsXG4gICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgdHlwZWRlZjogc3RyaW5nLFxuICAgIHJlbGF0aW9uOiBhbnksXG4gICAgcmV3cml0ZUxheW91dDogYm9vbGVhbiA9IHRydWVcbik6IGFueSB7XG4gICAgY29uc3QgbmV3Rm9ybVNldHRpbmdzOiBGb3JtU2V0dGluZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZm9ybVNldHRpbmdzKSk7XG4gICAgbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW8gPSB7IC4uLm1vLCAkVHlwZURlZklkOiB0eXBlZGVmIH07XG4gICAgaWYgKHJld3JpdGVMYXlvdXQpIHtcbiAgICAgICAgbmV3Rm9ybVNldHRpbmdzLlZpZXcuTGF5b3V0OTQgPSBnZXRMYXlvdXQ5NE9iamVjdEluZm8oKTtcbiAgICAgICAgbmV3Rm9ybVNldHRpbmdzLlZpZXcuTGF5b3V0OTQuaXRlbXNbMF0uaXRlbXMucHVzaChcbiAgICAgICAgICAgIC4uLm5ld0Zvcm1TZXR0aW5ncy5WaWV3LkNvbnRyb2xJbmZvLm1hcCgoYykgPT5cbiAgICAgICAgICAgICAgICBnZXRMYXlvdXRDb250cm9sKGMuQ29udHJvbE5hbWUsIGMuQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQsIGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtUmVxdWVzdFBhcmFtcyA9IG5ldyBCYXJzYUFwaS5VbC5Gb3JtUmVxdWVzdFBhcmFtcyh7XG4gICAgICAgIE1vSWQ6IG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vLklkLFxuICAgICAgICBUeXBlRGVmSWQ6IHR5cGVkZWYsXG4gICAgICAgIFJlbGF0aW9uOiByZWxhdGlvblxuICAgICAgICAvLyBNb0NvbnRleHQ6IHtcbiAgICAgICAgLy8gICAgIFJlcG9ydElkOiAnJyxcbiAgICAgICAgLy8gICAgIFZpZXdJZDogJycsXG4gICAgICAgIC8vICAgICBWaWV3TmFtZTogJycsXG4gICAgICAgIC8vICAgICBDb25kRm9ybWF0aW5nOiAnJyxcbiAgICAgICAgLy8gICAgIEluY2x1ZGVJblJlcG9ydDogJydcbiAgICAgICAgLy8gfVxuICAgIH0pO1xuICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gbmV3IEJhcnNhQXBpLlVsLkZvcm1QYW5lbEN0cmxyKHtcbiAgICAgICAgU2V0dGluZzogbmV3Rm9ybVNldHRpbmdzLFxuICAgICAgICBSZWxhdGlvbjogcmVsYXRpb24sXG4gICAgICAgIEZlYXR1cmVzOiB7XG4gICAgICAgICAgICBXb3JrZmxvdzogZmFsc2UsXG4gICAgICAgICAgICBUb29sYmFyOiBmYWxzZSxcbiAgICAgICAgICAgIEluZm9CYXI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIEZvcm1SZXF1ZXN0UGFyYW1zOiBmb3JtUmVxdWVzdFBhcmFtc1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JtUGFuZWxDdHJscjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheW91dENvbnRyb2woXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyxcbiAgICBjb250cm9sQ2FwdGlvbjogc3RyaW5nID0gJycsXG4gICAgaGlkZTogYm9vbGVhbiA9IHRydWVcbik6IFBhcnRpYWw8R2VuZXJhbENvbnRyb2xJbmZvTW9kZWw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB4dHlwZTogJ0x5LkxheW91dENvbnRyb2wnLFxuICAgICAgICBUeXBlOiAnTGF5b3V0Q29udHJvbEl0ZW0nLFxuICAgICAgICBDb250cm9sSWQ6IGNvbnRyb2xOYW1lLFxuICAgICAgICBJc1ZlcnRpY2FsOiBmYWxzZSxcbiAgICAgICAgVGV4dExvY2F0aW9uOiAnUmlnaHQnLFxuICAgICAgICBUZXh0VmlzaWJsZTogZmFsc2UsXG4gICAgICAgIFZpc2libGU6ICFoaWRlLFxuICAgICAgICBoaWRlLFxuICAgICAgICBVc2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2w6IGZhbHNlLFxuICAgICAgICBDYXB0aW9uOiBjb250cm9sQ2FwdGlvbixcbiAgICAgICAgQWNjZXNzaWJsZU5hbWU6ICcnLFxuICAgICAgICBCb3VuZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDQzMiwgaGVpZ2h0OiAyNCB9LFxuICAgICAgICBNaW5TaXplOiB7IHdpZHRoOiA4OSwgaGVpZ2h0OiAyNCB9LFxuICAgICAgICBNYXhTaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDI0IH0sXG4gICAgICAgIENvbnRyb2xCb3VuZHM6IHsgd2lkdGg6IDM4OCwgaGVpZ2h0OiAyMCB9LFxuICAgICAgICBDb250cm9sTWluU2l6ZTogeyB3aWR0aDogNDUsIGhlaWdodDogMjAgfSxcbiAgICAgICAgQ29udHJvbE1heFNpemU6IHsgd2lkdGg6IDAsIGhlaWdodDogMjAgfSxcbiAgICAgICAgUGFkZGluZzogWzIsIDIsIDIsIDJdLFxuICAgICAgICBMYWJlbFNpemU6IHsgd2lkdGg6IDM1LCBoZWlnaHQ6IDEzIH0sXG4gICAgICAgIG9yaWdpbmFsWHR5cGU6ICcnXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xMaXN0KFxuICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIGNvbnRyb2xEYk5hbWVzOiBzdHJpbmdbXSxcbiAgICBpc1NlYXJjaFBhbmVsOiBib29sZWFuLFxuICAgIGlzR3JpZEVkaXRvcjogYm9vbGVhblxuKTogUHJvbWlzZTxHZW5lcmFsQ29udHJvbEluZm9Nb2RlbFtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFqYXguR2V0U2VydmVyRGF0YShcbiAgICAgICAgICAgICdGb3JtOTQuR2V0Q29udHJvbEluZm9zJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250cm9sSW5mb1BhcmFtZXRlcjoge1xuICAgICAgICAgICAgICAgICAgICBGaWVsZERiTmFtZXM6IGNvbnRyb2xEYk5hbWVzLFxuICAgICAgICAgICAgICAgICAgICBNbzogbmV3IEJhcnNhQXBpLkNvbW1vbi5NZXRhT2JqZWN0V2ViKG1vKSxcbiAgICAgICAgICAgICAgICAgICAgSXNTZWFyY2hQYW5lbDogaXNTZWFyY2hQYW5lbCxcbiAgICAgICAgICAgICAgICAgICAgSXNHcmlkRWRpdG9yOiBpc0dyaWRFZGl0b3JcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG0pID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IHR5cGUgTnpTYWZlQW55ID0gYW55O1xuZXhwb3J0IHR5cGUgTnVtYmVySW5wdXQgPSBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuZXhwb3J0IGludGVyZmFjZSBOZ1N0eWxlSW50ZXJmYWNlIHtcbiAgICBba2xhc3M6IHN0cmluZ106IE56U2FmZUFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRleGFibGVPYmplY3Qge1xuICAgIFtrZXk6IHN0cmluZ106IE56U2FmZUFueTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQT86IEluZGV4YWJsZU9iamVjdCwgb2JqQj86IEluZGV4YWJsZU9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGlmIChvYmpBID09PSBvYmpCKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgIW9iakEgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8ICFvYmpCKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWZvci1vZlxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGtleXNBLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c0FbaWR4XTtcbiAgICAgICAgaWYgKCFiSGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmpBW2tleV0gIT09IG9iakJba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlcjtcbmV4cG9ydCBmdW5jdGlvbiB0b051bWJlcjxEPih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBmYWxsYmFjazogRCk6IG51bWJlciB8IEQ7XG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZywgZmFsbGJhY2tWYWx1ZTogbnVtYmVyID0gMCk6IG51bWJlciB7XG4gICAgcmV0dXJuIF9pc051bWJlclZhbHVlKHZhbHVlKSA/IE51bWJlcih2YWx1ZSkgOiBmYWxsYmFja1ZhbHVlO1xufVxuZnVuY3Rpb24gcHJvcERlY29yYXRvckZhY3Rvcnk8VCwgRD4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGZhbGxiYWNrOiAodjogVCkgPT4gRFxuKTogKHRhcmdldDogTnpTYWZlQW55LCBwcm9wTmFtZTogc3RyaW5nKSA9PiB2b2lkIHtcbiAgICBmdW5jdGlvbiBwcm9wRGVjb3JhdG9yKFxuICAgICAgICB0YXJnZXQ6IE56U2FmZUFueSxcbiAgICAgICAgcHJvcE5hbWU6IHN0cmluZyxcbiAgICAgICAgb3JpZ2luYWxEZXNjcmlwdG9yPzogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8TnpTYWZlQW55PlxuICAgICk6IE56U2FmZUFueSB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVQcm9wTmFtZSA9IGAkJF9fem9ycm9Qcm9wRGVjb3JhdG9yX18ke3Byb3BOYW1lfWA7XG5cbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIHByaXZhdGVQcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIC8vIHdhcm4oYFRoZSBwcm9wIFwiJHtwcml2YXRlUHJvcE5hbWV9XCIgaXMgYWxyZWFkeSBleGlzdCwgaXQgd2lsbCBiZSBvdmVycmlkZWQgYnkgJHtuYW1lfSBkZWNvcmF0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcml2YXRlUHJvcE5hbWUsIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxEZXNjcmlwdG9yICYmIG9yaWdpbmFsRGVzY3JpcHRvci5nZXRcbiAgICAgICAgICAgICAgICAgICAgPyBvcmlnaW5hbERlc2NyaXB0b3IuZ2V0LmJpbmQodGhpcykoKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXNbcHJpdmF0ZVByb3BOYW1lXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yICYmIG9yaWdpbmFsRGVzY3JpcHRvci5zZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxEZXNjcmlwdG9yLnNldC5iaW5kKHRoaXMpKGZhbGxiYWNrKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXNbcHJpdmF0ZVByb3BOYW1lXSA9IGZhbGxiYWNrKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcERlY29yYXRvcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBJbnB1dE51bWJlcihmYWxsYmFja1ZhbHVlPzogTnpTYWZlQW55KTogTnpTYWZlQW55IHtcbiAgICByZXR1cm4gcHJvcERlY29yYXRvckZhY3RvcnkoJ0lucHV0TnVtYmVyJywgKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IHRvTnVtYmVyKHZhbHVlLCBmYWxsYmFja1ZhbHVlKSk7XG59XG5leHBvcnQgZW51bSBBZmZpeFJlc3BvbmRFdmVudHMge1xuICAgIHJlc2l6ZSA9ICdyZXNpemUnLFxuICAgIHNjcm9sbCA9ICdzY3JvbGwnLFxuICAgIHRvdWNoc3RhcnQgPSAndG91Y2hzdGFydCcsXG4gICAgdG91Y2htb3ZlID0gJ3RvdWNobW92ZScsXG4gICAgdG91Y2hlbmQgPSAndG91Y2hlbmQnLFxuICAgIHBhZ2VzaG93ID0gJ3BhZ2VzaG93JyxcbiAgICBsb2FkID0gJ0xPQUQnXG59XG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZVJlY3Qge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgYm90dG9tPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYXJnZXRXaW5kb3codGFyZ2V0OiBFbGVtZW50IHwgV2luZG93KTogdGFyZ2V0IGlzIFdpbmRvdyB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHRhcmdldCA9PT0gd2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0UmVjdCh0YXJnZXQ6IEVsZW1lbnQgfCBXaW5kb3cpOiBTaW1wbGVSZWN0IHtcbiAgICByZXR1cm4gIWlzVGFyZ2V0V2luZG93KHRhcmdldClcbiAgICAgICAgPyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgYm90dG9tOiAwXG4gICAgICAgICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZFZhbHVlKG5hbWU6IHN0cmluZywgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhcHRpb24/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBtby4kRmllbGREaWN0ICYmIG1vLiRGaWVsZERpY3RbbmFtZV0gPyBtby4kRmllbGREaWN0W25hbWVdIDogbmFtZTtcbiAgICBsZXQgdmFsID0gbW9bZmllbGROYW1lXTtcbiAgICBpZiAoY2FwdGlvbikge1xuICAgICAgICBsZXQgY2FwdGlvblZhbCA9IG1vW2ZpZWxkTmFtZV0/LiRDYXB0aW9uO1xuICAgICAgICBpZiAodHlwZW9mIGNhcHRpb25WYWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoIWNhcHRpb25WYWwpIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsID0gbW9bZmllbGROYW1lICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNhcHRpb25WYWwpIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhbCA9IGNhcHRpb25WYWw7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWludmFsaWQtdGhpcyAqL1xuZXhwb3J0IGNvbnN0IGF2YWlsYWJsZVByZWZpeGVzID0gWydtb3onLCAnbXMnLCAnd2Via2l0J107XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWVQb2x5ZmlsbCgpOiB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHtcbiAgICBsZXQgbGFzdFRpbWUgPSAwO1xuICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKTogYW55IHtcbiAgICAgICAgY29uc3QgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgdGltZVRvQ2FsbCA9IE1hdGgubWF4KDAsIDE2IC0gKGN1cnJUaW1lIC0gbGFzdFRpbWUpKTtcbiAgICAgICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGN1cnJUaW1lICsgdGltZVRvQ2FsbCk7XG4gICAgICAgIH0sIHRpbWVUb0NhbGwpO1xuICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZUR5bmFtaWNDb21tYW5kKGNvbW1hbmQ6IHsgSWQ6IHN0cmluZyB9LCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgZSA9IHsgY29tbWFuZCwgRHluYW1pY1NldHRpbmc6IG1vLCBNbzogbW8gfTtcbiAgICBCYXJzYUFwaS5Db21tb24uQ3VzdG9tQ29kZU1hbmFnZXIuUnVuRHluYW1pY0NvbW1hbmQoY29tbWFuZC5JZCwgZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZVdvcmtmbG93Q2hvaWNlRGVmKHNjb3BlLCBwYXJhbSwgc3VjY2VzczogKHJlc3VsdCkgPT4gdm9pZCwgZmFpbGVkOiAoZXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBCYXJzYUFwaS5Db21tb24uQWpheC5HZXRTZXJ2ZXJEYXRhKFxuICAgICAgICAnV29ya2Zsb3c5NC5DaG9pY2VTZWxlY3QnLFxuICAgICAgICBwYXJhbSxcbiAgICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICB9LCAvLyBzdWNjZXNzXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZmFpbGVkKGVycm9yKTtcbiAgICAgICAgfSwgLy8gIGVycm9yXG4gICAgICAgICgpID0+IHt9LCAvLyBkb1JldHVyblxuICAgICAgICBzY29wZSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk6IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gKCkgPT4gMDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS9pc3N1ZXMvNDQ2NVxuICAgICAgICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ID0gYXZhaWxhYmxlUHJlZml4ZXMuZmlsdGVyKChrZXkpID0+IGAke2tleX1SZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIGluIHdpbmRvdylbMF07XG5cbiAgICByZXR1cm4gcHJlZml4ID8gKHdpbmRvdyBhcyBOelNhZmVBbnkpW2Ake3ByZWZpeH1SZXF1ZXN0QW5pbWF0aW9uRnJhbWVgXSA6IHJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGlkOiBudW1iZXIpOiBOelNhZmVBbnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSkge1xuICAgICAgICByZXR1cm4gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTtcbiAgICB9XG4gICAgY29uc3QgcHJlZml4ID0gYXZhaWxhYmxlUHJlZml4ZXMuZmlsdGVyKFxuICAgICAgICAoa2V5KSA9PiBgJHtrZXl9Q2FuY2VsQW5pbWF0aW9uRnJhbWVgIGluIHdpbmRvdyB8fCBgJHtrZXl9Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBpbiB3aW5kb3dcbiAgICApWzBdO1xuXG4gICAgcmV0dXJuIHByZWZpeFxuICAgICAgICA/IChcbiAgICAgICAgICAgICAgKHdpbmRvdyBhcyBOelNhZmVBbnkpW2Ake3ByZWZpeH1DYW5jZWxBbmltYXRpb25GcmFtZWBdIHx8XG4gICAgICAgICAgICAgICh3aW5kb3cgYXMgTnpTYWZlQW55KVtgJHtwcmVmaXh9Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lYF1cbiAgICAgICAgICApXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgLmNhbGwodGhpcywgaWQpXG4gICAgICAgIDogY2xlYXJUaW1lb3V0KGlkKTtcbn1cblxuZXhwb3J0IHR5cGUgRWFzeWluZ0ZuID0gKHQ6IG51bWJlciwgYjogbnVtYmVyLCBjOiBudW1iZXIsIGQ6IG51bWJlcikgPT4gbnVtYmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gZWFzZUluT3V0Q3ViaWModDogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlciwgZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBjYyA9IGMgLSBiO1xuICAgIGxldCB0dCA9IHQgLyAoZCAvIDIpO1xuICAgIGlmICh0dCA8IDEpIHtcbiAgICAgICAgcmV0dXJuIChjYyAvIDIpICogdHQgKiB0dCAqIHR0ICsgYjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKGNjIC8gMikgKiAoKHR0IC09IDIpICogdHQgKiB0dCArIDIpICsgYjtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnpTY3JvbGxUb09wdGlvbnMge1xuICAgIC8qKiBBbmltYXRpb24gZHVyYXRpb24sIGRlZmF1bHQgYXMgNDUwICovXG4gICAgZHVyYXRpb24/OiBudW1iZXI7XG4gICAgLyoqIFNjcm9sbCBjb250YWluZXIsIGRlZmF1bHQgYXMgd2luZG93ICovXG4gICAgZWFzaW5nPzogRWFzeWluZ0ZuO1xuICAgIC8qKiBTY3JvbGwgZW5kIGNhbGxiYWNrICovXG4gICAgY2FsbGJhY2s/KCk6IHZvaWQ7XG59XG5leHBvcnQgY29uc3QgV29yZE1pbWVUeXBlID1cbiAgICAnLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnO1xuZXhwb3J0IGNvbnN0IEltYWdlTWltZVR5cGUgPSAnLmpwZWcsLmpwZywuZ2lmLC5wbmcsLmJtcCwudGlmLGltYWdlLyonO1xuZXhwb3J0IGNvbnN0IFBkZk1pbWVUeXBlID0gJy5wZGYnO1xuZXhwb3J0IGNvbnN0IEFsbEZpbGVzTWltZVR5cGUgPSAnLnR4dCwucHB0LC5wZGYsLionO1xuZXhwb3J0IGNvbnN0IFZpZGVvTWltZVR5cGUgPSAndmlkZW8vKic7XG5leHBvcnQgY29uc3QgQXVkaW9NaW1lVHlwZSA9ICdhdWRpby8qJztcbiJdfQ==
|
|
717
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etbm92aW4tcmF5LWNvcmUvc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFjeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFlLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFHbkMsTUFBTSxDQUFOLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM1Qiw2RUFBVyxDQUFBO0lBQ1gscUZBQWUsQ0FBQTtJQUNmLG1GQUFjLENBQUE7SUFDZCxtRkFBYyxDQUFBO0FBQ2xCLENBQUMsRUFMVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBSy9CO0FBQ0QsTUFBTSxVQUFVLDBCQUEwQixDQUN0QyxTQUFzQixFQUN0QixPQUFnQixFQUNoQixnQkFBNEIsRUFDNUIsMEJBQW1DLEVBQ25DLElBQTBCLEVBRTFCLFVBQWlDLEVBQ2pDLE9BQTJCO0lBRTNCLFFBQVEsSUFBSSxFQUFFO1FBQ1YsS0FBSyxvQkFBb0IsQ0FBQyxXQUFXO1lBQ2pDLE9BQU8sb0JBQW9CLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RyxLQUFLLG9CQUFvQixDQUFDLGNBQWM7WUFDcEMsT0FBTyxrQ0FBa0MsQ0FDckMsU0FBUyxFQUNULE9BQU8sRUFDUCwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLE9BQU8sQ0FDVixDQUFDO1FBQ04sS0FBSyxvQkFBb0IsQ0FBQyxjQUFjO1lBQ3BDLE1BQU0sZ0JBQWdC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LElBQUksQ0FBQztJQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDN0MsT0FBTyxVQUFVLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFDRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsZUFBZTtJQUM3QyxJQUFJLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUMxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDaEMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDOUU7SUFDRCxPQUFPLGdCQUFnQixDQUFDO0FBQzVCLENBQUM7QUFDRCxNQUFNLFVBQVUsT0FBTyxDQUFDLElBQVk7SUFDaEMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUNELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBSTtJQUN4QixJQUFJLENBQUMsSUFBSSxFQUFF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LENBQUM7QUFDM0IsQ0FBQztBQUlELE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztJQUNyRSxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQixJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDUixPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN0QztTQUFNO1FBQ0gsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ25EO0FBQ0wsQ0FBQztBQVVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FDckIsdUdBQXVHLENBQUM7QUFDNUcsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLHdDQUF3QyxDQUFDO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7QUFDcEQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCB7IF9pc051bWJlclZhbHVlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEJhcnNhQXBpIH0gZnJvbSAnLi9hYnN0cmFjdC1jbGFzc2VzL2JhcnNhLWFwaSc7XG5pbXBvcnQge1xuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBDb2xTZXR0aW5nLFxuICAgIENvbW1hbmRDb250cm9sSW5mb01vZGVsLFxuICAgIEZvcm1TZXR0aW5nLFxuICAgIEdlbmVyYWxDb250cm9sSW5mb01vZGVsLFxuICAgIEdyaWRTZXR0aW5nLFxuICAgIExheW91dFNldHRpbmcsXG4gICAgTWVudUl0ZW0sXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBSZXBvcnRWaWV3Q29sdW1uLFxuICAgIFNvcnRTZXR0aW5nXG59IGZyb20gJy4vYWJzdHJhY3QtY2xhc3Nlcy9tb2RlbHMnO1xuaW1wb3J0IHsgRGF0ZUhpanJpU2VydmljZSwgRGF0ZU1pbGFkaVNlcnZpY2UsIERhdGVTZXJ2aWNlLCBEYXRlU2hhbXNpU2VydmljZSB9IGZyb20gJy4vZGF0ZS1zZXJ2aWNlcyc7XG5pbXBvcnQgKiBhcyBEZXZpY2UgZnJvbSAnLi9kZXZpY2UnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbG9nLnNlcnZpY2UnO1xuXG5leHBvcnQgZW51bSBUYWJsZUhlYWRlcldpZHRoTW9kZSB7XG4gICAgRml0VG9Db2x1bW4sXG4gICAgRml0VG9Sb3dDb250ZW50LFxuICAgIEZpdFRvQ29udGFpbmVyLFxuICAgIEZyZWVDb2x1bW5TaXplXG59XG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlV2lkdGhPZkxpc3RDb2x1bW4oXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBjYW5WaWV3OiBib29sZWFuLFxuICAgIGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW10sXG4gICAgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3c6IGJvb2xlYW4sXG4gICAgbW9kZTogVGFibGVIZWFkZXJXaWR0aE1vZGUsXG5cbiAgICBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sXG4gICAgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdXG4pOiB7IGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXTsgY29udGV4dE1lbnVXaWR0aDogbnVtYmVyIH0ge1xuICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29sdW1uOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZUNvbHVtbldpZHRoKGNvbnRhaW5lciwgY29sdW1ucywgbW9EYXRhTGlzdCwgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3csIGNvbnRleHRNZW51SXRlbXMpO1xuICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyOlxuICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZUNvbHVtbldpZHRoRml0VG9Db250YWluZXIoXG4gICAgICAgICAgICAgICAgY29udGFpbmVyLFxuICAgICAgICAgICAgICAgIGNhblZpZXcsXG4gICAgICAgICAgICAgICAgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3csXG4gICAgICAgICAgICAgICAgY29udGV4dE1lbnVJdGVtcyxcbiAgICAgICAgICAgICAgICBjb2x1bW5zXG4gICAgICAgICAgICApO1xuICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxuICAgICAgICAgICAgY29uc3QgY29udGV4dE1lbnVXaWR0aCA9IF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zLCBkaXNhYmxlQ29udGV4dE1lbnVPdmVyZmxvdyk7XG4gICAgICAgICAgICBjb25zdCBuZXdDb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHsgLi4uY29sdW1uLCAkV2lkdGgyOiBjb2x1bW4uJFdpZHRoIH0pKTtcbiAgICAgICAgICAgIHJldHVybiB7IGNvbHVtbnM6IG5ld0NvbHVtbnMsIGNvbnRleHRNZW51V2lkdGg6IGNvbnRleHRNZW51V2lkdGggfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICBjYW5WaWV3LFxuICAgICAgICAgICAgICAgIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93LFxuICAgICAgICAgICAgICAgIGNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgICAgKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQ29sdW1uV2lkdGgoXG4gICAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgICBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10sXG4gICAgbW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLFxuICAgIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93OiBib29sZWFuLFxuICAgIGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW11cbik6IHsgY29sdW1uczogUmVwb3J0Vmlld0NvbHVtbltdOyBjb250ZXh0TWVudVdpZHRoOiBudW1iZXIgfSB7XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgY29sQ2FwdGlvbldpZHRoID0gbWVhc3VyZVRleHQoY29sdW1uLkFsaWFzKSArIDE2ICsgMTA7XG4gICAgICAgIGNvbHVtbi4kV2lkdGgyID0gYCR7TWF0aC5jZWlsKGNvbENhcHRpb25XaWR0aCl9cHhgO1xuICAgICAgICAvLyBpZiAobW9kZSA9PT0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db2x1bW4pIHtcbiAgICAgICAgLy8gfSBlbHNlIGlmIChtYXhXaWR0aCA8IGNvbENhcHRpb25XaWR0aCkge1xuICAgICAgICAvLyAgICAgY29sdW1uLiRXaWR0aDIgPSBgJHtNYXRoLmNlaWwoY29sQ2FwdGlvbldpZHRoKX1weGA7XG4gICAgICAgIC8vIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb250ZXh0TWVudVdpZHRoID0gX2NhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXMsIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93KTtcbiAgICByZXR1cm4geyBjb2x1bW5zOiBbLi4uY29sdW1uc10sIGNvbnRleHRNZW51V2lkdGggfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2x1bW5XaWR0aEJ5TWF4TW9Db250ZW50V2lkdGgobW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW4pIHtcbiAgICBjb25zdCB3aWR0aCA9IGNhbGN1bGF0ZU1vRGF0YUxpc3RDb250ZW50V2lkdGhCeUNvbHVtbk5hbWUobW9EYXRhTGlzdCwgY29sdW1uKTtcbiAgICBjb2x1bW4uJFdpZHRoMiA9IGAke01hdGguY2VpbCh3aWR0aCl9cHhgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlTW9EYXRhTGlzdENvbnRlbnRXaWR0aEJ5Q29sdW1uTmFtZShcbiAgICBtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sXG4gICAgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uXG4pOiBudW1iZXIge1xuICAgIGxldCBtYXhXaWR0aCA9IDA7XG4gICAgbW9EYXRhTGlzdC5mb3JFYWNoKChjLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjYXB0aW9uID0gZ2V0Q29sdW1uVmFsdWVPZk1vRGF0YUxpc3QoY29sdW1uLk5hbWUsIGMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGNhcHRpb25XaWR0aCA9IG1lYXN1cmVUZXh0KGNhcHRpb24pICsgMTY7XG4gICAgICAgIGlmIChtYXhXaWR0aCA8IGNhcHRpb25XaWR0aCkge1xuICAgICAgICAgICAgbWF4V2lkdGggPSBjYXB0aW9uV2lkdGg7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gTWF0aC5jZWlsKG1heFdpZHRoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsXG4gICAgY2FuVmlldzogYm9vbGVhbixcbiAgICBkaXNhYmxlQ29udGV4dE1lbnVPdmVyZmxvdzogYm9vbGVhbixcbiAgICBjb250ZXh0TWVudUl0ZW1zOiBNZW51SXRlbVtdLFxuICAgIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXVxuKTogeyBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW107IGNvbnRleHRNZW51V2lkdGg6IG51bWJlciB9IHtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICBsZXQgYWxsQ29sV2lkdGggPSAwO1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4ge1xuICAgICAgICBjb2wuV2lkdGggPSBjb2wuV2lkdGggJiYgY29sLldpZHRoID4gMCA/IGNvbC5XaWR0aCA6IG1lYXN1cmVUZXh0KGNvbC5BbGlhcykgKyAxNjtcbiAgICAgICAgYWxsQ29sV2lkdGggKz0gY29sLldpZHRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNhblZpZXdCdXR0b25XaWR0aCA9IGNhblZpZXcgPyA0MCA6IDA7XG4gICAgY29uc3Qgc2VsZWN0aW9uV2lkdGggPSAzMDtcblxuICAgIGNvbnN0IGNvbnRleHRNZW51V2lkdGggPSBfY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcywgZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3cpO1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoQWxsQ29sdW1ucyA9IGNvbnRhaW5lcldpZHRoIC0gc2VsZWN0aW9uV2lkdGggLSBjYW5WaWV3QnV0dG9uV2lkdGggLSBjb250ZXh0TWVudVdpZHRoIC0gMTI7XG4gICAgLy8gYWxsQ29sV2lkdGggKz0gY29udGFpbmVyV2lkdGhBbGxDb2x1bW5zIC0gYWxsQ29sV2lkdGg7Ly8g2YXYrdin2LPYqNmHINii2K7YsduM2YYg2LPYqtmI2YYu2obZiNmGIHdpZHRoINmF2LTYrti124wg2YbYr9in2LHYr1xuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5jZWlsKChjb250YWluZXJXaWR0aEFsbENvbHVtbnMgKiBjb2wuV2lkdGgpIC8gYWxsQ29sV2lkdGgpO1xuICAgICAgICBjb2wuV2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgY29sLiRXaWR0aDIgPSBgJHtuZXdXaWR0aH1weGA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgY29sdW1uczogWy4uLmNvbHVtbnNdLCBjb250ZXh0TWVudVdpZHRoIH07XG59XG5leHBvcnQgZnVuY3Rpb24gX2NhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXM6IE1lbnVJdGVtW10sIGRpc2FibGVDb250ZXh0TWVudU92ZXJmbG93OiBib29sZWFuKTogbnVtYmVyIHtcbiAgICBsZXQgY29udGV4dE1lbnVXaWR0aCA9IGNvbnRleHRNZW51SXRlbXMubGVuZ3RoID4gMSA/IDQwIDogMDtcbiAgICBjb25zdCBidG5QYWRkaW5nID0gMTQgKyAyICsgMTA7IC8vIHBhZGRpbmcgKyBib3JkZXIgKyBpZiB0ZXh0IGlzIG92ZXJmbG93ZWQgdGhlbiBhZGQgNSBwaXhlbC5zbyB3ZSBhbHdheXMgNSBweCB0byBpdC5cbiAgICBjb25zdCB0ZFBhZGRpbmcgPSAxNSArIDE7IC8vIHBhZGRpbmcgKyBib3JkZXJcbiAgICBjb25zdCBidXR0b25JY29uV2lkdGggPSAxNiArIDY7IC8vIHNpemUgKyBtYXJnaW5cbiAgICBpZiAoZGlzYWJsZUNvbnRleHRNZW51T3ZlcmZsb3cgfHwgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29udGV4dE1lbnVXaWR0aCA9IDA7XG4gICAgICAgIGNvbnRleHRNZW51SXRlbXMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgY29udGV4dE1lbnVXaWR0aCArPSBtZWFzdXJlVGV4dChjLnRleHQpICsgYnRuUGFkZGluZyArIHRkUGFkZGluZztcbiAgICAgICAgICAgIGNvbnRleHRNZW51V2lkdGggKz0gYy5pY29uID8gYnV0dG9uSWNvbldpZHRoIDogMDtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjb250ZXh0TWVudVdpZHRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbHVtblZhbHVlT2ZNb0RhdGFMaXN0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBtbzogTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBDb2x1bW5zPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IE5hbWU6IHN0cmluZzsgQ2FwdGlvbjogc3RyaW5nIH1bXSxcbiAgICBjYXB0aW9uPzogYm9vbGVhblxuKTogYW55IHtcbiAgICBsZXQgZmllbGROYW1lID0gQ29sdW1ucyA/IENvbHVtbnMuZmluZCgoYykgPT4gYy5OYW1lID09PSBuYW1lIHx8IGMuQWxpYXMgPT09IG5hbWUpPy5OYW1lIDogbmFtZTtcbiAgICBpZiAoIWZpZWxkTmFtZSkge1xuICAgICAgICBmaWVsZE5hbWUgPSBuYW1lO1xuICAgIH1cbiAgICBsZXQgdmFsID0gZmllbGROYW1lID8gbW9bZmllbGROYW1lXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAoY2FwdGlvbikge1xuICAgICAgICBsZXQgY2FwdGlvblZhbCA9IGZpZWxkTmFtZSA/IG1vW2ZpZWxkTmFtZV0/LiRDYXB0aW9uIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHlwZW9mIGNhcHRpb25WYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjYXB0aW9uVmFsID0gbW9bZmllbGROYW1lICsgJyRDYXB0aW9uJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjYXB0aW9uVmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY2FwdGlvblZhbCA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICB2YWwgPSBjYXB0aW9uVmFsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZBbHJlYWR5TG9hZGVkKHBhcmVudE1vZHVsZTogYW55LCBtb2R1bGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAocGFyZW50TW9kdWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4gSW1wb3J0ICR7bW9kdWxlTmFtZX0gaW4gdGhlIEFwcE1vZHVsZSBvbmx5LmApO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBtZWFzdXJlVGV4dCh0ZXh0OiBzdHJpbmcsIGZvbnRTaXplPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBtZWFzdXJlVGV4dERvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWFzdXJlVGV4dCcpIGFzIEhUTUxDYW52YXNFbGVtZW50O1xuICAgIGlmICghbWVhc3VyZVRleHREb20pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBjb25zdCBjdHggPSBtZWFzdXJlVGV4dERvbS5nZXRDb250ZXh0KCcyZCcpIGFzIGFueTtcbiAgICBmb250U2l6ZSA9IGZvbnRTaXplID8gZm9udFNpemUgOiAnMC44ODVyZW0nO1xuICAgIGN0eC5mb250ID0gYG5vcm1hbCAke2ZvbnRTaXplfSBJUkFOWWVrYW5EaWdpdHNgO1xuICAgIHJldHVybiBjdHgubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2VucmF0ZUlubGluZU1vSWQoKSB7XG4gICAgcmV0dXJuIChCYXJzYUFwaS5pZEdlbmVyYXRvci0tKS50b1N0cmluZygpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGVudW1WYWx1ZVRvU3RyaW5nU2l6ZSh2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgIHJldHVybiAncyc7XG4gICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgcmV0dXJuICdtJztcbiAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICByZXR1cm4gJ2wnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVVsdkNvbW1hbmRIYW5kbGVyKGJ1dHRvbiwgb3B0aW9ucz8pOiB2b2lkIHtcbiAgICBpZiAoYnV0dG9uLkNvbW1hbmQgJiYgYnV0dG9uLkNvbW1hbmQuSGFuZGxlcikge1xuICAgICAgICBidXR0b24uQ29tbWFuZC5IYW5kbGVyKGJ1dHRvbiwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChidXR0b24uaGFuZGxlcikge1xuICAgICAgICBidXR0b24uaGFuZGxlci5iaW5kKGJ1dHRvbi5zY29wZSkoYnV0dG9uLCBvcHRpb25zKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcXVlSWQocGFydHM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyaW5nQXJyOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHM7IGkrKykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgICBjb25zdCBTNCA9ICgoKDEgKyBNYXRoLnJhbmRvbSgpKSAqIDB4MTAwMDApIHwgMCkudG9TdHJpbmcoMTYpO1xuICAgICAgICBjb25zdCBTNF86IHN0cmluZyA9IFM0Lmxlbmd0aCA+IDAgPyBTNC5zdWJzdHJpbmcoMSkgOiAnJztcbiAgICAgICAgc3RyaW5nQXJyLnB1c2goUzRfKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ0Fyci5qb2luKCctJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRlU2VydmljZShsb2dTZXJ2aWNlOiBMb2dTZXJ2aWNlLCBjdWx0dXJlPyk6IERhdGVTZXJ2aWNlIHtcbiAgICBjb25zdCBkZWZhdWx0Q3VsdHVyZSA9IGN1bHR1cmUgPz8gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdWx0dXJlO1xuICAgIHN3aXRjaCAoZGVmYXVsdEN1bHR1cmUpIHtcbiAgICAgICAgY2FzZSAnZmEtSVInOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlU2hhbXNpU2VydmljZShsb2dTZXJ2aWNlKTtcbiAgICAgICAgY2FzZSAnYXItQUUnOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlSGlqcmlTZXJ2aWNlKGxvZ1NlcnZpY2UpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlTWlsYWRpU2VydmljZShsb2dTZXJ2aWNlKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaXNGaXJlZm94KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZignZmlyZWZveCcpID4gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VQYXRoKFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBtb0lkOiBzdHJpbmcgfCBudWxsLFxuICAgIGZpbGVJZDogc3RyaW5nLFxuICAgIGZpZWxkRGVmSWQ/OiBzdHJpbmcsXG4gICAgc2l6ZT86IG51bWJlcixcbiAgICBzaXplSD86IG51bWJlclxuKTogc3RyaW5nIHtcbiAgICBtb0lkID0gbW9JZCA9PSBudWxsID8gJycgOiBlbmNvZGVVUklDb21wb25lbnQobW9JZCk7XG4gICAgZmlsZUlkID0gZmlsZUlkID09IG51bGwgPyAnJyA6IGVuY29kZVVSSUNvbXBvbmVudChmaWxlSWQpO1xuICAgIGZpZWxkRGVmSWQgPSBmaWVsZERlZklkID09IG51bGwgPyAnJyA6IGVuY29kZVVSSUNvbXBvbmVudChmaWVsZERlZklkKTtcbiAgICBzaXplID0gc2l6ZSA9PSBudWxsID8gMTI4IDogc2l6ZTtcbiAgICBzaXplSCA9IHNpemVIID09IG51bGwgPyBzaXplIDogc2l6ZUg7XG4gICAgY29uc3QgdXJsID0gYC9JSC5hc2h4P3R5PSR7dHlwZX0mbW9JZD0ke21vSWR9JmlkPSR7ZmlsZUlkfSZmZElkPSR7ZmllbGREZWZJZH0mc2k9JHtzaXplfSZzaUg9JHtzaXplSH1gO1xuICAgIHJldHVybiB1cmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKGZ1bmN0aW9uVG9DaGVjayk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmdW5jdGlvblRvQ2hlY2sgJiYge30udG9TdHJpbmcuY2FsbChmdW5jdGlvblRvQ2hlY2spID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIERldmljZVdpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gMCA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlclZhbHVlKGZpZWxkVmFsdWUpOiBhbnkge1xuICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkVmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gZmllbGRWYWx1ZS5WYWx1ZTtcbiAgICBjb25zdCB2YWx1ZUNhcHRpb246IHN0cmluZyA9IGZpZWxkVmFsdWUuVmFsdWUkQ2FwdGlvbjtcbiAgICBsZXQgdmFsdWVPYmplY3RDYXB0aW9uID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICB2YWx1ZU9iamVjdENhcHRpb24gPSBmaWVsZFZhbHVlLlZhbHVlLiRDYXB0aW9uO1xuICAgIH1cbiAgICBpZiAodmFsdWVPYmplY3RDYXB0aW9uKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZU9iamVjdENhcHRpb247XG4gICAgfVxuICAgIGlmICh2YWx1ZUNhcHRpb24gJiYgIXZhbHVlQ2FwdGlvbi5zdGFydHNXaXRoKCd0bXAnKSkge1xuICAgICAgICByZXR1cm4gdmFsdWVDYXB0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudEluVmlld3BvcnQyKGVsOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgdG9wID0gZWwub2Zmc2V0VG9wO1xuICAgIGxldCBsZWZ0ID0gZWwub2Zmc2V0TGVmdDtcbiAgICBjb25zdCB3aWR0aCA9IGVsLm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IGhlaWdodCA9IGVsLm9mZnNldEhlaWdodDtcblxuICAgIHdoaWxlIChlbC5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgZWwgPSBlbC5vZmZzZXRQYXJlbnQ7XG4gICAgICAgIHRvcCArPSBlbC5vZmZzZXRUb3A7XG4gICAgICAgIGxlZnQgKz0gZWwub2Zmc2V0TGVmdDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICB0b3AgPCB3aW5kb3cucGFnZVlPZmZzZXQgKyB3aW5kb3cuaW5uZXJIZWlnaHQgJiZcbiAgICAgICAgbGVmdCA8IHdpbmRvdy5wYWdlWE9mZnNldCArIHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgICAgIHRvcCArIGhlaWdodCA+IHdpbmRvdy5wYWdlWU9mZnNldCAmJlxuICAgICAgICBsZWZ0ICsgd2lkdGggPiB3aW5kb3cucGFnZVhPZmZzZXRcbiAgICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIFByZXZlbnREZWZhdWxFdmVudChlKTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnRIZWlnaHQoZWxEb206IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBsZXQgcGFyZW50RG9tID0gZWxEb20ucGFyZW50RWxlbWVudDtcbiAgICBsZXQgcGFyZW50SGVpZ2h0ID0gcGFyZW50RG9tPy5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB3aGlsZSAocGFyZW50RG9tICE9IG51bGwgJiYgcGFyZW50SGVpZ2h0IDwgNDApIHtcbiAgICAgICAgcGFyZW50RG9tID0gcGFyZW50RG9tLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHBhcmVudEhlaWdodCA9IHBhcmVudERvbT8uY2xpZW50SGVpZ2h0ID8/IDA7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRIZWlnaHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wb25lbnREZWZpbmVkKFxuICAgIGNvbnRyb2xVaTogeyBvcmlnaW5hbFh0eXBlOiBzdHJpbmcgfSxcbiAgICBjdXN0b21VaVNldHRpbmc6IHsgTW9kdWxlOiBzdHJpbmc7IE5hbWU6IHN0cmluZzsgU2VsZWN0b3I6IHN0cmluZyB9XG4pOiB7XG4gICAgbW9kdWxlTmFtZTogc3RyaW5nO1xuICAgIG1vZHVsZVBhdGg6IHN0cmluZztcbiAgICBjb21wb25lbnROYW1lOiBzdHJpbmc7XG4gICAgc2VsZWN0b3I6IHN0cmluZztcbn0ge1xuICAgIGxldCBtb2R1bGVOYW1lID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5EZWZhdWx0VWlNb2R1bGU7XG4gICAgbGV0IG1vZHVsZUtlYmFiTmFtZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldEtlYmFiQ2FzZShtb2R1bGVOYW1lKTtcbiAgICBsZXQgY29tcG9uZW50TmFtZSA9IGNvbnRyb2xVaS5vcmlnaW5hbFh0eXBlLnJlcGxhY2UoJy4nLCAnJykucmVwbGFjZSgnXycsICcnKTtcbiAgICBsZXQgc2VsZWN0b3I6IHN0cmluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLkdldEtlYmFiQ2FzZShjb21wb25lbnROYW1lKTtcbiAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnN1YnN0cmluZygxLCBzZWxlY3Rvci5sZW5ndGgpO1xuICAgIHNlbGVjdG9yID0gQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5DdXN0b21VaVByZWZpeCArICctJyArIHNlbGVjdG9yO1xuICAgIGlmIChjdXN0b21VaVNldHRpbmcgJiYgY3VzdG9tVWlTZXR0aW5nLk1vZHVsZSkge1xuICAgICAgICBtb2R1bGVOYW1lID0gY3VzdG9tVWlTZXR0aW5nLk1vZHVsZTtcbiAgICAgICAgbW9kdWxlS2ViYWJOYW1lID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuR2V0S2ViYWJDYXNlKG1vZHVsZU5hbWUpO1xuICAgICAgICBjb21wb25lbnROYW1lID0gY3VzdG9tVWlTZXR0aW5nLk5hbWU7XG4gICAgICAgIHNlbGVjdG9yID0gY3VzdG9tVWlTZXR0aW5nLlNlbGVjdG9yO1xuICAgIH1cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gbW9kdWxlS2ViYWJOYW1lLnNsaWNlKDEsIG1vZHVsZUtlYmFiTmFtZS5sZW5ndGgpO1xuICAgIHJldHVybiB7IG1vZHVsZU5hbWUsIG1vZHVsZVBhdGgsIGNvbXBvbmVudE5hbWUsIHNlbGVjdG9yIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXZpY2VJc1Bob25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEZXZpY2UuaXNQaG9uZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERldmljZUlzRGVza3RvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRGV2aWNlLmlzVGFibGV0KCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGV2aWNlSXNUYWJsZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIERldmljZS5pc1RhYmxldCgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERldmljZUlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ21vYmknKSA+IDAgfHwgZ2V0RGV2aWNlSXNQaG9uZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbFNpemVNb2RlKGVsOiBIVE1MRWxlbWVudCwgZGV2aWNlU2l6ZTogJ3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJyA9ICdsJyk6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZSB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBlbC5vZmZzZXRXaWR0aDtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRldmljZVNpemU7XG4gICAgfVxuICAgIGlmIChkZXZpY2VTaXplID09PSAncycgfHwgY29udGFpbmVyV2lkdGggPCA2MDApIHtcbiAgICAgICAgZGV2aWNlU2l6ZSA9ICdzJztcbiAgICB9IGVsc2UgaWYgKGRldmljZVNpemUgPT09ICdtJyB8fCAoY29udGFpbmVyV2lkdGggPiA2MDAgJiYgY29udGFpbmVyV2lkdGggPCAxMjAwKSkge1xuICAgICAgICBkZXZpY2VTaXplID0gJ20nO1xuICAgIH1cbiAgICByZXR1cm4gZGV2aWNlU2l6ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKFxuICAgIGJ5dGVzLFxuICAgIGRlY2ltYWxzID0gMixcbiAgICBzaXplOiAnQnl0ZXMnIHwgJ0tCJyB8ICdNQicgfCAnR0InIHwgJ1RCJyB8ICdQQicgfCAnRUInIHwgJ1pCJyB8ICdZQidcbik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnMCBCeXRlcyc7XG4gICAgfVxuXG4gICAgY29uc3QgayA9IDEwMjQ7XG4gICAgY29uc3QgZG0gPSBkZWNpbWFscyA8IDAgPyAwIDogZGVjaW1hbHM7XG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gICAgY29uc3QgaSA9IHNpemVzLmZpbmRJbmRleCgoYykgPT4gYyA9PT0gc2l6ZSk7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArICcgJyArIHNpemVzW2ldO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkRXh0ZW5zaW9uKHZhbGlkRXh0ZW5zaW9ucyk6IHN0cmluZyB7XG4gICAgbGV0IF92YWxpZEV4dGVuc2lvbnMgPSAnJztcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWxpZEV4dGVuc2lvbnMpKSB7XG4gICAgICAgIF92YWxpZEV4dGVuc2lvbnMgPSB2YWxpZEV4dGVuc2lvbnMubWFwKChjKSA9PiAnLicgKyBjLkV4dGVuc2lvbikuam9pbignLCcpO1xuICAgIH1cbiAgICByZXR1cm4gX3ZhbGlkRXh0ZW5zaW9ucztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJhcnNhQXBpLkNvbW1vbi5GaWxlLkZpbGVJY29uRGljdDEyOFt0eXBlXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ltYWdlKHR5cGUpOiBib29sZWFuIHtcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBbJ2ltZycsICdwbmcnLCAnanBlZycsICdqcGcnLCAnZ2lmJywgJ2JtcCcsICd0aWZmJywgJ2ltYWdlJ10uaW5kZXhPZih0eXBlKSA+IC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR2V0QWxsQ29sdW1uc1NvcnRlZChjb250ZXh0KTogQXJyYXk8UmVwb3J0Vmlld0NvbHVtbj4ge1xuICAgIGNvbnN0IGFsbENvbHVtbnMgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5WaWV3LkNvbHVtbnMnLCBbXSkuZmlsdGVyKFxuICAgICAgICAoYykgPT4gYy5OYW1lICE9PSAnSWQnICYmIGMuTmFtZSAhPT0gJyRTdHlsZUluZGV4JyAmJiAhYy5IaWRkZW5cbiAgICApO1xuXG4gICAgY29uc3QgY29sTGlzdDogQ29sU2V0dGluZ1tdID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgICdTZXR0aW5nLlZpZXcuR3JpZFNldHRpbmcuQ29sU2V0dGluZ0xpc3QnLFxuICAgICAgICBbXVxuICAgICk7XG4gICAgY29uc3QgY29sdW1ucyA9IG5ldyBBcnJheTxSZXBvcnRWaWV3Q29sdW1uPigpO1xuICAgIGNvbExpc3QuZm9yRWFjaCgoY29sUykgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW5PZkNvbExpc3QgPSBhbGxDb2x1bW5zLmZpbmQoKGMpID0+IGMuTmFtZSA9PT0gY29sUy5OYW1lKTtcbiAgICAgICAgaWYgKGNvbHVtbk9mQ29sTGlzdCkge1xuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHsgLi4uY29sdW1uT2ZDb2xMaXN0LCBIaWRkZW46IGNvbFMuSXNIaWRkZW4sIFdpZHRoOiBjb2xTLldpZHRoIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgYWxsQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbFNldHRpbmcgPSBjb2xMaXN0LmZpbmQoKGMpID0+IGMuTmFtZSA9PT0gY29sdW1uLk5hbWUpO1xuICAgICAgICBpZiAoIWNvbFNldHRpbmcpIHtcbiAgICAgICAgICAgIGNvbHVtbnMuc3BsaWNlKGluZGV4LCAwLCB7IC4uLmNvbHVtbiwgSGlkZGVuOiBjb2xMaXN0Lmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjb2x1bW5zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEdldFZpc2libGVWYWx1ZShvYmplY3QsIGZpZWxkKTogc3RyaW5nIHtcbiAgICBsZXQgb3V0cHV0VmFsdWU7XG4gICAgaWYgKG9iamVjdFtmaWVsZF0/LiRDYXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3V0cHV0VmFsdWUgPSBvYmplY3RbZmllbGRdLiRDYXB0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFZhbHVlID0gb2JqZWN0W2ZpZWxkICsgJyRDYXB0aW9uJ10gIT09IHVuZGVmaW5lZCA/IG9iamVjdFtmaWVsZCArICckQ2FwdGlvbiddIDogb2JqZWN0W2ZpZWxkXTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dFZhbHVlO1xufVxuZXhwb3J0IGludGVyZmFjZSBHcm91cCB7XG4gICAgJEdyb3VwOiBhbnk7XG4gICAgJExldmVsOiBudW1iZXI7XG4gICAgJENvdW50OiBudW1iZXI7XG4gICAgJEV4cGFuZGVkOiBib29sZWFuO1xuICAgICRQYXJlbnQ6IGFueTtcbiAgICAkQ2hpbGRyZW46IGFueVtdO1xuICAgICRWaXNpYmlsaXR5OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gR3JvdXBCeShjb2xsZWN0aW9uOiBhbnlbXSwgc29ydFNldHRpbmdzOiBTb3J0U2V0dGluZ1tdKTogeyBncm91cGVkOiBHcm91cDsgZ3JvdXBzOiBhbnlbXSB9IHtcbiAgICBjb25zdCBncm91cGVkOiBhbnkgPSB7fTtcblxuICAgIGNvbnN0IGdyb3VwcyA9IHNvcnRTZXR0aW5ncy5tYXAoKGMpID0+IGMuTmFtZSk7XG4gICAgY29uc3QgZ2V0VGl0bGUgPSAobW8sIGZpZWxkTmFtZSk6IHN0cmluZyA9PiBHZXRWaXNpYmxlVmFsdWUobW8sIGZpZWxkTmFtZSk7XG4gICAgY29sbGVjdGlvbi5mb3JFYWNoKChhKSA9PiB7XG4gICAgICAgIGdyb3Vwc1xuICAgICAgICAgICAgLnJlZHVjZSgobywgZywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwVGl0bGUgPSBnZXRUaXRsZShhLCBnKTtcbiAgICAgICAgICAgICAgICBvW2dyb3VwVGl0bGVdID0gb1tncm91cFRpdGxlXSB8fCAoaSArIDEgPT09IGdyb3Vwcy5sZW5ndGggPyBbXSA6IHt9KTtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvW2dyb3VwVGl0bGVdKSkge1xuICAgICAgICAgICAgICAgICAgICBhLiRMZXZlbCA9IGdyb3Vwcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGdldFRpdGxlKGEsIGdyb3Vwc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBncm91cGVkW3RpdGxlXTtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LiRDb3VudCA9IChwYXJlbnQuJENvdW50ID8/IDApICsgMTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPCBncm91cHMubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGdldFRpdGxlKGEsIGdyb3Vwc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRbdGl0bGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LiRDb3VudCA9IG9bZ3JvdXBUaXRsZV0ubGVuZ3RoICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEyID0gRmluZEdyb3VwKGdyb3VwVGl0bGUsIGEpO1xuICAgICAgICAgICAgICAgICAgICBvW2dyb3VwVGl0bGVdLiRFeHBhbmRlZCA9IGEyPy4kRXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgICAgIG9bZ3JvdXBUaXRsZV0uJFZpc2liaWxpdHkgPSBhMj8uJFZpc2liaWxpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvW2dyb3VwVGl0bGVdO1xuICAgICAgICAgICAgfSwgZ3JvdXBlZClcbiAgICAgICAgICAgIC5wdXNoKGEpO1xuICAgIH0pO1xuICAgIHJldHVybiB7IGdyb3VwZWQsIGdyb3VwcyB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRmluZEdyb3VwKGdyb3VwVGl0bGU6IHN0cmluZywgYTogYW55KTogYW55IHtcbiAgICBpZiAoYS4kR3JvdXAgPT09IGdyb3VwVGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICAgIGlmIChhLiRQYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuIEZpbmRHcm91cChncm91cFRpdGxlLCBhLiRQYXJlbnQpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBGaWxsQWxsTGF5b3V0Q29udHJvbHMoaXRlbTogTGF5b3V0U2V0dGluZywgbGF5b3V0Q29udHJvbHM6IExheW91dFNldHRpbmdbXSk6IHZvaWQge1xuICAgIGlmIChpdGVtLnh0eXBlID09PSAnTHkuTGF5b3V0Q29udHJvbCcpIHtcbiAgICAgICAgbGF5b3V0Q29udHJvbHMucHVzaChpdGVtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWl0ZW0uaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGl0ZW0uaXRlbXMuZm9yRWFjaCgoYykgPT4gRmlsbEFsbExheW91dENvbnRyb2xzKGMsIGxheW91dENvbnRyb2xzKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gRmluZFRvb2xiYXJJdGVtKHRvb2xiYXJJdGVtczogTWVudUl0ZW1bXSwgdmFsdWU6IHN0cmluZywgcHJvcDogc3RyaW5nID0gJ3RleHQnKTogTWVudUl0ZW0gfCBudWxsIHtcbiAgICBpZiAoIXRvb2xiYXJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBmaW5kSW5BcnJheSA9ICh0b29sYmFySXRlbXM6IE1lbnVJdGVtW10sIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGl0ZW06IE1lbnVJdGVtIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIHRvb2xiYXJJdGVtcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGMgPT09ICdvYmplY3QnICYmICFpdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNbcHJvcF0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBjO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjLm1lbnU/Lml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IGZpbmRJbkFycmF5KGMubWVudS5pdGVtcywgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH07XG4gICAgcmV0dXJuIGZpbmRJbkFycmF5KHRvb2xiYXJJdGVtcywgdmFsdWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEZpbmRMYXlvdXRTZXR0aW5nRnJvbUxheW91dDk0KGxheW91dDk0OiBMYXlvdXRTZXR0aW5nLCBsYXlvdXRUaXRsZTogc3RyaW5nKTogTGF5b3V0U2V0dGluZyB8IG51bGwge1xuICAgIGlmICghbGF5b3V0VGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChsYXlvdXQ5NC5DYXB0aW9uID09PSBsYXlvdXRUaXRsZSB8fCBsYXlvdXQ5NC5UaXRsZSA9PT0gbGF5b3V0VGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIGxheW91dDk0O1xuICAgIH1cbiAgICBsZXQgdGVtcExheW91dDk0OiBMYXlvdXRTZXR0aW5nIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKGxheW91dDk0Lml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXlvdXQ5NC5pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKCF0ZW1wTGF5b3V0OTQpIHtcbiAgICAgICAgICAgICAgICB0ZW1wTGF5b3V0OTQgPSBGaW5kTGF5b3V0U2V0dGluZ0Zyb21MYXlvdXQ5NChsYXlvdXQ5NC5pdGVtc1tpXSwgbGF5b3V0VGl0bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZW1wTGF5b3V0OTQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0R3JpZFNldHRpbmdzKGNvbnRleHQpOiBHcmlkU2V0dGluZyB7XG4gICAgY29uc3QgZ3JpZFNldHRpbmcgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjb250ZXh0LCAnU2V0dGluZy5WaWV3LkdyaWRTZXR0aW5nJywgbnVsbCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgQ29sU2V0dGluZ0xpc3Q6IGdyaWRTZXR0aW5nPy5Db2xTZXR0aW5nTGlzdCA/PyBudWxsLFxuICAgICAgICBTb3J0U2V0dGluZ0xpc3Q6IGdyaWRTZXR0aW5nPy5Tb3J0U2V0dGluZ0xpc3QgPz8gW10sXG4gICAgICAgIEF1dG9TaXplQ29sdW1uczogZ3JpZFNldHRpbmc/LkF1dG9TaXplQ29sdW1ucyA/PyBmYWxzZVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gR2V0RGVmYXVsdE1vT2JqZWN0SW5mbyh0eXBlRGVmSWQ6IHN0cmluZyk6IE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIHJldHVybiB7XG4gICAgICAgIElkOiAnMCcsXG4gICAgICAgICRDYXB0aW9uOiAnJyxcbiAgICAgICAgJFR5cGVEZWZJZDogdHlwZURlZklkLFxuICAgICAgICAkU3RhdGU6ICdOZXcnLFxuICAgICAgICAkVHlwZTogJ0NvbW1vbi5NZXRhT2JqZWN0V2ViJyxcbiAgICAgICAgJEZpZWxkRGljdDoge31cbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldExheW91dDk0T2JqZWN0SW5mbygpOiBMYXlvdXRTZXR0aW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBUeXBlOiAnUm9vdCcsXG4gICAgICAgIENvbnRyb2xJZDogJ9ix24zYtNmHJyxcbiAgICAgICAgeHR5cGU6ICdMeS5MYXlvdXRDb250YWluZXInLFxuICAgICAgICBCb3VuZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDQzMiwgaGVpZ2h0OiAyNCB9LFxuICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFR5cGU6ICdWZXJ0aWNhbEpvaW4nLFxuICAgICAgICAgICAgICAgIHh0eXBlOiAnTHkuTGF5b3V0Sm9pbicsXG4gICAgICAgICAgICAgICAgSXNWZXJ0aWNhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBCb3VuZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDQzMiwgaGVpZ2h0OiA4MiB9LFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtU2V0dGluZ3ModHlwZURlZklkOiBzdHJpbmcpOiBGb3JtU2V0dGluZyB7XG4gICAgY29uc3QgbW8gPSBHZXREZWZhdWx0TW9PYmplY3RJbmZvKHR5cGVEZWZJZCk7XG5cbiAgICBjb25zdCBmb3JtUGFuZWxTZXR0aW5nczogRm9ybVNldHRpbmcgPSB7XG4gICAgICAgIFZpZXc6IHtcbiAgICAgICAgICAgIExheW91dDk0OiBnZXRMYXlvdXQ5NE9iamVjdEluZm8sXG4gICAgICAgICAgICBDb250cm9sSW5mbzogW10sXG4gICAgICAgICAgICBUeXBlRGVmSWQ6IHR5cGVEZWZJZFxuICAgICAgICB9LFxuICAgICAgICBJc1NlYXJjaFBhbmVsOiB0cnVlLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgICBNbzogbW9cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGZvcm1QYW5lbFNldHRpbmdzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1QYW5lbE1ldGFDb25kaXRpb25zKFxuICAgIHR5cGVEZWZJZDogc3RyaW5nLFxuICAgIGNvbnRyb2xzSW5mbzogR2VuZXJhbENvbnRyb2xJbmZvTW9kZWxbXSxcbiAgICBjb250cm9sTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnlcbik6IGFueSB7XG4gICAgY29uc3QgZm9ybVNldHRpbmdzID0gZ2V0Rm9ybVNldHRpbmdzKHR5cGVEZWZJZCk7XG4gICAgZm9ybVNldHRpbmdzLlZpZXcuQ29udHJvbEluZm8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbnRyb2xzSW5mbykpO1xuXG4gICAgZm9ybVNldHRpbmdzLlZpZXcuTGF5b3V0OTQuaXRlbXNbMF0uaXRlbXMucHVzaCguLi5jb250cm9sc0luZm8ubWFwKChjKSA9PiBnZXRMYXlvdXRDb250cm9sKGMuQ29udHJvbE5hbWUpKSk7XG4gICAgZm9ybVNldHRpbmdzLkRhdGEuTW9bY29udHJvbE5hbWVdID0gdmFsdWU7XG4gICAgY29uc3QgZm9ybVBhbmVsQ3RybHIgPSBuZXcgQmFyc2FBcGkuVWwuRm9ybVBhbmVsQ3RybHIoe1xuICAgICAgICBTZXR0aW5nOiBmb3JtU2V0dGluZ3MsXG4gICAgICAgIEZlYXR1cmVzOiB7XG4gICAgICAgICAgICBXb3JrZmxvdzogZmFsc2UsXG4gICAgICAgICAgICBUb29sYmFyOiBmYWxzZSxcbiAgICAgICAgICAgIEluZm9CYXI6IGZhbHNlXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybVBhbmVsQ3RybHI7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3TW9HcmlkRWRpdG9yKGZvcm1TZXR0aW5nczogRm9ybVNldHRpbmcsIHR5cGVkZWZJZDogc3RyaW5nKTogUGFydGlhbDxGb3JtU2V0dGluZz4ge1xuICAgIGNvbnN0IG5ld0Zvcm1TZXR0aW5nczogRm9ybVNldHRpbmcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZvcm1TZXR0aW5ncykpO1xuICAgIHJldHVybiB7IC4uLm5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vLCAkVHlwZURlZklkOiB0eXBlZGVmSWQgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmlkRWRpdG9yRm9ybVBhbmVsKFxuICAgIGZvcm1TZXR0aW5nczogRm9ybVNldHRpbmcsXG4gICAgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgdHlwZWRlZjogc3RyaW5nLFxuICAgIHJlbGF0aW9uOiBhbnksXG4gICAgcmV3cml0ZUxheW91dDogYm9vbGVhbiA9IHRydWVcbik6IGFueSB7XG4gICAgY29uc3QgbmV3Rm9ybVNldHRpbmdzOiBGb3JtU2V0dGluZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZm9ybVNldHRpbmdzKSk7XG4gICAgbmV3Rm9ybVNldHRpbmdzLkRhdGEuTW8gPSB7IC4uLm1vLCAkVHlwZURlZklkOiB0eXBlZGVmIH07XG4gICAgaWYgKHJld3JpdGVMYXlvdXQpIHtcbiAgICAgICAgbmV3Rm9ybVNldHRpbmdzLlZpZXcuTGF5b3V0OTQgPSBnZXRMYXlvdXQ5NE9iamVjdEluZm8oKTtcbiAgICAgICAgbmV3Rm9ybVNldHRpbmdzLlZpZXcuTGF5b3V0OTQuaXRlbXNbMF0uaXRlbXMucHVzaChcbiAgICAgICAgICAgIC4uLm5ld0Zvcm1TZXR0aW5ncy5WaWV3LkNvbnRyb2xJbmZvLm1hcCgoYykgPT5cbiAgICAgICAgICAgICAgICBnZXRMYXlvdXRDb250cm9sKGMuQ29udHJvbE5hbWUsIGMuQ29udHJvbEZpZWxkQ2FwdGlvblRyYW5zbGF0ZWQsIGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBjb25zdCBmb3JtUmVxdWVzdFBhcmFtcyA9IG5ldyBCYXJzYUFwaS5VbC5Gb3JtUmVxdWVzdFBhcmFtcyh7XG4gICAgICAgIE1vSWQ6IG5ld0Zvcm1TZXR0aW5ncy5EYXRhLk1vLklkLFxuICAgICAgICBUeXBlRGVmSWQ6IHR5cGVkZWYsXG4gICAgICAgIFJlbGF0aW9uOiByZWxhdGlvblxuICAgICAgICAvLyBNb0NvbnRleHQ6IHtcbiAgICAgICAgLy8gICAgIFJlcG9ydElkOiAnJyxcbiAgICAgICAgLy8gICAgIFZpZXdJZDogJycsXG4gICAgICAgIC8vICAgICBWaWV3TmFtZTogJycsXG4gICAgICAgIC8vICAgICBDb25kRm9ybWF0aW5nOiAnJyxcbiAgICAgICAgLy8gICAgIEluY2x1ZGVJblJlcG9ydDogJydcbiAgICAgICAgLy8gfVxuICAgIH0pO1xuICAgIGNvbnN0IGZvcm1QYW5lbEN0cmxyID0gbmV3IEJhcnNhQXBpLlVsLkZvcm1QYW5lbEN0cmxyKHtcbiAgICAgICAgU2V0dGluZzogbmV3Rm9ybVNldHRpbmdzLFxuICAgICAgICBSZWxhdGlvbjogcmVsYXRpb24sXG4gICAgICAgIEZlYXR1cmVzOiB7XG4gICAgICAgICAgICBXb3JrZmxvdzogZmFsc2UsXG4gICAgICAgICAgICBUb29sYmFyOiBmYWxzZSxcbiAgICAgICAgICAgIEluZm9CYXI6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIEZvcm1SZXF1ZXN0UGFyYW1zOiBmb3JtUmVxdWVzdFBhcmFtc1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JtUGFuZWxDdHJscjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheW91dENvbnRyb2woXG4gICAgY29udHJvbE5hbWU6IHN0cmluZyxcbiAgICBjb250cm9sQ2FwdGlvbjogc3RyaW5nID0gJycsXG4gICAgaGlkZTogYm9vbGVhbiA9IHRydWVcbik6IFBhcnRpYWw8R2VuZXJhbENvbnRyb2xJbmZvTW9kZWw+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB4dHlwZTogJ0x5LkxheW91dENvbnRyb2wnLFxuICAgICAgICBUeXBlOiAnTGF5b3V0Q29udHJvbEl0ZW0nLFxuICAgICAgICBDb250cm9sSWQ6IGNvbnRyb2xOYW1lLFxuICAgICAgICBJc1ZlcnRpY2FsOiBmYWxzZSxcbiAgICAgICAgVGV4dExvY2F0aW9uOiAnUmlnaHQnLFxuICAgICAgICBUZXh0VmlzaWJsZTogZmFsc2UsXG4gICAgICAgIFZpc2libGU6ICFoaWRlLFxuICAgICAgICBoaWRlLFxuICAgICAgICBVc2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2w6IGZhbHNlLFxuICAgICAgICBDYXB0aW9uOiBjb250cm9sQ2FwdGlvbixcbiAgICAgICAgQWNjZXNzaWJsZU5hbWU6ICcnLFxuICAgICAgICBCb3VuZHM6IHsgeDogMCwgeTogMCwgd2lkdGg6IDQzMiwgaGVpZ2h0OiAyNCB9LFxuICAgICAgICBNaW5TaXplOiB7IHdpZHRoOiA4OSwgaGVpZ2h0OiAyNCB9LFxuICAgICAgICBNYXhTaXplOiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDI0IH0sXG4gICAgICAgIENvbnRyb2xCb3VuZHM6IHsgd2lkdGg6IDM4OCwgaGVpZ2h0OiAyMCB9LFxuICAgICAgICBDb250cm9sTWluU2l6ZTogeyB3aWR0aDogNDUsIGhlaWdodDogMjAgfSxcbiAgICAgICAgQ29udHJvbE1heFNpemU6IHsgd2lkdGg6IDAsIGhlaWdodDogMjAgfSxcbiAgICAgICAgUGFkZGluZzogWzIsIDIsIDIsIDJdLFxuICAgICAgICBMYWJlbFNpemU6IHsgd2lkdGg6IDM1LCBoZWlnaHQ6IDEzIH0sXG4gICAgICAgIG9yaWdpbmFsWHR5cGU6ICcnXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xMaXN0KFxuICAgIG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIGNvbnRyb2xEYk5hbWVzOiBzdHJpbmdbXSxcbiAgICBpc1NlYXJjaFBhbmVsOiBib29sZWFuLFxuICAgIGlzR3JpZEVkaXRvcjogYm9vbGVhblxuKTogUHJvbWlzZTxHZW5lcmFsQ29udHJvbEluZm9Nb2RlbFtdPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEdlbmVyYWxDb250cm9sSW5mb01vZGVsW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgQmFyc2FBcGkuQ29tbW9uLkFqYXguR2V0U2VydmVyRGF0YShcbiAgICAgICAgICAgICdGb3JtOTQuR2V0Q29udHJvbEluZm9zJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250cm9sSW5mb1BhcmFtZXRlcjoge1xuICAgICAgICAgICAgICAgICAgICBGaWVsZERiTmFtZXM6IGNvbnRyb2xEYk5hbWVzLFxuICAgICAgICAgICAgICAgICAgICBNbzogbmV3IEJhcnNhQXBpLkNvbW1vbi5NZXRhT2JqZWN0V2ViKG1vKSxcbiAgICAgICAgICAgICAgICAgICAgSXNTZWFyY2hQYW5lbDogaXNTZWFyY2hQYW5lbCxcbiAgICAgICAgICAgICAgICAgICAgSXNHcmlkRWRpdG9yOiBpc0dyaWRFZGl0b3JcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKG0pID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IHR5cGUgTnpTYWZlQW55ID0gYW55O1xuZXhwb3J0IHR5cGUgTnVtYmVySW5wdXQgPSBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuZXhwb3J0IGludGVyZmFjZSBOZ1N0eWxlSW50ZXJmYWNlIHtcbiAgICBba2xhc3M6IHN0cmluZ106IE56U2FmZUFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbmRleGFibGVPYmplY3Qge1xuICAgIFtrZXk6IHN0cmluZ106IE56U2FmZUFueTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQT86IEluZGV4YWJsZU9iamVjdCwgb2JqQj86IEluZGV4YWJsZU9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGlmIChvYmpBID09PSBvYmpCKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgIW9iakEgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8ICFvYmpCKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICAgIGNvbnN0IGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGJIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWZvci1vZlxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGtleXNBLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c0FbaWR4XTtcbiAgICAgICAgaWYgKCFiSGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvYmpBW2tleV0gIT09IG9iakJba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59XG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlcjtcbmV4cG9ydCBmdW5jdGlvbiB0b051bWJlcjxEPih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBmYWxsYmFjazogRCk6IG51bWJlciB8IEQ7XG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZywgZmFsbGJhY2tWYWx1ZTogbnVtYmVyID0gMCk6IG51bWJlciB7XG4gICAgcmV0dXJuIF9pc051bWJlclZhbHVlKHZhbHVlKSA/IE51bWJlcih2YWx1ZSkgOiBmYWxsYmFja1ZhbHVlO1xufVxuZnVuY3Rpb24gcHJvcERlY29yYXRvckZhY3Rvcnk8VCwgRD4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGZhbGxiYWNrOiAodjogVCkgPT4gRFxuKTogKHRhcmdldDogTnpTYWZlQW55LCBwcm9wTmFtZTogc3RyaW5nKSA9PiB2b2lkIHtcbiAgICBmdW5jdGlvbiBwcm9wRGVjb3JhdG9yKFxuICAgICAgICB0YXJnZXQ6IE56U2FmZUFueSxcbiAgICAgICAgcHJvcE5hbWU6IHN0cmluZyxcbiAgICAgICAgb3JpZ2luYWxEZXNjcmlwdG9yPzogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8TnpTYWZlQW55PlxuICAgICk6IE56U2FmZUFueSB7XG4gICAgICAgIGNvbnN0IHByaXZhdGVQcm9wTmFtZSA9IGAkJF9fem9ycm9Qcm9wRGVjb3JhdG9yX18ke3Byb3BOYW1lfWA7XG5cbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIHByaXZhdGVQcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIC8vIHdhcm4oYFRoZSBwcm9wIFwiJHtwcml2YXRlUHJvcE5hbWV9XCIgaXMgYWxyZWFkeSBleGlzdCwgaXQgd2lsbCBiZSBvdmVycmlkZWQgYnkgJHtuYW1lfSBkZWNvcmF0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcml2YXRlUHJvcE5hbWUsIHtcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxEZXNjcmlwdG9yICYmIG9yaWdpbmFsRGVzY3JpcHRvci5nZXRcbiAgICAgICAgICAgICAgICAgICAgPyBvcmlnaW5hbERlc2NyaXB0b3IuZ2V0LmJpbmQodGhpcykoKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXNbcHJpdmF0ZVByb3BOYW1lXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBpZiAob3JpZ2luYWxEZXNjcmlwdG9yICYmIG9yaWdpbmFsRGVzY3JpcHRvci5zZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxEZXNjcmlwdG9yLnNldC5iaW5kKHRoaXMpKGZhbGxiYWNrKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXNbcHJpdmF0ZVByb3BOYW1lXSA9IGZhbGxiYWNrKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcERlY29yYXRvcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBJbnB1dE51bWJlcihmYWxsYmFja1ZhbHVlPzogTnpTYWZlQW55KTogTnpTYWZlQW55IHtcbiAgICByZXR1cm4gcHJvcERlY29yYXRvckZhY3RvcnkoJ0lucHV0TnVtYmVyJywgKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IHRvTnVtYmVyKHZhbHVlLCBmYWxsYmFja1ZhbHVlKSk7XG59XG5leHBvcnQgZW51bSBBZmZpeFJlc3BvbmRFdmVudHMge1xuICAgIHJlc2l6ZSA9ICdyZXNpemUnLFxuICAgIHNjcm9sbCA9ICdzY3JvbGwnLFxuICAgIHRvdWNoc3RhcnQgPSAndG91Y2hzdGFydCcsXG4gICAgdG91Y2htb3ZlID0gJ3RvdWNobW92ZScsXG4gICAgdG91Y2hlbmQgPSAndG91Y2hlbmQnLFxuICAgIHBhZ2VzaG93ID0gJ3BhZ2VzaG93JyxcbiAgICBsb2FkID0gJ0xPQUQnXG59XG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZVJlY3Qge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgYm90dG9tPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUYXJnZXRXaW5kb3codGFyZ2V0OiBFbGVtZW50IHwgV2luZG93KTogdGFyZ2V0IGlzIFdpbmRvdyB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHRhcmdldCA9PT0gd2luZG93O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0UmVjdCh0YXJnZXQ6IEVsZW1lbnQgfCBXaW5kb3cpOiBTaW1wbGVSZWN0IHtcbiAgICByZXR1cm4gIWlzVGFyZ2V0V2luZG93KHRhcmdldClcbiAgICAgICAgPyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgOiB7XG4gICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgYm90dG9tOiAwXG4gICAgICAgICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZFZhbHVlKG5hbWU6IHN0cmluZywgbW86IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhcHRpb24/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBtby4kRmllbGREaWN0ICYmIG1vLiRGaWVsZERpY3RbbmFtZV0gPyBtby4kRmllbGREaWN0W25hbWVdIDogbmFtZTtcbiAgICBsZXQgdmFsID0gbW9bZmllbGROYW1lXTtcbiAgICBpZiAoY2FwdGlvbikge1xuICAgICAgICBsZXQgY2FwdGlvblZhbCA9IG1vW2ZpZWxkTmFtZV0/LiRDYXB0aW9uO1xuICAgICAgICBpZiAodHlwZW9mIGNhcHRpb25WYWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoIWNhcHRpb25WYWwpIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsID0gbW9bZmllbGROYW1lICsgJyRDYXB0aW9uJ107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNhcHRpb25WYWwpIHtcbiAgICAgICAgICAgICAgICBjYXB0aW9uVmFsID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhbCA9IGNhcHRpb25WYWw7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWludmFsaWQtdGhpcyAqL1xuZXhwb3J0IGNvbnN0IGF2YWlsYWJsZVByZWZpeGVzID0gWydtb3onLCAnbXMnLCAnd2Via2l0J107XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWVQb2x5ZmlsbCgpOiB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIHtcbiAgICBsZXQgbGFzdFRpbWUgPSAwO1xuICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKTogYW55IHtcbiAgICAgICAgY29uc3QgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgdGltZVRvQ2FsbCA9IE1hdGgubWF4KDAsIDE2IC0gKGN1cnJUaW1lIC0gbGFzdFRpbWUpKTtcbiAgICAgICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGN1cnJUaW1lICsgdGltZVRvQ2FsbCk7XG4gICAgICAgIH0sIHRpbWVUb0NhbGwpO1xuICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcbiAgICAgICAgcmV0dXJuIGlkO1xuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZUR5bmFtaWNDb21tYW5kKGNvbW1hbmQ6IHsgSWQ6IHN0cmluZyB9LCBtbzogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgZSA9IHsgY29tbWFuZCwgRHluYW1pY1NldHRpbmc6IG1vLCBNbzogbW8gfTtcbiAgICBCYXJzYUFwaS5Db21tb24uQ3VzdG9tQ29kZU1hbmFnZXIuUnVuRHluYW1pY0NvbW1hbmQoY29tbWFuZC5JZCwgZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZVdvcmtmbG93Q2hvaWNlRGVmKHNjb3BlLCBwYXJhbSwgc3VjY2VzczogKHJlc3VsdCkgPT4gdm9pZCwgZmFpbGVkOiAoZXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBCYXJzYUFwaS5Db21tb24uQWpheC5HZXRTZXJ2ZXJEYXRhKFxuICAgICAgICAnV29ya2Zsb3c5NC5DaG9pY2VTZWxlY3QnLFxuICAgICAgICBwYXJhbSxcbiAgICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgICAgICB9LCAvLyBzdWNjZXNzXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgZmFpbGVkKGVycm9yKTtcbiAgICAgICAgfSwgLy8gIGVycm9yXG4gICAgICAgICgpID0+IHt9LCAvLyBkb1JldHVyblxuICAgICAgICBzY29wZSxcbiAgICAgICAgdHJ1ZVxuICAgICk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk6IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gKCkgPT4gMDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZS9pc3N1ZXMvNDQ2NVxuICAgICAgICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZml4ID0gYXZhaWxhYmxlUHJlZml4ZXMuZmlsdGVyKChrZXkpID0+IGAke2tleX1SZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIGluIHdpbmRvdylbMF07XG5cbiAgICByZXR1cm4gcHJlZml4ID8gKHdpbmRvdyBhcyBOelNhZmVBbnkpW2Ake3ByZWZpeH1SZXF1ZXN0QW5pbWF0aW9uRnJhbWVgXSA6IHJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gY2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGlkOiBudW1iZXIpOiBOelNhZmVBbnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSkge1xuICAgICAgICByZXR1cm4gd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTtcbiAgICB9XG4gICAgY29uc3QgcHJlZml4ID0gYXZhaWxhYmxlUHJlZml4ZXMuZmlsdGVyKFxuICAgICAgICAoa2V5KSA9PiBgJHtrZXl9Q2FuY2VsQW5pbWF0aW9uRnJhbWVgIGluIHdpbmRvdyB8fCBgJHtrZXl9Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBpbiB3aW5kb3dcbiAgICApWzBdO1xuXG4gICAgcmV0dXJuIHByZWZpeFxuICAgICAgICA/IChcbiAgICAgICAgICAgICAgKHdpbmRvdyBhcyBOelNhZmVBbnkpW2Ake3ByZWZpeH1DYW5jZWxBbmltYXRpb25GcmFtZWBdIHx8XG4gICAgICAgICAgICAgICh3aW5kb3cgYXMgTnpTYWZlQW55KVtgJHtwcmVmaXh9Q2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lYF1cbiAgICAgICAgICApXG4gICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgLmNhbGwodGhpcywgaWQpXG4gICAgICAgIDogY2xlYXJUaW1lb3V0KGlkKTtcbn1cblxuZXhwb3J0IHR5cGUgRWFzeWluZ0ZuID0gKHQ6IG51bWJlciwgYjogbnVtYmVyLCBjOiBudW1iZXIsIGQ6IG51bWJlcikgPT4gbnVtYmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gZWFzZUluT3V0Q3ViaWModDogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlciwgZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBjYyA9IGMgLSBiO1xuICAgIGxldCB0dCA9IHQgLyAoZCAvIDIpO1xuICAgIGlmICh0dCA8IDEpIHtcbiAgICAgICAgcmV0dXJuIChjYyAvIDIpICogdHQgKiB0dCAqIHR0ICsgYjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKGNjIC8gMikgKiAoKHR0IC09IDIpICogdHQgKiB0dCArIDIpICsgYjtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnpTY3JvbGxUb09wdGlvbnMge1xuICAgIC8qKiBBbmltYXRpb24gZHVyYXRpb24sIGRlZmF1bHQgYXMgNDUwICovXG4gICAgZHVyYXRpb24/OiBudW1iZXI7XG4gICAgLyoqIFNjcm9sbCBjb250YWluZXIsIGRlZmF1bHQgYXMgd2luZG93ICovXG4gICAgZWFzaW5nPzogRWFzeWluZ0ZuO1xuICAgIC8qKiBTY3JvbGwgZW5kIGNhbGxiYWNrICovXG4gICAgY2FsbGJhY2s/KCk6IHZvaWQ7XG59XG5leHBvcnQgY29uc3QgV29yZE1pbWVUeXBlID1cbiAgICAnLmRvYywuZG9jeCxhcHBsaWNhdGlvbi9tc3dvcmQsYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnO1xuZXhwb3J0IGNvbnN0IEltYWdlTWltZVR5cGUgPSAnLmpwZWcsLmpwZywuZ2lmLC5wbmcsLmJtcCwudGlmLGltYWdlLyonO1xuZXhwb3J0IGNvbnN0IFBkZk1pbWVUeXBlID0gJy5wZGYnO1xuZXhwb3J0IGNvbnN0IEFsbEZpbGVzTWltZVR5cGUgPSAnLnR4dCwucHB0LC5wZGYsLionO1xuZXhwb3J0IGNvbnN0IFZpZGVvTWltZVR5cGUgPSAndmlkZW8vKic7XG5leHBvcnQgY29uc3QgQXVkaW9NaW1lVHlwZSA9ICdhdWRpby8qJztcbiJdfQ==
|