@schneideress/dashboardframework 0.0.231 → 0.0.233
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/bundles/schneideress-dashboardframework.umd.js +120 -48
- package/bundles/schneideress-dashboardframework.umd.js.map +1 -1
- package/bundles/schneideress-dashboardframework.umd.min.js +12 -12
- package/bundles/schneideress-dashboardframework.umd.min.js.map +1 -1
- package/esm2015/gridster/index.js +1 -1
- package/esm2015/gridster/lib/gridster.component.js +1 -1
- package/esm2015/gridster/lib/gridster.interface.js +1 -1
- package/esm2015/gridster/lib/gridster.module.js +1 -1
- package/esm2015/gridster/lib/gridsterCompact.service.js +1 -1
- package/esm2015/gridster/lib/gridsterConfig.constant.js +1 -1
- package/esm2015/gridster/lib/gridsterConfig.interface.js +1 -1
- package/esm2015/gridster/lib/gridsterConfigS.interface.js +1 -1
- package/esm2015/gridster/lib/gridsterDraggable.service.js +1 -1
- package/esm2015/gridster/lib/gridsterEmptyCell.service.js +1 -1
- package/esm2015/gridster/lib/gridsterItem.component.js +1 -1
- package/esm2015/gridster/lib/gridsterItem.interface.js +1 -1
- package/esm2015/gridster/lib/gridsterItemComponent.interface.js +1 -1
- package/esm2015/gridster/lib/gridsterPreview.component.js +1 -1
- package/esm2015/gridster/lib/gridsterPush.service.js +1 -1
- package/esm2015/gridster/lib/gridsterPushResize.service.js +1 -1
- package/esm2015/gridster/lib/gridsterRenderer.service.js +1 -1
- package/esm2015/gridster/lib/gridsterResizable.service.js +1 -1
- package/esm2015/gridster/lib/gridsterResizeEventType.interface.js +1 -1
- package/esm2015/gridster/lib/gridsterScroll.service.js +1 -1
- package/esm2015/gridster/lib/gridsterSwap.service.js +1 -1
- package/esm2015/gridster/lib/gridsterUtils.service.js +1 -1
- package/esm2015/lib/custom.notifier.options.js +1 -1
- package/esm2015/lib/ra-dashboard-area/ra.dashboard.area.js +46 -2
- package/esm2015/lib/ra-widget-container/ra.widget.container.component.js +4 -2
- package/esm2015/lib/ra.base.dashboard.filter.js +26 -10
- package/esm2015/lib/ra.base.dashboard.template.js +1 -1
- package/esm2015/lib/ra.dashbard.event.bus.js +1 -1
- package/esm2015/lib/ra.dashboard.module.js +1 -1
- package/esm2015/lib/ra.dashboard.responsive.service.js +1 -1
- package/esm2015/lib/ra.dashboard.service.js +1 -1
- package/esm2015/lib/ra.event.enum.js +4 -2
- package/esm2015/lib/ra.gridster.config.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/esm2015/schneideress-dashboardframework.js +1 -1
- package/esm5/gridster/index.js +1 -1
- package/esm5/gridster/lib/gridster.component.js +1 -1
- package/esm5/gridster/lib/gridster.interface.js +1 -1
- package/esm5/gridster/lib/gridster.module.js +1 -1
- package/esm5/gridster/lib/gridsterCompact.service.js +1 -1
- package/esm5/gridster/lib/gridsterConfig.constant.js +1 -1
- package/esm5/gridster/lib/gridsterConfig.interface.js +1 -1
- package/esm5/gridster/lib/gridsterConfigS.interface.js +1 -1
- package/esm5/gridster/lib/gridsterDraggable.service.js +1 -1
- package/esm5/gridster/lib/gridsterEmptyCell.service.js +1 -1
- package/esm5/gridster/lib/gridsterItem.component.js +1 -1
- package/esm5/gridster/lib/gridsterItem.interface.js +1 -1
- package/esm5/gridster/lib/gridsterItemComponent.interface.js +1 -1
- package/esm5/gridster/lib/gridsterPreview.component.js +1 -1
- package/esm5/gridster/lib/gridsterPush.service.js +1 -1
- package/esm5/gridster/lib/gridsterPushResize.service.js +1 -1
- package/esm5/gridster/lib/gridsterRenderer.service.js +1 -1
- package/esm5/gridster/lib/gridsterResizable.service.js +1 -1
- package/esm5/gridster/lib/gridsterResizeEventType.interface.js +1 -1
- package/esm5/gridster/lib/gridsterScroll.service.js +1 -1
- package/esm5/gridster/lib/gridsterSwap.service.js +1 -1
- package/esm5/gridster/lib/gridsterUtils.service.js +1 -1
- package/esm5/lib/custom.notifier.options.js +1 -1
- package/esm5/lib/ra-dashboard-area/ra.dashboard.area.js +49 -2
- package/esm5/lib/ra-widget-container/ra.widget.container.component.js +4 -2
- package/esm5/lib/ra.base.dashboard.filter.js +26 -10
- package/esm5/lib/ra.base.dashboard.template.js +1 -1
- package/esm5/lib/ra.dashbard.event.bus.js +1 -1
- package/esm5/lib/ra.dashboard.module.js +1 -1
- package/esm5/lib/ra.dashboard.responsive.service.js +1 -1
- package/esm5/lib/ra.dashboard.service.js +1 -1
- package/esm5/lib/ra.event.enum.js +4 -2
- package/esm5/lib/ra.gridster.config.js +1 -1
- package/esm5/public-api.js +1 -1
- package/esm5/schneideress-dashboardframework.js +1 -1
- package/fesm2015/schneideress-dashboardframework.js +103 -39
- package/fesm2015/schneideress-dashboardframework.js.map +1 -1
- package/fesm5/schneideress-dashboardframework.js +106 -39
- package/fesm5/schneideress-dashboardframework.js.map +1 -1
- package/lib/ra-dashboard-area/ra.dashboard.area.d.ts +2 -0
- package/lib/ra.base.dashboard.filter.d.ts +3 -1
- package/lib/ra.event.enum.d.ts +3 -1
- package/package.json +1 -1
- package/schneideress-dashboardframework.metadata.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra-widget-container/ra.widget.container.component.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import * as tslib_1 from "tslib";
|
|
7
7
|
import { Component, Input, ViewChild, ElementRef, EventEmitter, Output, NgZone, Renderer2 } from '@angular/core';
|
|
@@ -294,6 +294,7 @@ var RAWidgetContainer = /** @class */ (function () {
|
|
|
294
294
|
widgetContainerContext.ngxService.stop();
|
|
295
295
|
if (status) {
|
|
296
296
|
widgetContainerContext.widgetDeleted.emit(_this.data.widgetInfo.widgetInstanceId);
|
|
297
|
+
_this.setInapplicableFilters(undefined, _this.data.widgetInfo.widgetInstanceId);
|
|
297
298
|
}
|
|
298
299
|
else {
|
|
299
300
|
widgetContainerContext.notifier.notify('error', " " + _this.translateService.translate('FailedToRemoveWidget') + " (" + _this.translateService.translate('Common.' + _this.data.widgetInfo.widgetTitle, true) + ")!");
|
|
@@ -311,6 +312,7 @@ var RAWidgetContainer = /** @class */ (function () {
|
|
|
311
312
|
*/
|
|
312
313
|
function () {
|
|
313
314
|
this.raDashboardEventBus.publish(RAEvent.MoveWidget, this.data.widgetInfo);
|
|
315
|
+
this.setInapplicableFilters(undefined, this.data.widgetInfo.widgetInstanceId);
|
|
314
316
|
// this.dashboardService.moveWidget(widgetInfo);
|
|
315
317
|
};
|
|
316
318
|
/** To Copy Current widget with same configuration*/
|
|
@@ -1322,4 +1324,4 @@ if (false) {
|
|
|
1322
1324
|
*/
|
|
1323
1325
|
RAWidgetContainer.prototype.raPermissionService;
|
|
1324
1326
|
}
|
|
1325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEud2lkZ2V0LmNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS13aWRnZXQtY29udGFpbmVyL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBb0UsTUFBTSxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4TSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBZ0QsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2xGO0lBaUZFLDJCQUFvQixnQkFBb0MsRUFDOUMsVUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLE1BQWMsRUFDZCxRQUF5QixFQUN6QixRQUFtQixFQUNuQixtQkFBd0M7UUFObEQsaUJBaUJDO1FBakJtQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQzlDLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsV0FBTSxH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QUN0RCx1Q0FBc0M7Ozs7O0lBQ3RDLDZDQUE0Qzs7Ozs7SUFDNUMsbUNBQXNCOzs7OztJQUN0QixxQ0FBaUM7Ozs7O0lBQ2pDLHFDQUEyQjs7Ozs7SUFDM0IsZ0RBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZSwgT25EZXN0cm95LCBOZ1pvbmUsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmFEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi8uLi9yYS5kYXNoYm9hcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJBRGFzaGJvYXJkRXZlbnRCdXMgfSBmcm9tICcuLi9yYS5kYXNoYmFyZC5ldmVudC5idXMnO1xyXG5pbXBvcnQgeyBSQUV2ZW50LCBSQUV2ZW50S2V5IH0gZnJvbSAnLi4vcmEuZXZlbnQuZW51bSc7XHJcbmltcG9ydCB7IElBcHBDb25maWcsIElXaWRnZXRDb25maWdGaWx0ZXIsIElXaWRnZXRJbmZvLCBSQURvd25sb2FkVHlwZSwgUkFEb3dubG9hZE9wdGlvbiwgUmFXaWRnZXRsb2NrU3RhdHVzLCBXaWRnZXRWaWV3U3RhdGUsIEljb25maWdDaGFuZ2VzIH0gZnJvbSAnQHNjaG5laWRlcmVzcy93aWRnZXRmcmFtZXdvcmsnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1ub3RpZmllcic7XHJcbmltcG9ydCB7IFJBVHJhbnNsYXRlU2VydmljZSwgUkFQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0BzY2huZWlkZXJlc3MvcmEtY29tbW9uJztcclxuXHJcbmRlY2xhcmUgdmFyIGpRdWVyeTogYW55O1xyXG5kZWNsYXJlIHZhciB3aW5kb3c6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmEtd2lkZ2V0LWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSQVdpZGdldENvbnRhaW5lciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgc2hvd1BhbmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIGlzV2lkZ2V0TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB3aWRnZXRFbGVtZW50OiBhbnk7XHJcbiAgcHJpdmF0ZSBjb25maWdDaGFuZ2VkOiBhbnk7XHJcbiAgcHVibGljIHdpZGdldEhlaWdodDogbnVtYmVyO1xyXG4gIHB1YmxpYyBsb2NrQ2xhc3M6IHN0cmluZyA9IFwidW5sb2NrZWRcIjtcclxuICBwdWJsaWMgbG9ja1N0YXR1czogUmFXaWRnZXRsb2NrU3RhdHVzID0gUmFXaWRnZXRsb2NrU3RhdHVzLlVubG9ja2VkO1xyXG4gIHB1YmxpYyBpc0Rvd25sb2FkSWNvblZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNDaGFydERvd25sb2FkVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0dyaWREb3dubG9hZFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZG93bmxvYWRJY29uVHlwZTogUkFEb3dubG9hZFR5cGU7XHJcbiAgcHVibGljIGVuYWJsZVRpdGxlTGluZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0dsb2JhbEZpbHRlckFwcGxpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdG9vbFRpcFZhbHVlOiBzdHJpbmcgPSAnICAnO1xyXG4gIHB1YmxpYyB0b29sVGlwV2lkdGg6IHN0cmluZyA9ICcwcHgnO1xyXG4gIHB1YmxpYyBsb2NrRGV0YWlsczogYW55O1xyXG4gIHB1YmxpYyBsb2NrVGVtcGxhdGVJbmZvOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHB1YmxpYyBlZGl0VG9vbFRpcFZhbHVlOiBzdHJpbmcgPSAnICc7XHJcbiAgcHVibGljIGNvcHlUb29sVGlwVmFsdWU6IHN0cmluZyA9ICcgJztcclxuICBwdWJsaWMgbW92ZVRvb2xUaXBWYWx1ZTogc3RyaW5nID0gJyAnO1xyXG4gIHB1YmxpYyBleGNlbFRvb2xUaXBWYWx1ZTogc3RyaW5nID0gJyAnO1xyXG4gIHB1YmxpYyBkZWxldGVUb29sVGlwVmFsdWU6IHN0cmluZyA9ICcgJztcclxuICBwdWJsaWMgZWRpdFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBjb3B5VGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIG1vdmVUZXh0OiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZXhjZWxUZXh0OiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZGVsZXRlVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIGVkaXRUb29sVGlwV2lkdGg6IHN0cmluZyA9ICcwcHgnO1xyXG4gIHB1YmxpYyBjb3B5VG9vbFRpcFdpZHRoOiBzdHJpbmcgPSAnMHB4JztcclxuICBwdWJsaWMgbW92ZVRvb2xUaXBXaWR0aDogc3RyaW5nID0gJzBweCc7XHJcbiAgcHVibGljIGV4Y2VsVG9vbFRpcFdpZHRoOiBzdHJpbmcgPSAnMHB4JztcclxuICBwdWJsaWMgZGVsZXRlVG9vbFRpcFdpZHRoOiBzdHJpbmcgPSAnMHB4JztcclxuICBwdWJsaWMgd2lkZ2V0U2V0dGluZ3M6IGFueTtcclxuICBwdWJsaWMgbm9QYWRkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzTW91c2VIb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U2V0dGluZ3NMaW5rOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgaXNLcGlWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFeGNlbGw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBoaWRlVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaW5hcHBsaWNhYmxlRmlsdGVyczogYW55ID0gW107XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdjdGxXaWRnZXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY3RsV2lkZ2V0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3dpZGdldERyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHdpZGdldERyb3Bkb3duOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3djV3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB3Y1dyYXBwZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgnd2lkZ2V0LWluc3RhbmNlLWlkJykgd2lkZ2V0SW5zdGFuY2VJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnZ2xvYmFsLWZpbHRlcicpIGdsb2JhbEZpbHRlcjogYW55O1xyXG4gIEBJbnB1dCgnZGF0YScpIGRhdGE6IGFueTtcclxuICBASW5wdXQoJ2V2ZW50LWJ1cycpIHJhRGFzaGJvYXJkRXZlbnRCdXM6IFJBRGFzaGJvYXJkRXZlbnRCdXM7XHJcbiAgQElucHV0KCdhcHAtY29uZmlnJykgYXBwQ29uZmlnOiBJQXBwQ29uZmlnO1xyXG4gIEBJbnB1dCgnd2lkZ2V0LXdpZHRoJykgd2lkdGg6IG51bWJlcjtcclxuICBASW5wdXQoJ3dpZGdldC1oZWlnaHQnKSBoZWlnaHQ6IG51bWJlcjtcclxuICBASW5wdXQoJ2dyaWQtY2VsbC1oZWlnaHQnKSBncmlkQ2VsbEhlaWdodDogbnVtYmVyO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIHdpZGdldERlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlQXBwbGllZEZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcHVibGljIGxvY2tUaXRsZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc1dpZGdldFN0YXRlQXBwbGljYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB3aWRnZXRFbXB0eVN0YXRlOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZG9tUmVzaXplZDogYm9vbGVhbjtcclxuICBwdWJsaWMgbG9ja1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbG9ja2VkRmllbGRzOiBhbnk7XHJcbiAgcHVibGljIGRldGFpbFBhZ2VVcmw6IHN0cmluZztcclxuICBwdWJsaWMgYmFzZVVybDogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc1dpZGdldE1nbW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIFdpZGdldERpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIGVuYWJsZVRpdGxlTGluZUFjdHVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnZG9tLXJlc2l6ZWQnKVxyXG4gIHNldCBzZXRSZXNpemVkKHJlc2l6ZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaW52b2tlV2lkZ2V0UmVzaXplZEV2ZW50KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhc2hib2FyZFNlcnZpY2U6IFJhRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgbmd4U2VydmljZTogTmd4VWlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBSQVRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBub3RpZmllcjogTm90aWZpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByYVBlcm1pc3Npb25TZXJ2aWNlOiBSQVBlcm1pc3Npb25TZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZS50YXJnZXQuY2xhc3NOYW1lKSB7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTmFtZSAhPSAnZmFsIGZhLWVsbGlwc2lzLXYgd2lkZ2V0LW1lbnUtZWxsaXBzZScpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlbW92ZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5XaWRnZXREaXNwbGF5TmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi4nICsgdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0VGl0bGUsIHRydWUpO1xyXG4gIH1cclxuICBnZXQgd2lkZ2V0Vmlld1N0YXRlKCkgeyByZXR1cm4gV2lkZ2V0Vmlld1N0YXRlOyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNXaWRnZXRNZ21udCA9IHRoaXMucmFQZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyYS53aWRnZXRtYW5hZ2VtZW50Jyk7XHJcbiAgICBpZiAoY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cy5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgdGhpcy5jb25maWdDaGFuZ2VkID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZVdpdGhLZXkoUkFFdmVudC5Db25maWdDaGFuZ2VkLCBSQUV2ZW50S2V5LldpZGdldEluc3RhbmNlSWQsIHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQudG9TdHJpbmcoKSkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnQ2hhbmdlRXZlbnRIYW5kbGVyKGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50ICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmdsb2JhbEZpbHRlci5wcmV2aW91c1ZhbHVlKSB7XHJcblxyXG4gICAgICBsZXQgZmlsdGVyT2JqID0gdGhpcy5nZXRQYXJzZWRDb25maWcodGhpcy5nbG9iYWxGaWx0ZXIpO1xyXG4gICAgICBpZiAoZmlsdGVyT2JqLldpZGdldEluc3RhbmNlSWQpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCAhPSBmaWx0ZXJPYmouV2lkZ2V0SW5zdGFuY2VJZClcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFdpZGdldCh0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoV2lkZ2V0KHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLndpZHRoICYmIGNoYW5nZXMud2lkdGguY3VycmVudFZhbHVlICE9IGNoYW5nZXMud2lkdGgucHJldmlvdXNWYWx1ZSB8fFxyXG4gICAgICAoY2hhbmdlcy5oZWlnaHQgJiYgY2hhbmdlcy5oZWlnaHQuY3VycmVudFZhbHVlICE9IGNoYW5nZXMuaGVpZ2h0LnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuaW52b2tlV2lkZ2V0UmVzaXplZEV2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnZva2VXaWRnZXRSZXNpemVkRXZlbnQoKSB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50KSB7XHJcbiAgICAgIGxldCBzaXplOiBhbnkgPSB7fTtcclxuICAgICAgc2l6ZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcclxuICAgICAgc2l6ZS53aWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICAgIHNpemUuY2VsbEhlaWdodCA9IHRoaXMuZ3JpZENlbGxIZWlnaHQ7XHJcbiAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC53aWRnZXRSZXNpemVkKHNpemUpO1xyXG4gICAgICBpZiAodGhpcy5oZWlnaHQgPT0gMSB8fCB0aGlzLndpZHRoID09IDEpXHJcbiAgICAgICAgdGhpcy5pc0twaVZpZXcgPSB0cnVlXHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmlzS3BpVmlldyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG1vdXNlSG92ZXIoaXNIb3ZlciA9IHRydWUpIHtcclxuICAgIHRoaXMuaXNNb3VzZUhvdmVyID0gaXNIb3ZlcjtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50KSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy53aWRnZXRFbGVtZW50LmhvdmVyU3RhdHVzID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuaG92ZXJTdGF0dXMoaXNIb3Zlcik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCd3aWRnZXQgZnJhbWV3b3JrIG91dGRhdGVkLCBwbGVhc2UgdXBkYXRlIHRvIHZlcnNpb24gMC4wLjk2Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgfSlcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGl0ZW0gPSBqUXVlcnkodGhpcy53Y1dyYXBwZXIubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnZ3JpZHN0ZXItaXRlbScpO1xyXG4gICAgICBpdGVtLmJpbmQoJ21vdXNlZW50ZXInLCAoKSA9PiB7XHJcbiAgICAgICAgd2luZG93LmdyaWRzdGVySXRlbUVudGVyID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpdGVtLmJpbmQoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgd2luZG93LmdyaWRzdGVySXRlbUVudGVyID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXdpbmRvdy5tb3VzZU92ZXJXaWRnZXRNZW51KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnQ2hhbmdlZClcclxuICAgICAgdGhpcy5jb25maWdDaGFuZ2VkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIFRvIEVkaXQgY3VycmVudCB3aWRnZXQgY29uZmlndXJhdGlvbiovXHJcbiAgcHVibGljIGVkaXRXaWRnZXQoKSB7XHJcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyOiBJV2lkZ2V0Q29uZmlnRmlsdGVyO1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0RWxlbWVudCAmJiB0eXBlb2YgKHRoaXMud2lkZ2V0RWxlbWVudC5nZXRDb25maWdGaWx0ZXIpID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgbGV0IGNvbmZpZ0RhdGEgPSB0aGlzLndpZGdldEVsZW1lbnQuZ2V0Q29uZmlnRmlsdGVyKCk7XHJcbiAgICAgIGlmIChjb25maWdEYXRhKSB7XHJcbiAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyID0gY29uZmlnRGF0YTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHdpZGdldENvbmZpZ0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LldpZGdldEVkaXRDbGlja2VkLCB3aWRnZXRDb25maWdGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB3aWRnZXRDb25maWdGaWx0ZXJEYXRhID0gdGhpcy5nZW5lcmF0ZUNvbmZpZ0ZpbHRlcihmYWxzZSk7XHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuV2lkZ2V0RWRpdENsaWNrZWQsIHdpZGdldENvbmZpZ0ZpbHRlckRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFRvIERlbGV0ZSBjdXJyZW50IHdpZGdldCBmcm9tIERPTSovXHJcbiAgcHVibGljIGRlbGV0ZVdpZGdldCgpIHtcclxuICAgIGxldCB3aWRnZXRDb250YWluZXJDb250ZXh0ID0gdGhpcztcclxuICAgIHdpZGdldENvbnRhaW5lckNvbnRleHQubmd4U2VydmljZS5zdGFydCgpO1xyXG4gICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC5kYXNoYm9hcmRTZXJ2aWNlLmRlbGV0ZVdpZGdldCh0aGlzLmRhdGEud2lkZ2V0SW5mbywgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5neFNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC53aWRnZXREZWxldGVkLmVtaXQodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC5ub3RpZmllci5ub3RpZnkoJ2Vycm9yJywgXCIgXCIgKyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdGYWlsZWRUb1JlbW92ZVdpZGdldCcpICsgXCIgIChcIiArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi4nICsgdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0VGl0bGUsIHRydWUpICsgXCIpIVwiKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIE1vdmUgb3IgY2hhbmdlIHBvc2l0aW9uIGlmIGN1cnJlbnQgd2lkZ2V0IGNvbnRhaW5lciovXHJcbiAgcHVibGljIG1vdmVXaWRnZXQoKSB7XHJcbiAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50Lk1vdmVXaWRnZXQsIHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcclxuICAgIC8vIHRoaXMuZGFzaGJvYXJkU2VydmljZS5tb3ZlV2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIENvcHkgQ3VycmVudCB3aWRnZXQgd2l0aCBzYW1lIGNvbmZpZ3VyYXRpb24qL1xyXG4gIHB1YmxpYyBjb3B5V2lkZ2V0KCkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5Db3B5V2lkZ2V0LCB0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XHJcbiAgICAvL3RoaXMuZGFzaGJvYXJkU2VydmljZS5jb3B5V2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZpc2l0UGFnZSgpIHtcclxuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuZ2V0SG9zdFVybCgpO1xyXG4gICAgaWYgKHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldFR5cGUgPT0gJ0FWIFdpZGdldCcpXHJcbiAgICAgIHRoaXMuYmFzZVVybCA9ICcnO1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArIHRoaXMuZGV0YWlsUGFnZVVybDtcclxuICAgIGlmICh0aGlzLmRhdGEud2lkZ2V0SW5mbyAmJiB0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLndpZGdldFNldHRpbmdzID0gdGhpcy5nZXRQYXJzZWRDb25maWcodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0U2V0dGluZ3MpO1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRTZXR0aW5ncy5jdXN0b21QYWdlUGFyYW1zKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMud2lkZ2V0RWxlbWVudC5nZXRQYWdlUGFyYW1zQ2xpY2tlZCgpO1xyXG4gICAgICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRUeXBlID09ICdBViBXaWRnZXQnKVxyXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyBwYXJhbXM7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHVybCA9IHVybCArICc/JyArIHBhcmFtcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEhvc3RVcmwoKSB7XHJcbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICh3aW5kb3cubG9jYXRpb24ucG9ydCA/ICc6JyArIHdpbmRvdy5sb2NhdGlvbi5wb3J0IDogJycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbmZpZ0NoYW5nZUV2ZW50SGFuZGxlcih3aWRnZXRJbmZvKSB7XHJcbiAgICB0aGlzLmRhdGEud2lkZ2V0SW5mbyA9IHdpZGdldEluZm87XHJcbiAgICBpZiAodGhpcy5ncmlkQ2VsbEhlaWdodCA+IDApIHtcclxuICAgICAgdGhpcy5kYXRhLndpZGdldEluZm8ucm93SGVpZ2h0ID0gdGhpcy5ncmlkQ2VsbEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLndpZGdldEVsZW1lbnQgJiYgdHlwZW9mICh0aGlzLndpZGdldEVsZW1lbnQuc2V0Q29uZmlnRmlsdGVyKSA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5zZXRDb25maWdGaWx0ZXIodGhpcy5nZW5lcmF0ZUNvbmZpZ0ZpbHRlcih0cnVlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKCd3aWRnZXQgZnJhbWV3b3JrIG91dGRhdGVkLCBwbGVhc2UgdXBkYXRlIHRvIHZlcnNpb24gMC4wLjk4Jyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8sIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb25maWdGaWx0ZXIoY29uZmlnQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyRGF0YSA9IDxJV2lkZ2V0Q29uZmlnRmlsdGVyPntcclxuICAgICAgYXBwQ29uZmlnOiB0aGlzLmFwcENvbmZpZyxcclxuICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmdsb2JhbEZpbHRlcixcclxuICAgICAgd2lkZ2V0SW5mbzogdGhpcy5kYXRhLndpZGdldEluZm8sXHJcbiAgICAgIGNvbmZpZzogdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcsXHJcbiAgICAgIGNvbmZpZ0NoYW5nZXM6IHRoaXMuZ2V0Q29uZmlnQ2hhbmdlcyhjb25maWdDaGFuZ2VkKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldENvbmZpZ0ZpbHRlckRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqICBUbyBsb2FkIGV4dGVybmFsIGN1c3RvbSBlbGVtZW50IHRvIHRoZSB3aWRnZXQgY29udGFpbmVyKi9cclxuICBhc3luYyBsb2FkV2lkZ2V0KHdpZGdldEluZm86IGFueSkge1xyXG4gICAgd2lkZ2V0SW5mby5yb3dIZWlnaHQgPSB0aGlzLmdyaWRDZWxsSGVpZ2h0O1xyXG4gICAgbGV0IHdpZGdldENvbmZpZ0ZpbHRlciA9IDxJV2lkZ2V0Q29uZmlnRmlsdGVyPntcclxuICAgICAgY29uZmlnOiB3aWRnZXRJbmZvLndpZGdldENvbmZpZ0luZm8uY29uZmlnLFxyXG4gICAgICBnbG9iYWxGaWx0ZXI6IHRoaXMuZ2xvYmFsRmlsdGVyLFxyXG4gICAgICBjb25maWdDaGFuZ2VzOiB0aGlzLmdldENvbmZpZ0NoYW5nZXMoZmFsc2UpXHJcbiAgICB9XHJcbiAgICBpZiAod2lkZ2V0SW5mby53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLndpZGdldFNldHRpbmdzID0gdGhpcy5nZXRQYXJzZWRDb25maWcod2lkZ2V0SW5mby53aWRnZXRTZXR0aW5ncyk7XHJcbiAgICAgIHRoaXMuYXBwbGF5V2lkZ2V0U2V0dGluZ3ModGhpcy53aWRnZXRTZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRldGFpbFBhZ2VVcmwgPSB3aWRnZXRJbmZvLmRldGFpbFBhZ2VVcmw7XHJcbiAgICBsZXQgbWUgPSB0aGlzO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmxvYWRFeHRlcm5hbFNjcmlwdCh3aWRnZXRJbmZvLnNjcmlwdFVybCwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldE5vdENvbmZpZ3VyZWRTdGF0ZSh3aWRnZXRJbmZvKTtcclxuICAgICAgbGV0IGFwcE1vZHVsZSA9IHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldE5hbWU7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEud2lkZ2V0SW5mby5hcHBsaWNhdGlvbk1vZHVsZSAmJiB0aGlzLmRhdGEud2lkZ2V0SW5mby5hcHBsaWNhdGlvbk1vZHVsZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgYXBwTW9kdWxlID0gdGhpcy5kYXRhLndpZGdldEluZm8uYXBwbGljYXRpb25Nb2R1bGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmxvYWRUcmFuc2xhdGlvbnModGhpcy5hcHBDb25maWcuYXBwTWFuYWdlbWVudEJhc2VVcmwsIGFwcE1vZHVsZSwgZmFsc2UpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIG1lLndpZGdldEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHdpZGdldEluZm8uY3VzdG9tVGFnKTtcclxuICAgICAgICBtZS53aWRnZXRFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZGdldC1pbnN0YW5jZS1pZFwiLCB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ3dpZGdldGluaXRpYXRlZCcgKyB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBtZS53aWRnZXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ29uLXdpZGdldC1yZXNwb25kJywgKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHZhciB0eXBlOiBzdHJpbmcgPSBlLmRldGFpbC50eXBlO1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnb25EYXRhTG9hZCc6XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbC5kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgIG1lLnNob3dQYW5lbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBtZS5zaG93UGFuZWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvbkNvbmZpZ0VkaXRDbGlja2VkJzpcclxuICAgICAgICAgICAgICAgICAgbWUuZWRpdFdpZGdldCgpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29uRW5hYmxlRGVmYXVsdFN0YXRlJzpcclxuICAgICAgICAgICAgICAgICAgbWUuc2V0RW1wdHlTdGF0ZShlLmRldGFpbC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvblNldFRpdGxlVW5kZXJsaW5lJzpcclxuICAgICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsLmRhdGEgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVRpdGxlTGluZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVRpdGxlTGluZSA9IHRoaXMuZW5hYmxlVGl0bGVMaW5lQWN0dWFsO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29uV2lkZ2V0VGl0bGVIaWRkZW4nOlxyXG4gICAgICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwuZGF0YSA9PSB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpdGxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpdGxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnb25VcGRhdGVMb2NrRGF0YSc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9jayhlLmRldGFpbC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvbkdsb2JhbEZpbHRlckFwcGxpY2FibGVDaGVjayc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5hcHBsaWNhYmxlRmlsdGVycyhlLmRldGFpbC5kYXRhLCB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIChtZS53aWRnZXRFbGVtZW50LnRpdGxlTGluZUVuYWJsZWQpICE9ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHRpdGxlTGluZUVuYWJsZWQgPSBtZS53aWRnZXRFbGVtZW50LnRpdGxlTGluZUVuYWJsZWQoKTtcclxuICAgICAgICAgICAgICBpZiAodGl0bGVMaW5lRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVUaXRsZUxpbmUgPSB0aXRsZUxpbmVFbmFibGVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVUaXRsZUxpbmVBY3R1YWwgPSB0aXRsZUxpbmVFbmFibGVkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVkaXRUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmVkaXQnKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5lZGl0JykubGVuZ3RoID4gNikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdFRleHQgPSAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmVkaXQnKS5zdWJzdHJpbmcoMCwgNikgKyAnLi4uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5lZGl0VG9vbFRpcFZhbHVlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmVkaXQnKTtcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRUb29sVGlwV2lkdGggPSBcIjMwMHB4XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb3B5VGV4dCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5jb3B5Jyk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uY29weScpLmxlbmd0aCA+IDYpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvcHlUZXh0ID0gKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5jb3B5Jykuc3Vic3RyaW5nKDAsIDYpICsgJy4uLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29weVRvb2xUaXBWYWx1ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5jb3B5Jyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb3B5VG9vbFRpcFdpZHRoID0gXCIzMDBweFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW92ZVRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24ubW92ZScpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24ubW92ZScpLmxlbmd0aCA+IDYpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vdmVUZXh0ID0gKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5tb3ZlJykuc3Vic3RyaW5nKDAsIDYpICsgJy4uLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubW92ZVRvb2xUaXBWYWx1ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5tb3ZlJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9vbFRpcFdpZHRoID0gXCIzMDBweFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWxUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmV4Y2VsJyk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZXhjZWwnKS5sZW5ndGggPiA2KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbFRleHQgPSAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmV4Y2VsJykuc3Vic3RyaW5nKDAsIDYpICsgJy4uLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhjZWxUb29sVGlwVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZXhjZWwnKTtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsVG9vbFRpcFdpZHRoID0gXCIzMDBweFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlVGV4dCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5kZWxldGUnKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5kZWxldGUnKS5sZW5ndGggPiA2KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUZXh0ID0gKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5kZWxldGUnKS5zdWJzdHJpbmcoMCwgNikgKyAnLi4uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUb29sVGlwVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZGVsZXRlJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUb29sVGlwV2lkdGggPSBcIjMwMHB4XCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG1lLmlzV2lkZ2V0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLmFwcENvbmZpZyA9IHRoaXMuYXBwQ29uZmlnO1xyXG4gICAgICAgICAgICB3aWRnZXRDb25maWdGaWx0ZXIud2lkZ2V0SW5mbyA9IHdpZGdldEluZm87XHJcbiAgICAgICAgICAgIHdpZGdldENvbmZpZ0ZpbHRlci5jb25maWdDaGFuZ2VzID0gdGhpcy5nZXRDb25maWdDaGFuZ2VzKGZhbHNlKTtcclxuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLndpZGdldEluZm8ud2lkZ2V0TmFtZSA9IHdpZGdldEluZm8ud2lkZ2V0TmFtZTtcclxuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLmdsb2JhbEZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVyO1xyXG4gICAgICAgICAgICBtZS53aWRnZXRFbGVtZW50LmxvYWRDb250ZW50KHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgICAgICAgIGF3YWl0IG1lLnNldExvY2sod2lkZ2V0Q29uZmlnRmlsdGVyLmNvbmZpZyk7XHJcbiAgICAgICAgICAgIGF3YWl0IG1lLnNldERvd25sb2FkSWNvbigpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdGxXaWRnZXQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLndpZGdldEVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqVG8gc2V0IERlZmF1bHQgU3RhdGUgZm9yIHRoZSB3aWRnZXQgd2hlbiBpdCBpcyBub3QgY29uZmlndXJlZCAqL1xyXG4gIHNldE5vdENvbmZpZ3VyZWRTdGF0ZSh3aWRnZXRJbmZvOiBJV2lkZ2V0SW5mbywgZm9yY2VFbmFibGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKCh3aWRnZXRJbmZvLnNob3dEZWZhdWx0U3RhdGUgJiYgKHdpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcgPT0gXCJcIiB8fCBPYmplY3Qua2V5cyhKU09OLnBhcnNlKHdpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcpKS5sZW5ndGggPT0gMCkpIHx8IChmb3JjZUVuYWJsZSkpIHtcclxuICAgICAgdGhpcy5pc1dpZGdldFN0YXRlQXBwbGljYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMud2lkZ2V0RW1wdHlTdGF0ZSA9IFdpZGdldFZpZXdTdGF0ZS5lbXB0eUNvbmZpZy50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0RW1wdHlTdGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0U3RhdGVBcHBsaWNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyBjb25maWd1cmUgZW1wdHkgc3RhdGUgZm9yIHRoZSB3aWRnZXQgICovXHJcbiAgc2V0RW1wdHlTdGF0ZSh3aWRnZXRTdGF0ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5oZWlnaHQgPT0gMSB8fCB0aGlzLndpZHRoID09IDEpXHJcbiAgICAgIHRoaXMuaXNLcGlWaWV3ID0gdHJ1ZVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmlzS3BpVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy53aWRnZXRFbXB0eVN0YXRlID0gd2lkZ2V0U3RhdGUud2lkZ2V0Vmlld1N0YXRlO1xyXG4gICAgdGhpcy5pc0dsb2JhbEZpbHRlckFwcGxpZWQgPSB3aWRnZXRTdGF0ZS5pc0dsb2JhbEZpbHRlckFwcGxpZWQ7XHJcbiAgICBpZiAod2lkZ2V0U3RhdGUgIT0gV2lkZ2V0Vmlld1N0YXRlLm5vcm1hbCkge1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0U3RhdGVBcHBsaWNhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0Rvd25sb2FkSWNvblZpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0U3RhdGVBcHBsaWNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHdpZGdldFN0YXRlKSB7XHJcbiAgICAgIGNhc2UgV2lkZ2V0Vmlld1N0YXRlLmVtcHR5Q29uZmlnOlxyXG4gICAgICAgIHRoaXMuc2V0Tm90Q29uZmlndXJlZFN0YXRlKHRoaXMuZGF0YS53aWRnZXRJbmZvLCB0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBXaWRnZXRWaWV3U3RhdGUuZW1wdHlEYXRhOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFdpZGdldFZpZXdTdGF0ZS5lcnJvcjpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbmZpZ0NoYW5nZXMoY29uZmlnQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgY29uZmlnQ2hhbmdlcyA9IDxJY29uZmlnQ2hhbmdlcz57XHJcbiAgICAgIGlzQ29uZmlnVXBkYXRlZDogY29uZmlnQ2hhbmdlZCxcclxuICAgICAgdXBkYXRlZENvbmZpZ1Byb3BlcnR5OiBbXVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZ0NoYW5nZXM7XHJcbiAgfVxyXG5cclxuICAvKiogVG8gcmVmcmVzaCB3aWRnZXQgb24gaW5wdXQgY29uZmlnIGNoYW5nZXMgKi9cclxuICBhc3luYyByZWZyZXNoV2lkZ2V0KHdpZGdldEluZm86IElXaWRnZXRJbmZvLCBjb25maWdDaGFuZ2VkOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuV2lkZ2V0RGlzcGxheU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uJyArIHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldFRpdGxlLCB0cnVlKTtcclxuICAgIHdpZGdldEluZm8ucm93SGVpZ2h0ID0gdGhpcy5ncmlkQ2VsbEhlaWdodDtcclxuICAgIHRoaXMuc2V0Tm90Q29uZmlndXJlZFN0YXRlKHdpZGdldEluZm8pO1xyXG4gICAgbGV0IHdpZGdldENvbnRhaW5lckNvbnRleHQgPSB0aGlzO1xyXG5cclxuICAgIGxldCB3aWRnZXRDb25maWdGaWx0ZXIgPSA8SVdpZGdldENvbmZpZ0ZpbHRlcj57XHJcbiAgICAgIGNvbmZpZzogd2lkZ2V0SW5mby53aWRnZXRDb25maWdJbmZvLmNvbmZpZyxcclxuICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmdsb2JhbEZpbHRlcixcclxuICAgICAgYXBwQ29uZmlnOiB0aGlzLmFwcENvbmZpZyxcclxuICAgICAgd2lkZ2V0SW5mbzogd2lkZ2V0SW5mbyxcclxuICAgICAgY29uZmlnQ2hhbmdlczogdGhpcy5nZXRDb25maWdDaGFuZ2VzKGNvbmZpZ0NoYW5nZWQpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpZGdldENvbnRhaW5lckNvbnRleHQuaXNXaWRnZXRMb2FkZWQpIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0RWxlbWVudCAmJiB0eXBlb2YgKHRoaXMud2lkZ2V0RWxlbWVudC5zZXRDb25maWdGaWx0ZXIpID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0LndpZGdldEVsZW1lbnQuc2V0Q29uZmlnRmlsdGVyKHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgIH1cclxuICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC53aWRnZXRFbGVtZW50LmxvYWRDb250ZW50KHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2V0TG9jayh3aWRnZXRDb25maWdGaWx0ZXIuY29uZmlnKTtcclxuICAgICAgYXdhaXQgdGhpcy5zZXREb3dubG9hZEljb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3VzZU92ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b29sVGlwVmFsdWUgPSAnICc7XHJcbiAgICB0aGlzLnRvb2xUaXBXaWR0aCA9ICcwcHgnO1xyXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZWxlbWVudC5vZmZzZXRXaWR0aCA8IGVsZW1lbnQuc2Nyb2xsV2lkdGgpIHtcclxuICAgICAgdGhpcy50b29sVGlwVmFsdWUgPSBlbGVtZW50LmlubmVySFRNTDtcclxuICAgICAgdGhpcy50b29sVGlwV2lkdGggPSAnMzAwcHgnO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudG9vbFRpcFdpZHRoID0gJzBweCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldExvY2soY29uZmlnOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9ja1RlbXBsYXRlSW5mbyA9IHRoaXMud2lkZ2V0RWxlbWVudC5sb2FkTG9ja0luZm8oKTtcclxuICAgIHZhciBjb25maWdPYmo6IGFueTtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgY29uZmlnT2JqID0gSlNPTi5wYXJzZShjb25maWcpO1xyXG4gICAgICBpZiAoY29uZmlnT2JqICYmIGNvbmZpZ09iai5Mb2NrcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoY29uZmlnT2JqLkxvY2tzLklzRGF0ZUxvY2tlZCB8fCBjb25maWdPYmouTG9ja3MuSXNEYXRlc0xvY2tlZCB8fCBjb25maWdPYmouTG9ja3MuSXNQYXJ0aWNpcGFudExvY2tlZCB8fCBjb25maWdPYmouTG9ja3MuSXNTb3VyY2VMb2NrZWQpIHtcclxuICAgICAgICAgIHRoaXMubG9ja0RldGFpbHMgPSBbXTtcclxuICAgICAgICAgIGlmIChjb25maWdPYmouTG9ja3MuSXNEYXRlTG9ja2VkIHx8IGNvbmZpZ09iai5Mb2Nrcy5Jc0RhdGVzTG9ja2VkKVxyXG4gICAgICAgICAgICB0aGlzLmxvY2tEZXRhaWxzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLkRhdGVSYW5nZScpKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29uZmlnT2JqLkxvY2tzLklzUGFydGljaXBhbnRMb2NrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NrRGV0YWlscy5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5EaXZpc2lvbk9yR3JvdXBvclNpdGUnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29uZmlnT2JqLkxvY2tzLklzU291cmNlTG9ja2VkKVxyXG4gICAgICAgICAgICB0aGlzLmxvY2tEZXRhaWxzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLkRhdGFTdHJlYW0nKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5sb2NrRGV0YWlscyA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2NrRGV0YWlscyA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldERvd25sb2FkSWNvbigpIHtcclxuICAgIGxldCBkb3dubG9hZFR5cGUgPSBhd2FpdCB0aGlzLndpZGdldEVsZW1lbnQuZ2V0RG93bmxvYWRUeXBlKCk7XHJcbiAgICB0aGlzLmRvd25sb2FkSWNvblR5cGUgPSBkb3dubG9hZFR5cGU7XHJcbiAgICB0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0NoYXJ0RG93bmxvYWRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzR3JpZERvd25sb2FkVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RXhjZWxsID0gdHJ1ZTtcclxuICAgIGlmIChkb3dubG9hZFR5cGUgIT0gUkFEb3dubG9hZFR5cGUuTm9uZSkge1xyXG4gICAgICB0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlzV2lkZ2V0TWdtbnQgJiYgIXRoaXMuZGV0YWlsUGFnZVVybCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NldHRpbmdzTGluayA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvd25sb2FkVHlwZSA9PSBSQURvd25sb2FkVHlwZS5DaGFydCkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnREb3dubG9hZFZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkb3dubG9hZFR5cGUgPT0gUkFEb3dubG9hZFR5cGUuR3JpZCkge1xyXG4gICAgICB0aGlzLmlzR3JpZERvd25sb2FkVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvd25sb2FkVHlwZSA9PSBSQURvd25sb2FkVHlwZS5TdGF0aXN0aWNzKSB7XHJcbiAgICAgIHRoaXMuaXNHcmlkRG93bmxvYWRWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93RXhjZWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRJY29uQ2xpY2tlZCh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFwiQ1NWXCI6XHJcbiAgICAgICAgdGhpcy53aWRnZXRFbGVtZW50LmRvd25sb2FkQ2xpY2tlZCh0aGlzLmRvd25sb2FkSWNvblR5cGUsIFJBRG93bmxvYWRPcHRpb24uQ1NWKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBOR1wiOlxyXG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5kb3dubG9hZENsaWNrZWQodGhpcy5kb3dubG9hZEljb25UeXBlLCBSQURvd25sb2FkT3B0aW9uLlBORyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJQREZcIjpcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5QREYpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiU1ZHXCI6XHJcbiAgICAgICAgdGhpcy53aWRnZXRFbGVtZW50LmRvd25sb2FkQ2xpY2tlZCh0aGlzLmRvd25sb2FkSWNvblR5cGUsIFJBRG93bmxvYWRPcHRpb24uU1ZHKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkpQRUdcIjpcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5KUEVHKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlTWVudSgpIHtcclxuICAgIGpRdWVyeSgnI3JhLWRiLXdpZGdldC1tZW51JykucmVtb3ZlKCk7XHJcbiAgfVxyXG4gIC8qKlNob3cgZHJvcGRvd24gb24gZ2VhciBpY29uIGNsaWNrICAqL1xyXG4gIHB1YmxpYyBzaG93RHJvcERvd24oZTogYW55KSB7XHJcbiAgICB0aGlzLnNldERvd25sb2FkSWNvbigpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCB0YXJnZXRQb3MgPSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgbGV0IHN0eWxlOiBzdHJpbmcgPSBcInBvc2l0aW9uOmZpeGVkO3RvcDpcIiArICh0YXJnZXRQb3MueSArIDE1KSArICdweCcgKyAnO2xlZnQ6JyArIChlLnBhZ2VYIC0gMTIyKSArICdweDt6LWluZGV4OjEwMDA7JztcclxuICAgICAgbGV0IGh0bWwgPSB0aGlzLmdldENvbnRlbnh0SHRtbChzdHlsZSk7XHJcblxyXG4gICAgICBqUXVlcnkoaHRtbCkuYXBwZW5kVG8oJ2JvZHknKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzV2lkZ2V0TWdtbnQpIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djRWRpdFdpZGdldCcsIHRoaXMuZWRpdFdpZGdldCk7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd3Y0NvcHlXaWRnZXQnLCB0aGlzLmNvcHlXaWRnZXQpO1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2NNb3ZlV2lkZ2V0JywgdGhpcy5tb3ZlV2lkZ2V0KTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djV2lkZ2V0RGVsZXRlJywgdGhpcy5kZWxldGVXaWRnZXQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRldGFpbFBhZ2VVcmwpIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djVmlzaXRXaWRnZXQnLCB0aGlzLnZpc2l0UGFnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNDaGFydERvd25sb2FkVmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2NEb3dubG9hZFBuZycsIHRoaXMuZG93bmxvYWRJY29uQ2xpY2tlZCwgJ1BORycpO1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2NEb3dubG9hZEpwZycsIHRoaXMuZG93bmxvYWRJY29uQ2xpY2tlZCwgJ0pQRUcnKTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djRG93bmxvYWRQZGYnLCB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQsICdQREYnKTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djRG93bmxvYWRTdmcnLCB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQsICdTVkcnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pc0dyaWREb3dubG9hZFZpc2libGUgJiYgdGhpcy5zaG93RXhjZWxsKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd3Y0Rvd25sb2FkRXhjZWwnLCB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQsICdDU1YnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JhLWRiLXdpZGdldC1tZW51JykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcclxuICAgICAgICB3aW5kb3cubW91c2VPdmVyV2lkZ2V0TWVudSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmEtZGItd2lkZ2V0LW1lbnUnKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5tb3VzZU92ZXJXaWRnZXRNZW51ID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXdpbmRvdy5ncmlkc3Rlckl0ZW1FbnRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZU1lbnUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXIoaWQ6IHN0cmluZywgZXZlbnQ6IGFueSwgcGFyYW1zPzogYW55KSB7XHJcbiAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgZXZlbnQuY2FsbCh0aGlzLCBwYXJhbXMpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGVueHRIdG1sKHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIGxldCBodG1sOiBzdHJpbmcgPSAnPGRpdiBpZD1cInJhLWRiLXdpZGdldC1tZW51XCInICsgJ3N0eWxlPVwiJyArIHN0eWxlICsgJ1wiIGNsYXNzPVwiZG93bmxvYWQtY29udGVudCBkcm9wZG93bi1jb250ZW50IHdpZGdldC1jb25maWctaXRlbSBkcm9wZG93bi1jbGlja1wiIHN0eWxlPVwiei1pbmRleDogMTAwMjtcIj4nO1xyXG5cclxuICAgIGxldCBzZXR0aW5ncyA9ICcnO1xyXG4gICAgaWYgKHRoaXMuaXNXaWRnZXRNZ21udCkge1xyXG4gICAgICBzZXR0aW5ncyArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djRWRpdFdpZGdldCcsICdmYWwgZmEtZWRpdCcsIHRoaXMuZWRpdFRleHQpO1xyXG4gICAgICBzZXR0aW5ncyArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djQ29weVdpZGdldCcsICdmYWwgZmEtY29weScsIHRoaXMuY29weVRleHQpO1xyXG4gICAgICBzZXR0aW5ncyArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djTW92ZVdpZGdldCcsICdmYWwgZmEtYXJyb3dzLWFsdCcsIHRoaXMubW92ZVRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGV0YWlsUGFnZVVybCkge1xyXG4gICAgICBzZXR0aW5ncyArPSAnPGEgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4O2FsaWduLWl0ZW1zOiBjZW50ZXI7YWxpZ24tY29udGVudDogY2VudGVyOyBkaXNwbGF5OiBmbGV4O1wiIGlkPVwid2NWaXNpdFdpZGdldFwiPic7XHJcbiAgICAgIHNldHRpbmdzICs9ICc8aSBzdHlsZT1cInBhZGRpbmctbGVmdDogNHB4O2ZvbnQtc2l6ZTogMjdweCAhaW1wb3J0YW50O1wiIGNsYXNzPVwiZmFsIGZhLWFuZ2xlLXJpZ2h0XCI+PC9pPiAnO1xyXG4gICAgICBzZXR0aW5ncyArPSAnPHNwYW4gc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDExcHg7bWFyZ2luLXRvcDogMnB4O1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA2cHg7XCI+JztcclxuICAgICAgc2V0dGluZ3MgKz0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLnZpc2l0cGFnZScpO1xyXG4gICAgICBzZXR0aW5ncyArPSAnPC9zcGFuPjwvYT4nO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGV0YWlsUGFnZVVybCB8fCB0aGlzLmlzV2lkZ2V0TWdtbnQpIHtcclxuICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT1cImNvbG9yOiAjOUZBMEE0O2ZvbnQtc2l6ZTogMTJweDtwYWRkaW5nLXRvcDogOHB4O3BhZGRpbmctbGVmdDogMTJweDtcIj4nO1xyXG4gICAgICBodG1sICs9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5zZXR0aW5ncycpICsgJzwvZGl2Pic7XHJcbiAgICAgIGh0bWwgKz0gc2V0dGluZ3M7XHJcbiAgICAgIGh0bWwgKz0gdGhpcy5nZXRIcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSkge1xyXG4gICAgICBpZiAodGhpcy5zaG93RXhjZWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGV0YWlsUGFnZVVybCB8fCB0aGlzLmlzV2lkZ2V0TWdtbnQpXHJcbiAgICAgICAgICBodG1sICs9ICc8c3BhbiBzdHlsZT1cImNvbG9yOiAjOUZBMEE0O2ZvbnQtc2l6ZTogMTJweDtcIj4nO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIHN0eWxlPVwiY29sb3I6ICM5RkEwQTQ7Zm9udC1zaXplOiAxMnB4O3BhZGRpbmctdG9wOjVweDtkaXNwbGF5OmJsb2NrO1wiPic7XHJcblxyXG4gICAgICAgIGh0bWwgKz0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmRvd25sb2FkcycpO1xyXG4gICAgICAgIGh0bWwgKz0gJzwvc3Bhbj4nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pc0NoYXJ0RG93bmxvYWRWaXNpYmxlKSB7XHJcbiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiAxMHB4O1wiIGNsYXNzPVwiY2hhcnREb3dubG9hZFwiPic7XHJcbiAgICAgICAgaHRtbCArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djRG93bmxvYWRQbmcnLCAnZmFsIGZhLWZpbGUtaW1hZ2UnLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24ucG5nJykpO1xyXG4gICAgICAgIGh0bWwgKz0gdGhpcy5nZXRIdG1sRm9yQnV0dG9uKCd3Y0Rvd25sb2FkSnBnJywgJ2ZhbCBmYS1maWxlLWltYWdlJywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmpwZWcnKSk7XHJcbiAgICAgICAgaHRtbCArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djRG93bmxvYWRQZGYnLCAnZmFsIGZhLWZpbGUtcGRmJywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLnBkZicpKTtcclxuICAgICAgICBodG1sICs9IHRoaXMuZ2V0SHRtbEZvckJ1dHRvbignd2NEb3dubG9hZFN2ZycsICdmYWwgZmEtZmlsZS1hbHQnLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uc3ZnJykpO1xyXG4gICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNHcmlkRG93bmxvYWRWaXNpYmxlICYmIHRoaXMuc2hvd0V4Y2VsbCkge1xyXG4gICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJncmlkRG93bmxvYWRcIj4nO1xyXG4gICAgICAgIGh0bWwgKz0gdGhpcy5nZXRIdG1sRm9yQnV0dG9uKCd3Y0Rvd25sb2FkRXhjZWwnLCAnZmFsIGZhLWRvd25sb2FkJywgdGhpcy5leGNlbFRleHQpO1xyXG4gICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSAmJiB0aGlzLmlzV2lkZ2V0TWdtbnQgJiYgdGhpcy5zaG93RXhjZWxsKSB7XHJcbiAgICAgIGh0bWwgKz0gdGhpcy5nZXRIcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNXaWRnZXRNZ21udCkge1xyXG4gICAgICBodG1sICs9ICc8YSBpZD1cIndjV2lkZ2V0RGVsZXRlXCI+PGkgY2xhc3M9XCJmYWwgZmEtdGltZXNcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogM3B4O2NvbG9yOiByZWQ7XCI+PC9pPjxzcGFuPic7XHJcbiAgICAgIGh0bWwgKz0gdGhpcy5kZWxldGVUZXh0O1xyXG4gICAgICBodG1sICs9ICc8L3NwYW4+PC9hPic7XHJcbiAgICB9XHJcblxyXG4gICAgaHRtbCArPSAnPC9kaXY+JztcclxuICAgIHJldHVybiBodG1sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIcigpIHtcclxuICAgIHJldHVybiAnPGhyIGNsYXNzPVwiaHJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDVweDttYXJnaW4tYm90dG9tOiA1cHg7XCI+JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SHRtbEZvckJ1dHRvbihpZDogc3RyaW5nLCBmb250Q2xhc3M6IHN0cmluZywgdGV4dDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaHRtbCA9ICc8YSBpZD1cIicgKyBpZCArICdcIj48aSBzdHlsZT1cIndpZHRoOjE2cHhcIiBjbGFzcz1cIicgKyBmb250Q2xhc3MgKyAnXCI+PC9pPiA8c3BhbiBzdHlsZT1cInBhZGRpbmctbGVmdDogNnB4O1wiPic7XHJcbiAgICBodG1sICs9IHRleHQ7XHJcbiAgICBodG1sICs9ICc8L3NwYW4+PC9hPic7XHJcbiAgICByZXR1cm4gaHRtbDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGdldFBhcnNlZENvbmZpZyhjb25maWc6IGFueSkge1xyXG4gICAgbGV0IHBhcnNlZENvbmZpZzogYW55O1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgcGFyc2VkQ29uZmlnID0gSlNPTi5wYXJzZShjb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICBwYXJzZWRDb25maWcgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlZENvbmZpZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbGF5V2lkZ2V0U2V0dGluZ3Moc2V0dGluZ3M6IGFueSkge1xyXG4gICAgaWYgKHNldHRpbmdzLk5vUGFkZGluZylcclxuICAgICAgdGhpcy5ub1BhZGRpbmcgPSB0cnVlXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubm9QYWRkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5hcHBsaWNhYmxlRmlsdGVycyhkYXRhOiBhbnksIGluc3RhbmNlSWQ6IGFueSkge1xyXG4gICAgdmFyIHdpZGdldERhdGE6IGFueSA9IHt9O1xyXG4gICAgdGhpcy5pbmFwcGxpY2FibGVGaWx0ZXJzID0gW107XHJcbiAgICB3aWRnZXREYXRhLmluc3RhbmNlSWQgPSBpbnN0YW5jZUlkO1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudCA9PSAnZGF0ZVJhbmdlJylcclxuICAgICAgICAgIHRoaXMuaW5hcHBsaWNhYmxlRmlsdGVycy5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5EYXRlUmFuZ2UnKSk7XHJcbiAgICAgICAgZWxzZSBpZiAoZWxlbWVudCA9PSAncGFydGljaXBhbnQnKSB7XHJcbiAgICAgICAgICB0aGlzLmluYXBwbGljYWJsZUZpbHRlcnMucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uRGl2aXNpb25Pckdyb3Vwb3JTaXRlJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlbGVtZW50ID09ICdzb3VyY2UnKVxyXG4gICAgICAgICAgdGhpcy5pbmFwcGxpY2FibGVGaWx0ZXJzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLkRhdGFTdHJlYW0nKSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5pbmFwcGxpY2FibGVGaWx0ZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB3aWRnZXREYXRhLmRhdGEgPSBkYXRhO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHdpZGdldERhdGEuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQXBwbGllZEZpbHRlcnMuZW1pdCh3aWRnZXREYXRhKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
1327
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEud2lkZ2V0LmNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2NobmVpZGVyZXNzL2Rhc2hib2FyZGZyYW1ld29yay8iLCJzb3VyY2VzIjpbImxpYi9yYS13aWRnZXQtY29udGFpbmVyL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBb0UsTUFBTSxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN4TSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBZ0QsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBa0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2xGO0lBaUZFLDJCQUFvQixnQkFBb0MsRUFDOUMsVUFBOEIsRUFDOUIsZ0JBQW9DLEVBQ3BDLE1BQWMsRUFDZCxRQUF5QixFQUN6QixRQUFtQixFQUNuQixtQkFBd0M7UUFObEQsaUJBaUJDO1FBakJtQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQzlDLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWpGM0MsY0FBUyxHQUFZLElBQUksQ0FBQztRQUN6QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUlqQyxjQUFTLEdBQVcsVUFBVSxDQUFDO1FBQy9CLGVBQVUsR0FBdUIsa0JBQWtCLENBQUMsUUFBUSxDQUFDO1FBQzdELDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRXZDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixpQkFBWSxHQUFXLEtBQUssQ0FBQztRQUc3QixxQkFBZ0IsR0FBVyxHQUFHLENBQUM7UUFDL0IscUJBQWdCLEdBQVcsR0FBRyxDQUFDO1FBQy9CLHFCQUFnQixHQUFXLEdBQUcsQ0FBQztRQUMvQixzQkFBaUIsR0FBVyxHQUFHLENBQUM7UUFDaEMsdUJBQWtCLEdBQVcsR0FBRyxDQUFDO1FBQ2pDLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBVyxLQUFLLENBQUM7UUFDakMscUJBQWdCLEdBQVcsS0FBSyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFXLEtBQUssQ0FBQztRQUNqQyxzQkFBaUIsR0FBVyxLQUFLLENBQUM7UUFDbEMsdUJBQWtCLEdBQVcsS0FBSyxDQUFDO1FBRW5DLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHdCQUFtQixHQUFRLEVBQUUsQ0FBQztRQWtCM0Isa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0MsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUU5QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUk3QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQiwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFhNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU87Ozs7UUFBRSxVQUFDLENBQU07WUFDN0MsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSx1Q0FBdUMsRUFBRTtvQkFDakUsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUNuQjthQUNGO2lCQUNJO2dCQUNILEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQztJQXRCRCxzQkFDSSx5Q0FBVTs7Ozs7UUFEZCxVQUNlLE9BQWdCO1lBQzdCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xDLENBQUM7OztPQUFBOzs7O0lBb0JELG9DQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUNELHNCQUFJLDhDQUFlOzs7O1FBQW5CLGNBQXdCLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7Ozs7O0lBRWpELHVDQUFXOzs7O0lBQVgsVUFBWSxPQUFzQjtRQUFsQyxpQkEwQkM7UUF6QkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkYsSUFBSSxPQUFPLENBQUMsbUJBQW1CLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQ3hILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsU0FBUzs7OztZQUFDLFVBQUMsQ0FBQztnQkFDL0ssS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHOzs7Z0JBQUM7b0JBQ2QsS0FBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLEVBQUMsQ0FBQztZQUVMLENBQUMsRUFBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTs7Z0JBRXJILFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDdkQsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzlCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDLGdCQUFnQjtvQkFDckUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVDO2lCQUNJO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUM1RSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNqRixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7Ozs7SUFFRCxvREFBd0I7OztJQUF4QjtRQUNFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTs7Z0JBQ2xCLElBQUksR0FBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTs7Z0JBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7Ozs7SUFHRCxzQ0FBVTs7OztJQUFWLFVBQVcsT0FBYztRQUFkLHdCQUFBLEVBQUEsY0FBYztRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtnQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekM7aUJBQ0k7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO2FBQzVFO1NBQ0Y7SUFDSCxDQUFDOzs7O0lBRUQsMkNBQWU7OztJQUFmO1FBQUEsaUJBeUJDO1FBeEJDLFVBQVU7OztRQUFDO1lBQ1QsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsRUFBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVE7OztRQUFFO1lBQ2xDLEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLEVBQUMsQ0FBQTtRQUVGLFVBQVU7OztRQUFDOztnQkFDTCxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7OztZQUFFO2dCQUN0QixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2xDLENBQUMsRUFBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZOzs7WUFBRTtnQkFDdEIsTUFBTSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDakMsVUFBVTs7O2dCQUFDO29CQUNULElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUU7d0JBQy9CLEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztxQkFDbkI7Z0JBQ0gsQ0FBQyxFQUFDLENBQUM7WUFDTCxDQUFDLEVBQUMsQ0FBQztRQUNMLENBQUMsRUFBQyxDQUFDO0lBRUwsQ0FBQzs7OztJQUVELHVDQUFXOzs7SUFBWDtRQUNFLElBQUksSUFBSSxDQUFDLGFBQWE7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBR0QsMENBQTBDOzs7OztJQUNuQyxzQ0FBVTs7OztJQUFqQjs7WUFDTSxrQkFBdUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsRUFBRTs7Z0JBQy9FLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtZQUNyRCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxrQkFBa0IsR0FBRyxVQUFVLENBQUM7YUFDakM7U0FDRjtRQUNELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUNqRjthQUNJOztnQkFDQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1lBQzdELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixDQUFDLENBQUM7U0FDckY7SUFDSCxDQUFDO0lBRUQsdUNBQXVDOzs7OztJQUNoQyx3Q0FBWTs7OztJQUFuQjtRQUFBLGlCQWNDOztZQWJLLHNCQUFzQixHQUFHLElBQUk7UUFDakMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLFVBQUEsTUFBTTtZQUN6RyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1Ysc0JBQXNCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNqRixLQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDOUU7aUJBQ0k7Z0JBQ0gsc0JBQXNCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2FBRXJOO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNERBQTREOzs7OztJQUNyRCxzQ0FBVTs7OztJQUFqQjtRQUNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RSxnREFBZ0Q7SUFDbEQsQ0FBQztJQUVELG9EQUFvRDs7Ozs7SUFDN0Msc0NBQVU7Ozs7SUFBakI7UUFDRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRSwrQ0FBK0M7SUFDakQsQ0FBQzs7OztJQUVNLHFDQUFTOzs7SUFBaEI7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxXQUFXO1lBQ2hELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDOztZQUNoQixHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYTtRQUMzQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtZQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEYsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFOztvQkFDcEMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3RELElBQUksTUFBTSxFQUFFO29CQUNWLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLFdBQVc7d0JBQ2hELEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDOzt3QkFFbkIsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO2lCQUM1QjthQUNGO1NBQ0Y7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDOzs7O0lBRU0sc0NBQVU7OztJQUFqQjtRQUNFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0gsQ0FBQzs7Ozs7SUFFTSxvREFBd0I7Ozs7SUFBL0IsVUFBZ0MsVUFBVTtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN0RDtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDbkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDckU7YUFDSTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsNERBQTRELENBQUMsQ0FBQztTQUM1RTtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQzs7Ozs7O0lBR08sZ0RBQW9COzs7OztJQUE1QixVQUE2QixhQUE4QjtRQUE5Qiw4QkFBQSxFQUFBLHFCQUE4Qjs7WUFDckQsc0JBQXNCLEdBQUcsbUJBQXFCO1lBQ2hELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTTtZQUNwRCxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztTQUNwRCxFQUFBO1FBQ0QsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBR0QsOERBQThEOzs7Ozs7SUFDeEQsc0NBQVU7Ozs7O0lBQWhCLFVBQWlCLFVBQWU7Ozs7O2dCQUM5QixVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZDLGtCQUFrQixHQUFHLG1CQUFxQjtvQkFDNUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNO29CQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7b0JBQy9CLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2lCQUM1QyxFQUFBO2dCQUNELElBQUksVUFBVSxDQUFDLGNBQWMsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDdEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDaEQ7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO2dCQUMxQyxFQUFFLEdBQUcsSUFBSTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLFNBQVM7OztnQkFBRTtvQkFDN0QsS0FBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDOzt3QkFDbkMsU0FBUyxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7b0JBQy9DLElBQUksS0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLElBQUksS0FBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDL0YsU0FBUyxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO3FCQUNwRDtvQkFDRCxLQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSTs7O29CQUFDO3dCQUNqRyxFQUFFLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUNoRSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFFakYsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsZ0JBQWdCOzs7d0JBQUU7OztnQ0FDOUUsVUFBVTs7O2dDQUFDOzs7Ozs7Z0RBQ1QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUI7Ozs7Z0RBQUUsVUFBQyxDQUFNOzt3REFDeEQsSUFBSSxHQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtvREFDaEMsUUFBUSxJQUFJLEVBQUU7d0RBQ1osS0FBSyxZQUFZOzREQUNmLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dFQUNmLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOztnRUFFcEIsRUFBRSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7NERBQ3ZCLE1BQU07d0RBQ1IsS0FBSyxxQkFBcUI7NERBQ3hCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzs0REFDaEIsTUFBTTt3REFDUixLQUFLLHNCQUFzQjs0REFDekIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOzREQUNoQyxNQUFNO3dEQUNSLEtBQUsscUJBQXFCOzREQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUk7Z0VBQ3ZCLEtBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDOztnRUFFNUIsS0FBSSxDQUFDLGVBQWUsR0FBRyxLQUFJLENBQUMscUJBQXFCLENBQUM7NERBQ3BELE1BQU07d0RBQ1IsS0FBSyxxQkFBcUI7NERBQ3hCLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSTtnRUFDdkIsS0FBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7O2dFQUV0QixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzs0REFDekIsTUFBTTt3REFDUixLQUFLLGtCQUFrQjs0REFDckIsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOzREQUM1QixNQUFNO3dEQUNSLEtBQUssK0JBQStCOzREQUNsQyxLQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7NERBQ3hFLE1BQU07d0RBQ1I7NERBQ0UsTUFBTTtxREFDVDtnREFDSCxDQUFDLEVBQUMsQ0FBQztnREFFSCxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksV0FBVyxFQUFFO29EQUN6RCxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFO29EQUMxRCxJQUFJLGdCQUFnQixFQUFFO3dEQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDO3dEQUN4QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUM7cURBQy9DO2lEQUNGO2dEQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnREFDL0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0RBQzdELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7b0RBQ3pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29EQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO2lEQUNqQztnREFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7Z0RBQy9ELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29EQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO29EQUN6RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztvREFDdkUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztpREFDakM7Z0RBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dEQUM5RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvREFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztvREFDekYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7b0RBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7aURBQ2pDO2dEQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnREFDakUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0RBQzlELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7b0RBQzNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29EQUN6RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO2lEQUNsQztnREFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7Z0RBQ25FLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29EQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO29EQUM3RixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztvREFDM0UsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztpREFDbkM7Z0RBRUQsRUFBRSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0RBQ3pCLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2dEQUM5QyxrQkFBa0IsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO2dEQUMzQyxrQkFBa0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dEQUNoRSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0RBQ2pFLGtCQUFrQixDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dEQUNwRCxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dEQUNqRCxxQkFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFBOztnREFBM0MsU0FBMkMsQ0FBQztnREFDNUMscUJBQU0sRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFBOztnREFBMUIsU0FBMEIsQ0FBQzs7OztxQ0FDNUIsRUFBQyxDQUFDOzs7NkJBQ0osRUFBQyxDQUFDO3dCQUNILEtBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQy9ELENBQUMsRUFBQyxDQUFDO2dCQUNMLENBQUMsRUFBQyxDQUFDOzs7O0tBQ0o7SUFFRCxtRUFBbUU7Ozs7Ozs7SUFDbkUsaURBQXFCOzs7Ozs7SUFBckIsVUFBc0IsVUFBdUIsRUFBRSxXQUE0QjtRQUE1Qiw0QkFBQSxFQUFBLG1CQUE0QjtRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDM0ssSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztZQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNoRTthQUNJO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELDhDQUE4Qzs7Ozs7O0lBQzlDLHlDQUFhOzs7OztJQUFiLFVBQWMsV0FBZ0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7O1lBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ3BELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUM7UUFDL0QsSUFBSSxXQUFXLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7U0FDcEM7YUFDSTtZQUNILElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7U0FDdEM7UUFDRCxRQUFRLFdBQVcsRUFBRTtZQUNuQixLQUFLLGVBQWUsQ0FBQyxXQUFXO2dCQUM5QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELE1BQU07WUFDUixLQUFLLGVBQWUsQ0FBQyxTQUFTO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxlQUFlLENBQUMsS0FBSztnQkFDeEIsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7Ozs7SUFFRCw0Q0FBZ0I7Ozs7SUFBaEIsVUFBaUIsYUFBOEI7UUFBOUIsOEJBQUEsRUFBQSxxQkFBOEI7O1lBQ3pDLGFBQWEsR0FBRyxtQkFBZ0I7WUFDbEMsZUFBZSxFQUFFLGFBQWE7WUFDOUIscUJBQXFCLEVBQUUsRUFBRTtTQUMxQixFQUFBO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELGdEQUFnRDs7Ozs7OztJQUMxQyx5Q0FBYTs7Ozs7O0lBQW5CLFVBQW9CLFVBQXVCLEVBQUUsYUFBOEI7UUFBOUIsOEJBQUEsRUFBQSxxQkFBOEI7Ozs7Ozt3QkFDekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDN0csVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO3dCQUMzQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ25DLHNCQUFzQixHQUFHLElBQUk7d0JBRTdCLGtCQUFrQixHQUFHLG1CQUFxQjs0QkFDNUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNOzRCQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7NEJBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzs0QkFDekIsVUFBVSxFQUFFLFVBQVU7NEJBQ3RCLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO3lCQUNwRCxFQUFBOzZCQUVHLHNCQUFzQixDQUFDLGNBQWMsRUFBckMsd0JBQXFDO3dCQUN2QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksVUFBVSxFQUFFOzRCQUNuRixzQkFBc0IsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7eUJBQzFFO3dCQUNELHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDckUscUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBQTs7d0JBQTdDLFNBQTZDLENBQUM7d0JBQzlDLHFCQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBQTs7d0JBQTVCLFNBQTRCLENBQUM7Ozs7OztLQUVoQzs7Ozs7SUFFTSxxQ0FBUzs7OztJQUFoQixVQUFpQixLQUFVO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDOztZQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhO1FBQzVDLElBQUksT0FBTyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztTQUM3QjthQUNJO1lBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDOzs7Ozs7SUFFYSxtQ0FBTzs7Ozs7SUFBckIsVUFBc0IsTUFBYzs7OztnQkFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBRTFELElBQUksTUFBTSxFQUFFO29CQUNWLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMvQixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBRTt3QkFDN0MsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLG1CQUFtQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFOzRCQUMxSSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQzs0QkFDdEIsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWE7Z0NBQy9ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDOzRCQUU3RSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUU7Z0NBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDOzZCQUN4Rjs0QkFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYztnQ0FDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7eUJBQy9FOzZCQUNJOzRCQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO3lCQUM5QjtxQkFDRjt5QkFDSTt3QkFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztxQkFDOUI7aUJBQ0Y7Ozs7S0FDRjs7OztJQUVZLDJDQUFlOzs7SUFBNUI7Ozs7OzRCQUNxQixxQkFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxFQUFBOzt3QkFBekQsWUFBWSxHQUFHLFNBQTBDO3dCQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO3dCQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO3dCQUNuQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO3dCQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO3dCQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzt3QkFDdkIsSUFBSSxZQUFZLElBQUksY0FBYyxDQUFDLElBQUksRUFBRTs0QkFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQzt5QkFDbkM7NkJBQ0k7NEJBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dDQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDOzZCQUMvQjt5QkFDRjt3QkFFRCxJQUFJLFlBQVksSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFOzRCQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO3lCQUNwQzt3QkFFRCxJQUFJLFlBQVksSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFOzRCQUN2QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO3lCQUNuQzt3QkFFRCxJQUFJLFlBQVksSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFOzRCQUM3QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDOzRCQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQzt5QkFDekI7Ozs7O0tBQ0Y7Ozs7O0lBRU0sK0NBQW1COzs7O0lBQTFCLFVBQTJCLElBQVk7UUFDckMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRixNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEYsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hGLE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakYsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7Ozs7SUFFTyxzQ0FBVTs7OztJQUFsQjtRQUNFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCx1Q0FBdUM7Ozs7OztJQUNoQyx3Q0FBWTs7Ozs7SUFBbkIsVUFBb0IsQ0FBTTtRQUExQixpQkEyQ0M7UUExQ0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixVQUFVOzs7UUFBQzs7Z0JBQ0wsU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUU7O2dCQUM1QyxLQUFLLEdBQVcscUJBQXFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLGtCQUFrQjs7Z0JBQ25ILElBQUksR0FBRyxLQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUV0QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRTlCLElBQUksS0FBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsS0FBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3ZELEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN2RCxLQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkQsS0FBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksS0FBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsS0FBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDeEQ7WUFDRCxJQUFJLEtBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0IsS0FBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxLQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hFLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsS0FBSSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUN6RSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLEtBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDeEUsS0FBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxLQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDekU7WUFDRCxJQUFJLEtBQUksQ0FBQyxxQkFBcUIsSUFBSSxLQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNqRCxLQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsS0FBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzNFO1lBRUQsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7OztZQUFFO2dCQUMxRSxNQUFNLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLENBQUMsRUFBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFlBQVk7OztZQUFFO2dCQUMxRSxNQUFNLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxVQUFVOzs7Z0JBQUM7b0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTt3QkFDN0IsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3FCQUNuQjtnQkFDSCxDQUFDLEVBQUMsQ0FBQztZQUNMLENBQUMsRUFBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFDLENBQUM7SUFFTCxDQUFDOzs7Ozs7OztJQUVPLDRDQUFnQjs7Ozs7OztJQUF4QixVQUF5QixFQUFVLEVBQUUsS0FBVSxFQUFFLE1BQVk7UUFBN0QsaUJBT0M7O1lBTkssT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ3pDLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU87OztZQUFFO2dCQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sMkNBQWU7Ozs7O0lBQXZCLFVBQXdCLEtBQWE7O1lBQy9CLElBQUksR0FBVyw2QkFBNkIsR0FBRyxTQUFTLEdBQUcsS0FBSyxHQUFHLHVHQUF1Rzs7WUFFMUssUUFBUSxHQUFHLEVBQUU7UUFDakIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEYsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRixRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkY7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsUUFBUSxJQUFJLDJHQUEyRyxDQUFDO1lBQ3hILFFBQVEsSUFBSSwyRkFBMkYsQ0FBQztZQUN4RyxRQUFRLElBQUksK0VBQStFLENBQUM7WUFDNUYsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNoRSxRQUFRLElBQUksYUFBYSxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDNUMsSUFBSSxJQUFJLG1GQUFtRixDQUFDO1lBQzVGLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQ3RFLElBQUksSUFBSSxRQUFRLENBQUM7WUFDakIsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhO29CQUMxQyxJQUFJLElBQUksZ0RBQWdELENBQUM7O29CQUV6RCxJQUFJLElBQUksOEVBQThFLENBQUM7Z0JBRXpGLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzVELElBQUksSUFBSSxTQUFTLENBQUM7YUFDbkI7WUFFRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDL0IsSUFBSSxJQUFJLHdEQUF3RCxDQUFDO2dCQUNqRSxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ25ILElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDcEgsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNqSCxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ2pILElBQUksSUFBSSxRQUFRLENBQUM7YUFDbEI7WUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNqRCxJQUFJLElBQUksNEJBQTRCLENBQUM7Z0JBQ3JDLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNwRixJQUFJLElBQUksUUFBUSxDQUFDO2FBQ2xCO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkUsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN0QjtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLElBQUksaUdBQWlHLENBQUM7WUFDMUcsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDeEIsSUFBSSxJQUFJLGFBQWEsQ0FBQztTQUN2QjtRQUVELElBQUksSUFBSSxRQUFRLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7OztJQUVPLGlDQUFLOzs7O0lBQWI7UUFDRSxPQUFPLDZEQUE2RCxDQUFDO0lBQ3ZFLENBQUM7Ozs7Ozs7O0lBRU8sNENBQWdCOzs7Ozs7O0lBQXhCLFVBQXlCLEVBQVUsRUFBRSxTQUFpQixFQUFFLElBQVk7O1lBQzlELElBQUksR0FBRyxTQUFTLEdBQUcsRUFBRSxHQUFHLGlDQUFpQyxHQUFHLFNBQVMsR0FBRywwQ0FBMEM7UUFDdEgsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNiLElBQUksSUFBSSxhQUFhLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzs7Ozs7SUFHTywyQ0FBZTs7Ozs7SUFBdkIsVUFBd0IsTUFBVzs7WUFDN0IsWUFBaUI7UUFDckIsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFDOUIsSUFBSTtvQkFDRixZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDbkM7Z0JBQ0QsV0FBTTtvQkFDSixZQUFZLEdBQUcsRUFBRSxDQUFDO2lCQUNuQjtnQkFDRCxPQUFPLFlBQVksQ0FBQzthQUNyQjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7Ozs7O0lBRU8sZ0RBQW9COzs7OztJQUE1QixVQUE2QixRQUFhO1FBQ3hDLElBQUksUUFBUSxDQUFDLFNBQVM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7O1lBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQzFCLENBQUM7Ozs7Ozs7SUFFTyxrREFBc0I7Ozs7OztJQUE5QixVQUErQixJQUFTLEVBQUUsVUFBZTtRQUF6RCxpQkFzQkM7O1lBckJLLFVBQVUsR0FBUSxFQUFFO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsVUFBVSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDbkMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE9BQU87Ozs7WUFBQyxVQUFBLE9BQU87Z0JBQ2xCLElBQUksT0FBTyxJQUFJLFdBQVc7b0JBQ3hCLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7cUJBQ2hGLElBQUksT0FBTyxJQUFJLGFBQWEsRUFBRTtvQkFDakMsS0FBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztpQkFDaEc7cUJBQ0ksSUFBSSxPQUFPLElBQUksUUFBUTtvQkFDMUIsS0FBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQzs7b0JBRXBGLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxFQUFDLENBQUM7WUFDSCxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUN4QjthQUNJO1lBQ0gsVUFBVSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2dCQTN1QkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLDJ2S0FBbUQ7aUJBQ3BEOzs7O2dCQWRRLGtCQUFrQjtnQkFJbEIsa0JBQWtCO2dCQUVsQixrQkFBa0I7Z0JBUHVILE1BQU07Z0JBTS9JLGVBQWU7Z0JBTmtJLFNBQVM7Z0JBT3RJLG1CQUFtQjs7OzRCQXFEN0MsU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7aUNBQ3hDLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7OEJBQzdDLFNBQVMsU0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzRCQUMxQyxTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTttQ0FFeEMsS0FBSyxTQUFDLG9CQUFvQjsrQkFDMUIsS0FBSyxTQUFDLGVBQWU7dUJBQ3JCLEtBQUssU0FBQyxNQUFNO3NDQUNaLEtBQUssU0FBQyxXQUFXOzRCQUNqQixLQUFLLFNBQUMsWUFBWTt3QkFDbEIsS0FBSyxTQUFDLGNBQWM7eUJBQ3BCLEtBQUssU0FBQyxlQUFlO2lDQUNyQixLQUFLLFNBQUMsa0JBQWtCO2dDQUd4QixNQUFNO3VDQUNOLE1BQU07NkJBWU4sS0FBSyxTQUFDLGFBQWE7O0lBaXFCdEIsd0JBQUM7Q0FBQSxBQTd1QkQsSUE2dUJDO1NBenVCWSxpQkFBaUI7OztJQUU1QixzQ0FBaUM7Ozs7O0lBQ2pDLDJDQUF3Qzs7Ozs7SUFDeEMsMENBQTJCOzs7OztJQUMzQiwwQ0FBMkI7O0lBQzNCLHlDQUE0Qjs7SUFDNUIsc0NBQXNDOztJQUN0Qyx1Q0FBb0U7O0lBQ3BFLGtEQUE4Qzs7SUFDOUMsbURBQStDOztJQUMvQyxrREFBOEM7O0lBQzlDLDZDQUF3Qzs7SUFDeEMsNENBQXdDOztJQUN4QyxrREFBOEM7O0lBQzlDLHlDQUFtQzs7SUFDbkMseUNBQW9DOztJQUNwQyx3Q0FBd0I7O0lBQ3hCLDZDQUEwQzs7SUFDMUMsNkNBQXNDOztJQUN0Qyw2Q0FBc0M7O0lBQ3RDLDZDQUFzQzs7SUFDdEMsOENBQXVDOztJQUN2QywrQ0FBd0M7O0lBQ3hDLHFDQUE2Qjs7SUFDN0IscUNBQTZCOztJQUM3QixxQ0FBNkI7O0lBQzdCLHNDQUE4Qjs7SUFDOUIsdUNBQStCOztJQUMvQiw2Q0FBd0M7O0lBQ3hDLDZDQUF3Qzs7SUFDeEMsNkNBQXdDOztJQUN4Qyw4Q0FBeUM7O0lBQ3pDLCtDQUEwQzs7SUFDMUMsMkNBQTJCOztJQUMzQixzQ0FBa0M7O0lBQ2xDLHlDQUFxQzs7SUFDckMsNkNBQXdDOztJQUN4QyxzQ0FBa0M7O0lBQ2xDLHVDQUFrQzs7SUFDbEMsc0NBQWtDOztJQUNsQyxnREFBcUM7O0lBR3JDLHNDQUFpRTs7SUFDakUsMkNBQTJFOztJQUMzRSx3Q0FBcUU7O0lBQ3JFLHNDQUFpRTs7SUFFakUsNkNBQXNEOztJQUN0RCx5Q0FBMEM7O0lBQzFDLGlDQUF5Qjs7SUFDekIsZ0RBQTZEOztJQUM3RCxzQ0FBMkM7O0lBQzNDLGtDQUFxQzs7SUFDckMsbUNBQXVDOztJQUN2QywyQ0FBa0Q7O0lBR2xELDBDQUFxRDs7SUFDckQsaURBQW9EOztJQUNwRCxzQ0FBeUI7O0lBQ3pCLG9EQUFnRDs7SUFDaEQsNkNBQXFDOztJQUNyQyx1Q0FBMkI7O0lBQzNCLHdDQUFvQzs7SUFDcEMseUNBQXlCOztJQUN6QiwwQ0FBNkI7O0lBQzdCLG9DQUF1Qjs7SUFDdkIsMENBQXNDOztJQUN0Qyw4Q0FBaUM7O0lBQ2pDLGtEQUE4Qzs7Ozs7SUFNbEMsNkNBQTRDOzs7OztJQUN0RCx1Q0FBc0M7Ozs7O0lBQ3RDLDZDQUE0Qzs7Ozs7SUFDNUMsbUNBQXNCOzs7OztJQUN0QixxQ0FBaUM7Ozs7O0lBQ2pDLHFDQUEyQjs7Ozs7SUFDM0IsZ0RBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZSwgT25EZXN0cm95LCBOZ1pvbmUsIFJlbmRlcmVyMiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmFEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi8uLi9yYS5kYXNoYm9hcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IFJBRGFzaGJvYXJkRXZlbnRCdXMgfSBmcm9tICcuLi9yYS5kYXNoYmFyZC5ldmVudC5idXMnO1xyXG5pbXBvcnQgeyBSQUV2ZW50LCBSQUV2ZW50S2V5IH0gZnJvbSAnLi4vcmEuZXZlbnQuZW51bSc7XHJcbmltcG9ydCB7IElBcHBDb25maWcsIElXaWRnZXRDb25maWdGaWx0ZXIsIElXaWRnZXRJbmZvLCBSQURvd25sb2FkVHlwZSwgUkFEb3dubG9hZE9wdGlvbiwgUmFXaWRnZXRsb2NrU3RhdHVzLCBXaWRnZXRWaWV3U3RhdGUsIEljb25maWdDaGFuZ2VzIH0gZnJvbSAnQHNjaG5laWRlcmVzcy93aWRnZXRmcmFtZXdvcmsnO1xyXG5pbXBvcnQgeyBOZ3hVaUxvYWRlclNlcnZpY2UgfSBmcm9tICduZ3gtdWktbG9hZGVyJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1ub3RpZmllcic7XHJcbmltcG9ydCB7IFJBVHJhbnNsYXRlU2VydmljZSwgUkFQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJ0BzY2huZWlkZXJlc3MvcmEtY29tbW9uJztcclxuXHJcbmRlY2xhcmUgdmFyIGpRdWVyeTogYW55O1xyXG5kZWNsYXJlIHZhciB3aW5kb3c6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmEtd2lkZ2V0LWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JhLndpZGdldC5jb250YWluZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSQVdpZGdldENvbnRhaW5lciBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgc2hvd1BhbmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIGlzV2lkZ2V0TG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB3aWRnZXRFbGVtZW50OiBhbnk7XHJcbiAgcHJpdmF0ZSBjb25maWdDaGFuZ2VkOiBhbnk7XHJcbiAgcHVibGljIHdpZGdldEhlaWdodDogbnVtYmVyO1xyXG4gIHB1YmxpYyBsb2NrQ2xhc3M6IHN0cmluZyA9IFwidW5sb2NrZWRcIjtcclxuICBwdWJsaWMgbG9ja1N0YXR1czogUmFXaWRnZXRsb2NrU3RhdHVzID0gUmFXaWRnZXRsb2NrU3RhdHVzLlVubG9ja2VkO1xyXG4gIHB1YmxpYyBpc0Rvd25sb2FkSWNvblZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNDaGFydERvd25sb2FkVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0dyaWREb3dubG9hZFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZG93bmxvYWRJY29uVHlwZTogUkFEb3dubG9hZFR5cGU7XHJcbiAgcHVibGljIGVuYWJsZVRpdGxlTGluZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0dsb2JhbEZpbHRlckFwcGxpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdG9vbFRpcFZhbHVlOiBzdHJpbmcgPSAnICAnO1xyXG4gIHB1YmxpYyB0b29sVGlwV2lkdGg6IHN0cmluZyA9ICcwcHgnO1xyXG4gIHB1YmxpYyBsb2NrRGV0YWlsczogYW55O1xyXG4gIHB1YmxpYyBsb2NrVGVtcGxhdGVJbmZvOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHB1YmxpYyBlZGl0VG9vbFRpcFZhbHVlOiBzdHJpbmcgPSAnICc7XHJcbiAgcHVibGljIGNvcHlUb29sVGlwVmFsdWU6IHN0cmluZyA9ICcgJztcclxuICBwdWJsaWMgbW92ZVRvb2xUaXBWYWx1ZTogc3RyaW5nID0gJyAnO1xyXG4gIHB1YmxpYyBleGNlbFRvb2xUaXBWYWx1ZTogc3RyaW5nID0gJyAnO1xyXG4gIHB1YmxpYyBkZWxldGVUb29sVGlwVmFsdWU6IHN0cmluZyA9ICcgJztcclxuICBwdWJsaWMgZWRpdFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBjb3B5VGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIG1vdmVUZXh0OiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZXhjZWxUZXh0OiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZGVsZXRlVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIGVkaXRUb29sVGlwV2lkdGg6IHN0cmluZyA9ICcwcHgnO1xyXG4gIHB1YmxpYyBjb3B5VG9vbFRpcFdpZHRoOiBzdHJpbmcgPSAnMHB4JztcclxuICBwdWJsaWMgbW92ZVRvb2xUaXBXaWR0aDogc3RyaW5nID0gJzBweCc7XHJcbiAgcHVibGljIGV4Y2VsVG9vbFRpcFdpZHRoOiBzdHJpbmcgPSAnMHB4JztcclxuICBwdWJsaWMgZGVsZXRlVG9vbFRpcFdpZHRoOiBzdHJpbmcgPSAnMHB4JztcclxuICBwdWJsaWMgd2lkZ2V0U2V0dGluZ3M6IGFueTtcclxuICBwdWJsaWMgbm9QYWRkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzTW91c2VIb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U2V0dGluZ3NMaW5rOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgaXNLcGlWaWV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dFeGNlbGw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBoaWRlVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaW5hcHBsaWNhYmxlRmlsdGVyczogYW55ID0gW107XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdjdGxXaWRnZXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgY3RsV2lkZ2V0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3dpZGdldERyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIHdpZGdldERyb3Bkb3duOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3djV3JhcHBlcicsIHsgc3RhdGljOiBmYWxzZSB9KSB3Y1dyYXBwZXI6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgnd2lkZ2V0LWluc3RhbmNlLWlkJykgd2lkZ2V0SW5zdGFuY2VJZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnZ2xvYmFsLWZpbHRlcicpIGdsb2JhbEZpbHRlcjogYW55O1xyXG4gIEBJbnB1dCgnZGF0YScpIGRhdGE6IGFueTtcclxuICBASW5wdXQoJ2V2ZW50LWJ1cycpIHJhRGFzaGJvYXJkRXZlbnRCdXM6IFJBRGFzaGJvYXJkRXZlbnRCdXM7XHJcbiAgQElucHV0KCdhcHAtY29uZmlnJykgYXBwQ29uZmlnOiBJQXBwQ29uZmlnO1xyXG4gIEBJbnB1dCgnd2lkZ2V0LXdpZHRoJykgd2lkdGg6IG51bWJlcjtcclxuICBASW5wdXQoJ3dpZGdldC1oZWlnaHQnKSBoZWlnaHQ6IG51bWJlcjtcclxuICBASW5wdXQoJ2dyaWQtY2VsbC1oZWlnaHQnKSBncmlkQ2VsbEhlaWdodDogbnVtYmVyO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpIHdpZGdldERlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlQXBwbGllZEZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcHVibGljIGxvY2tUaXRsZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc1dpZGdldFN0YXRlQXBwbGljYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB3aWRnZXRFbXB0eVN0YXRlOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgZG9tUmVzaXplZDogYm9vbGVhbjtcclxuICBwdWJsaWMgbG9ja1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbG9ja2VkRmllbGRzOiBhbnk7XHJcbiAgcHVibGljIGRldGFpbFBhZ2VVcmw6IHN0cmluZztcclxuICBwdWJsaWMgYmFzZVVybDogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc1dpZGdldE1nbW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIFdpZGdldERpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIGVuYWJsZVRpdGxlTGluZUFjdHVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnZG9tLXJlc2l6ZWQnKVxyXG4gIHNldCBzZXRSZXNpemVkKHJlc2l6ZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaW52b2tlV2lkZ2V0UmVzaXplZEV2ZW50KCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhc2hib2FyZFNlcnZpY2U6IFJhRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgbmd4U2VydmljZTogTmd4VWlMb2FkZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBSQVRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBub3RpZmllcjogTm90aWZpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByYVBlcm1pc3Npb25TZXJ2aWNlOiBSQVBlcm1pc3Npb25TZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ2NsaWNrJywgKGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZS50YXJnZXQuY2xhc3NOYW1lKSB7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTmFtZSAhPSAnZmFsIGZhLWVsbGlwc2lzLXYgd2lkZ2V0LW1lbnUtZWxsaXBzZScpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnJlbW92ZU1lbnUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5XaWRnZXREaXNwbGF5TmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi4nICsgdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0VGl0bGUsIHRydWUpO1xyXG4gIH1cclxuICBnZXQgd2lkZ2V0Vmlld1N0YXRlKCkgeyByZXR1cm4gV2lkZ2V0Vmlld1N0YXRlOyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNXaWRnZXRNZ21udCA9IHRoaXMucmFQZXJtaXNzaW9uU2VydmljZS5oYXNQZXJtaXNzaW9uKCdyYS53aWRnZXRtYW5hZ2VtZW50Jyk7XHJcbiAgICBpZiAoY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzICYmIGNoYW5nZXMucmFEYXNoYm9hcmRFdmVudEJ1cy5jdXJyZW50VmFsdWUgIT0gY2hhbmdlcy5yYURhc2hib2FyZEV2ZW50QnVzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgdGhpcy5jb25maWdDaGFuZ2VkID0gdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnN1YnNjcmliZVdpdGhLZXkoUkFFdmVudC5Db25maWdDaGFuZ2VkLCBSQUV2ZW50S2V5LldpZGdldEluc3RhbmNlSWQsIHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQudG9TdHJpbmcoKSkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnQ2hhbmdlRXZlbnRIYW5kbGVyKGUpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50ICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyICYmIGNoYW5nZXMuZ2xvYmFsRmlsdGVyLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmdsb2JhbEZpbHRlci5wcmV2aW91c1ZhbHVlKSB7XHJcblxyXG4gICAgICBsZXQgZmlsdGVyT2JqID0gdGhpcy5nZXRQYXJzZWRDb25maWcodGhpcy5nbG9iYWxGaWx0ZXIpO1xyXG4gICAgICBpZiAoZmlsdGVyT2JqLldpZGdldEluc3RhbmNlSWQpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCAhPSBmaWx0ZXJPYmouV2lkZ2V0SW5zdGFuY2VJZClcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFdpZGdldCh0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoV2lkZ2V0KHRoaXMuZGF0YS53aWRnZXRJbmZvKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLndpZHRoICYmIGNoYW5nZXMud2lkdGguY3VycmVudFZhbHVlICE9IGNoYW5nZXMud2lkdGgucHJldmlvdXNWYWx1ZSB8fFxyXG4gICAgICAoY2hhbmdlcy5oZWlnaHQgJiYgY2hhbmdlcy5oZWlnaHQuY3VycmVudFZhbHVlICE9IGNoYW5nZXMuaGVpZ2h0LnByZXZpb3VzVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuaW52b2tlV2lkZ2V0UmVzaXplZEV2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnZva2VXaWRnZXRSZXNpemVkRXZlbnQoKSB7XHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50KSB7XHJcbiAgICAgIGxldCBzaXplOiBhbnkgPSB7fTtcclxuICAgICAgc2l6ZS5oZWlnaHQgPSB0aGlzLmhlaWdodDtcclxuICAgICAgc2l6ZS53aWR0aCA9IHRoaXMud2lkdGg7XHJcbiAgICAgIHNpemUuY2VsbEhlaWdodCA9IHRoaXMuZ3JpZENlbGxIZWlnaHQ7XHJcbiAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC53aWRnZXRSZXNpemVkKHNpemUpO1xyXG4gICAgICBpZiAodGhpcy5oZWlnaHQgPT0gMSB8fCB0aGlzLndpZHRoID09IDEpXHJcbiAgICAgICAgdGhpcy5pc0twaVZpZXcgPSB0cnVlXHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aGlzLmlzS3BpVmlldyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG1vdXNlSG92ZXIoaXNIb3ZlciA9IHRydWUpIHtcclxuICAgIHRoaXMuaXNNb3VzZUhvdmVyID0gaXNIb3ZlcjtcclxuXHJcbiAgICBpZiAodGhpcy53aWRnZXRFbGVtZW50KSB7XHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy53aWRnZXRFbGVtZW50LmhvdmVyU3RhdHVzID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuaG92ZXJTdGF0dXMoaXNIb3Zlcik7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCd3aWRnZXQgZnJhbWV3b3JrIG91dGRhdGVkLCBwbGVhc2UgdXBkYXRlIHRvIHZlcnNpb24gMC4wLjk2Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgfSlcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgbGV0IGl0ZW0gPSBqUXVlcnkodGhpcy53Y1dyYXBwZXIubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnZ3JpZHN0ZXItaXRlbScpO1xyXG4gICAgICBpdGVtLmJpbmQoJ21vdXNlZW50ZXInLCAoKSA9PiB7XHJcbiAgICAgICAgd2luZG93LmdyaWRzdGVySXRlbUVudGVyID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpdGVtLmJpbmQoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgd2luZG93LmdyaWRzdGVySXRlbUVudGVyID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXdpbmRvdy5tb3VzZU92ZXJXaWRnZXRNZW51KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnQ2hhbmdlZClcclxuICAgICAgdGhpcy5jb25maWdDaGFuZ2VkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIFRvIEVkaXQgY3VycmVudCB3aWRnZXQgY29uZmlndXJhdGlvbiovXHJcbiAgcHVibGljIGVkaXRXaWRnZXQoKSB7XHJcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyOiBJV2lkZ2V0Q29uZmlnRmlsdGVyO1xyXG4gICAgaWYgKHRoaXMud2lkZ2V0RWxlbWVudCAmJiB0eXBlb2YgKHRoaXMud2lkZ2V0RWxlbWVudC5nZXRDb25maWdGaWx0ZXIpID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgbGV0IGNvbmZpZ0RhdGEgPSB0aGlzLndpZGdldEVsZW1lbnQuZ2V0Q29uZmlnRmlsdGVyKCk7XHJcbiAgICAgIGlmIChjb25maWdEYXRhKSB7XHJcbiAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyID0gY29uZmlnRGF0YTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHdpZGdldENvbmZpZ0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnJhRGFzaGJvYXJkRXZlbnRCdXMucHVibGlzaChSQUV2ZW50LldpZGdldEVkaXRDbGlja2VkLCB3aWRnZXRDb25maWdGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB3aWRnZXRDb25maWdGaWx0ZXJEYXRhID0gdGhpcy5nZW5lcmF0ZUNvbmZpZ0ZpbHRlcihmYWxzZSk7XHJcbiAgICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuV2lkZ2V0RWRpdENsaWNrZWQsIHdpZGdldENvbmZpZ0ZpbHRlckRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFRvIERlbGV0ZSBjdXJyZW50IHdpZGdldCBmcm9tIERPTSovXHJcbiAgcHVibGljIGRlbGV0ZVdpZGdldCgpIHtcclxuICAgIGxldCB3aWRnZXRDb250YWluZXJDb250ZXh0ID0gdGhpcztcclxuICAgIHdpZGdldENvbnRhaW5lckNvbnRleHQubmd4U2VydmljZS5zdGFydCgpO1xyXG4gICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC5kYXNoYm9hcmRTZXJ2aWNlLmRlbGV0ZVdpZGdldCh0aGlzLmRhdGEud2lkZ2V0SW5mbywgdGhpcy5hcHBDb25maWcpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5neFNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC53aWRnZXREZWxldGVkLmVtaXQodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0SW5zdGFuY2VJZCk7XHJcbiAgICAgICAgdGhpcy5zZXRJbmFwcGxpY2FibGVGaWx0ZXJzKHVuZGVmaW5lZCx0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0Lm5vdGlmaWVyLm5vdGlmeSgnZXJyb3InLCBcIiBcIiArIHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0ZhaWxlZFRvUmVtb3ZlV2lkZ2V0JykgKyBcIiAgKFwiICsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLicgKyB0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRUaXRsZSwgdHJ1ZSkgKyBcIikhXCIpO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogVG8gTW92ZSBvciBjaGFuZ2UgcG9zaXRpb24gaWYgY3VycmVudCB3aWRnZXQgY29udGFpbmVyKi9cclxuICBwdWJsaWMgbW92ZVdpZGdldCgpIHtcclxuICAgIHRoaXMucmFEYXNoYm9hcmRFdmVudEJ1cy5wdWJsaXNoKFJBRXZlbnQuTW92ZVdpZGdldCwgdGhpcy5kYXRhLndpZGdldEluZm8pO1xyXG4gICAgdGhpcy5zZXRJbmFwcGxpY2FibGVGaWx0ZXJzKHVuZGVmaW5lZCx0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRJbnN0YW5jZUlkKTtcclxuICAgIC8vIHRoaXMuZGFzaGJvYXJkU2VydmljZS5tb3ZlV2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRvIENvcHkgQ3VycmVudCB3aWRnZXQgd2l0aCBzYW1lIGNvbmZpZ3VyYXRpb24qL1xyXG4gIHB1YmxpYyBjb3B5V2lkZ2V0KCkge1xyXG4gICAgdGhpcy5yYURhc2hib2FyZEV2ZW50QnVzLnB1Ymxpc2goUkFFdmVudC5Db3B5V2lkZ2V0LCB0aGlzLmRhdGEud2lkZ2V0SW5mbyk7XHJcbiAgICAvL3RoaXMuZGFzaGJvYXJkU2VydmljZS5jb3B5V2lkZ2V0KHdpZGdldEluZm8pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZpc2l0UGFnZSgpIHtcclxuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuZ2V0SG9zdFVybCgpO1xyXG4gICAgaWYgKHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldFR5cGUgPT0gJ0FWIFdpZGdldCcpXHJcbiAgICAgIHRoaXMuYmFzZVVybCA9ICcnO1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArIHRoaXMuZGV0YWlsUGFnZVVybDtcclxuICAgIGlmICh0aGlzLmRhdGEud2lkZ2V0SW5mbyAmJiB0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLndpZGdldFNldHRpbmdzID0gdGhpcy5nZXRQYXJzZWRDb25maWcodGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0U2V0dGluZ3MpO1xyXG4gICAgICBpZiAodGhpcy53aWRnZXRTZXR0aW5ncy5jdXN0b21QYWdlUGFyYW1zKSB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IHRoaXMud2lkZ2V0RWxlbWVudC5nZXRQYWdlUGFyYW1zQ2xpY2tlZCgpO1xyXG4gICAgICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGEud2lkZ2V0SW5mby53aWRnZXRUeXBlID09ICdBViBXaWRnZXQnKVxyXG4gICAgICAgICAgICB1cmwgPSB1cmwgKyBwYXJhbXM7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHVybCA9IHVybCArICc/JyArIHBhcmFtcztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEhvc3RVcmwoKSB7XHJcbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICh3aW5kb3cubG9jYXRpb24ucG9ydCA/ICc6JyArIHdpbmRvdy5sb2NhdGlvbi5wb3J0IDogJycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbmZpZ0NoYW5nZUV2ZW50SGFuZGxlcih3aWRnZXRJbmZvKSB7XHJcbiAgICB0aGlzLmRhdGEud2lkZ2V0SW5mbyA9IHdpZGdldEluZm87XHJcbiAgICBpZiAodGhpcy5ncmlkQ2VsbEhlaWdodCA+IDApIHtcclxuICAgICAgdGhpcy5kYXRhLndpZGdldEluZm8ucm93SGVpZ2h0ID0gdGhpcy5ncmlkQ2VsbEhlaWdodDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLndpZGdldEVsZW1lbnQgJiYgdHlwZW9mICh0aGlzLndpZGdldEVsZW1lbnQuc2V0Q29uZmlnRmlsdGVyKSA9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5zZXRDb25maWdGaWx0ZXIodGhpcy5nZW5lcmF0ZUNvbmZpZ0ZpbHRlcih0cnVlKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKCd3aWRnZXQgZnJhbWV3b3JrIG91dGRhdGVkLCBwbGVhc2UgdXBkYXRlIHRvIHZlcnNpb24gMC4wLjk4Jyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hXaWRnZXQodGhpcy5kYXRhLndpZGdldEluZm8sIHRydWUpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb25maWdGaWx0ZXIoY29uZmlnQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgd2lkZ2V0Q29uZmlnRmlsdGVyRGF0YSA9IDxJV2lkZ2V0Q29uZmlnRmlsdGVyPntcclxuICAgICAgYXBwQ29uZmlnOiB0aGlzLmFwcENvbmZpZyxcclxuICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmdsb2JhbEZpbHRlcixcclxuICAgICAgd2lkZ2V0SW5mbzogdGhpcy5kYXRhLndpZGdldEluZm8sXHJcbiAgICAgIGNvbmZpZzogdGhpcy5kYXRhLndpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcsXHJcbiAgICAgIGNvbmZpZ0NoYW5nZXM6IHRoaXMuZ2V0Q29uZmlnQ2hhbmdlcyhjb25maWdDaGFuZ2VkKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldENvbmZpZ0ZpbHRlckRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqICBUbyBsb2FkIGV4dGVybmFsIGN1c3RvbSBlbGVtZW50IHRvIHRoZSB3aWRnZXQgY29udGFpbmVyKi9cclxuICBhc3luYyBsb2FkV2lkZ2V0KHdpZGdldEluZm86IGFueSkge1xyXG4gICAgd2lkZ2V0SW5mby5yb3dIZWlnaHQgPSB0aGlzLmdyaWRDZWxsSGVpZ2h0O1xyXG4gICAgbGV0IHdpZGdldENvbmZpZ0ZpbHRlciA9IDxJV2lkZ2V0Q29uZmlnRmlsdGVyPntcclxuICAgICAgY29uZmlnOiB3aWRnZXRJbmZvLndpZGdldENvbmZpZ0luZm8uY29uZmlnLFxyXG4gICAgICBnbG9iYWxGaWx0ZXI6IHRoaXMuZ2xvYmFsRmlsdGVyLFxyXG4gICAgICBjb25maWdDaGFuZ2VzOiB0aGlzLmdldENvbmZpZ0NoYW5nZXMoZmFsc2UpXHJcbiAgICB9XHJcbiAgICBpZiAod2lkZ2V0SW5mby53aWRnZXRTZXR0aW5ncykge1xyXG4gICAgICB0aGlzLndpZGdldFNldHRpbmdzID0gdGhpcy5nZXRQYXJzZWRDb25maWcod2lkZ2V0SW5mby53aWRnZXRTZXR0aW5ncyk7XHJcbiAgICAgIHRoaXMuYXBwbGF5V2lkZ2V0U2V0dGluZ3ModGhpcy53aWRnZXRTZXR0aW5ncyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRldGFpbFBhZ2VVcmwgPSB3aWRnZXRJbmZvLmRldGFpbFBhZ2VVcmw7XHJcbiAgICBsZXQgbWUgPSB0aGlzO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmxvYWRFeHRlcm5hbFNjcmlwdCh3aWRnZXRJbmZvLnNjcmlwdFVybCwgKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldE5vdENvbmZpZ3VyZWRTdGF0ZSh3aWRnZXRJbmZvKTtcclxuICAgICAgbGV0IGFwcE1vZHVsZSA9IHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldE5hbWU7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEud2lkZ2V0SW5mby5hcHBsaWNhdGlvbk1vZHVsZSAmJiB0aGlzLmRhdGEud2lkZ2V0SW5mby5hcHBsaWNhdGlvbk1vZHVsZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgYXBwTW9kdWxlID0gdGhpcy5kYXRhLndpZGdldEluZm8uYXBwbGljYXRpb25Nb2R1bGU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmxvYWRUcmFuc2xhdGlvbnModGhpcy5hcHBDb25maWcuYXBwTWFuYWdlbWVudEJhc2VVcmwsIGFwcE1vZHVsZSwgZmFsc2UpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIG1lLndpZGdldEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHdpZGdldEluZm8uY3VzdG9tVGFnKTtcclxuICAgICAgICBtZS53aWRnZXRFbGVtZW50LnNldEF0dHJpYnV0ZShcIndpZGdldC1pbnN0YW5jZS1pZFwiLCB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ3dpZGdldGluaXRpYXRlZCcgKyB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQsIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBtZS53aWRnZXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ29uLXdpZGdldC1yZXNwb25kJywgKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHZhciB0eXBlOiBzdHJpbmcgPSBlLmRldGFpbC50eXBlO1xyXG4gICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnb25EYXRhTG9hZCc6XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlLmRldGFpbC5kYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgIG1lLnNob3dQYW5lbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBtZS5zaG93UGFuZWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvbkNvbmZpZ0VkaXRDbGlja2VkJzpcclxuICAgICAgICAgICAgICAgICAgbWUuZWRpdFdpZGdldCgpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29uRW5hYmxlRGVmYXVsdFN0YXRlJzpcclxuICAgICAgICAgICAgICAgICAgbWUuc2V0RW1wdHlTdGF0ZShlLmRldGFpbC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvblNldFRpdGxlVW5kZXJsaW5lJzpcclxuICAgICAgICAgICAgICAgICAgaWYgKGUuZGV0YWlsLmRhdGEgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVRpdGxlTGluZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVRpdGxlTGluZSA9IHRoaXMuZW5hYmxlVGl0bGVMaW5lQWN0dWFsO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ29uV2lkZ2V0VGl0bGVIaWRkZW4nOlxyXG4gICAgICAgICAgICAgICAgICBpZiAoZS5kZXRhaWwuZGF0YSA9PSB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpdGxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRpdGxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnb25VcGRhdGVMb2NrRGF0YSc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9jayhlLmRldGFpbC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdvbkdsb2JhbEZpbHRlckFwcGxpY2FibGVDaGVjayc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5hcHBsaWNhYmxlRmlsdGVycyhlLmRldGFpbC5kYXRhLCB3aWRnZXRJbmZvLndpZGdldEluc3RhbmNlSWQpO1xyXG4gICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIChtZS53aWRnZXRFbGVtZW50LnRpdGxlTGluZUVuYWJsZWQpICE9ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHRpdGxlTGluZUVuYWJsZWQgPSBtZS53aWRnZXRFbGVtZW50LnRpdGxlTGluZUVuYWJsZWQoKTtcclxuICAgICAgICAgICAgICBpZiAodGl0bGVMaW5lRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVUaXRsZUxpbmUgPSB0aXRsZUxpbmVFbmFibGVkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVUaXRsZUxpbmVBY3R1YWwgPSB0aXRsZUxpbmVFbmFibGVkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVkaXRUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmVkaXQnKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5lZGl0JykubGVuZ3RoID4gNikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdFRleHQgPSAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmVkaXQnKS5zdWJzdHJpbmcoMCwgNikgKyAnLi4uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5lZGl0VG9vbFRpcFZhbHVlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmVkaXQnKTtcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRUb29sVGlwV2lkdGggPSBcIjMwMHB4XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jb3B5VGV4dCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5jb3B5Jyk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uY29weScpLmxlbmd0aCA+IDYpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvcHlUZXh0ID0gKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5jb3B5Jykuc3Vic3RyaW5nKDAsIDYpICsgJy4uLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29weVRvb2xUaXBWYWx1ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5jb3B5Jyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb3B5VG9vbFRpcFdpZHRoID0gXCIzMDBweFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubW92ZVRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24ubW92ZScpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24ubW92ZScpLmxlbmd0aCA+IDYpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1vdmVUZXh0ID0gKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5tb3ZlJykuc3Vic3RyaW5nKDAsIDYpICsgJy4uLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMubW92ZVRvb2xUaXBWYWx1ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5tb3ZlJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9vbFRpcFdpZHRoID0gXCIzMDBweFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWxUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmV4Y2VsJyk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZXhjZWwnKS5sZW5ndGggPiA2KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbFRleHQgPSAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmV4Y2VsJykuc3Vic3RyaW5nKDAsIDYpICsgJy4uLicpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhjZWxUb29sVGlwVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZXhjZWwnKTtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsVG9vbFRpcFdpZHRoID0gXCIzMDBweFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlVGV4dCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5kZWxldGUnKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5kZWxldGUnKS5sZW5ndGggPiA2KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUZXh0ID0gKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5kZWxldGUnKS5zdWJzdHJpbmcoMCwgNikgKyAnLi4uJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUb29sVGlwVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uZGVsZXRlJyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUb29sVGlwV2lkdGggPSBcIjMwMHB4XCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIG1lLmlzV2lkZ2V0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLmFwcENvbmZpZyA9IHRoaXMuYXBwQ29uZmlnO1xyXG4gICAgICAgICAgICB3aWRnZXRDb25maWdGaWx0ZXIud2lkZ2V0SW5mbyA9IHdpZGdldEluZm87XHJcbiAgICAgICAgICAgIHdpZGdldENvbmZpZ0ZpbHRlci5jb25maWdDaGFuZ2VzID0gdGhpcy5nZXRDb25maWdDaGFuZ2VzKGZhbHNlKTtcclxuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLndpZGdldEluZm8ud2lkZ2V0TmFtZSA9IHdpZGdldEluZm8ud2lkZ2V0TmFtZTtcclxuICAgICAgICAgICAgd2lkZ2V0Q29uZmlnRmlsdGVyLmdsb2JhbEZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVyO1xyXG4gICAgICAgICAgICBtZS53aWRnZXRFbGVtZW50LmxvYWRDb250ZW50KHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgICAgICAgIGF3YWl0IG1lLnNldExvY2sod2lkZ2V0Q29uZmlnRmlsdGVyLmNvbmZpZyk7XHJcbiAgICAgICAgICAgIGF3YWl0IG1lLnNldERvd25sb2FkSWNvbigpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdGxXaWRnZXQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLndpZGdldEVsZW1lbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqVG8gc2V0IERlZmF1bHQgU3RhdGUgZm9yIHRoZSB3aWRnZXQgd2hlbiBpdCBpcyBub3QgY29uZmlndXJlZCAqL1xyXG4gIHNldE5vdENvbmZpZ3VyZWRTdGF0ZSh3aWRnZXRJbmZvOiBJV2lkZ2V0SW5mbywgZm9yY2VFbmFibGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgaWYgKCh3aWRnZXRJbmZvLnNob3dEZWZhdWx0U3RhdGUgJiYgKHdpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcgPT0gXCJcIiB8fCBPYmplY3Qua2V5cyhKU09OLnBhcnNlKHdpZGdldEluZm8ud2lkZ2V0Q29uZmlnSW5mby5jb25maWcpKS5sZW5ndGggPT0gMCkpIHx8IChmb3JjZUVuYWJsZSkpIHtcclxuICAgICAgdGhpcy5pc1dpZGdldFN0YXRlQXBwbGljYWJsZSA9IHRydWU7XHJcbiAgICAgIHRoaXMud2lkZ2V0RW1wdHlTdGF0ZSA9IFdpZGdldFZpZXdTdGF0ZS5lbXB0eUNvbmZpZy50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMud2lkZ2V0RW1wdHlTdGF0ZSA9ICcnO1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0U3RhdGVBcHBsaWNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipUbyBjb25maWd1cmUgZW1wdHkgc3RhdGUgZm9yIHRoZSB3aWRnZXQgICovXHJcbiAgc2V0RW1wdHlTdGF0ZSh3aWRnZXRTdGF0ZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5oZWlnaHQgPT0gMSB8fCB0aGlzLndpZHRoID09IDEpXHJcbiAgICAgIHRoaXMuaXNLcGlWaWV3ID0gdHJ1ZVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmlzS3BpVmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy53aWRnZXRFbXB0eVN0YXRlID0gd2lkZ2V0U3RhdGUud2lkZ2V0Vmlld1N0YXRlO1xyXG4gICAgdGhpcy5pc0dsb2JhbEZpbHRlckFwcGxpZWQgPSB3aWRnZXRTdGF0ZS5pc0dsb2JhbEZpbHRlckFwcGxpZWQ7XHJcbiAgICBpZiAod2lkZ2V0U3RhdGUgIT0gV2lkZ2V0Vmlld1N0YXRlLm5vcm1hbCkge1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0U3RhdGVBcHBsaWNhYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0Rvd25sb2FkSWNvblZpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlzV2lkZ2V0U3RhdGVBcHBsaWNhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHdpZGdldFN0YXRlKSB7XHJcbiAgICAgIGNhc2UgV2lkZ2V0Vmlld1N0YXRlLmVtcHR5Q29uZmlnOlxyXG4gICAgICAgIHRoaXMuc2V0Tm90Q29uZmlndXJlZFN0YXRlKHRoaXMuZGF0YS53aWRnZXRJbmZvLCB0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBXaWRnZXRWaWV3U3RhdGUuZW1wdHlEYXRhOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFdpZGdldFZpZXdTdGF0ZS5lcnJvcjpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbmZpZ0NoYW5nZXMoY29uZmlnQ2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBsZXQgY29uZmlnQ2hhbmdlcyA9IDxJY29uZmlnQ2hhbmdlcz57XHJcbiAgICAgIGlzQ29uZmlnVXBkYXRlZDogY29uZmlnQ2hhbmdlZCxcclxuICAgICAgdXBkYXRlZENvbmZpZ1Byb3BlcnR5OiBbXVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZ0NoYW5nZXM7XHJcbiAgfVxyXG5cclxuICAvKiogVG8gcmVmcmVzaCB3aWRnZXQgb24gaW5wdXQgY29uZmlnIGNoYW5nZXMgKi9cclxuICBhc3luYyByZWZyZXNoV2lkZ2V0KHdpZGdldEluZm86IElXaWRnZXRJbmZvLCBjb25maWdDaGFuZ2VkOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuV2lkZ2V0RGlzcGxheU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uJyArIHRoaXMuZGF0YS53aWRnZXRJbmZvLndpZGdldFRpdGxlLCB0cnVlKTtcclxuICAgIHdpZGdldEluZm8ucm93SGVpZ2h0ID0gdGhpcy5ncmlkQ2VsbEhlaWdodDtcclxuICAgIHRoaXMuc2V0Tm90Q29uZmlndXJlZFN0YXRlKHdpZGdldEluZm8pO1xyXG4gICAgbGV0IHdpZGdldENvbnRhaW5lckNvbnRleHQgPSB0aGlzO1xyXG5cclxuICAgIGxldCB3aWRnZXRDb25maWdGaWx0ZXIgPSA8SVdpZGdldENvbmZpZ0ZpbHRlcj57XHJcbiAgICAgIGNvbmZpZzogd2lkZ2V0SW5mby53aWRnZXRDb25maWdJbmZvLmNvbmZpZyxcclxuICAgICAgZ2xvYmFsRmlsdGVyOiB0aGlzLmdsb2JhbEZpbHRlcixcclxuICAgICAgYXBwQ29uZmlnOiB0aGlzLmFwcENvbmZpZyxcclxuICAgICAgd2lkZ2V0SW5mbzogd2lkZ2V0SW5mbyxcclxuICAgICAgY29uZmlnQ2hhbmdlczogdGhpcy5nZXRDb25maWdDaGFuZ2VzKGNvbmZpZ0NoYW5nZWQpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdpZGdldENvbnRhaW5lckNvbnRleHQuaXNXaWRnZXRMb2FkZWQpIHtcclxuICAgICAgaWYgKHRoaXMud2lkZ2V0RWxlbWVudCAmJiB0eXBlb2YgKHRoaXMud2lkZ2V0RWxlbWVudC5zZXRDb25maWdGaWx0ZXIpID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICB3aWRnZXRDb250YWluZXJDb250ZXh0LndpZGdldEVsZW1lbnQuc2V0Q29uZmlnRmlsdGVyKHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgIH1cclxuICAgICAgd2lkZ2V0Q29udGFpbmVyQ29udGV4dC53aWRnZXRFbGVtZW50LmxvYWRDb250ZW50KHdpZGdldENvbmZpZ0ZpbHRlcik7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2V0TG9jayh3aWRnZXRDb25maWdGaWx0ZXIuY29uZmlnKTtcclxuICAgICAgYXdhaXQgdGhpcy5zZXREb3dubG9hZEljb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3VzZU92ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy50b29sVGlwVmFsdWUgPSAnICc7XHJcbiAgICB0aGlzLnRvb2xUaXBXaWR0aCA9ICcwcHgnO1xyXG4gICAgbGV0IGVsZW1lbnQgPSB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoZWxlbWVudC5vZmZzZXRXaWR0aCA8IGVsZW1lbnQuc2Nyb2xsV2lkdGgpIHtcclxuICAgICAgdGhpcy50b29sVGlwVmFsdWUgPSBlbGVtZW50LmlubmVySFRNTDtcclxuICAgICAgdGhpcy50b29sVGlwV2lkdGggPSAnMzAwcHgnO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudG9vbFRpcFdpZHRoID0gJzBweCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldExvY2soY29uZmlnOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9ja1RlbXBsYXRlSW5mbyA9IHRoaXMud2lkZ2V0RWxlbWVudC5sb2FkTG9ja0luZm8oKTtcclxuICAgIHZhciBjb25maWdPYmo6IGFueTtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgY29uZmlnT2JqID0gSlNPTi5wYXJzZShjb25maWcpO1xyXG4gICAgICBpZiAoY29uZmlnT2JqICYmIGNvbmZpZ09iai5Mb2NrcyAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoY29uZmlnT2JqLkxvY2tzLklzRGF0ZUxvY2tlZCB8fCBjb25maWdPYmouTG9ja3MuSXNEYXRlc0xvY2tlZCB8fCBjb25maWdPYmouTG9ja3MuSXNQYXJ0aWNpcGFudExvY2tlZCB8fCBjb25maWdPYmouTG9ja3MuSXNTb3VyY2VMb2NrZWQpIHtcclxuICAgICAgICAgIHRoaXMubG9ja0RldGFpbHMgPSBbXTtcclxuICAgICAgICAgIGlmIChjb25maWdPYmouTG9ja3MuSXNEYXRlTG9ja2VkIHx8IGNvbmZpZ09iai5Mb2Nrcy5Jc0RhdGVzTG9ja2VkKVxyXG4gICAgICAgICAgICB0aGlzLmxvY2tEZXRhaWxzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLkRhdGVSYW5nZScpKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29uZmlnT2JqLkxvY2tzLklzUGFydGljaXBhbnRMb2NrZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NrRGV0YWlscy5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5EaXZpc2lvbk9yR3JvdXBvclNpdGUnKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoY29uZmlnT2JqLkxvY2tzLklzU291cmNlTG9ja2VkKVxyXG4gICAgICAgICAgICB0aGlzLmxvY2tEZXRhaWxzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLkRhdGFTdHJlYW0nKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5sb2NrRGV0YWlscyA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2NrRGV0YWlscyA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldERvd25sb2FkSWNvbigpIHtcclxuICAgIGxldCBkb3dubG9hZFR5cGUgPSBhd2FpdCB0aGlzLndpZGdldEVsZW1lbnQuZ2V0RG93bmxvYWRUeXBlKCk7XHJcbiAgICB0aGlzLmRvd25sb2FkSWNvblR5cGUgPSBkb3dubG9hZFR5cGU7XHJcbiAgICB0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0NoYXJ0RG93bmxvYWRWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzR3JpZERvd25sb2FkVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RXhjZWxsID0gdHJ1ZTtcclxuICAgIGlmIChkb3dubG9hZFR5cGUgIT0gUkFEb3dubG9hZFR5cGUuTm9uZSkge1xyXG4gICAgICB0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlzV2lkZ2V0TWdtbnQgJiYgIXRoaXMuZGV0YWlsUGFnZVVybCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1NldHRpbmdzTGluayA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvd25sb2FkVHlwZSA9PSBSQURvd25sb2FkVHlwZS5DaGFydCkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnREb3dubG9hZFZpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkb3dubG9hZFR5cGUgPT0gUkFEb3dubG9hZFR5cGUuR3JpZCkge1xyXG4gICAgICB0aGlzLmlzR3JpZERvd25sb2FkVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvd25sb2FkVHlwZSA9PSBSQURvd25sb2FkVHlwZS5TdGF0aXN0aWNzKSB7XHJcbiAgICAgIHRoaXMuaXNHcmlkRG93bmxvYWRWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93RXhjZWxsID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRJY29uQ2xpY2tlZCh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIFwiQ1NWXCI6XHJcbiAgICAgICAgdGhpcy53aWRnZXRFbGVtZW50LmRvd25sb2FkQ2xpY2tlZCh0aGlzLmRvd25sb2FkSWNvblR5cGUsIFJBRG93bmxvYWRPcHRpb24uQ1NWKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBOR1wiOlxyXG4gICAgICAgIHRoaXMud2lkZ2V0RWxlbWVudC5kb3dubG9hZENsaWNrZWQodGhpcy5kb3dubG9hZEljb25UeXBlLCBSQURvd25sb2FkT3B0aW9uLlBORyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJQREZcIjpcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5QREYpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiU1ZHXCI6XHJcbiAgICAgICAgdGhpcy53aWRnZXRFbGVtZW50LmRvd25sb2FkQ2xpY2tlZCh0aGlzLmRvd25sb2FkSWNvblR5cGUsIFJBRG93bmxvYWRPcHRpb24uU1ZHKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkpQRUdcIjpcclxuICAgICAgICB0aGlzLndpZGdldEVsZW1lbnQuZG93bmxvYWRDbGlja2VkKHRoaXMuZG93bmxvYWRJY29uVHlwZSwgUkFEb3dubG9hZE9wdGlvbi5KUEVHKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlTWVudSgpIHtcclxuICAgIGpRdWVyeSgnI3JhLWRiLXdpZGdldC1tZW51JykucmVtb3ZlKCk7XHJcbiAgfVxyXG4gIC8qKlNob3cgZHJvcGRvd24gb24gZ2VhciBpY29uIGNsaWNrICAqL1xyXG4gIHB1YmxpYyBzaG93RHJvcERvd24oZTogYW55KSB7XHJcbiAgICB0aGlzLnNldERvd25sb2FkSWNvbigpO1xyXG5cclxuICAgIHRoaXMucmVtb3ZlTWVudSgpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCB0YXJnZXRQb3MgPSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgbGV0IHN0eWxlOiBzdHJpbmcgPSBcInBvc2l0aW9uOmZpeGVkO3RvcDpcIiArICh0YXJnZXRQb3MueSArIDE1KSArICdweCcgKyAnO2xlZnQ6JyArIChlLnBhZ2VYIC0gMTIyKSArICdweDt6LWluZGV4OjEwMDA7JztcclxuICAgICAgbGV0IGh0bWwgPSB0aGlzLmdldENvbnRlbnh0SHRtbChzdHlsZSk7XHJcblxyXG4gICAgICBqUXVlcnkoaHRtbCkuYXBwZW5kVG8oJ2JvZHknKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzV2lkZ2V0TWdtbnQpIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djRWRpdFdpZGdldCcsIHRoaXMuZWRpdFdpZGdldCk7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd3Y0NvcHlXaWRnZXQnLCB0aGlzLmNvcHlXaWRnZXQpO1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2NNb3ZlV2lkZ2V0JywgdGhpcy5tb3ZlV2lkZ2V0KTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djV2lkZ2V0RGVsZXRlJywgdGhpcy5kZWxldGVXaWRnZXQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRldGFpbFBhZ2VVcmwpIHtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djVmlzaXRXaWRnZXQnLCB0aGlzLnZpc2l0UGFnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNDaGFydERvd25sb2FkVmlzaWJsZSkge1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2NEb3dubG9hZFBuZycsIHRoaXMuZG93bmxvYWRJY29uQ2xpY2tlZCwgJ1BORycpO1xyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2NEb3dubG9hZEpwZycsIHRoaXMuZG93bmxvYWRJY29uQ2xpY2tlZCwgJ0pQRUcnKTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djRG93bmxvYWRQZGYnLCB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQsICdQREYnKTtcclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ3djRG93bmxvYWRTdmcnLCB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQsICdTVkcnKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pc0dyaWREb3dubG9hZFZpc2libGUgJiYgdGhpcy5zaG93RXhjZWxsKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd3Y0Rvd25sb2FkRXhjZWwnLCB0aGlzLmRvd25sb2FkSWNvbkNsaWNrZWQsICdDU1YnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JhLWRiLXdpZGdldC1tZW51JykuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcclxuICAgICAgICB3aW5kb3cubW91c2VPdmVyV2lkZ2V0TWVudSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmEtZGItd2lkZ2V0LW1lbnUnKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5tb3VzZU92ZXJXaWRnZXRNZW51ID0gZmFsc2U7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXdpbmRvdy5ncmlkc3Rlckl0ZW1FbnRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZU1lbnUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXIoaWQ6IHN0cmluZywgZXZlbnQ6IGFueSwgcGFyYW1zPzogYW55KSB7XHJcbiAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgZXZlbnQuY2FsbCh0aGlzLCBwYXJhbXMpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGVueHRIdG1sKHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIGxldCBodG1sOiBzdHJpbmcgPSAnPGRpdiBpZD1cInJhLWRiLXdpZGdldC1tZW51XCInICsgJ3N0eWxlPVwiJyArIHN0eWxlICsgJ1wiIGNsYXNzPVwiZG93bmxvYWQtY29udGVudCBkcm9wZG93bi1jb250ZW50IHdpZGdldC1jb25maWctaXRlbSBkcm9wZG93bi1jbGlja1wiIHN0eWxlPVwiei1pbmRleDogMTAwMjtcIj4nO1xyXG5cclxuICAgIGxldCBzZXR0aW5ncyA9ICcnO1xyXG4gICAgaWYgKHRoaXMuaXNXaWRnZXRNZ21udCkge1xyXG4gICAgICBzZXR0aW5ncyArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djRWRpdFdpZGdldCcsICdmYWwgZmEtZWRpdCcsIHRoaXMuZWRpdFRleHQpO1xyXG4gICAgICBzZXR0aW5ncyArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djQ29weVdpZGdldCcsICdmYWwgZmEtY29weScsIHRoaXMuY29weVRleHQpO1xyXG4gICAgICBzZXR0aW5ncyArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djTW92ZVdpZGdldCcsICdmYWwgZmEtYXJyb3dzLWFsdCcsIHRoaXMubW92ZVRleHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGV0YWlsUGFnZVVybCkge1xyXG4gICAgICBzZXR0aW5ncyArPSAnPGEgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4O2FsaWduLWl0ZW1zOiBjZW50ZXI7YWxpZ24tY29udGVudDogY2VudGVyOyBkaXNwbGF5OiBmbGV4O1wiIGlkPVwid2NWaXNpdFdpZGdldFwiPic7XHJcbiAgICAgIHNldHRpbmdzICs9ICc8aSBzdHlsZT1cInBhZGRpbmctbGVmdDogNHB4O2ZvbnQtc2l6ZTogMjdweCAhaW1wb3J0YW50O1wiIGNsYXNzPVwiZmFsIGZhLWFuZ2xlLXJpZ2h0XCI+PC9pPiAnO1xyXG4gICAgICBzZXR0aW5ncyArPSAnPHNwYW4gc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDExcHg7bWFyZ2luLXRvcDogMnB4O1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA2cHg7XCI+JztcclxuICAgICAgc2V0dGluZ3MgKz0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLnZpc2l0cGFnZScpO1xyXG4gICAgICBzZXR0aW5ncyArPSAnPC9zcGFuPjwvYT4nO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGV0YWlsUGFnZVVybCB8fCB0aGlzLmlzV2lkZ2V0TWdtbnQpIHtcclxuICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT1cImNvbG9yOiAjOUZBMEE0O2ZvbnQtc2l6ZTogMTJweDtwYWRkaW5nLXRvcDogOHB4O3BhZGRpbmctbGVmdDogMTJweDtcIj4nO1xyXG4gICAgICBodG1sICs9IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5zZXR0aW5ncycpICsgJzwvZGl2Pic7XHJcbiAgICAgIGh0bWwgKz0gc2V0dGluZ3M7XHJcbiAgICAgIGh0bWwgKz0gdGhpcy5nZXRIcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSkge1xyXG4gICAgICBpZiAodGhpcy5zaG93RXhjZWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGV0YWlsUGFnZVVybCB8fCB0aGlzLmlzV2lkZ2V0TWdtbnQpXHJcbiAgICAgICAgICBodG1sICs9ICc8c3BhbiBzdHlsZT1cImNvbG9yOiAjOUZBMEE0O2ZvbnQtc2l6ZTogMTJweDtcIj4nO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIHN0eWxlPVwiY29sb3I6ICM5RkEwQTQ7Zm9udC1zaXplOiAxMnB4O3BhZGRpbmctdG9wOjVweDtkaXNwbGF5OmJsb2NrO1wiPic7XHJcblxyXG4gICAgICAgIGh0bWwgKz0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmRvd25sb2FkcycpO1xyXG4gICAgICAgIGh0bWwgKz0gJzwvc3Bhbj4nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pc0NoYXJ0RG93bmxvYWRWaXNpYmxlKSB7XHJcbiAgICAgICAgaHRtbCArPSAnPGRpdiBzdHlsZT1cInBhZGRpbmctdG9wOiAxMHB4O1wiIGNsYXNzPVwiY2hhcnREb3dubG9hZFwiPic7XHJcbiAgICAgICAgaHRtbCArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djRG93bmxvYWRQbmcnLCAnZmFsIGZhLWZpbGUtaW1hZ2UnLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24ucG5nJykpO1xyXG4gICAgICAgIGh0bWwgKz0gdGhpcy5nZXRIdG1sRm9yQnV0dG9uKCd3Y0Rvd25sb2FkSnBnJywgJ2ZhbCBmYS1maWxlLWltYWdlJywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLmpwZWcnKSk7XHJcbiAgICAgICAgaHRtbCArPSB0aGlzLmdldEh0bWxGb3JCdXR0b24oJ3djRG93bmxvYWRQZGYnLCAnZmFsIGZhLWZpbGUtcGRmJywgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLnBkZicpKTtcclxuICAgICAgICBodG1sICs9IHRoaXMuZ2V0SHRtbEZvckJ1dHRvbignd2NEb3dubG9hZFN2ZycsICdmYWwgZmEtZmlsZS1hbHQnLCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uc3ZnJykpO1xyXG4gICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNHcmlkRG93bmxvYWRWaXNpYmxlICYmIHRoaXMuc2hvd0V4Y2VsbCkge1xyXG4gICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJncmlkRG93bmxvYWRcIj4nO1xyXG4gICAgICAgIGh0bWwgKz0gdGhpcy5nZXRIdG1sRm9yQnV0dG9uKCd3Y0Rvd25sb2FkRXhjZWwnLCAnZmFsIGZhLWRvd25sb2FkJywgdGhpcy5leGNlbFRleHQpO1xyXG4gICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRG93bmxvYWRJY29uVmlzaWJsZSAmJiB0aGlzLmlzV2lkZ2V0TWdtbnQgJiYgdGhpcy5zaG93RXhjZWxsKSB7XHJcbiAgICAgIGh0bWwgKz0gdGhpcy5nZXRIcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNXaWRnZXRNZ21udCkge1xyXG4gICAgICBodG1sICs9ICc8YSBpZD1cIndjV2lkZ2V0RGVsZXRlXCI+PGkgY2xhc3M9XCJmYWwgZmEtdGltZXNcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogM3B4O2NvbG9yOiByZWQ7XCI+PC9pPjxzcGFuPic7XHJcbiAgICAgIGh0bWwgKz0gdGhpcy5kZWxldGVUZXh0O1xyXG4gICAgICBodG1sICs9ICc8L3NwYW4+PC9hPic7XHJcbiAgICB9XHJcblxyXG4gICAgaHRtbCArPSAnPC9kaXY+JztcclxuICAgIHJldHVybiBodG1sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRIcigpIHtcclxuICAgIHJldHVybiAnPGhyIGNsYXNzPVwiaHJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDVweDttYXJnaW4tYm90dG9tOiA1cHg7XCI+JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SHRtbEZvckJ1dHRvbihpZDogc3RyaW5nLCBmb250Q2xhc3M6IHN0cmluZywgdGV4dDogc3RyaW5nKSB7XHJcbiAgICBsZXQgaHRtbCA9ICc8YSBpZD1cIicgKyBpZCArICdcIj48aSBzdHlsZT1cIndpZHRoOjE2cHhcIiBjbGFzcz1cIicgKyBmb250Q2xhc3MgKyAnXCI+PC9pPiA8c3BhbiBzdHlsZT1cInBhZGRpbmctbGVmdDogNnB4O1wiPic7XHJcbiAgICBodG1sICs9IHRleHQ7XHJcbiAgICBodG1sICs9ICc8L3NwYW4+PC9hPic7XHJcbiAgICByZXR1cm4gaHRtbDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGdldFBhcnNlZENvbmZpZyhjb25maWc6IGFueSkge1xyXG4gICAgbGV0IHBhcnNlZENvbmZpZzogYW55O1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgcGFyc2VkQ29uZmlnID0gSlNPTi5wYXJzZShjb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCB7XHJcbiAgICAgICAgICBwYXJzZWRDb25maWcgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlZENvbmZpZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmZpZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbGF5V2lkZ2V0U2V0dGluZ3Moc2V0dGluZ3M6IGFueSkge1xyXG4gICAgaWYgKHNldHRpbmdzLk5vUGFkZGluZylcclxuICAgICAgdGhpcy5ub1BhZGRpbmcgPSB0cnVlXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMubm9QYWRkaW5nID0gZmFsc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5hcHBsaWNhYmxlRmlsdGVycyhkYXRhOiBhbnksIGluc3RhbmNlSWQ6IGFueSkge1xyXG4gICAgdmFyIHdpZGdldERhdGE6IGFueSA9IHt9O1xyXG4gICAgdGhpcy5pbmFwcGxpY2FibGVGaWx0ZXJzID0gW107XHJcbiAgICB3aWRnZXREYXRhLmluc3RhbmNlSWQgPSBpbnN0YW5jZUlkO1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudCA9PSAnZGF0ZVJhbmdlJylcclxuICAgICAgICAgIHRoaXMuaW5hcHBsaWNhYmxlRmlsdGVycy5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGUoJ0NvbW1vbi5EYXRlUmFuZ2UnKSk7XHJcbiAgICAgICAgZWxzZSBpZiAoZWxlbWVudCA9PSAncGFydGljaXBhbnQnKSB7XHJcbiAgICAgICAgICB0aGlzLmluYXBwbGljYWJsZUZpbHRlcnMucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb21tb24uRGl2aXNpb25Pckdyb3Vwb3JTaXRlJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlbGVtZW50ID09ICdzb3VyY2UnKVxyXG4gICAgICAgICAgdGhpcy5pbmFwcGxpY2FibGVGaWx0ZXJzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnQ29tbW9uLkRhdGFTdHJlYW0nKSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5pbmFwcGxpY2FibGVGaWx0ZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB3aWRnZXREYXRhLmRhdGEgPSBkYXRhO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHdpZGdldERhdGEuZGF0YSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQXBwbGllZEZpbHRlcnMuZW1pdCh3aWRnZXREYXRhKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.base.dashboard.filter.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import { Input } from '@angular/core';
|
|
7
7
|
/**
|
|
@@ -17,13 +17,12 @@ var RaBaseDashboardFilter = /** @class */ (function () {
|
|
|
17
17
|
function (async) {
|
|
18
18
|
return _this.getFilterConfig();
|
|
19
19
|
});
|
|
20
|
-
this.
|
|
21
|
-
* @param {?}
|
|
22
|
-
* @param {?} appConfig
|
|
20
|
+
this.setInapplicableFilterMsg = (/**
|
|
21
|
+
* @param {?} status
|
|
23
22
|
* @return {?}
|
|
24
23
|
*/
|
|
25
|
-
function (
|
|
26
|
-
_this.
|
|
24
|
+
function (status) {
|
|
25
|
+
_this.showHideInapplicableMsg(status);
|
|
27
26
|
});
|
|
28
27
|
this.isValidEntry = (/**
|
|
29
28
|
* @return {?}
|
|
@@ -37,6 +36,14 @@ var RaBaseDashboardFilter = /** @class */ (function () {
|
|
|
37
36
|
function () {
|
|
38
37
|
_this.clearData();
|
|
39
38
|
});
|
|
39
|
+
this.setAllFilterConfig = (/**
|
|
40
|
+
* @param {?} globalFilter
|
|
41
|
+
* @param {?} appConfig
|
|
42
|
+
* @return {?}
|
|
43
|
+
*/
|
|
44
|
+
function (globalFilter, appConfig) {
|
|
45
|
+
_this.setFilterConfig(globalFilter, appConfig);
|
|
46
|
+
});
|
|
40
47
|
}
|
|
41
48
|
/**
|
|
42
49
|
* @return {?}
|
|
@@ -51,9 +58,10 @@ var RaBaseDashboardFilter = /** @class */ (function () {
|
|
|
51
58
|
};
|
|
52
59
|
RaBaseDashboardFilter.propDecorators = {
|
|
53
60
|
getAllFilterConfig: [{ type: Input }],
|
|
54
|
-
|
|
61
|
+
setInapplicableFilterMsg: [{ type: Input }],
|
|
55
62
|
isValidEntry: [{ type: Input }],
|
|
56
|
-
clearAllData: [{ type: Input }]
|
|
63
|
+
clearAllData: [{ type: Input }],
|
|
64
|
+
setAllFilterConfig: [{ type: Input }]
|
|
57
65
|
};
|
|
58
66
|
return RaBaseDashboardFilter;
|
|
59
67
|
}());
|
|
@@ -65,11 +73,13 @@ if (false) {
|
|
|
65
73
|
*/
|
|
66
74
|
RaBaseDashboardFilter.prototype.getAllFilterConfig;
|
|
67
75
|
/** @type {?} */
|
|
68
|
-
RaBaseDashboardFilter.prototype.
|
|
76
|
+
RaBaseDashboardFilter.prototype.setInapplicableFilterMsg;
|
|
69
77
|
/** @type {?} */
|
|
70
78
|
RaBaseDashboardFilter.prototype.isValidEntry;
|
|
71
79
|
/** @type {?} */
|
|
72
80
|
RaBaseDashboardFilter.prototype.clearAllData;
|
|
81
|
+
/** @type {?} */
|
|
82
|
+
RaBaseDashboardFilter.prototype.setAllFilterConfig;
|
|
73
83
|
/**
|
|
74
84
|
* @abstract
|
|
75
85
|
* @return {?}
|
|
@@ -92,5 +102,11 @@ if (false) {
|
|
|
92
102
|
* @return {?}
|
|
93
103
|
*/
|
|
94
104
|
RaBaseDashboardFilter.prototype.isValid = function () { };
|
|
105
|
+
/**
|
|
106
|
+
* @abstract
|
|
107
|
+
* @param {?} status
|
|
108
|
+
* @return {?}
|
|
109
|
+
*/
|
|
110
|
+
RaBaseDashboardFilter.prototype.showHideInapplicableMsg = function (status) { };
|
|
95
111
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuYmFzZS5kYXNoYm9hcmQuZmlsdGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNjaG5laWRlcmVzcy9kYXNoYm9hcmRmcmFtZXdvcmsvIiwic291cmNlcyI6WyJsaWIvcmEuYmFzZS5kYXNoYm9hcmQuZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUV0QztJQUFBO1FBQUEsaUJBZ0NDO1FBeEJrQix1QkFBa0I7Ozs7UUFBRyxVQUFDLEtBQUs7WUFDMUMsT0FBTyxLQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxFQUFBO1FBRVEsNkJBQXdCOzs7O1FBQUcsVUFBQyxNQUFlO1lBQ2xELEtBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDLEVBQUE7UUFFUSxpQkFBWTs7O1FBQUc7WUFDdEIsT0FBTyxLQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxFQUFBO1FBRVEsaUJBQVk7OztRQUFHO1lBQ3RCLEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDLEVBQUE7UUFFUSx1QkFBa0I7Ozs7O1FBQUcsVUFBQyxZQUFvQixFQUFFLFNBQXFCO1lBQ3hFLEtBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsRUFBQTtJQU1ILENBQUM7Ozs7SUFKQyx3Q0FBUTs7O0lBQVI7O1lBQ00sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLHlCQUF5QixDQUFDO1FBQ3hELFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O3FDQXZCQSxLQUFLOzJDQUlMLEtBQUs7K0JBSUwsS0FBSzsrQkFJTCxLQUFLO3FDQUlMLEtBQUs7O0lBUVIsNEJBQUM7Q0FBQSxBQWhDRCxJQWdDQztTQWhDcUIscUJBQXFCOzs7Ozs7SUFRekMsbURBRUM7O0lBRUQseURBRUM7O0lBRUQsNkNBRUM7O0lBRUQsNkNBRUM7O0lBRUQsbURBRUM7Ozs7O0lBeEJELGtFQUFnQzs7Ozs7OztJQUNoQyxtRkFBZ0U7Ozs7O0lBQ2hFLDREQUEyQjs7Ozs7SUFDM0IsMERBQTRCOzs7Ozs7SUFDNUIsZ0ZBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUFwcENvbmZpZyB9IGZyb20gJ0BzY2huZWlkZXJlc3Mvd2lkZ2V0ZnJhbWV3b3JrJztcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJhQmFzZURhc2hib2FyZEZpbHRlciB7XHJcblxyXG4gIGFic3RyYWN0IGdldEZpbHRlckNvbmZpZygpOiBhbnk7XHJcbiAgYWJzdHJhY3Qgc2V0RmlsdGVyQ29uZmlnKGZpbHRlcjogc3RyaW5nLCBhcHBDb25maWc6IElBcHBDb25maWcpO1xyXG4gIGFic3RyYWN0IGNsZWFyRGF0YSgpOiB2b2lkO1xyXG4gIGFic3RyYWN0IGlzVmFsaWQoKTogYm9vbGVhbjtcclxuICBhYnN0cmFjdCBzaG93SGlkZUluYXBwbGljYWJsZU1zZyhzdGF0dXM6IGJvb2xlYW4pO1xyXG5cclxuICBASW5wdXQoKSBwcml2YXRlIGdldEFsbEZpbHRlckNvbmZpZyA9IChhc3luYykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyQ29uZmlnKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXRJbmFwcGxpY2FibGVGaWx0ZXJNc2cgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLnNob3dIaWRlSW5hcHBsaWNhYmxlTXNnKHN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBpc1ZhbGlkRW50cnkgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBjbGVhckFsbERhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNsZWFyRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0QWxsRmlsdGVyQ29uZmlnID0gKGdsb2JhbEZpbHRlcjogc3RyaW5nLCBhcHBDb25maWc6IElBcHBDb25maWcpID0+IHtcclxuICAgIHRoaXMuc2V0RmlsdGVyQ29uZmlnKGdsb2JhbEZpbHRlciwgYXBwQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdmFyIG15RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoXCJnbG9iYWwtZmlsdGVyLWluaXRpYXRlZFwiKTtcclxuICAgIGRvY3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudChteUV2ZW50KTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.base.dashboard.template.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import { Input } from '@angular/core';
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.dashbard.event.bus.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import { Injectable } from '@angular/core';
|
|
7
7
|
import { Subject } from 'rxjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.dashboard.module.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import { BrowserModule } from '@angular/platform-browser';
|
|
7
7
|
import { NgModule } from '@angular/core';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.dashboard.responsive.service.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import { Injectable } from '@angular/core';
|
|
7
7
|
import { GridsterConfigDefaultSettings } from './ra.gridster.config';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.dashboard.service.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
import * as tslib_1 from "tslib";
|
|
7
7
|
import { Injectable, Injector } from '@angular/core';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.event.enum.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
/** @enum {string} */
|
|
7
7
|
var RAEvent = {
|
|
@@ -54,6 +54,8 @@ var RAEvent = {
|
|
|
54
54
|
LaunchCustomWidgetFlyout: "LaunchCustomWidgetFlyout",
|
|
55
55
|
/**update applied filter badge for inaplicable filters */
|
|
56
56
|
UpdateAppledFiterForInapplicableFilter: "UpdateAppledFiterForInapplicableFilter",
|
|
57
|
+
/**show inapplicable filter message in global filter flyout */
|
|
58
|
+
ShowInapplicableFilterMessage: "ShowInapplicableFilterMessage",
|
|
57
59
|
};
|
|
58
60
|
export { RAEvent };
|
|
59
61
|
/** @enum {string} */
|
|
@@ -62,4 +64,4 @@ var RAEventKey = {
|
|
|
62
64
|
WidgetInstanceId: "widgetInstanceId",
|
|
63
65
|
};
|
|
64
66
|
export { RAEventKey };
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmEuZXZlbnQuZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzY2huZWlkZXJlc3MvZGFzaGJvYXJkZnJhbWV3b3JrLyIsInNvdXJjZXMiOlsibGliL3JhLmV2ZW50LmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBWSxPQUFPO0lBRWYsK0NBQStDO0lBQy9DLGNBQWMsa0JBQW1CO0lBRWpDLG9FQUFvRTtJQUNwRSxpQkFBaUIscUJBQXNCO0lBRXZDLGlGQUFpRjtJQUNqRixpQkFBaUIscUJBQXNCO0lBRXZDLGtGQUFrRjtJQUNsRixnQkFBZ0Isb0JBQXFCO0lBRXJDLHNEQUFzRDtJQUN0RCxjQUFjLGtCQUFtQjtJQUVqQyxtRkFBbUY7SUFDbkYsYUFBYSxpQkFBa0I7SUFFL0IseUNBQXlDO0lBQ3pDLGdCQUFnQixvQkFBcUI7SUFFckMsc0NBQXNDO0lBQ3RDLHVCQUF1QiwyQkFBNEI7SUFFbkQsOEVBQThFO0lBQzlFLGdCQUFnQixvQkFBcUI7SUFFckMsNERBQTREO0lBQzVELDRCQUE0QixnQ0FBaUM7SUFFN0QsaURBQWlEO0lBQ2pELGFBQWEsaUJBQWtCO0lBRS9CLDhDQUE4QztJQUM5QyxVQUFVLGNBQWU7SUFFekIsOENBQThDO0lBQzlDLFVBQVUsY0FBZTtJQUV6QixrREFBa0Q7SUFDbEQsWUFBWSxnQkFBaUI7SUFFN0Isc0ZBQXNGO0lBQ3RGLFNBQVMsYUFBYztJQUV2QixpREFBaUQ7SUFDakQsc0JBQXNCLDBCQUEyQjtJQUVqRCxpRUFBaUU7SUFDakUsbUJBQW1CLHVCQUF3QjtJQUUzQyw2QkFBNkI7SUFDN0IsZ0JBQWdCLG9CQUFxQjtJQUVyQyxpQ0FBaUM7SUFDakMsV0FBVyxlQUFnQjtJQUUzQixnRUFBZ0U7SUFDaEUsK0JBQStCLG1DQUFvQztJQUVuRSxzQ0FBc0M7SUFDdEMsdUJBQXVCLDJCQUE0QjtJQUVuRCx5Q0FBeUM7SUFDekMsdUJBQXVCLDJCQUE0QjtJQUVuRCxtQkFBbUIsdUJBQXdCO0lBRTNDLGlEQUFpRDtJQUNqRCx3QkFBd0IsNEJBQTJCO0lBRW5ELHlEQUF5RDtJQUN6RCxzQ0FBc0MsMENBQTJDO0lBRWpGLDhEQUE4RDtJQUM5RCw2QkFBNkIsaUNBQWtDO0VBQ2xFOzs7QUFFRCxJQUFZLFVBQVU7SUFDbEIsMkJBQTJCO0lBQzNCLGdCQUFnQixvQkFBcUI7RUFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBSQUV2ZW50IHtcclxuXHJcbiAgICAvKiogd2lkZ2V0IHNlbGVjdGlvbiBjbGljayBvbiB3aWRnZXQgbGlicmFyeSAqL1xyXG4gICAgV2lkZ2V0U2VsZWN0ZWQgPSBcIndpZGdldFNlbGVjdGVkXCIsXHJcblxyXG4gICAgLyoqIHRyaWdnZXJzIHdoZW4gdXNlciBjbGljayBvbiB0aGUgZWRpdCBsaW5rIGluIHdpZGdldCBjb250YWluZXIgKi9cclxuICAgIFdpZGdldEVkaXRDbGlja2VkID0gXCJ3aWRnZXRFZGl0Q2xpY2tlZFwiLFxyXG5cclxuICAgIC8qKiB0cmlnZ2VycyB3aGVuIHVzZXIgY2xpY2tzIHRoZSBjYW5jZWwgYnV0dG9uIG9uIHdpZGdldCBjb25maWd1cmF0aW9uIHdpbmRvdyAqL1xyXG4gICAgQ29uZmlnQ2FuY2VsQ2xpY2sgPSBcImNvbmZpZ0NhbmNlbENsaWNrXCIsXHJcblxyXG4gICAgLyoqIHRyaWdnZXJzIHdoZW4gdXNlciBjbGljayBvbiB0aGUgY2xvc2UgYnV0dG9uIG9uIHdpZGdldCBjb25maWd1cmF0aW9uIHdpbmRvdyAqL1xyXG4gICAgQ29uZmlnQ2xvc2VDbGljayA9IFwiY29uZmlnQ2xvc2VDbGlja1wiLFxyXG5cclxuICAgIC8qKiBhZGQgYnV0dG9uIGNsaWNrIG9uIHdpZGdldCBjb25maWd1cmF0aW9uIHdpbmRvdyAqL1xyXG4gICAgQ29uZmlnQWRkQ2xpY2sgPSBcImNvbmZpZ0FkZENsaWNrXCIsXHJcblxyXG4gICAgLyoqIHRyaWdnZXJzIHdoZW4gYSB1c2VyIGNsaWNrIG9uIHRoZSBzYXZlIGJ1dHRvbiBpbiB3aWRnZXQgY29uZmlndXJhdGlvbiB3aW5kb3cgKi9cclxuICAgIENvbmZpZ0NoYW5nZWQgPSBcImNvbmZpZ0NoYW5nZWRcIixcclxuXHJcbiAgICAvKipUbyByZWFycmFuZ2Ugd2lkZ2V0cyBpbiBhIGRhc2hib2FyZCAqL1xyXG4gICAgUmVhcnJhbmdlQ2xpY2tlZCA9IFwicmVhcnJhbmdlQ2xpY2tlZFwiLFxyXG5cclxuICAgIC8qKmRhc2hib2FyZCBjdXN0b21pemUgYnV0dG9uIGNsaWNrICovXHJcbiAgICBEYXNoYm9hcmRDdXN0b21pemVDbGljayA9IFwiZGFzaGJvYXJkQ3VzdG9taXplQ2xpY2tcIixcclxuXHJcbiAgICAvKip0cmlnZ2VycyB3aGVuIHVzZXIgY2xpY2tzIG9uIHRoZSBkYXNoYm9hcmQgY2hhbmdlIGljb24gaW4gaGVhZGVyIHNlY3Rpb24gKi9cclxuICAgIERhc2hib2FyZENoYW5nZWQgPSBcImRhc2hib2FyZENoYW5nZWRcIixcclxuXHJcbiAgICAvKiogdHJpZ2dlcnMgd2hlbiB1c2VyIGNsaWNrcyB0aGUgY2xvc2UgYnV0dG9uIG9uIGxpYnJhcnkgKi9cclxuICAgIFdpZGdldExpYnJhcnlDbG9zZUJ0bkNsaWNrZWQgPSBcIldpZGdldExpYnJhcnlDbG9zZUJ0bkNsaWNrZWRcIixcclxuXHJcbiAgICAvKiogdHJpZ2dlcnMgd2hlbiB1c2VyIGNsaWNrcyBvbiB2aWV3IGRhc2hib2FyZCovXHJcbiAgICBMb2FkRGFzaGJvYXJkID0gXCJMb2FkRGFzaGJvYXJkXCIsXHJcblxyXG4gICAgLyoqIHRyaWdnZXJzIHdoZW4gdXNlciBjbGlja3Mgb24gY29weXdpZGdldCAqL1xyXG4gICAgQ29weVdpZGdldCA9IFwiQ29weVdpZGdldFwiLFxyXG5cclxuICAgIC8qKnRyaWdnZXJzIHdoZW4gdXNlciBjbGlja3Mgb24gTW92ZSB3aWRnZXQgKi9cclxuICAgIE1vdmVXaWRnZXQgPSBcIk1vdmVXaWRnZXRcIixcclxuXHJcbiAgICAvKip0cmlnZ2VycyB3aGVuIHVzZXIgcmFpc2UgZGVsZXRlIHdpZGdldCBldmVudCAqL1xyXG4gICAgV2lkZ2V0RGVsZXRlID0gXCJXaWRnZXREZWxldGVcIixcclxuXHJcbiAgICAvKiogdXNlZCB0byBhZGQgd2lkZ2V0IHRvIHdpZGdldGxpc3Qgd2hlbiB1c2VyIGNvcGllcyBhIHdpZGdldCB0byBjdXJyZW50IGRhc2hib2FyZCAqL1xyXG4gICAgQWRkV2lkZ2V0ID0gXCJBZGRXaWRnZXRcIixcclxuXHJcbiAgICAvKiogZG9uZSBidXR0b24gY2xpY2sgb24gd2lkZ2V0IGxpYnJhcnkgZmx5b3V0ICovXHJcbiAgICB3aWRnZXRMaWJyYXJ5RG9uZUNsaWNrID0gXCJ3aWRnZXRMaWJyYXJ5RG9uZUNsaWNrXCIsXHJcblxyXG4gICAgLyoqcmVmcmVzaCBmYXZvcml0ZSBpY29uIGFmdGVyIHNydHRpbmcgYW5kIHJlc2V0dGluZyBmYXZvcml0ZXMgKi9cclxuICAgIGZhdm9yaXRlSWNvblJlZnJlc2ggPSBcImZhdm9yaXRlSWNvblJlZnJlc2hcIixcclxuXHJcbiAgICAvKip0byByZWZyZXNoIG1lbnUgY29udGVudCAqL1xyXG4gICAgUXVpY2tMaW5rUmVmcmVzaCA9IFwiUXVpY2tMaW5rUmVmcmVzaFwiLFxyXG5cclxuICAgIC8qKlRvIHJhaXNlIHdpZGdldCBhZGRlZCBldmVudCAqL1xyXG4gICAgV2lkZ2V0QWRkZWQgPSBcIldpZGdldEFkZGVkXCIsXHJcblxyXG4gICAgLyoqVG8gdXBkYXRlIGdsb2JhbCBmaWx0ZXIgc2l0ZSBmcm9tIG1hcCB3aWRnZXQgc2VsZWN0ZWQgc2l0ZSAqL1xyXG4gICAgVXBkYXRlR2xvYmFsRmlsdGVyRnJvbU1hcFdpZGdldCA9IFwiVXBkYXRlR2xvYmFsRmlsdGVyRnJvbU1hcFdpZGdldFwiLFxyXG5cclxuICAgIC8qKlRvIGFkZCB3aWRnZXQgb24gZW1wdHkgZGFzaGJvYXJkICovXHJcbiAgICBBZGRXaWRnZXRFbXB0eURhc2hib2FyZCA9IFwiQWRkV2lkZ2V0RW1wdHlEYXNoYm9hcmRcIixcclxuXHJcbiAgICAvKipUbyByYWlzZSBuZXcgd2lkZ2V0IGFkZCBjbGljayBldmVudCAqL1xyXG4gICAgQWRkTmV3V2lkZ2V0VG9EYXNoYm9hcmQgPSBcIkFkZE5ld1dpZGdldFRvRGFzaGJvYXJkXCIsXHJcblxyXG4gICAgSGlkZURhc2hib2FyZEJhbm5lciA9IFwiSGlkZURhc2hib2FyZEJhbm5lclwiLFxyXG5cclxuICAgIC8qKlRvIGxhdW5jaCBmbHlvdXQgZnJvbSBjdXN0b20gd2lkZ2V0IGxpYnJhcnkgKi9cclxuICAgIExhdW5jaEN1c3RvbVdpZGdldEZseW91dD1cIkxhdW5jaEN1c3RvbVdpZGdldEZseW91dFwiLFxyXG5cclxuICAgIC8qKnVwZGF0ZSBhcHBsaWVkIGZpbHRlciBiYWRnZSBmb3IgaW5hcGxpY2FibGUgZmlsdGVycyAqL1xyXG4gICAgVXBkYXRlQXBwbGVkRml0ZXJGb3JJbmFwcGxpY2FibGVGaWx0ZXIgPSBcIlVwZGF0ZUFwcGxlZEZpdGVyRm9ySW5hcHBsaWNhYmxlRmlsdGVyXCIsXHJcblxyXG4gICAgLyoqc2hvdyBpbmFwcGxpY2FibGUgZmlsdGVyIG1lc3NhZ2UgaW4gZ2xvYmFsIGZpbHRlciBmbHlvdXQgKi9cclxuICAgIFNob3dJbmFwcGxpY2FibGVGaWx0ZXJNZXNzYWdlID0gXCJTaG93SW5hcHBsaWNhYmxlRmlsdGVyTWVzc2FnZVwiXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFJBRXZlbnRLZXkge1xyXG4gICAgLyoqIG9uIGVkaXQgd2lkZ2V0IGNsaWNrICovXHJcbiAgICBXaWRnZXRJbnN0YW5jZUlkID0gXCJ3aWRnZXRJbnN0YW5jZUlkXCJcclxufVxyXG5cclxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: lib/ra.gridster.config.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
/** @type {?} */
|
|
7
7
|
export var GridsterConfigDefaultSettings = {
|
package/esm5/public-api.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: public-api.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
/*
|
|
7
7
|
* Public API Surface of ra-dashboard-framework
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* Generated from: schneideress-dashboardframework.ts
|
|
4
|
-
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Generated bundle index. Do not edit.
|