@ieeesa-npm/groups 0.13.1 → 0.13.2
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.
|
@@ -5,7 +5,7 @@ import { MatDialogModule } from '@angular/material/dialog';
|
|
|
5
5
|
import { CreateGroupComponent } from './components/create-group/create-group.component';
|
|
6
6
|
import { Subject, takeUntil } from 'rxjs';
|
|
7
7
|
import { MatButtonModule } from '@angular/material/button';
|
|
8
|
-
import {
|
|
8
|
+
import { IconButtonComponent, AlignType, ModalConfirmationComponent, SelectComponent, LegendComponent, SearchType, SearchComponent, ModalComponent } from '@ieeesa-npm/presentation';
|
|
9
9
|
import { TreeViewComponent } from './components/tree-view/tree-view.component';
|
|
10
10
|
import { ModalType, AlertType, AlertsService, } from '@ieeesa-npm/utility';
|
|
11
11
|
import * as screenTexts from './assets/constants.json';
|
|
@@ -637,4 +637,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
637
637
|
}], userInfo: [{
|
|
638
638
|
type: Input
|
|
639
639
|
}] } });
|
|
640
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2dyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9ncm91cHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFDZixVQUFVLEVBQ1YsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULGFBQWEsR0FFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7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b250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgT25Jbml0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IENyZWF0ZUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS1ncm91cC9jcmVhdGUtZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3JvdXBzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR3JvdXBJbmZvIH0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtaW5mby5tb2RlbCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7XHJcbiAgTW9kYWxDb21wb25lbnQsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgSWNvbkJ1dHRvbixcclxuICBBbGlnblR5cGUsXHJcbiAgTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsXHJcbiAgU2VsZWN0Q29tcG9uZW50LFxyXG4gIExlZ2VuZENvbXBvbmVudCxcclxuICBTZWFyY2hUeXBlLFxyXG4gIFNlYXJjaENvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyb3VwVHlwZSwgR3JvdXBUeXBlQ29uZmlnVmFsdWUgfSBmcm9tICcuL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgTW9kYWxUeXBlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3N0ZXJGdW5jdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9yb3N0ZXItZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdldEdyb3Vwc1BheWxvYWQgfSBmcm9tICcuL21vZGVscy92aWV3LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRGVsZXRlR3JvdXBQYXlsb2FkIH0gZnJvbSAnLi9tb2RlbHMvZGVsZXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgQWRkVXNlclJvc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hZGQtdXNlci1yb3N0ZXIvYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZXdSb3N0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdmlldy1yb3N0ZXIvdmlldy1yb3N0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdEdyb3VwQW5kUGFyZW50SW5mbyB9IGZyb20gJy4vbW9kZWxzL2VkaXQtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBFZGl0VXNlclJvbGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBHcm91cFBlcm1pc3Npb24sXHJcbiAgVXNlclBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2dlZEluVXNlckluZm8gfSBmcm9tICcuL21vZGVscy91c2VyLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBHcm91cHMgY29tcG9uZW50IGlzIGEgd3JhcHBlciBvciBjb250YWluZXIgY29tcG9uZW50IGZvciBncm91cHMgbWFuYWdlbWVudCByZXVzYWJsZSBjb21wb25lbnQgYW5kIGluIHRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgYWxsIGdyb3VwIG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0aWVzIGFuZCB0aGlzIHdpbGwgYmUgZW50cnkgY29tcG9uZW50IGZvciBtYW5hZ2luZyBncm91cHMgd2hlbiBpdCBpcyBjb25zdW1lZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAqIEBjbGFzcyBHcm91cHNDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZ3JvdXBzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIFNlYXJjaENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyb3Vwcy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbQWxlcnRzU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG4gIHZpZXdHcm91cFRleHRzID0gdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cHM7XHJcbiAgY3JlYXRlR3JvdXBUZXh0ID0gdGhpcy5jb25zdGFudHM/LmNyZWF0ZUdyb3VwO1xyXG4gIGVkaXRHcm91cFRleHRzID0gdGhpcy5jb25zdGFudHM/LmVkaXRHcm91cDtcclxuICBlZGl0VXNlclJvbGVzVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uZWRpdFVzZXJSb2xlcztcclxuICBhZGRVc2VyUm9zdGVyVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uYWRkVXNlclJvc3RlcjtcclxuICBpc0dyb3VwU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgaXNHcm91cEZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGNoaWxkR3JvdXBzSW5mbyE6IEdyb3VwSW5mb1tdO1xyXG4gIHNlbGVjdGVkR3JvdXBUeXBlITogU2VsZWN0T3B0aW9uO1xyXG4gIHBhcmVudEdyb3Vwc0luZm8hOiBHcm91cEluZm9bXTtcclxuICBzZWxlY3RHcm91cE9wdGlvbnMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBkZWxldGVkR3JvdXBJZCE6IHN0cmluZztcclxuICBkZWxldGVHcm91cE5hbWUhOiBzdHJpbmc7XHJcbiAgZ3JvdXBUeXBlcyE6IEdyb3VwVHlwZUNvbmZpZ1ZhbHVlO1xyXG4gIHNlYXJjaFBsYWNlSG9sZGVyVGV4dDogc3RyaW5nID0gdGhpcy52aWV3R3JvdXBUZXh0cz8ucGxhY2Vob2xkZXJUZXh0Py5zZWFyY2g7XHJcbiAgZmlsdGVyUGxhY2VIb2xkZXJUZXh0OiBzdHJpbmcgPSB0aGlzLnZpZXdHcm91cFRleHRzPy5wbGFjZWhvbGRlclRleHQ/LmZpbHRlcjtcclxuICBjcmVhdGVHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMSxcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLmFkZCxcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmNyZWF0ZUdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5hZGQsXHJcbiAgfTtcclxuICBmaWx0ZXJHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMixcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLmZpbHRlcixcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmZpbHRlckdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5maWx0ZXIsXHJcbiAgfTtcclxuICBzZWFyY2hHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMyxcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLnNlYXJjaCxcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LnNlYXJjaEdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5zZWFyY2gsXHJcbiAgfTtcclxuICBnZXRHcm91cHNQYXlsb2FkOiBHZXRHcm91cHNQYXlsb2FkID0geyBncm91cElkOiAnJywgZ3JvdXBUeXBlSWQ6ICcnIH07XHJcbiAgQElucHV0KCkgZ3JvdXBzUGFnZUluZm86IHtcclxuICAgIGdyb3Vwc1RpdGxlOiBzdHJpbmc7XHJcbiAgICBncm91cHNEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIH0gPSB7XHJcbiAgICBncm91cHNUaXRsZTogdGhpcy52aWV3R3JvdXBUZXh0cz8uZ3JvdXBzVGl0bGUsXHJcbiAgICBncm91cHNEZXNjcmlwdGlvbjogdGhpcy52aWV3R3JvdXBUZXh0cz8uZ3JvdXBzRGVzY3JpcHRpb24sXHJcbiAgfTtcclxuICBASW5wdXQoKSBhcHBsaWNhdGlvbklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBASW5wdXQoKSB1c2VySW5mbyE6IExvZ2dlZEluVXNlckluZm87XHJcbiAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZTtcclxuICBmdW5jdGlvblR5cGUhOiBHcm91cEZ1bmN0aW9uVHlwZTtcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIGNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIG1pbkNoYXJhY3RlclRvU2VhcmNoID0gMztcclxuICB0cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gIHVzZXJHcm91cFBlcm1pc3Npb25zITogR3JvdXBQZXJtaXNzaW9uW107XHJcbiAgc3VwcG9ydE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uc1NlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U6IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdD8ubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/Lm9wZW5Nb2RhbE5vdGlmaWVyPy5uZXh0KEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZ3JvdXBzIGNvbXBvbmVudC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldFVzZXJJbmZvKHRoaXMudXNlckluZm8pO1xyXG4gICAgdGhpcy5zdXBwb3J0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMudmlld0dyb3VwVGV4dHM/Lm1pbkNoYXJSZXF1aXJlZFRvU2VhcmNoMSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMubWluQ2hhcmFjdGVyVG9TZWFyY2ggK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLnZpZXdHcm91cFRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDI7XHJcbiAgICB0aGlzLnVzZXJHcm91cFBlcm1pc3Npb25zID1cclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLmZpbHRlclVzZXJHcm91cFBlcm1pc3Npb25zKFxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U/LmdldEdsb2JhbEdyb3VwUGVybWlzc2lvbnMoKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFVzZXJHcm91cFBlcm1pc3Npb25zKHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRBcHBDb25maWcodGhpcy5hcGlCYXNlVVJMLCB0aGlzLnVzZXJQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmdldEdyb3VwVHlwZXMoKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ub3Blbk1vZGFsTm90aWZpZXJcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRHcm91cEluZm8gPSB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0U2VsZWN0ZWRHcm91cEluZm8oKTtcclxuICAgICAgICBpZiAocmVzcG9uc2UgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRSkge1xyXG4gICAgICAgICAgdGhpcy5vcGVuRWRpdFVzZXJSb2xlc01vZGFsKHNlbGVjdGVkR3JvdXBJbmZvIGFzIEdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSKSB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5BZGRVc2VyUm9zdGVyTW9kYWwoc2VsZWN0ZWRHcm91cEluZm8gYXMgR3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgcGVybWlzc2lvbiBiYXNlZCBhY2Nlc3MgZm9yIHByb3ZpZGVkIGZlYXR1cmUuXHJcbiAgICogQHBhcmFtIHtQZXJtaXNzaW9uVHlwZX0gcGVybWlzc2lvblR5cGVcclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJQZXJtaXNzaW9uc1NlcnZpY2UudmFsaWRhdGVBY2Nlc3NQZXJtaXNzaW9uKFxyXG4gICAgICBwZXJtaXNzaW9uVHlwZSxcclxuICAgICAgdGhpcy51c2VyR3JvdXBQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGNyZWF0ZSBncm91cCBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gW3BhcmVudEdyb3VwSW5mb10gLUFuIG9wdGlvbmFsIHBhcmFtZXRlci4gUGFyZW50IGdyb3VwIGluZm8gdG8gYmUgcGFzc2VkIGZvciBjcmVhdGUgY2hpbGQgZ3JvdXAuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5DcmVhdGVHcm91cEZvcm0ocGFyZW50R3JvdXBJbmZvPzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBncm91cFR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldExvYWRlZEdyb3VwVHlwZXMoKTtcclxuICAgIGlmIChncm91cFR5cGVzICYmIGdyb3VwVHlwZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRTZWxlY3RlZEdyb3VwSW5mbyhwYXJlbnRHcm91cEluZm8gPz8gdW5kZWZpbmVkKTtcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uQ1JFQVRFKTtcclxuICAgICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uaGVhZGluZyxcclxuICAgICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQ3JlYXRlR3JvdXBDb21wb25lbnQsXHJcbiAgICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZT8uQ1JFQVRFO1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWNyZWF0ZS1ncm91cCcsIHBhcmVudEdyb3VwSW5mbyk7XHJcbiAgICB9IGVsc2VcclxuICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKEFsZXJ0VHlwZS5FUlJPUiwgdGhpcy5jb25zdGFudHM/LmVycm9ycz8uWycxMDEwJ10pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgZWRpdCBncm91cCBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcGFyYW0ge0VkaXRHcm91cEFuZFBhcmVudEluZm99IGVkaXRHcm91cEluZm8gLWVkaXRpbmcgZ3JvdXAgYW5kIGl0cyBwYXJlbnQgZ3JvdXAgaW5mbyB0byBiZSBwYXNzZWQgZm9yIHBvcHVsYXRpbmcgZWRpdCBncm91cCBmb3JtIGZpZWxkcy5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkVkaXRHcm91cEZvcm0oZWRpdEdyb3VwSW5mbzogRWRpdEdyb3VwQW5kUGFyZW50SW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRTZWxlY3RlZEdyb3VwSW5mbyhcclxuICAgICAgZWRpdEdyb3VwSW5mbz8uZ3JvdXBJbmZvLFxyXG4gICAgICBlZGl0R3JvdXBJbmZvPy5wYXJlbnRHcm91cEluZm9cclxuICAgICk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUKTtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IGVkaXRHcm91cEluZm8/Lmdyb3VwSW5mbz8uZ3JvdXBOYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IENyZWF0ZUdyb3VwQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGU/LkVESVQ7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWVkaXQtZ3JvdXAnLCBlZGl0R3JvdXBJbmZvKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgdXNlciByb2xlcyBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkVkaXRVc2VyUm9sZXNNb2RhbChzZWxlY3RlZEdyb3VwSW5mbzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFVzZXJJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZFVzZXJJbmZvKCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBzZWxlY3RlZEdyb3VwSW5mbz8uZ3JvdXBOYW1lLFxyXG4gICAgICBzdWJIZWFkaW5nOiBzZWxlY3RlZFVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IEVkaXRVc2VyUm9sZXNDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEU7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKHRoaXMuZnVuY3Rpb25UeXBlKTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtZWRpdC11c2VyLXJvbGVzJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBhZGQgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5BZGRVc2VyUm9zdGVyTW9kYWwoc2VsZWN0ZWRHcm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgc3ViSGVhZGluZzogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmhlYWRpbmcsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQWRkVXNlclJvc3RlckNvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUjtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUodGhpcy5mdW5jdGlvblR5cGUpO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1hZGQtdXNlci1yb3N0ZXInKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIHVzZXJzIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbmZvfSBncm91cFxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2aWV3Um9zdGVyKGdyb3VwOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IGdyb3VwPy5ncm91cE5hbWUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogVmlld1Jvc3RlckNvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STV9BTkRfQ09OVEVOVCxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0U2VsZWN0ZWRHcm91cEluZm8oZ3JvdXApO1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUjtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkVESVQpO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS12aWV3LXJvc3RlcicpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyBtb2RhbCBjb21wb25lbnQgd2l0aCBmb3IgcmVjZWl2ZWQgcGFyYW1zIGFuZCBoYW5kbGVzIGZvcm0gc3VibWlzc2lvbiBzdWNjZXNzIGFuZCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHsqfSBkaWFsb2dPcHRpb25zXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGFzc05hbWVdXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW5mZXJyYWJsZS10eXBlcywgbm8tdW51c2VkLXZhcnNcclxuICBvcGVuTW9kYWwoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgZGlhbG9nT3B0aW9uczogYW55LFxyXG4gICAgY2xhc3NOYW1lPzogc3RyaW5nLFxyXG4gICAgZ3JvdXBJbmZvPzogR3JvdXBJbmZvIHwgRWRpdEdyb3VwQW5kUGFyZW50SW5mb1xyXG4gICk6IHZvaWQge1xyXG4gICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lID8/ICcnO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkaWFsb2dPcHRpb25zLFxyXG4gICAgICB3aWR0aDpcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVIgfHxcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFIHx8XHJcbiAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUlxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiAnYXV0bycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLW1vZGFsLWRpYWxvZycsIGNsYXNzTmFtZV0sXHJcbiAgICAgIGFyaWFNb2RhbDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudEluc3RhbmNlPy5zdWJtaXRGb3JtUmVzcG9uc2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBuby11bnVzZWQtdmFyc1xyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5mdW5jdGlvblR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURToge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZUdyb3VwSW5mbyA9IGdyb3VwSW5mbyBhcyBHcm91cEluZm87XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNyZWF0ZUdyb3VwSW5mbykgdGhpcy5nZXRHcm91cHMoY3JlYXRlR3JvdXBJbmZvKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkVESVQ6IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRHcm91cFRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzUGFyZW50R3JvdXBDaGFuZ2VkID1cclxuICAgICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXMoKTtcclxuICAgICAgICAgICAgY29uc3QgZWRpdEdyb3VwSW5mbyA9IGdyb3VwSW5mbyBhcyBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSlcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBTZWFyY2hDbGljayh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZEdyb3VwVHlwZS5pZCAhPT0gJycpXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChlZGl0R3JvdXBJbmZvPy5wYXJlbnRHcm91cEluZm8/Lmdyb3VwSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNQYXJlbnRHcm91cENoYW5nZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0R3JvdXBGdW5jdGlvblR5cGUoXHJcbiAgICAgICAgICAgICAgICBHcm91cEZ1bmN0aW9uVHlwZS5SRUFTU0lHTl9QQVJFTlRfR1JPVVBcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHRoaXMuZ2V0R3JvdXBzKGVkaXRHcm91cEluZm8ucGFyZW50R3JvdXBJbmZvKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUX1JPU1RFUl9VU0VSX1JPTEU6IHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmNhblNob3dNZXNzYWdlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFJvc3RlckZ1bmN0aW9uVHlwZShcclxuICAgICAgICAgICAgICBSb3N0ZXJGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uQUREX1VTRVJfVE9fUk9TVEVSOiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5jYW5TaG93TWVzc2FnZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRSb3N0ZXJGdW5jdGlvblR5cGUoXHJcbiAgICAgICAgICAgICAgUm9zdGVyRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY29tcG9uZW50SW5zdGFuY2U/LmZvcm1DYW5jZWxcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSIHx8XHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3Um9zdGVyKHRoaXMuZ3JvdXBzU2VydmljZS5zZWxlY3RlZEdyb3VwSW5mbyBhcyBHcm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICA/LmFmdGVyT3BlbmVkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSIHx8XHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgID8uYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCkge1xyXG4gICAgICAgICAgdGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld1Jvc3Rlcih0aGlzLmdyb3Vwc1NlcnZpY2Uuc2VsZWN0ZWRHcm91cEluZm8gYXMgR3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgY29uZmlybWF0aW9uIG1vZGFsIHRvIGdldCB1c2VyIGNvbmZpcm1hdGlvbiB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGdyb3VwLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKGdyb3VwSW5mbzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb25maXJtYXRpb25JbmZvID0gc2NyZWVuVGV4dHM/LmRlbGV0ZUdyb3VwPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3QgZGVsZXRlR3JvdXBNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOlxyXG4gICAgICAgIGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2UgKyBncm91cEluZm8/Lmdyb3VwTmFtZSArICc/JyxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IHRoaXMuYWxpZ25tZW50VHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlR3JvdXBNb2RhbE9wdGlvbnMsXHJcbiAgICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVHcm91cChncm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHNlbmRzIEFQSSBSZXF1ZXN0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZ3JvdXAgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlR3JvdXAoZ3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbGV0ZUdyb3VwVGV4dCA9IHNjcmVlblRleHRzPy5kZWxldGVHcm91cDtcclxuICAgIHRoaXMuZGVsZXRlR3JvdXBOYW1lID0gZ3JvdXBJbmZvPy5ncm91cE5hbWU7XHJcbiAgICBjb25zdCBkZWxldGVHcm91cFBheWxvYWQ6IERlbGV0ZUdyb3VwUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGdyb3VwSWQ6IGdyb3VwSW5mbz8uZ3JvdXBJZCxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUdyb3VwKGRlbGV0ZUdyb3VwUGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwU2VhcmNoQ2xpY2sodGhpcy50cmltbWVkU2VhcmNoVGVybSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUuaWQgIT09ICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLmRlbGV0ZWRHcm91cElkID0gZ3JvdXBJbmZvPy5ncm91cElkO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGdyb3VwSW5mbz8uZ3JvdXBOYW1lICsgZGVsZXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5zdWNjZXNzPy5kZWxldGlvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvd3MgdGhlIHNlYXJjaCBmaWVsZCBvbiBjbGljayBvZiBzZWFyY2ggaWNvbiBpbiBjYXNlIG9mIG1vYmlsZSB2aWV3XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hBY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0dyb3VwRmlsdGVyQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSBGaWx0ZXIgYnkgZHJvcGRvd24gb3B0aW9ucyBvbiBjbGljayBvZiBmaWx0ZXIgaWNvbiBpbiBjYXNlIG9mIG1vYmlsZSB2aWV3XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dHcm91cEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNHcm91cEZpbHRlckFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgdG8gdHJ1ZSBhbmQgbG9hZHMgdGhlIGdyb3VwcyB0aG9zZSBhcmUgY29uZmlndXJlZCB3aXRoIHNlbGVjdGVkIGdyb3VwIHR5cGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFRlcm1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcblxyXG4gIG9uR3JvdXBTZWFyY2hDbGljayhzZWFyY2hUZXJtOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtLnRyaW0oKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZS5TRUFSQ0gpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy50cmltbWVkU2VhcmNoVGVybSAmJlxyXG4gICAgICAodGhpcy5pc0dyb3VwU2VhcmNoQWN0aXZlIHx8IHRoaXMuaXNHcm91cEZpbHRlckFjdGl2ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy50cmltbWVkU2VhcmNoVGVybSkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSAhIXRoaXMudHJpbW1lZFNlYXJjaFRlcm07XHJcbiAgICB0aGlzLm9uR3JvdXBTZWFyY2goKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ3JvdXBzQnlOYW1lQWNyb255bShcclxuICAgICAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtLFxyXG4gICAgICAgIHRoaXMudmlld0dyb3VwVGV4dHM/LmFsbEdyb3VwVHlwZXNPcHRpb24gPT09XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlPy5uYW1lXHJcbiAgICAgICAgICA/IHVuZGVmaW5lZFxyXG4gICAgICAgICAgOiAodGhpcy5zZWxlY3RlZEdyb3VwVHlwZT8uaWQgYXMgbnVtYmVyKVxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSB0aGlzLnZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlPy5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSBbXTtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBzZWxlY3QgZ3JvdXAgdHlwZSBvcHRpb25zIGZyb20gZ3JvdXBUeXBlcyByZXNwb25zZVxyXG4gICAqIEByZXR1cm4geyp9ICB7U2VsZWN0T3B0aW9uW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZU9wdGlvbnMoKTogU2VsZWN0T3B0aW9uW10ge1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICAgIGdyb3VwVHlwZU9wdGlvbnMucHVzaCh7XHJcbiAgICAgIGlkOiAnJyxcclxuICAgICAgbmFtZTogdGhpcy52aWV3R3JvdXBUZXh0cz8uYWxsR3JvdXBUeXBlc09wdGlvbixcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zb3J0R3JvdXBUeXBlcygpPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGdyb3VwVHlwZU9wdGlvbnMucHVzaCh7IGlkOiBub2RlWzBdLCBuYW1lOiBub2RlWzFdPy5uYW1lIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZ3JvdXBUeXBlT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgc29ydGVkIGdyb3VwIHR5cGVzIGJhc2VkIG9uIHRoZSB2aWV3IG9yZGVyLlxyXG4gICAqIEByZXR1cm4gW3N0cmluZywgR3JvdXBUeXBlXVtdXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNvcnRHcm91cFR5cGVzKCk6IFtzdHJpbmcsIEdyb3VwVHlwZV1bXSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5ncm91cFR5cGVzKS5zb3J0KFxyXG4gICAgICAoZ3JvdXBBOiBbc3RyaW5nLCBHcm91cFR5cGVdLCBncm91cEI6IFtzdHJpbmcsIEdyb3VwVHlwZV0pID0+XHJcbiAgICAgICAgKGdyb3VwQVsxXT8udmlld09yZGVyIGFzIG51bWJlcikgLSAoZ3JvdXBCWzFdPy52aWV3T3JkZXIgYXMgbnVtYmVyKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlIGZsYWcgYW5kIGxvYWRzIHBhcmVudCBncm91cCBpbmZvIGFzIHBlciBzZWxlY3RlZCBmaWx0ZXIgb3B0aW9uLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvbkdyb3VwVHlwZUZpbHRlcmVkKGV2ZW50OiBTZWxlY3RPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUgPSBldmVudDtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlID0gISF0aGlzLnNlbGVjdGVkR3JvdXBUeXBlPy5pZDtcclxuICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKSB7XHJcbiAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICB0aGlzLnNob3dHcm91cEZpbHRlcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEdyb3Vwc1BheWxvYWQgPSB7XHJcbiAgICAgIGdyb3VwSWQ6ICcnLFxyXG4gICAgICBncm91cFR5cGVJZDogdGhpcy5zZWxlY3RlZEdyb3VwVHlwZT8uaWQgYXMgc3RyaW5nLFxyXG4gICAgfTtcclxuICAgIHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPSAnJztcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkZJTFRFUik7XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyBhbGwgdGhlIHBhcmVudCBncm91cHMgaW5mb3JtYXRpb24uXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwcyhncm91cD86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzUGF5bG9hZCA9IHtcclxuICAgICAgICBncm91cElkOiBncm91cD8uZ3JvdXBJZCA/PyAnJyxcclxuICAgICAgICBncm91cFR5cGVJZDogJycsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0R3JvdXBzUGF5bG9hZC5ncm91cFR5cGVJZCA9PT0gJycpIHtcclxuICAgICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICAgIGdyb3VwSWQ6ICcnLFxyXG4gICAgICAgIGdyb3VwVHlwZUlkOiAnJyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBzKHRoaXMuZ2V0R3JvdXBzUGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGlmIChncm91cCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hpbGRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBncm91cFR5cGUgaW5mbyB3aXRoIGdyb3VwIHJlc3BvbnNlIGZyb20gZ3JvdXBUeXBlIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHsqfSAge0dyb3VwSW5mb1tdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZTogR3JvdXBJbmZvW10pOiBHcm91cEluZm9bXSB7XHJcbiAgICByZXNwb25zZT8uZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBjb25zdCBncm91cFR5cGVJbmZvOiBHcm91cFR5cGUgPSB0aGlzLmdyb3VwVHlwZXNbbm9kZS5ncm91cFR5cGVdO1xyXG4gICAgICBub2RlLmdyb3VwVHlwZUluZm8gPSBncm91cFR5cGVJbmZvO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSBncm91cCB0eXBlcy5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBUeXBlcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0Rm9ybWF0dGVkR3JvdXBUeXBlcyhcclxuICAgICAgICAgICAgICByZXM/LmJvZHlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RHcm91cE9wdGlvbnMgPSB0aGlzLmdldEdyb3VwVHlwZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZSA9IHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zWzBdO1xyXG4gICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBzdWNjZXNzLCBlcnJvciBhbmQgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLXN1Y2Nlc3Mgb3IgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2hvd0FsZXJ0TWVzc2FnZShhbGVydFR5cGU6IEFsZXJ0VHlwZSwgbWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgIGFsZXJ0VHlwZTogYWxlcnRUeXBlLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENhcHR1cmVzIHRoZSBzZXJ2ZXIgc2lkZSBlcnJvcnMgYW5kIGhhbmRsZXMgaXQgYmFzZWQgb24gdGhlIGN1c3RvbSBvciBIdHRwIGVycm9ycy5cclxuICAgKiBAcGFyYW0ge0h0dHBFcnJvclJlc3BvbnNlfSBlcnJvclxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzOiBzdHJpbmdbXSA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZTogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIGlmIChlcnJvckNvZGVzPy5pbmNsdWRlcygnMTAwOCcpKSB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlWzBdID0gdGhpcy5kZWxldGVHcm91cE5hbWUgKyBlcnJvck1lc3NhZ2U/LlswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoQWxlcnRUeXBlLkVSUk9SLCBlcnJvck1lc3NhZ2UpO1xyXG4gICAgICBpZiAoZXJyb3JDb2Rlcz8uaW5jbHVkZXMoJzEwMTAnKSkgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gW107XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlPy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzIHB4LTRcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ncm91cHNfX2luZm8gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBiLTNcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgID8gJ2llZWVzYS1ncm91cHNfX2luZm8tLXdoaXRlLWJnJ1xyXG4gICAgICAgIDogJ2llZWVzYS1ncm91cHNfX2luZm8tLWJsdWUtYmcnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxwXHJcbiAgICAgIGNsYXNzPVwibWItMFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLXRpdGxlLWxnLTI0IHAtMCdcclxuICAgICAgICAgIDogJ2llZWVzYS1oZWFkbGluZS1sZy0zMiBpZWVlc2EtZ3JvdXBzX19pbmZvX19oZWFkaW5nJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICB7eyBncm91cHNQYWdlSW5mbz8uZ3JvdXBzVGl0bGUgfX1cclxuICAgIDwvcD5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZC1zbS1mbGV4IGQtbWQtbm9uZSBkLWxnLW5vbmUgZC14bC1ub25lIGllZWVzYS1ncm91cHNfX21vYmlsZS1pY29ucyBnYXAtMlwiXHJcbiAgICA+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJjcmVhdGVHcm91cEljb25cIlxyXG4gICAgICAgICpuZ0lmPVwiKHZhbGlkYXRlQWNjZXNzKHBlcm1pc3Npb25UeXBlLkNSRUFURV9ST09UX0dST1VQKSB8fCAgdmFsaWRhdGVBY2Nlc3ModGhpcy5wZXJtaXNzaW9uVHlwZS5NQU5BR0VfQUxMX0dST1VQUykpXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5DcmVhdGVHcm91cEZvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJmaWx0ZXJHcm91cEljb25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwic2hvd0dyb3VwRmlsdGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwic2VhcmNoR3JvdXBJY29uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uR3JvdXBTZWFyY2goKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ncm91cHNfX2FjdGlvbnNcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgID8gJ2llZWVzYS1ncm91cHNfX2FjdGlvbnMtLXdoaXRlLWJnJ1xyXG4gICAgICAgIDogJ2llZWVzYS1ncm91cHNfX2FjdGlvbnMtLWJsdWUtYmcnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19hY3Rpb25zLS1zZWFyY2ggcm93XCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm9yZGVyLTIgb3JkZXItc20tMSBjb2wtMTIgY29sLW1kLTcgY29sLWxnLTcgY29sLXhsLTcgZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTZcIj5cclxuICAgICAgICAgIHt7IGdyb3Vwc1BhZ2VJbmZvPy5ncm91cHNEZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICdpZWVlc2EtZ3JvdXBzX19hY3Rpb25zX19hZGQtZ3JvdXAtYnRuJ1wiXHJcbiAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICB2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZS5DUkVBVEVfUk9PVF9HUk9VUCkgfHxcclxuICAgICAgICAgICAgdmFsaWRhdGVBY2Nlc3ModGhpcy5wZXJtaXNzaW9uVHlwZS5NQU5BR0VfQUxMX0dST1VQUylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBjbGFzcz1cImllZWVzYS1ncm91cHNfX2NyZWF0ZS1zdWJncm91cCBtYXQtdGVydGlhcnktYnV0dG9uIGQtbm9uZSBkLXNtLW5vbmUgZC1tZC1ibG9jayBkLWxnLWJsb2NrIGQteGwtYmxvY2tcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DcmVhdGVHcm91cEZvcm0oKVwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uYXJpYUxhYmVsPy5hZGRHcm91cFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgY29uc3RhbnRzPy52aWV3R3JvdXBzPy5hZGRHcm91cCB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKChpc0dyb3VwU2VhcmNoQWN0aXZlIHx8IGlzR3JvdXBGaWx0ZXJBY3RpdmUpICYmIGlzTW9iaWxlVmlldykgfHxcclxuICAgICAgICAgICFpc01vYmlsZVZpZXdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwib3JkZXItMSBvcmRlci1zbS0yIGNvbC0xMiBjb2wtbWQtNSBjb2wtbGctNSBjb2wteGwtNSBkLWZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGllZWVzYS1zZWFyY2hcclxuICAgICAgICAgICpuZ0lmPVwiaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCAhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAgIChzZWFyY2hWYWx1ZSk9XCJvbkdyb3VwU2VhcmNoQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICBbc2VhcmNoVGVybV09XCJ0cmltbWVkU2VhcmNoVGVybVwiXHJcbiAgICAgICAgICBbc2VhcmNoVHlwZV09XCJzZWFyY2hUeXBlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInNlYXJjaFBsYWNlSG9sZGVyVGV4dFwiXHJcbiAgICAgICAgICBbbWluQ2hhcmFjdGVyVG9TZWFyY2hdPVwibWluQ2hhcmFjdGVyVG9TZWFyY2hcIlxyXG4gICAgICAgICAgW3N1cHBvcnRNZXNzYWdlXT1cInN1cHBvcnRNZXNzYWdlXCJcclxuICAgICAgICA+PC9pZWVlc2Etc2VhcmNoPlxyXG5cclxuICAgICAgICA8aWVlZXNhLXNlbGVjdFxyXG4gICAgICAgICAgKm5nSWY9XCJpc0dyb3VwRmlsdGVyQWN0aXZlIHx8ICFpc01vYmlsZVZpZXdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWVuZCBwdC1sZy00IHB0LW1kLTQgcHQteGwtNFwiXHJcbiAgICAgICAgICBbaXNTb3J0TmVlZGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkcm9wZG93bk9wdGlvbnNdPVwic2VsZWN0R3JvdXBPcHRpb25zXCJcclxuICAgICAgICAgIFtpc0xhYmVsQWxpZ25lZExlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2VsZWN0TGFiZWxdPVwiY29uc3RhbnRzPy52aWV3R3JvdXBzPy5maWx0ZXJCeUxhYmVsXCJcclxuICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbkdyb3VwVHlwZUZpbHRlcmVkKCRldmVudClcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJmaWx0ZXJQbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICAgICAgW3NlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZEdyb3VwVHlwZVwiXHJcbiAgICAgICAgPjwvaWVlZXNhLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpZWVlc2EtdHJlZVxyXG4gICAgICAqbmdJZj1cInBhcmVudEdyb3Vwc0luZm8gJiYgcGFyZW50R3JvdXBzSW5mby5sZW5ndGggPiAwXCJcclxuICAgICAgW3BhcmVudEdyb3Vwc0luZm9dPVwicGFyZW50R3JvdXBzSW5mb1wiXHJcbiAgICAgIFtjaGlsZEdyb3Vwc0luZm9dPVwiY2hpbGRHcm91cHNJbmZvXCJcclxuICAgICAgW2RlbGV0ZWRHcm91cElkSW5mb109XCJkZWxldGVkR3JvdXBJZFwiXHJcbiAgICAgIFtpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmVdPVwiaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlXCJcclxuICAgICAgW3VzZXJHcm91cFBlcm1pc3Npb25zXT1cInVzZXJHcm91cFBlcm1pc3Npb25zXCJcclxuICAgICAgKHRvZ2dsZUdyb3VwQ2xpY2spPVwiZ2V0R3JvdXBzKCRldmVudClcIlxyXG4gICAgICAoY3JlYXRlR3JvdXBDbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKCRldmVudClcIlxyXG4gICAgICAoZGVsZXRlR3JvdXBDbGljayk9XCJvcGVuRGVsZXRlQ29uZmlybWF0aW9uTW9kYWwoJGV2ZW50KVwiXHJcbiAgICAgICh2aWV3Um9zdGVyQ2xpY2spPVwidmlld1Jvc3RlcigkZXZlbnQpXCJcclxuICAgICAgKGVkaXRHcm91cENsaWNrKT1cIm9wZW5FZGl0R3JvdXBGb3JtKCRldmVudClcIlxyXG4gICAgPjwvaWVlZXNhLXRyZWU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
640
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2dyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9ncm91cHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFFTCxtQkFBbUIsRUFFbkIsU0FBUyxFQUNULDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsZUFBZSxFQUNmLFVBQVUsRUFDVixlQUFlLEVBQ2YsY0FBYyxFQUNmLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFL0UsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBRVQsYUFBYSxHQUVkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLFdBQVcsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztB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bnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ3JlYXRlR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHtcclxuICBTZWxlY3RPcHRpb24sXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uLFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBTZWxlY3RDb21wb25lbnQsXHJcbiAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgU2VhcmNoQ29tcG9uZW50LFxyXG4gIE1vZGFsQ29tcG9uZW50XHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHsgVHJlZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcm91cFR5cGUsIEdyb3VwVHlwZUNvbmZpZ1ZhbHVlIH0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIE1vZGFsVHlwZSxcclxuICBBbGVydFR5cGUsXHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgR3JvdXBGdW5jdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9ncm91cC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgUm9zdGVyRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvcm9zdGVyLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHZXRHcm91cHNQYXlsb2FkIH0gZnJvbSAnLi9tb2RlbHMvdmlldy1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IERlbGV0ZUdyb3VwUGF5bG9hZCB9IGZyb20gJy4vbW9kZWxzL2RlbGV0ZS1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEFkZFVzZXJSb3N0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWRkLXVzZXItcm9zdGVyL2FkZC11c2VyLXJvc3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWaWV3Um9zdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ZpZXctcm9zdGVyL3ZpZXctcm9zdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRHcm91cEFuZFBhcmVudEluZm8gfSBmcm9tICcuL21vZGVscy9lZGl0LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdFVzZXJSb2xlc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lZGl0LXVzZXItcm9sZXMvZWRpdC11c2VyLXJvbGVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXItcGVybWlzc2lvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBQZXJtaXNzaW9uLFxyXG4gIFVzZXJQZXJtaXNzaW9uLFxyXG59IGZyb20gJy4vbW9kZWxzL2dyb3VwLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFBlcm1pc3Npb25zTWFwU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ3JvdXAtcGVybWlzc2lvbnMtbWFwLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dnZWRJblVzZXJJbmZvIH0gZnJvbSAnLi9tb2RlbHMvdXNlci5tb2RlbCc7XHJcblxyXG4vKipcclxuICogR3JvdXBzIGNvbXBvbmVudCBpcyBhIHdyYXBwZXIgb3IgY29udGFpbmVyIGNvbXBvbmVudCBmb3IgZ3JvdXBzIG1hbmFnZW1lbnQgcmV1c2FibGUgY29tcG9uZW50IGFuZCBpbiB0aGlzIGNvbXBvbmVudCBpbnRlZ3JhdGVzIGFsbCBncm91cCBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdGllcyBhbmQgdGhpcyB3aWxsIGJlIGVudHJ5IGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgZ3JvdXBzIHdoZW4gaXQgaXMgY29uc3VtZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zLlxyXG4gKiBAY2xhc3MgR3JvdXBzQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWdyb3VwcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBTZWFyY2hDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcclxuICAgIExlZ2VuZENvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncm91cHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0FsZXJ0c1NlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICB2aWV3R3JvdXBUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy52aWV3R3JvdXBzO1xyXG4gIGNyZWF0ZUdyb3VwVGV4dCA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVHcm91cDtcclxuICBlZGl0R3JvdXBUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5lZGl0R3JvdXA7XHJcbiAgZWRpdFVzZXJSb2xlc1RleHRzID0gdGhpcy5jb25zdGFudHM/LmVkaXRVc2VyUm9sZXM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcbiAgaXNHcm91cFNlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzR3JvdXBGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBjaGlsZEdyb3Vwc0luZm8hOiBHcm91cEluZm9bXTtcclxuICBzZWxlY3RlZEdyb3VwVHlwZSE6IFNlbGVjdE9wdGlvbjtcclxuICBwYXJlbnRHcm91cHNJbmZvITogR3JvdXBJbmZvW107XHJcbiAgc2VsZWN0R3JvdXBPcHRpb25zITogU2VsZWN0T3B0aW9uW107XHJcbiAgZGVsZXRlZEdyb3VwSWQhOiBzdHJpbmc7XHJcbiAgZGVsZXRlR3JvdXBOYW1lITogc3RyaW5nO1xyXG4gIGdyb3VwVHlwZXMhOiBHcm91cFR5cGVDb25maWdWYWx1ZTtcclxuICBzZWFyY2hQbGFjZUhvbGRlclRleHQ6IHN0cmluZyA9IHRoaXMudmlld0dyb3VwVGV4dHM/LnBsYWNlaG9sZGVyVGV4dD8uc2VhcmNoO1xyXG4gIGZpbHRlclBsYWNlSG9sZGVyVGV4dDogc3RyaW5nID0gdGhpcy52aWV3R3JvdXBUZXh0cz8ucGxhY2Vob2xkZXJUZXh0Py5maWx0ZXI7XHJcbiAgY3JlYXRlR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5hZGQsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5jcmVhdGVHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuYWRkLFxyXG4gIH07XHJcbiAgZmlsdGVyR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDIsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5maWx0ZXIsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5maWx0ZXJHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuZmlsdGVyLFxyXG4gIH07XHJcbiAgc2VhcmNoR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDMsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5zZWFyY2gsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5zZWFyY2hHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuc2VhcmNoLFxyXG4gIH07XHJcbiAgZ2V0R3JvdXBzUGF5bG9hZDogR2V0R3JvdXBzUGF5bG9hZCA9IHsgZ3JvdXBJZDogJycsIGdyb3VwVHlwZUlkOiAnJyB9O1xyXG4gIEBJbnB1dCgpIGdyb3Vwc1BhZ2VJbmZvOiB7XHJcbiAgICBncm91cHNUaXRsZTogc3RyaW5nO1xyXG4gICAgZ3JvdXBzRGVzY3JpcHRpb246IHN0cmluZztcclxuICB9ID0ge1xyXG4gICAgZ3JvdXBzVGl0bGU6IHRoaXMudmlld0dyb3VwVGV4dHM/Lmdyb3Vwc1RpdGxlLFxyXG4gICAgZ3JvdXBzRGVzY3JpcHRpb246IHRoaXMudmlld0dyb3VwVGV4dHM/Lmdyb3Vwc0Rlc2NyaXB0aW9uLFxyXG4gIH07XHJcbiAgQElucHV0KCkgYXBwbGljYXRpb25JZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBhcGlCYXNlVVJMITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJQZXJtaXNzaW9ucyE6IFVzZXJQZXJtaXNzaW9uW107XHJcbiAgQElucHV0KCkgdXNlckluZm8hOiBMb2dnZWRJblVzZXJJbmZvO1xyXG4gIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGU7XHJcbiAgZnVuY3Rpb25UeXBlITogR3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICBjYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSBmYWxzZTtcclxuICBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBtaW5DaGFyYWN0ZXJUb1NlYXJjaCA9IDM7XHJcbiAgdHJpbW1lZFNlYXJjaFRlcm0gPSAnJztcclxuICB1c2VyR3JvdXBQZXJtaXNzaW9ucyE6IEdyb3VwUGVybWlzc2lvbltdO1xyXG4gIHN1cHBvcnRNZXNzYWdlITogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvbnNTZXJ2aWNlOiBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3VwUGVybWlzc2lvbnNTZXJ2aWNlOiBHcm91cFBlcm1pc3Npb25zTWFwU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSByZXN1bHQ/Lm1hdGNoZXM7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5vcGVuTW9kYWxOb3RpZmllcj8ubmV4dChHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUik7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGdyb3VwcyBjb21wb25lbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRVc2VySW5mbyh0aGlzLnVzZXJJbmZvKTtcclxuICAgIHRoaXMuc3VwcG9ydE1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLnZpZXdHcm91cFRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDEgK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLm1pbkNoYXJhY3RlclRvU2VhcmNoICtcclxuICAgICAgJyAnICtcclxuICAgICAgdGhpcy52aWV3R3JvdXBUZXh0cz8ubWluQ2hhclJlcXVpcmVkVG9TZWFyY2gyO1xyXG4gICAgdGhpcy51c2VyR3JvdXBQZXJtaXNzaW9ucyA9XHJcbiAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zU2VydmljZS5maWx0ZXJVc2VyR3JvdXBQZXJtaXNzaW9ucyhcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9ucyxcclxuICAgICAgICB0aGlzLmdyb3VwUGVybWlzc2lvbnNTZXJ2aWNlPy5nZXRHbG9iYWxHcm91cFBlcm1pc3Npb25zKClcclxuICAgICAgKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRVc2VyR3JvdXBQZXJtaXNzaW9ucyh0aGlzLnVzZXJHcm91cFBlcm1pc3Npb25zKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0QXBwQ29uZmlnKHRoaXMuYXBpQmFzZVVSTCwgdGhpcy51c2VyUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy5nZXRHcm91cFR5cGVzKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/Lm9wZW5Nb2RhbE5vdGlmaWVyXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgID8uc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlLmdldFNlbGVjdGVkR3JvdXBJbmZvKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUpIHtcclxuICAgICAgICAgIHRoaXMub3BlbkVkaXRVc2VyUm9sZXNNb2RhbChzZWxlY3RlZEdyb3VwSW5mbyBhcyBHcm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzcG9uc2UgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUikge1xyXG4gICAgICAgICAgdGhpcy5vcGVuQWRkVXNlclJvc3Rlck1vZGFsKHNlbGVjdGVkR3JvdXBJbmZvIGFzIEdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgICAgcGVybWlzc2lvblR5cGUsXHJcbiAgICAgIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBjcmVhdGUgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IFtwYXJlbnRHcm91cEluZm9dIC1BbiBvcHRpb25hbCBwYXJhbWV0ZXIuIFBhcmVudCBncm91cCBpbmZvIHRvIGJlIHBhc3NlZCBmb3IgY3JlYXRlIGNoaWxkIGdyb3VwLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQ3JlYXRlR3JvdXBGb3JtKHBhcmVudEdyb3VwSW5mbz86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZS5nZXRMb2FkZWRHcm91cFR5cGVzKCk7XHJcbiAgICBpZiAoZ3JvdXBUeXBlcyAmJiBncm91cFR5cGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8ocGFyZW50R3JvdXBJbmZvID8/IHVuZGVmaW5lZCk7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURSk7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmhlYWRpbmcsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICBjb21wb25lbnRSZWZlcmVuY2U6IENyZWF0ZUdyb3VwQ29tcG9uZW50LFxyXG4gICAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURTtcclxuICAgICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1jcmVhdGUtZ3JvdXAnLCBwYXJlbnRHcm91cEluZm8pO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShBbGVydFR5cGUuRVJST1IsIHRoaXMuY29uc3RhbnRzPy5lcnJvcnM/LlsnMTAxMCddKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtFZGl0R3JvdXBBbmRQYXJlbnRJbmZvfSBlZGl0R3JvdXBJbmZvIC1lZGl0aW5nIGdyb3VwIGFuZCBpdHMgcGFyZW50IGdyb3VwIGluZm8gdG8gYmUgcGFzc2VkIGZvciBwb3B1bGF0aW5nIGVkaXQgZ3JvdXAgZm9ybSBmaWVsZHMuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0R3JvdXBGb3JtKGVkaXRHcm91cEluZm86IEVkaXRHcm91cEFuZFBhcmVudEluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8oXHJcbiAgICAgIGVkaXRHcm91cEluZm8/Lmdyb3VwSW5mbyxcclxuICAgICAgZWRpdEdyb3VwSW5mbz8ucGFyZW50R3JvdXBJbmZvXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBlZGl0R3JvdXBJbmZvPy5ncm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVHcm91cENvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1lZGl0LWdyb3VwJywgZWRpdEdyb3VwSW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBlZGl0IHVzZXIgcm9sZXMgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0VXNlclJvbGVzTW9kYWwoc2VsZWN0ZWRHcm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRVc2VySW5mbyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRVc2VySW5mbygpO1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogc2VsZWN0ZWRHcm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgc3ViSGVhZGluZzogc2VsZWN0ZWRVc2VySW5mbz8ubmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBFZGl0VXNlclJvbGVzQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZSh0aGlzLmZ1bmN0aW9uVHlwZSk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWVkaXQtdXNlci1yb2xlcycpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgYWRkIHVzZXJzIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQWRkVXNlclJvc3Rlck1vZGFsKHNlbGVjdGVkR3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IHNlbGVjdGVkR3JvdXBJbmZvPy5ncm91cE5hbWUsXHJcbiAgICAgIHN1YkhlYWRpbmc6IHRoaXMuYWRkVXNlclJvc3RlclRleHRzPy5oZWFkaW5nLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IEFkZFVzZXJSb3N0ZXJDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVI7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKHRoaXMuZnVuY3Rpb25UeXBlKTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtYWRkLXVzZXItcm9zdGVyJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciB1c2VycyBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gZ3JvdXBcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmlld1Jvc3Rlcihncm91cDogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBncm91cD8uZ3JvdXBOYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IFZpZXdSb3N0ZXJDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk1fQU5EX0NPTlRFTlQsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFNlbGVjdGVkR3JvdXBJbmZvKGdyb3VwKTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVI7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUKTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2Etdmlldy1yb3N0ZXInKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgbW9kYWwgY29tcG9uZW50IHdpdGggZm9yIHJlY2VpdmVkIHBhcmFtcyBhbmQgaGFuZGxlcyBmb3JtIHN1Ym1pc3Npb24gc3VjY2VzcyBhbmQgZXJyb3JzLlxyXG4gICAqIEBwYXJhbSB7Kn0gZGlhbG9nT3B0aW9uc1xyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWluZmVycmFibGUtdHlwZXMsIG5vLXVudXNlZC12YXJzXHJcbiAgb3Blbk1vZGFsKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIGRpYWxvZ09wdGlvbnM6IGFueSxcclxuICAgIGNsYXNzTmFtZT86IHN0cmluZyxcclxuICAgIGdyb3VwSW5mbz86IEdyb3VwSW5mbyB8IEVkaXRHcm91cEFuZFBhcmVudEluZm9cclxuICApOiB2b2lkIHtcclxuICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGlhbG9nT3B0aW9ucyxcclxuICAgICAgd2lkdGg6XHJcbiAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSIHx8XHJcbiAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRSB8fFxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVJcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogJ2F1dG8nLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1tb2RhbC1kaWFsb2cnLCBjbGFzc05hbWVdLFxyXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZT8uc3VibWl0Rm9ybVJlc3BvbnNlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgbm8tdW51c2VkLXZhcnNcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuZnVuY3Rpb25UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIEdyb3VwRnVuY3Rpb25UeXBlPy5DUkVBVEU6IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBjcmVhdGVHcm91cEluZm8gPSBncm91cEluZm8gYXMgR3JvdXBJbmZvO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSlcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBTZWFyY2hDbGljayh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZEdyb3VwVHlwZS5pZCAhPT0gJycpXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjcmVhdGVHcm91cEluZm8pIHRoaXMuZ2V0R3JvdXBzKGNyZWF0ZUdyb3VwSW5mbyk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUOiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgdGhpcy5lZGl0R3JvdXBUZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBpc1BhcmVudEdyb3VwQ2hhbmdlZCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmdldFBhcmVudEdyb3VwQ2hhbmdlU3RhdHVzKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVkaXRHcm91cEluZm8gPSBncm91cEluZm8gYXMgRWRpdEdyb3VwQW5kUGFyZW50SW5mbztcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwU2VhcmNoQ2xpY2sodGhpcy50cmltbWVkU2VhcmNoVGVybSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUuaWQgIT09ICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoZWRpdEdyb3VwSW5mbz8ucGFyZW50R3JvdXBJbmZvPy5ncm91cElkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzUGFyZW50R3JvdXBDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldEdyb3VwRnVuY3Rpb25UeXBlKFxyXG4gICAgICAgICAgICAgICAgR3JvdXBGdW5jdGlvblR5cGUuUkVBU1NJR05fUEFSRU5UX0dST1VQXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXMoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLmdldEdyb3VwcyhlZGl0R3JvdXBJbmZvLnBhcmVudEdyb3VwSW5mbyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uRURJVF9ST1NURVJfVVNFUl9ST0xFOiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5jYW5TaG93TWVzc2FnZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRSb3N0ZXJGdW5jdGlvblR5cGUoXHJcbiAgICAgICAgICAgICAgUm9zdGVyRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkFERF9VU0VSX1RPX1JPU1RFUjoge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuY2FuU2hvd01lc3NhZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0Um9zdGVyRnVuY3Rpb25UeXBlKFxyXG4gICAgICAgICAgICAgIFJvc3RlckZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudEluc3RhbmNlPy5mb3JtQ2FuY2VsXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUiB8fFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld1Jvc3Rlcih0aGlzLmdyb3Vwc1NlcnZpY2Uuc2VsZWN0ZWRHcm91cEluZm8gYXMgR3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgPy5hZnRlck9wZW5lZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUiB8fFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICA/LmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwpIHtcclxuICAgICAgICAgIHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdSb3N0ZXIodGhpcy5ncm91cHNTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvIGFzIEdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBnZXQgdXNlciBjb25maXJtYXRpb24gdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBncm91cC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbChncm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgY29uZmlybWF0aW9uSW5mbyA9IHNjcmVlblRleHRzPy5kZWxldGVHcm91cD8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IGRlbGV0ZUdyb3VwTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTpcclxuICAgICAgICBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlICsgZ3JvdXBJbmZvPy5ncm91cE5hbWUgKyAnPycsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiB0aGlzLmFsaWdubWVudFR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRlbGV0ZUdyb3VwTW9kYWxPcHRpb25zLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlR3JvdXAoZ3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBzZW5kcyBBUEkgUmVxdWVzdCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGdyb3VwIGFuZCBoYW5kbGVzIHRoZSBzdWNjZXNzIGFuZCBlcnJvciByZXNwb25zZSBvZiB0aGUgaHR0cCByZXF1ZXN0LlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRlbGV0ZUdyb3VwKGdyb3VwSW5mbzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWxldGVHcm91cFRleHQgPSBzY3JlZW5UZXh0cz8uZGVsZXRlR3JvdXA7XHJcbiAgICB0aGlzLmRlbGV0ZUdyb3VwTmFtZSA9IGdyb3VwSW5mbz8uZ3JvdXBOYW1lO1xyXG4gICAgY29uc3QgZGVsZXRlR3JvdXBQYXlsb2FkOiBEZWxldGVHcm91cFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBncm91cElkOiBncm91cEluZm8/Lmdyb3VwSWQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVHcm91cChkZWxldGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5kZWxldGVkR3JvdXBJZCA9IGdyb3VwSW5mbz8uZ3JvdXBJZDtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICBncm91cEluZm8/Lmdyb3VwTmFtZSArIGRlbGV0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uc3VjY2Vzcz8uZGVsZXRpb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSBzZWFyY2ggZmllbGQgb24gY2xpY2sgb2Ygc2VhcmNoIGljb24gaW4gY2FzZSBvZiBtb2JpbGUgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvbkdyb3VwU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoQWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNHcm91cEZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTaG93cyB0aGUgRmlsdGVyIGJ5IGRyb3Bkb3duIG9wdGlvbnMgb24gY2xpY2sgb2YgZmlsdGVyIGljb24gaW4gY2FzZSBvZiBtb2JpbGUgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93R3JvdXBGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzR3JvdXBGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlIHRvIHRydWUgYW5kIGxvYWRzIHRoZSBncm91cHMgdGhvc2UgYXJlIGNvbmZpZ3VyZWQgd2l0aCBzZWxlY3RlZCBncm91cCB0eXBlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG5cclxuICBvbkdyb3VwU2VhcmNoQ2xpY2soc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50cmltKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGUuU0VBUkNIKTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0gJiZcclxuICAgICAgKHRoaXMuaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCB0aGlzLmlzR3JvdXBGaWx0ZXJBY3RpdmUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlID0gISF0aGlzLnRyaW1tZWRTZWFyY2hUZXJtO1xyXG4gICAgdGhpcy5vbkdyb3VwU2VhcmNoKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdyb3Vwc0J5TmFtZUFjcm9ueW0oXHJcbiAgICAgICAgdGhpcy50cmltbWVkU2VhcmNoVGVybSxcclxuICAgICAgICB0aGlzLnZpZXdHcm91cFRleHRzPy5hbGxHcm91cFR5cGVzT3B0aW9uID09PVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZT8ubmFtZVxyXG4gICAgICAgICAgPyB1bmRlZmluZWRcclxuICAgICAgICAgIDogKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGU/LmlkIGFzIG51bWJlcilcclxuICAgICAgKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gW107XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0IGdyb3VwIHR5cGUgb3B0aW9ucyBmcm9tIGdyb3VwVHlwZXMgcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHsqfSAge1NlbGVjdE9wdGlvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVPcHRpb25zKCk6IFNlbGVjdE9wdGlvbltdIHtcclxuICAgIGNvbnN0IGdyb3VwVHlwZU9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgICBncm91cFR5cGVPcHRpb25zLnB1c2goe1xyXG4gICAgICBpZDogJycsXHJcbiAgICAgIG5hbWU6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFsbEdyb3VwVHlwZXNPcHRpb24sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc29ydEdyb3VwVHlwZXMoKT8uZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBncm91cFR5cGVPcHRpb25zLnB1c2goeyBpZDogbm9kZVswXSwgbmFtZTogbm9kZVsxXT8ubmFtZSB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwVHlwZU9wdGlvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIHNvcnRlZCBncm91cCB0eXBlcyBiYXNlZCBvbiB0aGUgdmlldyBvcmRlci5cclxuICAgKiBAcmV0dXJuIFtzdHJpbmcsIEdyb3VwVHlwZV1bXVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBzb3J0R3JvdXBUeXBlcygpOiBbc3RyaW5nLCBHcm91cFR5cGVdW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuZ3JvdXBUeXBlcykuc29ydChcclxuICAgICAgKGdyb3VwQTogW3N0cmluZywgR3JvdXBUeXBlXSwgZ3JvdXBCOiBbc3RyaW5nLCBHcm91cFR5cGVdKSA9PlxyXG4gICAgICAgIChncm91cEFbMV0/LnZpZXdPcmRlciBhcyBudW1iZXIpIC0gKGdyb3VwQlsxXT8udmlld09yZGVyIGFzIG51bWJlcilcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSBmbGFnIGFuZCBsb2FkcyBwYXJlbnQgZ3JvdXAgaW5mbyBhcyBwZXIgc2VsZWN0ZWQgZmlsdGVyIG9wdGlvbi5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbn0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Hcm91cFR5cGVGaWx0ZXJlZChldmVudDogU2VsZWN0T3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlID0gZXZlbnQ7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA9ICEhdGhpcy5zZWxlY3RlZEdyb3VwVHlwZT8uaWQ7XHJcbiAgICBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSkge1xyXG4gICAgICB0aGlzLm9uR3JvdXBTZWFyY2hDbGljayh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKTtcclxuICAgICAgdGhpcy5zaG93R3JvdXBGaWx0ZXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICBncm91cElkOiAnJyxcclxuICAgICAgZ3JvdXBUeXBlSWQ6IHRoaXMuc2VsZWN0ZWRHcm91cFR5cGU/LmlkIGFzIHN0cmluZyxcclxuICAgIH07XHJcbiAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlPy5GSUxURVIpO1xyXG4gICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgYWxsIHRoZSBwYXJlbnQgZ3JvdXBzIGluZm9ybWF0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cHMoZ3JvdXA/OiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB0aGlzLmdldEdyb3Vwc1BheWxvYWQgPSB7XHJcbiAgICAgICAgZ3JvdXBJZDogZ3JvdXA/Lmdyb3VwSWQgPz8gJycsXHJcbiAgICAgICAgZ3JvdXBUeXBlSWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmdldEdyb3Vwc1BheWxvYWQuZ3JvdXBUeXBlSWQgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzUGF5bG9hZCA9IHtcclxuICAgICAgICBncm91cElkOiAnJyxcclxuICAgICAgICBncm91cFR5cGVJZDogJycsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3Vwcyh0aGlzLmdldEdyb3Vwc1BheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNoaWxkR3JvdXBzSW5mbyA9IHRoaXMudmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U/LmJvZHkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFyZW50R3JvdXBzSW5mbyA9IHRoaXMudmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U/LmJvZHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgZ3JvdXBUeXBlIGluZm8gd2l0aCBncm91cCByZXNwb25zZSBmcm9tIGdyb3VwVHlwZSByZXNwb25zZVxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbmZvW119IHJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7Kn0gIHtHcm91cEluZm9bXX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U6IEdyb3VwSW5mb1tdKTogR3JvdXBJbmZvW10ge1xyXG4gICAgcmVzcG9uc2U/LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgY29uc3QgZ3JvdXBUeXBlSW5mbzogR3JvdXBUeXBlID0gdGhpcy5ncm91cFR5cGVzW25vZGUuZ3JvdXBUeXBlXTtcclxuICAgICAgbm9kZS5ncm91cFR5cGVJbmZvID0gZ3JvdXBUeXBlSW5mbztcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgZ3JvdXAgdHlwZXMuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVHlwZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwVHlwZXMgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldEZvcm1hdHRlZEdyb3VwVHlwZXMoXHJcbiAgICAgICAgICAgICAgcmVzPy5ib2R5XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zID0gdGhpcy5nZXRHcm91cFR5cGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUgPSB0aGlzLnNlbGVjdEdyb3VwT3B0aW9uc1swXTtcclxuICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGFsZXJ0cyBmb3Igc3VjY2VzcywgZXJyb3IgYW5kIHdhcm5pbmcuXHJcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBtZXNzYWdlIC1zdWNjZXNzIG9yIGVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZS5cclxuICAgKiBAcGFyYW0ge0FsZXJ0VHlwZX0gYWxlcnRUeXBlXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dBbGVydE1lc3NhZ2UoYWxlcnRUeXBlOiBBbGVydFR5cGUsIG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZT8uc2hvd01lc3NhZ2Uoe1xyXG4gICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICBhbGVydFR5cGU6IGFsZXJ0VHlwZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDYXB0dXJlcyB0aGUgc2VydmVyIHNpZGUgZXJyb3JzIGFuZCBoYW5kbGVzIGl0IGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaGFuZGxlRXJyb3JzKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXJyb3JDb2Rlczogc3RyaW5nW10gPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJvckNvZGVzKSkge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IHN0cmluZ1tdID1cclxuICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICBpZiAoZXJyb3JDb2Rlcz8uaW5jbHVkZXMoJzEwMDgnKSkge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZVswXSA9IHRoaXMuZGVsZXRlR3JvdXBOYW1lICsgZXJyb3JNZXNzYWdlPy5bMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKEFsZXJ0VHlwZS5FUlJPUiwgZXJyb3JNZXNzYWdlKTtcclxuICAgICAgaWYgKGVycm9yQ29kZXM/LmluY2x1ZGVzKCcxMDEwJykpIHRoaXMucGFyZW50R3JvdXBzSW5mbyA9IFtdO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvciAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZT8uaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaWVlZXNhLWdyb3VwcyBweC00XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19pbmZvIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwYi0zXCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICA/ICdpZWVlc2EtZ3JvdXBzX19pbmZvLS13aGl0ZS1iZydcclxuICAgICAgICA6ICdpZWVlc2EtZ3JvdXBzX19pbmZvLS1ibHVlLWJnJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8cFxyXG4gICAgICBjbGFzcz1cIm1iLTBcIlxyXG4gICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICAgID8gJ2llZWVzYS10aXRsZS1sZy0yNCBwLTAnXHJcbiAgICAgICAgICA6ICdpZWVlc2EtaGVhZGxpbmUtbGctMzIgaWVlZXNhLWdyb3Vwc19faW5mb19faGVhZGluZydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAge3sgZ3JvdXBzUGFnZUluZm8/Lmdyb3Vwc1RpdGxlIH19XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZ3JvdXBzX19tb2JpbGUtaWNvbnMgZ2FwLTJcIlxyXG4gICAgPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiY3JlYXRlR3JvdXBJY29uXCJcclxuICAgICAgICAqbmdJZj1cIih2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZS5DUkVBVEVfUk9PVF9HUk9VUCkgfHwgIHZhbGlkYXRlQWNjZXNzKHRoaXMucGVybWlzc2lvblR5cGUuTUFOQUdFX0FMTF9HUk9VUFMpKVwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiZmlsdGVyR3JvdXBJY29uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cInNob3dHcm91cEZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cInNlYXJjaEdyb3VwSWNvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkdyb3VwU2VhcmNoKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19hY3Rpb25zXCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICA/ICdpZWVlc2EtZ3JvdXBzX19hY3Rpb25zLS13aGl0ZS1iZydcclxuICAgICAgICA6ICdpZWVlc2EtZ3JvdXBzX19hY3Rpb25zLS1ibHVlLWJnJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19fYWN0aW9ucy0tc2VhcmNoIHJvd1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJvcmRlci0yIG9yZGVyLXNtLTEgY29sLTEyIGNvbC1tZC03IGNvbC1sZy03IGNvbC14bC03IGQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgID5cclxuICAgICAgICA8cCBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE2XCI+XHJcbiAgICAgICAgICB7eyBncm91cHNQYWdlSW5mbz8uZ3JvdXBzRGVzY3JpcHRpb24gfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAnaWVlZXNhLWdyb3Vwc19fYWN0aW9uc19fYWRkLWdyb3VwLWJ0bidcIlxyXG4gICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVApIHx8XHJcbiAgICAgICAgICAgIHZhbGlkYXRlQWNjZXNzKHRoaXMucGVybWlzc2lvblR5cGUuTUFOQUdFX0FMTF9HUk9VUFMpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19jcmVhdGUtc3ViZ3JvdXAgbWF0LXRlcnRpYXJ5LWJ1dHRvbiBkLW5vbmUgZC1zbS1ub25lIGQtbWQtYmxvY2sgZC1sZy1ibG9jayBkLXhsLWJsb2NrXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKClcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LnZpZXdHcm91cHM/LmFyaWFMYWJlbD8uYWRkR3JvdXBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGNvbnN0YW50cz8udmlld0dyb3Vwcz8uYWRkR3JvdXAgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICgoaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCBpc0dyb3VwRmlsdGVyQWN0aXZlKSAmJiBpc01vYmlsZVZpZXcpIHx8XHJcbiAgICAgICAgICAhaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cIm9yZGVyLTEgb3JkZXItc20tMiBjb2wtMTIgY29sLW1kLTUgY29sLWxnLTUgY29sLXhsLTUgZC1mbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpZWVlc2Etc2VhcmNoXHJcbiAgICAgICAgICAqbmdJZj1cImlzR3JvdXBTZWFyY2hBY3RpdmUgfHwgIWlzTW9iaWxlVmlld1wiXHJcbiAgICAgICAgICAoc2VhcmNoVmFsdWUpPVwib25Hcm91cFNlYXJjaENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgW3NlYXJjaFRlcm1dPVwidHJpbW1lZFNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzZWFyY2hQbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICAgICAgW21pbkNoYXJhY3RlclRvU2VhcmNoXT1cIm1pbkNoYXJhY3RlclRvU2VhcmNoXCJcclxuICAgICAgICAgIFtzdXBwb3J0TWVzc2FnZV09XCJzdXBwb3J0TWVzc2FnZVwiXHJcbiAgICAgICAgPjwvaWVlZXNhLXNlYXJjaD5cclxuXHJcbiAgICAgICAgPGllZWVzYS1zZWxlY3RcclxuICAgICAgICAgICpuZ0lmPVwiaXNHcm91cEZpbHRlckFjdGl2ZSB8fCAhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1lbmQgcHQtbGctNCBwdC1tZC00IHB0LXhsLTRcIlxyXG4gICAgICAgICAgW2lzU29ydE5lZWRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZHJvcGRvd25PcHRpb25zXT1cInNlbGVjdEdyb3VwT3B0aW9uc1wiXHJcbiAgICAgICAgICBbaXNMYWJlbEFsaWduZWRMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NlbGVjdExhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uZmlsdGVyQnlMYWJlbFwiXHJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25Hcm91cFR5cGVGaWx0ZXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiZmlsdGVyUGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgICAgIFtzZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRHcm91cFR5cGVcIlxyXG4gICAgICAgID48L2llZWVzYS1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aWVlZXNhLXRyZWVcclxuICAgICAgKm5nSWY9XCJwYXJlbnRHcm91cHNJbmZvICYmIHBhcmVudEdyb3Vwc0luZm8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIFtwYXJlbnRHcm91cHNJbmZvXT1cInBhcmVudEdyb3Vwc0luZm9cIlxyXG4gICAgICBbY2hpbGRHcm91cHNJbmZvXT1cImNoaWxkR3JvdXBzSW5mb1wiXHJcbiAgICAgIFtkZWxldGVkR3JvdXBJZEluZm9dPVwiZGVsZXRlZEdyb3VwSWRcIlxyXG4gICAgICBbaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlXT1cImlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZVwiXHJcbiAgICAgIFt1c2VyR3JvdXBQZXJtaXNzaW9uc109XCJ1c2VyR3JvdXBQZXJtaXNzaW9uc1wiXHJcbiAgICAgICh0b2dnbGVHcm91cENsaWNrKT1cImdldEdyb3VwcygkZXZlbnQpXCJcclxuICAgICAgKGNyZWF0ZUdyb3VwQ2xpY2spPVwib3BlbkNyZWF0ZUdyb3VwRm9ybSgkZXZlbnQpXCJcclxuICAgICAgKGRlbGV0ZUdyb3VwQ2xpY2spPVwib3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKCRldmVudClcIlxyXG4gICAgICAodmlld1Jvc3RlckNsaWNrKT1cInZpZXdSb3N0ZXIoJGV2ZW50KVwiXHJcbiAgICAgIChlZGl0R3JvdXBDbGljayk9XCJvcGVuRWRpdEdyb3VwRm9ybSgkZXZlbnQpXCJcclxuICAgID48L2llZWVzYS10cmVlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|