gamma-app-controller 2.0.7 → 2.0.9

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.
Files changed (19) hide show
  1. package/esm2020/lib/application-controller/application-controller.module.mjs +1 -6
  2. package/esm2020/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.mjs +18 -3
  3. package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +3 -9
  4. package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +6 -5
  5. package/esm2020/lib/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.mjs +64 -24
  6. package/esm2020/public-api.mjs +1 -3
  7. package/fesm2015/gamma-app-controller.mjs +1697 -2197
  8. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  9. package/fesm2020/gamma-app-controller.mjs +1705 -2199
  10. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  11. package/lib/application-controller/application-controller.module.d.ts +25 -26
  12. package/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.d.ts +2 -0
  13. package/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.d.ts +0 -4
  14. package/lib/application-controller/support-components/geo-map/geo-map.component.d.ts +2 -0
  15. package/lib/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component.d.ts +17 -2
  16. package/package.json +1 -1
  17. package/public-api.d.ts +0 -2
  18. package/esm2020/lib/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +0 -547
  19. package/lib/shared/advanced-component/google-geo-map/google-geo-map.component.d.ts +0 -75
@@ -16,12 +16,17 @@ export class GammaGeoChartComponent {
16
16
  this.choropleth_map_data_source = new Map();
17
17
  this.minChoroplethMapCnt = Infinity;
18
18
  this.maxChoroplethMapCnt = -Infinity;
19
+ this.allSelectedRangeSliderValues = [];
20
+ this.choroplethMapDataSource = new Map();
21
+ this.choroplethTooltipDataSource = new Map();
22
+ this.isRangeSliderVisible = false;
19
23
  }
20
24
  set chartDataSource(value) {
21
25
  if (value === undefined || value.length === 0) {
22
26
  return;
23
27
  }
24
28
  else {
29
+ debugger;
25
30
  this.isLoader = true;
26
31
  this.page_config = value;
27
32
  this.page_parms = value.titleParams;
@@ -67,8 +72,9 @@ export class GammaGeoChartComponent {
67
72
  }
68
73
  else if (this.mapTYpe == "choroplethMap") {
69
74
  debugger;
70
- let choroplethMapDataSource = new Map();
71
- let choroplethTooltipDataSource = new Map();
75
+ this.choroplethMapDataSource = new Map();
76
+ this.choroplethTooltipDataSource = new Map();
77
+ this.choroplethMapData = value.kpiConfig.dataSource;
72
78
  let chartConfig = value.kpiConfig.dataConfig;
73
79
  this.chartHeight = `${chartConfig.size}px`;
74
80
  let tootTipColumn = chartConfig.chart_config
@@ -77,12 +83,19 @@ export class GammaGeoChartComponent {
77
83
  value.kpiConfig.dataSource.forEach(d => {
78
84
  const key = d[chartConfig.argumentField].toUpperCase();
79
85
  const val = d[valueField];
80
- choroplethMapDataSource.set(key, val);
81
- choroplethTooltipDataSource.set(key, d);
86
+ this.choroplethMapDataSource.set(key, val);
87
+ this.choroplethTooltipDataSource.set(key, d);
82
88
  this.minChoroplethMapCnt = Math.min(this.minChoroplethMapCnt, d[valueField]);
83
89
  this.maxChoroplethMapCnt = Math.max(this.maxChoroplethMapCnt, d[valueField]);
84
90
  });
85
- this.initChoroplethMapMap(chartConfig, tootTipColumn, choroplethMapDataSource, choroplethTooltipDataSource);
91
+ if (chartConfig.isValueFieldRangeSlider) {
92
+ this.allSelectedRangeSliderValues = [...new Set(value.kpiConfig.dataSource.map(d => d[chartConfig.sliderValueField]))];
93
+ this.selectedRangeSliderValue = this.allSelectedRangeSliderValues[0];
94
+ this.isRangeSliderVisible = true;
95
+ this.updateChoroplethMapData(this.selectedRangeSliderValue, chartConfig);
96
+ this.choroplethMapChartConfig = chartConfig;
97
+ }
98
+ this.initChoroplethMap(chartConfig, tootTipColumn);
86
99
  setTimeout(() => {
87
100
  this.isLoader = false;
88
101
  }, 200);
@@ -465,15 +478,16 @@ export class GammaGeoChartComponent {
465
478
  b: bigint & 255
466
479
  };
467
480
  }
468
- initChoroplethMapMap(chartConfig, tootTipColumn, choroplethMapDataSource, choroplethTooltipDataSource) {
469
- const map = new google.maps.Map(document.getElementById("googlemap"), {
481
+ initChoroplethMap(chartConfig, tootTipColumn) {
482
+ this.map = new google.maps.Map(document.getElementById("googlemap"), {
470
483
  center: { lat: parseFloat(chartConfig.centerLat), lng: parseFloat(chartConfig.centerLng) },
471
484
  zoom: parseInt(chartConfig.zoom)
472
485
  });
473
- map.data.loadGeoJson(chartConfig.gjsonFilePath);
474
- map.data.setStyle((feature) => {
486
+ this.map.data.loadGeoJson(chartConfig.gjsonFilePath);
487
+ this.map.data.setStyle(feature => this.getFeatureStyle(feature, chartConfig));
488
+ this.map.data.setStyle((feature) => {
475
489
  const district = feature.getProperty('d')?.toUpperCase();
476
- const cnt = choroplethMapDataSource.get(district);
490
+ const cnt = this.choroplethMapDataSource.get(district);
477
491
  return {
478
492
  fillColor: this.getColor(cnt, chartConfig.colorOne, chartConfig.colorTwo),
479
493
  strokeColor: '#555',
@@ -482,22 +496,15 @@ export class GammaGeoChartComponent {
482
496
  };
483
497
  });
484
498
  const infoWindow = new google.maps.InfoWindow();
485
- map.data.addListener('mouseover', (event) => {
499
+ this.map.data.addListener('mouseover', (event) => {
486
500
  const district = event.feature.getProperty('d');
487
501
  const key = district?.toUpperCase();
488
- const row = choroplethTooltipDataSource.get(key);
502
+ const row = this.choroplethTooltipDataSource.get(key);
489
503
  infoWindow.setContent(this.buildInfoWindowContent(district, row, tootTipColumn));
490
504
  infoWindow.setPosition(event.latLng);
491
- infoWindow.open(map);
505
+ infoWindow.open(this.map);
492
506
  });
493
- map.data.addListener('mouseout', () => infoWindow.close());
494
- }
495
- getFeatureCenter(feature) {
496
- const bounds = new google.maps.LatLngBounds();
497
- feature.getGeometry()?.forEachLatLng((latLng) => {
498
- bounds.extend(latLng);
499
- });
500
- return bounds.getCenter();
507
+ this.map.data.addListener('mouseout', () => infoWindow.close());
501
508
  }
502
509
  buildInfoWindowContent(district, row, tootTipColumn) {
503
510
  const rows = tootTipColumn.map(c => `
@@ -521,12 +528,45 @@ export class GammaGeoChartComponent {
521
528
  </div>
522
529
  `;
523
530
  }
531
+ updateChoroplethMapData(year, chartConfig) {
532
+ this.choroplethMapDataSource.clear();
533
+ this.minChoroplethMapCnt = Infinity;
534
+ this.maxChoroplethMapCnt = -Infinity;
535
+ this.choroplethMapData
536
+ .filter(d => d.year === year)
537
+ .forEach(d => {
538
+ this.choroplethMapDataSource.set(d.district.toUpperCase(), d.cnt);
539
+ this.minChoroplethMapCnt = Math.min(this.minChoroplethMapCnt, d.cnt);
540
+ this.maxChoroplethMapCnt = Math.max(this.maxChoroplethMapCnt, d.cnt);
541
+ });
542
+ if (this.map) {
543
+ this.map.data.setStyle(feature => this.getFeatureStyle(feature, chartConfig));
544
+ }
545
+ }
546
+ getFeatureStyle(feature, chartConfig) {
547
+ const districtName = feature.getProperty('d')?.toUpperCase();
548
+ const cnt = this.choroplethMapDataSource.get(districtName);
549
+ return {
550
+ fillColor: this.getColor(cnt, chartConfig.colorOne, chartConfig.colorTwo),
551
+ strokeColor: '#555',
552
+ strokeWeight: 1,
553
+ fillOpacity: 0.75
554
+ };
555
+ }
556
+ setYearByIndex(index) {
557
+ this.selectedRangeSliderValue = this.allSelectedRangeSliderValues[index];
558
+ this.updateChoroplethMapData(this.selectedRangeSliderValue, this.choroplethMapChartConfig);
559
+ }
560
+ onYearChange(event) {
561
+ const index = +event.target.value;
562
+ this.setYearByIndex(index);
563
+ }
524
564
  }
525
565
  GammaGeoChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaGeoChartComponent, deps: [{ token: i1.CommonService }], target: i0.ɵɵFactoryTarget.Component });
526
- GammaGeoChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammaGeoChartComponent, selector: "app-gamma-geo-chart", inputs: { rightClickEnable: "rightClickEnable", chartDataSource: "chartDataSource" }, outputs: { getTableConfigOutPut: "getTableConfigOutPut", oRowClick: "oRowClick", onrightClickContextSelection: "onrightClickContextSelection" }, viewQueries: [{ propertyName: "googlMap", first: true, predicate: ["googlMap"], descendants: true }], ngImport: i0, template: "<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n\n <ng-container>\n <div id=\"regions_div\" #googlMap style=\"width: 100%\"></div>\n <div id=\"googlemap\" style=\"width: 100%;\" [style.height]=\"chartHeight\"></div>\n\n </ng-container>\n\n\n\n </div>\n\n\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoaderComponent, selector: "app-loader" }] });
566
+ GammaGeoChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GammaGeoChartComponent, selector: "app-gamma-geo-chart", inputs: { rightClickEnable: "rightClickEnable", chartDataSource: "chartDataSource" }, outputs: { getTableConfigOutPut: "getTableConfigOutPut", oRowClick: "oRowClick", onrightClickContextSelection: "onrightClickContextSelection" }, viewQueries: [{ propertyName: "googlMap", first: true, predicate: ["googlMap"], descendants: true }], ngImport: i0, template: "<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n\n <ng-container>\n <div id=\"regions_div\" #googlMap style=\"width: 100%\"></div>\n <div class=\"flex flex-col flex-auto min-w-0 p-4 space-y-4\">\n <div id=\"googlemap\" style=\"width: 100%;\" [style.height]=\"chartHeight\"></div>\n <div class=\"max-w-xl mx-auto w-full\" *ngIf=\"isRangeSliderVisible\">\n <div class=\"flex justify-between items-center text-sm font-semibold\">\n <ng-container *ngFor=\"let year of allSelectedRangeSliderValues; let i = index\">\n <span class=\"\n cursor-pointer select-none px-2 py-1 rounded-md transition\n \" [ngClass]=\"{\n 'bg-black text-white shadow': year === selectedRangeSliderValue,\n 'text-gray-300 hover:text-white': year !== selectedRangeSliderValue\n }\" (click)=\"setYearByIndex(i)\">\n {{ year }}\n </span>\n </ng-container>\n </div>\n\n <input type=\"range\" class=\"\n w-full h-2 rounded-lg appearance-none cursor-pointer\n bg-gradient-to-r from-green-400 via-yellow-400 to-red-500\n \" [min]=\"0\" [max]=\"allSelectedRangeSliderValues.length - 1\" [value]=\"allSelectedRangeSliderValues.indexOf(selectedRangeSliderValue)\" (input)=\"onYearChange($event)\" />\n </div>\n\n\n\n </div>\n\n </ng-container>\n\n\n\n </div>\n\n\n</div>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoaderComponent, selector: "app-loader" }] });
527
567
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GammaGeoChartComponent, decorators: [{
528
568
  type: Component,
529
- args: [{ selector: "app-gamma-geo-chart", template: "<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n\n <ng-container>\n <div id=\"regions_div\" #googlMap style=\"width: 100%\"></div>\n <div id=\"googlemap\" style=\"width: 100%;\" [style.height]=\"chartHeight\"></div>\n\n </ng-container>\n\n\n\n </div>\n\n\n</div>" }]
569
+ args: [{ selector: "app-gamma-geo-chart", template: "<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n\n <ng-container>\n <div id=\"regions_div\" #googlMap style=\"width: 100%\"></div>\n <div class=\"flex flex-col flex-auto min-w-0 p-4 space-y-4\">\n <div id=\"googlemap\" style=\"width: 100%;\" [style.height]=\"chartHeight\"></div>\n <div class=\"max-w-xl mx-auto w-full\" *ngIf=\"isRangeSliderVisible\">\n <div class=\"flex justify-between items-center text-sm font-semibold\">\n <ng-container *ngFor=\"let year of allSelectedRangeSliderValues; let i = index\">\n <span class=\"\n cursor-pointer select-none px-2 py-1 rounded-md transition\n \" [ngClass]=\"{\n 'bg-black text-white shadow': year === selectedRangeSliderValue,\n 'text-gray-300 hover:text-white': year !== selectedRangeSliderValue\n }\" (click)=\"setYearByIndex(i)\">\n {{ year }}\n </span>\n </ng-container>\n </div>\n\n <input type=\"range\" class=\"\n w-full h-2 rounded-lg appearance-none cursor-pointer\n bg-gradient-to-r from-green-400 via-yellow-400 to-red-500\n \" [min]=\"0\" [max]=\"allSelectedRangeSliderValues.length - 1\" [value]=\"allSelectedRangeSliderValues.indexOf(selectedRangeSliderValue)\" (input)=\"onYearChange($event)\" />\n </div>\n\n\n\n </div>\n\n </ng-container>\n\n\n\n </div>\n\n\n</div>" }]
530
570
  }], ctorParameters: function () { return [{ type: i1.CommonService }]; }, propDecorators: { googlMap: [{
531
571
  type: ViewChild,
532
572
  args: ["googlMap"]
@@ -542,4 +582,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
542
582
  type: Input,
543
583
  args: ["chartDataSource"]
544
584
  }] } });
545
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1nZW8tY2hhcnQvZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1nZW8tY2hhcnQvZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sTUFBTSxNQUFNLCtDQUErQyxDQUFDOzs7OztBQVNuRSxNQUFNLE9BQU8sc0JBQXNCO0lBOEtqQyxZQUFtQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQTFKL0MsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUliLFdBQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdkIseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELGlDQUE0QixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdFLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQVMxQywrQkFBMEIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUN2RCx3QkFBbUIsR0FBVyxRQUFRLENBQUM7UUFDdkMsd0JBQW1CLEdBQVcsQ0FBQyxRQUFRLENBQUE7SUFzSVksQ0FBQztJQW5JcEQsSUFD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QUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsUUFBZ0IsRUFBRSxHQUFRLEVBQUUsYUFBb0I7UUFFckUsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOztjQUUxQixDQUFDLENBQUMsT0FBTztnQkFDUCxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUzs7R0FFNUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVWLE9BQU87Ozs7Ozs7OztVQVNELFFBQVE7O1FBRVYsSUFBSTs7R0FFVCxDQUFDO0lBQ0YsQ0FBQzs7bUhBaHdCVSxzQkFBc0I7dUdBQXRCLHNCQUFzQix3WUNuQm5DLG9kQW9CTTsyRkRETyxzQkFBc0I7a0JBSmxDLFNBQVM7K0JBQ0UscUJBQXFCO29HQUlSLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkF5Qkosb0JBQW9CO3NCQUFwQyxNQUFNO2dCQUNVLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsNEJBQTRCO3NCQUE1QyxNQUFNO2dCQUNFLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFlRixlQUFlO3NCQURsQixLQUFLO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG4vLyBpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLWdhbW1hLWdlby1jaGFydFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2dhbW1hLWdlby1jaGFydC5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUdlb0NoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChcImdvb2dsTWFwXCIpIGdvb2dsTWFwOiBFbGVtZW50UmVmO1xuICBjaGFyRGF0YTogYW55O1xuICBjaGFydEhlaWdodDogYW55O1xuICBiYWNncm91bmRDb2xvcjogYW55O1xuICBtYXBDb2xvcnM6IGFueTtcbiAgY2hhcnRUeXBlOiBhbnk7XG4gIHRvb3RUaXBDb2x1bW46IGFueTtcbiAgcmVnaW9uOiBhbnk7XG4gIHJlZ2lvbkNvZGU6IGFueTtcbiAgLy8gaGVhdCBNYXAgc3RhcnRcbiAgbWFwOiBhbnk7XG4gIGxvY2F0aW9ucztcbiAgbWFwVFlwZTogYW55O1xuICBtYXBPcHRpb25Gb3JIZWF0TWFwOiB7XG4gICAgem9vbTogbnVtYmVyO1xuICB9O1xuICBjdXJyZW50SW5mb1dpbmRvdzogYW55O1xuICAvLyBoZWF0IE1hcCBlbmRcbiAgLy9oZWF0IG9ubHkgbWFwIHN0YXJ0IC8vXG4gIG1hcmtlcnMgPSBbXTtcbiAgaGVhdG1hcDogYW55O1xuICBoZWF0bWFwRGF0YTogYW55O1xuICB6b29tVmFsdUZvckFsbDogbnVtYmVyO1xuICBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XG4gIC8vaGVhdCBvbmx5IG1hcCBlbmQgLy9cbiAgQE91dHB1dCgpIHB1YmxpYyBnZXRUYWJsZUNvbmZpZ091dFB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb1Jvd0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvbnJpZ2h0Q2xpY2tDb250ZXh0U2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgcmlnaHRDbGlja0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGlzTG9hZGVyOiBib29sZWFuO1xuICBwYWdlX2NvbmZpZzogYW55O1xuICBwYWdlX3Bhcm1zOiBhbnk7XG4gIHNvcnRCeTogYW55O1xuICBmaWx0ZXJlZE9iamVjdHM6IGFueTtcblxuXG4gIC8vY2hvcm9wbGV0aE1hcCB2YXJpYWJsZXMvL1xuICBjaG9yb3BsZXRoX21hcF9kYXRhX3NvdXJjZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIG1pbkNob3JvcGxldGhNYXBDbnQ6IG51bWJlciA9IEluZmluaXR5O1xuICBtYXhDaG9yb3BsZXRoTWFwQ250OiBudW1iZXIgPSAtSW5maW5pdHlcblxuXG4gIEBJbnB1dChcImNoYXJ0RGF0YVNvdXJjZVwiKVxuICBzZXQgY2hhcnREYXRhU291cmNlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLnBhZ2VfY29uZmlnID0gdmFsdWU7XG4gICAgICB0aGlzLnBhZ2VfcGFybXMgPSB2YWx1ZS50aXRsZVBhcmFtcztcbiAgICAgIHRoaXMuc29ydEJ5ID0gdmFsdWUua3BpQ29uZmlnPy5kYXRhQ29uZmlnPy5zb3J0Qnk7XG4gICAgICAvLyB0aGlzLmluUm9hbWVyR2VvQ2hhcnQubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZSAmJiB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaWYgKHZhbHVlLmtwaUNvbmZpZy5mb3JtYXRlID09IFwibW9udGhseVwiKSB7XG4gICAgICAgICAgdGhpcy5tYXBUWXBlID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcubWFwVHlwZTtcbiAgICAgICAgICBpZiAodGhpcy5tYXBUWXBlID09IFwiZ2VvTWFwXCIpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaW9uID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcucmVnaW9uO1xuICAgICAgICAgICAgdGhpcy5yZWdpb25Db2RlID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcucmVnaW9uQ29kZTtcbiAgICAgICAgICAgIHRoaXMudG9vdFRpcENvbHVtbiA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgICAgIGxldCBkYXRhID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0SGVpZ2h0ID0gYCR7dmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuc2l6ZX1weGA7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0VHlwZSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0VHlwZTtcbiAgICAgICAgICAgIHRoaXMuYmFjZ3JvdW5kQ29sb3IgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgICAgICB0aGlzLm1hcENvbG9ycyA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNvbG9ycztcbiAgICAgICAgICAgIC8vIGxldCBjb25maWcgPSB2YWx1ZS5jaGFydENvbmZpZztcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGEgPSBbXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZ1tcImFyZ3VtZW50RmllbGRcIl0sXG4gICAgICAgICAgICAgICAgdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbXCJjaGFydFZhbHVlRmllbGRcIl0sXG4gICAgICAgICAgICAgICAgeyB0eXBlOiBcInN0cmluZ1wiLCByb2xlOiBcInRvb2x0aXBcIiwgcDogeyBodG1sOiB0cnVlIH0gfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0uY29uY2F0KFxuICAgICAgICAgICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLmdldFRvb2x0aXAoaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgIGl0ZW1bdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbXCJhcmd1bWVudEZpZWxkXCJdXSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1bdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbXCJjaGFydFZhbHVlRmllbGRcIl1dLFxuICAgICAgICAgICAgICAgICAgdG9vbHRpcCxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2hhckRhdGEgPSBmb3JtYXR0ZWREYXRhO1xuICAgICAgICAgICAgLy8gdGhpcy5sb2FkR29vZ2xlQ2hhcnRzKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAvLyB0aGlzLmxvYWRHb29nbGVDaGFydHMoKTtcbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1hcFRZcGUgPT0gXCJidWJibGVNYXBcIikge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZTtcbiAgICAgICAgICAgIHRoaXMuY2hhcnRIZWlnaHQgPSBgJHt2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5zaXplfXB4YDtcbiAgICAgICAgICAgIHRoaXMudG9vdFRpcENvbHVtbiA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgICAgIHRoaXMubWFwT3B0aW9uRm9ySGVhdE1hcCA9IHtcbiAgICAgICAgICAgICAgem9vbTogdGhpcy56b29tVmFsdUZvckFsbCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1hcFRZcGUgPT0gXCJjaG9yb3BsZXRoTWFwXCIpIHtcbiAgICAgICAgICAgIGRlYnVnZ2VyXG5cbiAgICAgICAgICAgIGxldCBjaG9yb3BsZXRoTWFwRGF0YVNvdXJjZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gICAgICAgICAgICBsZXQgY2hvcm9wbGV0aFRvb2x0aXBEYXRhU291cmNlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuXG4gICAgICAgICAgICBsZXQgY2hhcnRDb25maWcgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZztcblxuICAgICAgICAgICAgdGhpcy5jaGFydEhlaWdodCA9IGAke2NoYXJ0Q29uZmlnLnNpemV9cHhgO1xuXG4gICAgICAgICAgICBsZXQgdG9vdFRpcENvbHVtbiA9IGNoYXJ0Q29uZmlnLmNoYXJ0X2NvbmZpZ1xuICAgICAgICAgICAgICAuZmlsdGVyKGMgPT4gYy5kaXNwbGF5Rm9yID09PSAnbWFwJyB8fCBjLmRpc3BsYXlGb3IgPT09ICd0b29sdGlwJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGQgPVxuICAgICAgICAgICAgICBjaGFydENvbmZpZy5jaGFydF9jb25maWcuZmluZChjID0+IGMuZGlzcGxheUZvciA9PT0gJ21hcCcpPy5kYXRhRmllbGQ7XG5cbiAgICAgICAgICAgIHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLmZvckVhY2goZCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleSA9IGRbY2hhcnRDb25maWcuYXJndW1lbnRGaWVsZF0udG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgICAgICBjb25zdCB2YWwgPSBkW3ZhbHVlRmllbGRdO1xuXG4gICAgICAgICAgICAgIGNob3JvcGxldGhNYXBEYXRhU291cmNlLnNldChrZXksIHZhbCk7XG4gICAgICAgICAgICAgIGNob3JvcGxldGhUb29sdGlwRGF0YVNvdXJjZS5zZXQoa2V5LCBkKTtcblxuICAgICAgICAgICAgICB0aGlzLm1pbkNob3JvcGxldGhNYXBDbnQgPSBNYXRoLm1pbih0aGlzLm1pbkNob3JvcGxldGhNYXBDbnQsIGRbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgICB0aGlzLm1heENob3JvcGxldGhNYXBDbnQgPSBNYXRoLm1heCh0aGlzLm1heENob3JvcGxldGhNYXBDbnQsIGRbdmFsdWVGaWVsZF0pO1xuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgdGhpcy5pbml0Q2hvcm9wbGV0aE1hcE1hcChjaGFydENvbmZpZywgdG9vdFRpcENvbHVtbiwgY2hvcm9wbGV0aE1hcERhdGFTb3VyY2UsIGNob3JvcGxldGhUb29sdGlwRGF0YVNvdXJjZSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAvLyB0aGlzLmxvYWRHb29nbGVDaGFydHMoKTtcbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZTtcbiAgICAgICAgICAgIHRoaXMudG9vdFRpcENvbHVtbiA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgICAgIHRoaXMuY2hhcnRIZWlnaHQgPSBgJHt2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5zaXplfXB4YDtcbiAgICAgICAgICAgIHRoaXMuem9vbVZhbHVGb3JBbGwgPSBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgICB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnpvb21cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLm1hcE9wdGlvbkZvckhlYXRNYXAgPSB7XG4gICAgICAgICAgICAgIHpvb206IHRoaXMuem9vbVZhbHVGb3JBbGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUua3BpQ29uZmlnLmZvcm1hdGUgPT0gXCJkYWlseVwiKSB7XG4gICAgICAgICAgdGhpcy5tYXBUWXBlID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcubWFwVHlwZTtcbiAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2VcbiAgICAgICAgICAgIC5maWx0ZXIocmVjb3JkID0+IHJlY29yZFt0aGlzLnNvcnRCeV0pXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gbW9tZW50KGJbdGhpcy5zb3J0QnldKS5kaWZmKG1vbWVudChhW3RoaXMuc29ydEJ5XSkpKTtcbiAgICAgICAgICBjb25zdCBtb3N0UmVjZW50UmVjb3JkID0gc29ydGVkRGF0YVswXTtcblxuICAgICAgICAgIGlmICh2YWx1ZS5lbmREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT2JqZWN0cyA9IHNvcnRlZERhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YVt0aGlzLnNvcnRCeV0gPT09IHZhbHVlLmVuZERhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT2JqZWN0cyA9IHNvcnRlZERhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YVt0aGlzLnNvcnRCeV0gPT09IG1vc3RSZWNlbnRSZWNvcmRbdGhpcy5zb3J0QnldKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5tYXBUWXBlID09IFwiYnViYmxlTWFwXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25zID0gdGhpcy5maWx0ZXJlZE9iamVjdHM7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0SGVpZ2h0ID0gYCR7dmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuc2l6ZX1weGA7XG4gICAgICAgICAgICB0aGlzLnRvb3RUaXBDb2x1bW4gPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgICB0aGlzLm1hcE9wdGlvbkZvckhlYXRNYXAgPSB7XG4gICAgICAgICAgICAgIHpvb206IHRoaXMuem9vbVZhbHVGb3JBbGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgIH1cblxuXG4gICAgfVxuXG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWFwVFlwZSA9PSBcImdlb01hcFwiKSB7XG4gICAgICB0aGlzLmxvYWRHb29nbGVDaGFydHMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWFwVFlwZSA9PSBcImhlYXRNYXBcIikge1xuICAgICAgaWYgKHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuaGVhdE1hcENhdGVnb3J5ID09IFwiaGVhdE1hcE9ubHlcIikge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9hZEdvb2dsZUhlYXRPbmx5TWFwcyh0aGlzLmxvY2F0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuaGVhdE1hcENhdGVnb3J5ID09IFwiaGVhdE1hcE1hcmtlclwiKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplTWFwKCk7XG4gICAgICAgIHRoaXMuYWRkTWFya2VycygpO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUhlYXRXaXRoTWFya2VyTWFwKHRoaXMubG9jYXRpb25zKTtcblxuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICh0aGlzLm1hcFRZcGUgPT0gXCJjaG9yb3BsZXRoTWFwXCIpIHtcblxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLmluaXRpYWxpemVNYXAoKTtcbiAgICAgIHRoaXMuYWRkQnViYmxlTWFya2VycygpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRHb29nbGVDaGFydHMoKSB7XG4gICAgZ29vZ2xlLmNoYXJ0cy5sb2FkKFwiY3VycmVudFwiLCB7XG4gICAgICBwYWNrYWdlczogW3RoaXMuY2hhcnRUeXBlXSxcbiAgICB9KTtcbiAgICBnb29nbGUuY2hhcnRzLnNldE9uTG9hZENhbGxiYWNrKHRoaXMuZHJhd0NoYXJ0LmJpbmQodGhpcykpO1xuICB9XG5cbiAgZHJhd0NoYXJ0KCkge1xuICAgIGNvbnN0IGRhdGEgPSBnb29nbGUudmlzdWFsaXphdGlvbi5hcnJheVRvRGF0YVRhYmxlKHRoaXMuY2hhckRhdGEpO1xuXG4gICAgLy8gY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAvLyAgIHJlZ2lvbjogJ1VTQScsXG4gICAgLy8gICBkaXNwbGF5TW9kZTogJ21hcmtlcnMnLFxuICAgIC8vICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJhY2dyb3VuZENvbG9yLFxuICAgIC8vICAgdG9vbHRpcDogeyBpc0h0bWw6IHRydWUgfSxcbiAgICAvLyAgIGNvbG9yQXhpczogeyBjb2xvcnM6IHRoaXMubWFwQ29sb3JzIH1cbiAgICAvLyB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbkNvbmZpZygpO1xuXG4gICAgY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uR2VvQ2hhcnQoXG4gICAgICB0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICAgIHRoaXMuZ29vZ2xNYXAubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNoYXJ0SGVpZ2h0O1xuICAgIGNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUb29sdGlwKGRhdGEpIHtcbiAgICBsZXQgdG9vbFRpcERhdGEgPSBcIlwiO1xuICAgIHRoaXMudG9vdFRpcENvbHVtbi5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGRhdGFbZWxlbWVudC5kYXRhRmllbGRdID09PSAnbnVtYmVyJykge1xuICAgICAgICB0b29sVGlwRGF0YSArPVxuICAgICAgICAgIFwiPGRpdiBjbGFzcz0naW5saW5lJz48Yj5cIiArXG4gICAgICAgICAgZWxlbWVudC5jYXB0aW9uICtcbiAgICAgICAgICBcIjo8L2I+PC9kaXY+IFwiICtcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uucm91bmRPZmZUaWxsVHdvKGRhdGFbZWxlbWVudC5kYXRhRmllbGRdLCAyKSArXG4gICAgICAgICAgXCI8YnIgLz5cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvb2xUaXBEYXRhICs9XG4gICAgICAgICAgXCI8ZGl2IGNsYXNzPSdpbmxpbmUnPjxiPlwiICtcbiAgICAgICAgICBlbGVtZW50LmNhcHRpb24gK1xuICAgICAgICAgIFwiOjwvYj48L2Rpdj4gXCIgK1xuICAgICAgICAgIGRhdGFbZWxlbWVudC5kYXRhRmllbGRdICtcbiAgICAgICAgICBcIjxiciAvPlwiO1xuICAgICAgfVxuXG5cbiAgICB9KTtcbiAgICByZXR1cm4gdG9vbFRpcERhdGE7XG4gIH1cblxuICBnZXRPcHRpb25Db25maWcoKSB7XG4gICAgaWYgKHRoaXMucmVnaW9uID09ICdjaXR5Jykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgcmVnaW9uOiB0aGlzLnJlZ2lvbkNvZGUsXG4gICAgICAgIGRpc3BsYXlNb2RlOiAnbWFya2VycycsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNncm91bmRDb2xvcixcbiAgICAgICAgdG9vbHRpcDogeyBpc0h0bWw6IHRydWUgfSxcbiAgICAgICAgY29sb3JBeGlzOiB7IGNvbG9yczogdGhpcy5tYXBDb2xvcnMgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmFjZ3JvdW5kQ29sb3IsXG4gICAgICAgIHRvb2x0aXA6IHsgaXNIdG1sOiB0cnVlIH0sXG4gICAgICAgIGNvbG9yQXhpczogeyBjb2xvcnM6IHRoaXMubWFwQ29sb3JzIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gIH1cblxuXG4gIC8vICBHZW8gTWFwIGVuZCAvL1xuXG4gIC8vIEhlYXQgTWFwIHN0YXJ0IC8vXG4gIGluaXRpYWxpemVNYXAoKTogdm9pZCB7XG4gICAgY29uc3QgbWFwT3B0aW9ucyA9IHRoaXMubWFwT3B0aW9uRm9ySGVhdE1hcDtcbiAgICAvLyB7XG4gICAgLy8gICBjZW50ZXI6IHsgbGF0OiAzNy4wOTAyLCBsbmc6IC05NS43MTI5IH0sIC8vIENlbnRlciBvZiB0aGUgVVNBXG4gICAgLy8gICB6b29tOiA1LFxuICAgIC8vIH07XG5cbiAgICBpZiAodGhpcy5tYXBUWXBlID09IFwiYnViYmxlTWFwXCIpIHtcbiAgICAgIG1hcE9wdGlvbnNbXCJzdHlsZXNcIl0gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBmZWF0dXJlVHlwZTogXCJhbGxcIixcbiAgICAgICAgICBzdHlsZXJzOiBbXG4gICAgICAgICAgICB7IHNhdHVyYXRpb246IC0xMDAgfSxcbiAgICAgICAgICAgIHsgbGlnaHRuZXNzOiA3MCB9LFxuICAgICAgICAgICAgeyB2aXNpYmlsaXR5OiBcInNpbXBsaWZpZWRcIiB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmZWF0dXJlVHlwZTogXCJhZG1pbmlzdHJhdGl2ZS5jb3VudHJ5XCIsXG4gICAgICAgICAgZWxlbWVudFR5cGU6IFwibGFiZWxzXCIsXG4gICAgICAgICAgc3R5bGVyczogW1xuICAgICAgICAgICAgeyBsaWdodG5lc3M6IC0zMCB9LCAvLyBEYXJrZW4gbGFiZWxzIGZ1cnRoZXJcbiAgICAgICAgICAgIHsgdmlzaWJpbGl0eTogXCJvblwiIH0sXG4gICAgICAgICAgICB7IGZvbnRXZWlnaHQ6IFwiYm9sZFwiIH0sIC8vIE1ha2UgbGFiZWxzIGJvbGRcbiAgICAgICAgICAgIHsgZm9udFNpemU6IFwiMTJweFwiIH0sIC8vIEluY3JlYXNlIGZvbnQgc2l6ZVxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmZWF0dXJlVHlwZTogXCJhZG1pbmlzdHJhdGl2ZS5jb3VudHJ5XCIsXG4gICAgICAgICAgZWxlbWVudFR5cGU6IFwiZ2VvbWV0cnkuc3Ryb2tlXCIsXG4gICAgICAgICAgc3R5bGVyczogW1xuICAgICAgICAgICAgeyBsaWdodG5lc3M6IC00MCB9LCAvLyBEYXJrZW4gYm9yZGVycyBzaWduaWZpY2FudGx5XG4gICAgICAgICAgICB7IHdlaWdodDogMS41IH0sIC8vIEluY3JlYXNlIGJvcmRlciB0aGlja25lc3NcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGU6IFwiYWRtaW5pc3RyYXRpdmUuY291bnRyeVwiLFxuICAgICAgICAgIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5LmZpbGxcIixcbiAgICAgICAgICBzdHlsZXJzOiBbXG4gICAgICAgICAgICB7IGxpZ2h0bmVzczogOTAgfSwgLy8gS2VlcCBmaWxsIHZlcnkgbGlnaHRcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoXG4gICAgICAvLyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJlZ2lvbnNfZGl2XCIpICxcbiAgICAgIHRoaXMuZ29vZ2xNYXAubmF0aXZlRWxlbWVudCxcbiAgICAgIG1hcE9wdGlvbnNcbiAgICApO1xuICAgIHRoaXMuZ29vZ2xNYXAubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNoYXJ0SGVpZ2h0O1xuICB9XG5cbiAgLy8gQWRkIG1hcmtlcnMgdG8gdGhlIG1hcFxuICBhZGRNYXJrZXJzKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb25zLmZvckVhY2goKGxvY2F0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBsYXQ6IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICBsb2NhdGlvblt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcmtlckxhdGl0dWRlXVxuICAgICAgICAgICksXG4gICAgICAgICAgbG5nOiBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgbG9jYXRpb25bdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMb25naXR1ZGVdXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5pY29uID8ge1xuICAgICAgICAgIHVybDogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5pY29uLCAvLyBSZXBsYWNlIHdpdGggeW91ciBpY29uIHBhdGhcbiAgICAgICAgICBzY2FsZWRTaXplOiB7XG4gICAgICAgICAgICB3aWR0aDogMzIsXG4gICAgICAgICAgICBoZWlnaHQ6IDMyLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gOiAnJyxcbiAgICAgICAgLy8gdG9vbHRpcFRleHQ6XG4gICAgICAgIG1hcDogdGhpcy5tYXAsXG4gICAgICAgIC8vIHRpdGxlOiBgJHtsb2NhdGlvbi5jaXR5fTogJCR7bG9jYXRpb24udG90YWxfc2FsZXNfYW1vdW50fWAsXG4gICAgICAgIHRpdGxlOiBgJHtsb2NhdGlvbi5jaXR5fTogJCR7bG9jYXRpb24udG90YWxfc2FsZXNfYW1vdW50fWAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYm91bmRzLmV4dGVuZChtYXJrZXIuZ2V0UG9zaXRpb24oKSk7XG4gICAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpO1xuXG4gICAgICAvLyBBZGQgYW4gaW5mbyB3aW5kb3dcbiAgICAgIGxldCBzdHJpbmdXaXRob3V0UXVvdGVzID0gdGhpcy5nZXRJbmZvV2luZG9EYXRhKGxvY2F0aW9uKTtcbiAgICAgIGNvbnN0IGluZm9XSW5kb3dEYXRhID0gdGhpcy5nZXRJbmZvV2luZG9EYXRhKGxvY2F0aW9uKTtcblxuICAgICAgY29uc3QgaW5mb1dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHtcbiAgICAgICAgLy8gY29udGVudDogaW5mb1dJbmRvd0RhdGEsXG4gICAgICAgIGNvbnRlbnQ6IGA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDIwcHg7XCI+XG4gICAgICAgICR7aW5mb1dJbmRvd0RhdGF9XG4gICAgICA8L2Rpdj5gLFxuICAgICAgfSk7XG4gICAgICAvLyB7XG4gICAgICAvLyAgIGNvbnRlbnQ6IGA8ZGl2IHN0eWxlPVwiICBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlO2NvbG9yOiBibGFjazsgZm9udC1zaXplOiAyMHB4O1wiPjxoND4ke1xuICAgICAgLy8gICAgIGxvY2F0aW9uLmNpdHlcbiAgICAgIC8vICAgfTwvaDQ+PHA+VG90YWwgU2FsZXM6ICQke2xvY2F0aW9uLnRvdGFsX3NhbGVzX2Ftb3VudC50b0ZpeGVkKFxuICAgICAgLy8gICAgIDJcbiAgICAgIC8vICAgKX08L3A+PC9kaXY+YCxcbiAgICAgIC8vIH1cblxuICAgICAgbWFya2VyLmFkZExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5mb1dpbmRvdykge1xuICAgICAgICAgIHRoaXMuY3VycmVudEluZm9XaW5kb3cuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvV2luZG93Lm9wZW4odGhpcy5tYXAsIG1hcmtlcik7XG4gICAgICAgIHRoaXMuY3VycmVudEluZm9XaW5kb3cgPSBpbmZvV2luZG93O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXAuZml0Qm91bmRzKHRoaXMuYm91bmRzKTtcblxuXG4gIH1cblxuICBnZXRJbmZvV2luZG9EYXRhKGRhdGEpIHtcbiAgICBsZXQgdG9vbFRpcERhdGEgPSBgYDtcbiAgICB0aGlzLnRvb3RUaXBDb2x1bW4uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICB0b29sVGlwRGF0YSArPVxuICAgICAgICAgIGA8ZGl2IGNsYXNzPSdpbmxpbmUnPjxiPmAgK1xuICAgICAgICAgIGVsZW1lbnQuY2FwdGlvbiArXG4gICAgICAgICAgYDo8L2I+PC9kaXY+IGAgK1xuICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5yb3VuZE9mZlRpbGxUd28oZGF0YVtlbGVtZW50LmRhdGFGaWVsZF0sIDIpICtcbiAgICAgICAgICBgPGJyIC8+YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvb2xUaXBEYXRhICs9XG4gICAgICAgICAgYDxkaXYgY2xhc3M9J2lubGluZSc+PGI+YCArXG4gICAgICAgICAgZWxlbWVudC5jYXB0aW9uICtcbiAgICAgICAgICBgOjwvYj48L2Rpdj4gYCArXG4gICAgICAgICAgZGF0YVtlbGVtZW50LmRhdGFGaWVsZF0gK1xuICAgICAgICAgIGA8YnIgLz5gO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0b29sVGlwRGF0YTtcbiAgfVxuICAvLyBIZWF0IE1hcCBFbmQgLy9cblxuICAvL2hlYXQgb25seSBtYXAgc3RhcnQgLy9cblxuICBsb2FkR29vZ2xlSGVhdE9ubHlNYXBzKGRhdGEpOiB2b2lkIHtcbiAgICB0aGlzLmhlYXRtYXBEYXRhID0gW107XG4gICAgZGF0YS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBsZXQgbGF0aXR1ZGUgPSBwYXJzZUZsb2F0KFxuICAgICAgICBlbGVtZW50W3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcubWFya2VyTGF0aXR1ZGVdXG4gICAgICApO1xuICAgICAgbGV0IGxvZ3RpdHVkZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgIGVsZW1lbnRbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMb25naXR1ZGVdXG4gICAgICApO1xuICAgICAgLy8gbGV0IHdlaWdodCA9IChjZWxsTm9kZS5wcm9wZXJ0aWVzWydXZWlnaHQnXSAhPSB1bmRlZmluZWQpID8gY2VsbE5vZGUucHJvcGVydGllc1snV2VpZ2h0J10gOiBcIk5BXCI7XG4gICAgICB0aGlzLmhlYXRtYXBEYXRhLnB1c2goe1xuICAgICAgICBsb2NhdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhsYXRpdHVkZSwgbG9ndGl0dWRlKVxuICAgICAgICAvLyB3ZWlnaHQ6IHBhcnNlRmxvYXQod2VpZ2h0KSxcblxuICAgICAgfSk7XG4gICAgICB0aGlzLmJvdW5kcy5leHRlbmQobmV3IGdvb2dsZS5tYXBzLkxhdExuZyhsYXRpdHVkZSwgbG9ndGl0dWRlKSk7XG4gICAgfSk7XG4gICAgY29uc3QgbWFwT3B0aW9ucyA9IHtcbiAgICAgIC8vIGNlbnRlcjoge1xuICAgICAgLy8gICBsYXQ6IHBhcnNlRmxvYXQodGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jZW50ZXJMYXRpdHVkZSksXG4gICAgICAvLyAgIGxuZzogcGFyc2VGbG9hdCh0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmNlbnRlckxvbmdpdHVkZSksXG4gICAgICAvLyB9LFxuICAgICAgLy8gem9vbTogcGFyc2VGbG9hdCh0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnpvb20pXG4gICAgICB6b29tOiB0aGlzLnpvb21WYWx1Rm9yQWxsXG4gICAgfTtcblxuXG5cblxuICAgIHRoaXMubWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcCh0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnQsIG1hcE9wdGlvbnMpO1xuICAgIHRoaXMuZ29vZ2xNYXAubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNoYXJ0SGVpZ2h0O1xuICAgIHRoaXMubWFwLmZpdEJvdW5kcyh0aGlzLmJvdW5kcyk7XG4gICAgdGhpcy5oZWF0bWFwID0gbmV3IGdvb2dsZS5tYXBzLnZpc3VhbGl6YXRpb24uSGVhdG1hcExheWVyKHtcbiAgICAgIGRhdGE6IHRoaXMuaGVhdG1hcERhdGEsXG4gICAgICBtYXA6IHRoaXMubWFwLFxuICAgIH0pO1xuXG4gIH1cblxuXG4gIC8vaGVhdCBvbmx5IG1hcCBlbmQgLy9cblxuICAvL2hlYXQgYW5kIE1hcmtlciAgbWFwIFN0YXJ0IC8vXG4gIGluaXRpYWxpemVIZWF0V2l0aE1hcmtlck1hcChkYXRhKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBtYXBcbiAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAodGhpcy5nb29nbE1hcC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAvLyBjZW50ZXI6IHsgbGF0OiAzNy43NzQ5LCBsbmc6IC0xMjIuNDE5NCB9LFxuICAgICAgem9vbTogcGFyc2VGbG9hdChcbiAgICAgICAgdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy56b29tXG4gICAgICApLFxuICAgIH0pO1xuICAgIHRoaXMuZ29vZ2xNYXAubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNoYXJ0SGVpZ2h0O1xuICAgIC8vIEluaXRpYWxpemUgaGVhdG1hcCBsYXllclxuICAgIHRoaXMuaGVhdG1hcERhdGEgPSBbXTtcbiAgICBkYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG5cbiAgICAgIGxldCBsYXRpdHVkZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgIGVsZW1lbnRbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMYXRpdHVkZV1cbiAgICAgICk7XG4gICAgICBsZXQgbG9ndGl0dWRlID0gcGFyc2VGbG9hdChcbiAgICAgICAgZWxlbWVudFt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcmtlckxvbmdpdHVkZV1cbiAgICAgICk7XG4gICAgICB0aGlzLmhlYXRtYXBEYXRhLnB1c2goe1xuICAgICAgICBsb2NhdGlvbjogbmV3IGdvb2dsZS5tYXBzLkxhdExuZyhsYXRpdHVkZSwgbG9ndGl0dWRlKVxuICAgICAgfSk7XG4gICAgICB0aGlzLmJvdW5kcy5leHRlbmQobmV3IGdvb2dsZS5tYXBzLkxhdExuZyhsYXRpdHVkZSwgbG9ndGl0dWRlKSk7XG4gICAgfSk7XG4gICAgdGhpcy5oZWF0bWFwID0gbmV3IGdvb2dsZS5tYXBzLnZpc3VhbGl6YXRpb24uSGVhdG1hcExheWVyKHtcbiAgICAgIGRhdGE6IHRoaXMuaGVhdG1hcERhdGEsXG4gICAgICBtYXA6IHRoaXMubWFwLFxuICAgIH0pO1xuICAgIC8vIEluaXRpYWxpemUgbWFya2Vyc1xuICAgIHRoaXMubG9jYXRpb25zLmZvckVhY2goKGxvY2F0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBsYXQ6IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICBsb2NhdGlvblt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcmtlckxhdGl0dWRlXVxuICAgICAgICAgICksXG4gICAgICAgICAgbG5nOiBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgbG9jYXRpb25bdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMb25naXR1ZGVdXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5pY29uID8ge1xuICAgICAgICAgIHVybDogdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5pY29uLCAvLyBSZXBsYWNlIHdpdGggeW91ciBpY29uIHBhdGhcbiAgICAgICAgICBzY2FsZWRTaXplOiB7XG4gICAgICAgICAgICB3aWR0aDogMzIsXG4gICAgICAgICAgICBoZWlnaHQ6IDMyLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gOiAnJyxcbiAgICAgICAgLy8gdG9vbHRpcFRleHQ6XG4gICAgICAgIG1hcDogdGhpcy5tYXAsXG4gICAgICAgIC8vIHRpdGxlOiBgJHtsb2NhdGlvbi5jaXR5fTogJCR7bG9jYXRpb24udG90YWxfc2FsZXNfYW1vdW50fWAsXG4gICAgICAgIHRpdGxlOiBgJHtsb2NhdGlvbi5jaXR5fTogJCR7bG9jYXRpb24udG90YWxfc2FsZXNfYW1vdW50fWAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYm91bmRzLmV4dGVuZChtYXJrZXIuZ2V0UG9zaXRpb24oKSk7XG4gICAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpO1xuXG4gICAgICAvLyBBZGQgYW4gaW5mbyB3aW5kb3dcblxuICAgICAgLy8gQWRkIGFuIGluZm8gd2luZG93XG4gICAgICBjb25zdCBpbmZvV0luZG93RGF0YSA9IHRoaXMuZ2V0SW5mb1dpbmRvRGF0YShsb2NhdGlvbik7XG4gICAgICBjb25zdCBpbmZvV2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coe1xuICAgICAgICBjb250ZW50OiBgPGRpdiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAyMHB4O1wiPlxuICAgICAgICAgICAgJHtpbmZvV0luZG93RGF0YX1cbiAgICAgICAgICA8L2Rpdj5gLFxuICAgICAgfSk7XG5cblxuICAgICAgbWFya2VyLmFkZExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5mb1dpbmRvdykge1xuICAgICAgICAgIHRoaXMuY3VycmVudEluZm9XaW5kb3cuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvV2luZG93Lm9wZW4odGhpcy5tYXAsIG1hcmtlcik7XG4gICAgICAgIHRoaXMuY3VycmVudEluZm9XaW5kb3cgPSBpbmZvV2luZG93O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXAuZml0Qm91bmRzKHRoaXMuYm91bmRzKTtcblxuICAgIC8vIEFkZCBsaXN0ZW5lciBmb3Igem9vbSBjaGFuZ2VzXG4gICAgdGhpcy5tYXAuYWRkTGlzdGVuZXIoJ3pvb21fY2hhbmdlZCcsICgpID0+IHRoaXMuaGFuZGxlWm9vbUNoYW5nZSgpKTtcbiAgfVxuXG4gIGhhbmRsZVpvb21DaGFuZ2UoKSB7XG4gICAgY29uc3Qgem9vbUxldmVsID0gdGhpcy5tYXAuZ2V0Wm9vbSgpO1xuICAgIGlmICh6b29tTGV2ZWwgPCA1KSB7XG4gICAgICAvLyBTaG93IGhlYXRtYXAgYW5kIGhpZGUgbWFya2Vyc1xuICAgICAgdGhpcy5oZWF0bWFwLnNldE1hcCh0aGlzLm1hcCk7XG4gICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaCgobWFya2VyKSA9PiBtYXJrZXIuc2V0TWFwKG51bGwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGlkZSBoZWF0bWFwIGFuZCBzaG93IG1hcmtlcnNcbiAgICAgIHRoaXMuaGVhdG1hcC5zZXRNYXAobnVsbCk7XG4gICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaCgobWFya2VyKSA9PiBtYXJrZXIuc2V0TWFwKHRoaXMubWFwKSk7XG4gICAgfVxuICB9XG5cbiAgLy9oZWF0IGFuZCBNYXJrZXIgIG1hcCBFbmQgLy9cbiAgLy9CdWJibGUgQ2hhcnQgU3RhcnRcbiAgYWRkQnViYmxlTWFya2VycygpOiB2b2lkIHtcbiAgICB0aGlzLnByZXBhcmVCdWJibGVEYXRhKCk7XG4gICAgY29uc29sZS5sb2codGhpcy5sb2NhdGlvbnMpO1xuICAgIHRoaXMubG9jYXRpb25zLmZvckVhY2goKGxvY2F0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBsYXQ6IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICBsb2NhdGlvblt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcmtlckxhdGl0dWRlXVxuICAgICAgICAgICksXG4gICAgICAgICAgbG5nOiBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgbG9jYXRpb25bdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMb25naXR1ZGVdXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbjoge1xuICAgICAgICAgIHBhdGg6IGdvb2dsZS5tYXBzLlN5bWJvbFBhdGguQ0lSQ0xFLFxuICAgICAgICAgIHNjYWxlOiBNYXRoLnJvdW5kKGxvY2F0aW9uLnNhbGVzX3BlcmNlbnRhZ2UpLCAvLyBBZGp1c3QgYnViYmxlIHNpemVcbiAgICAgICAgICBmaWxsQ29sb3I6IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuYnViYmxlQ29sb3IsXG4gICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNixcbiAgICAgICAgICBzdHJva2VXZWlnaHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIHRvb2x0aXBUZXh0OlxuICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAvLyB0aXRsZTogYCR7bG9jYXRpb24uY2l0eX06ICQke2xvY2F0aW9uLnRvdGFsX3NhbGVzX2Ftb3VudH1gLFxuICAgICAgICB0aXRsZTogYCR7bG9jYXRpb24uY2l0eX06ICQke2xvY2F0aW9uW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuYWdydW1lbnRWYWx1ZV1cbiAgICAgICAgICB9YCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ib3VuZHMuZXh0ZW5kKG1hcmtlci5nZXRQb3NpdGlvbigpKTtcbiAgICAgIHRoaXMubWFya2Vycy5wdXNoKG1hcmtlcik7XG5cbiAgICAgIC8vIEFkZCBhbiBpbmZvIHdpbmRvd1xuICAgICAgbGV0IHN0cmluZ1dpdGhvdXRRdW90ZXMgPSB0aGlzLmdldEluZm9XaW5kb0RhdGEobG9jYXRpb24pO1xuICAgICAgY29uc3QgaW5mb1dJbmRvd0RhdGEgPSB0aGlzLmdldEluZm9XaW5kb0RhdGEobG9jYXRpb24pO1xuXG4gICAgICBjb25zdCBpbmZvV2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coe1xuICAgICAgICAvLyBjb250ZW50OiBpbmZvV0luZG93RGF0YSxcbiAgICAgICAgY29udGVudDogYDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMjBweDtcIj5cbiAgICAgICAgICR7aW5mb1dJbmRvd0RhdGF9XG4gICAgICAgPC9kaXY+YCxcbiAgICAgIH0pO1xuXG4gICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmZvV2luZG93KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SW5mb1dpbmRvdy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGluZm9XaW5kb3cub3Blbih0aGlzLm1hcCwgbWFya2VyKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5mb1dpbmRvdyA9IGluZm9XaW5kb3c7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLm1hcC5maXRCb3VuZHModGhpcy5ib3VuZHMpO1xuICB9XG5cbiAgcHJlcGFyZUJ1YmJsZURhdGEoKSB7XG4gICAgLy8gU3RlcCAxOiBGaW5kIG1pbiBhbmQgbWF4IHRvdGFsX3NhbGVzX2Ftb3VudFxuICAgIGNvbnN0IG1pblNhbGVzID0gTWF0aC5taW4oXG4gICAgICAuLi50aGlzLmxvY2F0aW9ucy5tYXAoXG4gICAgICAgIChkKSA9PiBkW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuYWdydW1lbnRWYWx1ZV1cbiAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IG1heFNhbGVzID0gTWF0aC5tYXgoXG4gICAgICAuLi50aGlzLmxvY2F0aW9ucy5tYXAoXG4gICAgICAgIChkKSA9PiBkW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuYWdydW1lbnRWYWx1ZV1cbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gU3RlcCAyOiBEZWZpbmUgbWluIGFuZCBtYXggcGVyY2VudGFnZSB2YWx1ZXNcbiAgICBjb25zdCBtaW5QZXJjZW50YWdlID1cbiAgICAgIHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuYnViYmxlTWluaW11bVNpemU7XG4gICAgY29uc3QgbWF4UGVyY2VudGFnZSA9XG4gICAgICB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmJ1YmJsZU1heGltdW1TaXplO1xuXG4gICAgLy8gU3RlcCAzOiBOb3JtYWxpemUgZnVuY3Rpb25cbiAgICBjb25zdCBub3JtYWxpemUgPSAodmFsdWUsIG1pbiwgbWF4KSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAoKHZhbHVlIC0gbWluKSAvIChtYXggLSBtaW4pKSAqIChtYXhQZXJjZW50YWdlIC0gbWluUGVyY2VudGFnZSkgK1xuICAgICAgICBtaW5QZXJjZW50YWdlXG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBTdGVwIDQ6IEFzc2lnbiBjYWxjdWxhdGVkIHBlcmNlbnRhZ2UgdG8gZWFjaCBvYmplY3RcbiAgICB0aGlzLmxvY2F0aW9ucy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICBkLnNhbGVzX3BlcmNlbnRhZ2UgPSBNYXRoLm1pbihcbiAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgbm9ybWFsaXplKFxuICAgICAgICAgICAgZFt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmFncnVtZW50VmFsdWVdLFxuICAgICAgICAgICAgbWluU2FsZXMsXG4gICAgICAgICAgICBtYXhTYWxlc1xuICAgICAgICAgICksXG4gICAgICAgICAgbWluUGVyY2VudGFnZVxuICAgICAgICApLFxuICAgICAgICBtYXhQZXJjZW50YWdlXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIC8vQnViYmxlIENoYXJ0IEVuZFxuXG4gIC8vIGNob3JvcGxldGhNYXAgc3RhcnQgLy9cblxuICBnZXRDb2xvcihjbnQ6IG51bWJlciwgc3RhcnRDb2xvcjogc3RyaW5nLCBlbmRDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoY250ID09PSB1bmRlZmluZWQgfHwgY250ID09PSBudWxsIHx8IHRoaXMubWF4Q2hvcm9wbGV0aE1hcENudCA9PT0gdGhpcy5taW5DaG9yb3BsZXRoTWFwQ250KSB7XG4gICAgICByZXR1cm4gJyNjY2NjY2MnO1xuICAgIH1cblxuICAgIGNvbnN0IHJhdGlvID0gTWF0aC5taW4oXG4gICAgICBNYXRoLm1heCgoY250IC0gdGhpcy5taW5DaG9yb3BsZXRoTWFwQ250KSAvICh0aGlzLm1heENob3JvcGxldGhNYXBDbnQgLSB0aGlzLm1pbkNob3JvcGxldGhNYXBDbnQpLCAwKSxcbiAgICAgIDFcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmhleFRvUmdiKHN0YXJ0Q29sb3IpO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuaGV4VG9SZ2IoZW5kQ29sb3IpO1xuXG4gICAgY29uc3QgciA9IHRoaXMubGVycChzdGFydC5yLCBlbmQuciwgcmF0aW8pO1xuICAgIGNvbnN0IGcgPSB0aGlzLmxlcnAoc3RhcnQuZywgZW5kLmcsIHJhdGlvKTtcbiAgICBjb25zdCBiID0gdGhpcy5sZXJwKHN0YXJ0LmIsIGVuZC5iLCByYXRpbyk7XG5cbiAgICByZXR1cm4gYHJnYigke3J9LCAke2d9LCAke2J9KWA7XG4gIH1cblxuICBsZXJwKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCByYXRpbzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoc3RhcnQgKyAoZW5kIC0gc3RhcnQpICogcmF0aW8pO1xuICB9XG4gIGhleFRvUmdiKGhleDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xlYW5IZXggPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgICBjb25zdCBiaWdpbnQgPSBwYXJzZUludChjbGVhbkhleCwgMTYpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHI6IChiaWdpbnQgPj4gMTYpICYgMjU1LFxuICAgICAgZzogKGJpZ2ludCA+PiA4KSAmIDI1NSxcbiAgICAgIGI6IGJpZ2ludCAmIDI1NVxuICAgIH07XG4gIH1cblxuXG4gIGluaXRDaG9yb3BsZXRoTWFwTWFwKGNoYXJ0Q29uZmlnOiBhbnksIHRvb3RUaXBDb2x1bW46IGFueVtdLCBjaG9yb3BsZXRoTWFwRGF0YVNvdXJjZTogTWFwPHN0cmluZywgbnVtYmVyPiwgY2hvcm9wbGV0aFRvb2x0aXBEYXRhU291cmNlOiBNYXA8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG5cblxuICAgIGNvbnN0IG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvb2dsZW1hcFwiKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgIHtcbiAgICAgICAgY2VudGVyOiB7IGxhdDogcGFyc2VGbG9hdChjaGFydENvbmZpZy5jZW50ZXJMYXQpLCBsbmc6IHBhcnNlRmxvYXQoY2hhcnRDb25maWcuY2VudGVyTG5nKSB9LFxuICAgICAgICB6b29tOiBwYXJzZUludChjaGFydENvbmZpZy56b29tKVxuICAgICAgfVxuICAgICk7XG5cblxuICAgIG1hcC5kYXRhLmxvYWRHZW9Kc29uKGNoYXJ0Q29uZmlnLmdqc29uRmlsZVBhdGgpO1xuXG4gICAgbWFwLmRhdGEuc2V0U3R5bGUoKGZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGlzdHJpY3QgPSBmZWF0dXJlLmdldFByb3BlcnR5KCdkJyk/LnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBjbnQgPSBjaG9yb3BsZXRoTWFwRGF0YVNvdXJjZS5nZXQoZGlzdHJpY3QpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxsQ29sb3I6IHRoaXMuZ2V0Q29sb3IoXG4gICAgICAgICAgY250LFxuICAgICAgICAgIGNoYXJ0Q29uZmlnLmNvbG9yT25lLFxuICAgICAgICAgIGNoYXJ0Q29uZmlnLmNvbG9yVHdvXG4gICAgICAgICksXG4gICAgICAgIHN0cm9rZUNvbG9yOiAnIzU1NScsXG4gICAgICAgIHN0cm9rZVdlaWdodDogMSxcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuNzVcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbmZvV2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coKTtcblxuICAgIG1hcC5kYXRhLmFkZExpc3RlbmVyKCdtb3VzZW92ZXInLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGlzdHJpY3QgPSBldmVudC5mZWF0dXJlLmdldFByb3BlcnR5KCdkJyk7XG4gICAgICBjb25zdCBrZXkgPSBkaXN0cmljdD8udG9VcHBlckNhc2UoKTtcblxuICAgICAgY29uc3Qgcm93ID0gY2hvcm9wbGV0aFRvb2x0aXBEYXRhU291cmNlLmdldChrZXkpO1xuXG4gICAgICBpbmZvV2luZG93LnNldENvbnRlbnQoXG4gICAgICAgIHRoaXMuYnVpbGRJbmZvV2luZG93Q29udGVudChkaXN0cmljdCwgcm93LCB0b290VGlwQ29sdW1uKVxuICAgICAgKTtcblxuICAgICAgaW5mb1dpbmRvdy5zZXRQb3NpdGlvbihldmVudC5sYXRMbmcpO1xuICAgICAgaW5mb1dpbmRvdy5vcGVuKG1hcCk7XG4gICAgfSk7XG5cbiAgICBtYXAuZGF0YS5hZGRMaXN0ZW5lcignbW91c2VvdXQnLCAoKSA9PiBpbmZvV2luZG93LmNsb3NlKCkpO1xuICB9XG5cblxuICBnZXRGZWF0dXJlQ2VudGVyKGZlYXR1cmUpOiBhbnkge1xuICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKTtcblxuICAgIGZlYXR1cmUuZ2V0R2VvbWV0cnkoKT8uZm9yRWFjaExhdExuZygobGF0TG5nKSA9PiB7XG4gICAgICBib3VuZHMuZXh0ZW5kKGxhdExuZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm91bmRzLmdldENlbnRlcigpO1xuICB9XG5cbiAgYnVpbGRJbmZvV2luZG93Q29udGVudChkaXN0cmljdDogc3RyaW5nLCByb3c6IGFueSwgdG9vdFRpcENvbHVtbjogYW55W10pOiBzdHJpbmcge1xuXG4gICAgY29uc3Qgcm93cyA9IHRvb3RUaXBDb2x1bW4ubWFwKGMgPT4gYFxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OmZsZXg7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO1wiPlxuICAgICAgPHNwYW4+JHtjLmNhcHRpb259PC9zcGFuPlxuICAgICAgPHN0cm9uZz4ke3Jvdz8uW2MuZGF0YUZpZWxkXSA/PyAnTm8gZGF0YSd9PC9zdHJvbmc+XG4gICAgPC9kaXY+XG4gIGApLmpvaW4oJycpO1xuXG4gICAgcmV0dXJuIGBcbiAgICA8ZGl2IHN0eWxlPVwiXG4gICAgICBjb2xvcjojMDAwO1xuICAgICAgYmFja2dyb3VuZDojZmZmO1xuICAgICAgcGFkZGluZzo4cHggMTJweDtcbiAgICAgIGZvbnQtc2l6ZToxM3B4O1xuICAgICAgbWluLXdpZHRoOjE1MHB4O1xuICAgIFwiPlxuICAgICAgPGRpdiBzdHlsZT1cImZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTo2cHg7XCI+XG4gICAgICAgICR7ZGlzdHJpY3R9XG4gICAgICA8L2Rpdj5cbiAgICAgICR7cm93c31cbiAgICA8L2Rpdj5cbiAgYDtcbiAgfVxuXG4gIC8vIGNob3JvcGxldGhNYXAgc3RhcnQgLy9cblxufVxuIiwiPGRpdiBjbGFzcz1cIm14LTIgYmctZ3JheS04MDBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtc3RhcnQgYmctZ3JheS04MDAgcC0yXCI+XG4gICAgICA8YXBwLWxvYWRlcj48L2FwcC1sb2FkZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJteC0yIHBiLTJcIj5cblxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8ZGl2IGlkPVwicmVnaW9uc19kaXZcIiAjZ29vZ2xNYXAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPjwvZGl2PlxuICAgICAgPGRpdiBpZD1cImdvb2dsZW1hcFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJjaGFydEhlaWdodFwiPjwvZGl2PlxuXG4gICAgPC9uZy1jb250YWluZXI+XG5cblxuXG4gIDwvZGl2PlxuXG5cbjwvZGl2PiJdfQ==
585
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1nZW8tY2hhcnQvZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1nZW8tY2hhcnQvZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sTUFBTSxNQUFNLCtDQUErQyxDQUFDOzs7OztBQVNuRSxNQUFNLE9BQU8sc0JBQXNCO0lBNExqQyxZQUFtQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXhLL0MsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUliLFdBQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdkIseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsY0FBUyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELGlDQUE0QixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdFLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQVMxQywrQkFBMEIsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUN2RCx3QkFBbUIsR0FBVyxRQUFRLENBQUM7UUFDdkMsd0JBQW1CLEdBQVcsQ0FBQyxRQUFRLENBQUE7UUFDdkMsaUNBQTRCLEdBQVUsRUFB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bWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCBtb21lbnQgZnJvbSAnLi4vLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9tb21lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG4vLyBpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiYXBwLWdhbW1hLWdlby1jaGFydFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2dhbW1hLWdlby1jaGFydC5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBHYW1tYUdlb0NoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChcImdvb2dsTWFwXCIpIGdvb2dsTWFwOiBFbGVtZW50UmVmO1xuICBjaGFyRGF0YTogYW55O1xuICBjaGFydEhlaWdodDogYW55O1xuICBiYWNncm91bmRDb2xvcjogYW55O1xuICBtYXBDb2xvcnM6IGFueTtcbiAgY2hhcnRUeXBlOiBhbnk7XG4gIHRvb3RUaXBDb2x1bW46IGFueTtcbiAgcmVnaW9uOiBhbnk7XG4gIHJlZ2lvbkNvZGU6IGFueTtcbiAgLy8gaGVhdCBNYXAgc3RhcnRcbiAgbWFwOiBhbnk7XG4gIGxvY2F0aW9ucztcbiAgbWFwVFlwZTogYW55O1xuICBtYXBPcHRpb25Gb3JIZWF0TWFwOiB7XG4gICAgem9vbTogbnVtYmVyO1xuICB9O1xuICBjdXJyZW50SW5mb1dpbmRvdzogYW55O1xuICAvLyBoZWF0IE1hcCBlbmRcbiAgLy9oZWF0IG9ubHkgbWFwIHN0YXJ0IC8vXG4gIG1hcmtlcnMgPSBbXTtcbiAgaGVhdG1hcDogYW55O1xuICBoZWF0bWFwRGF0YTogYW55O1xuICB6b29tVmFsdUZvckFsbDogbnVtYmVyO1xuICBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XG4gIC8vaGVhdCBvbmx5IG1hcCBlbmQgLy9cbiAgQE91dHB1dCgpIHB1YmxpYyBnZXRUYWJsZUNvbmZpZ091dFB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb1Jvd0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvbnJpZ2h0Q2xpY2tDb250ZXh0U2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgcmlnaHRDbGlja0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGlzTG9hZGVyOiBib29sZWFuO1xuICBwYWdlX2NvbmZpZzogYW55O1xuICBwYWdlX3Bhcm1zOiBhbnk7XG4gIHNvcnRCeTogYW55O1xuICBmaWx0ZXJlZE9iamVjdHM6IGFueTtcblxuXG4gIC8vY2hvcm9wbGV0aE1hcCB2YXJpYWJsZXMvL1xuICBjaG9yb3BsZXRoX21hcF9kYXRhX3NvdXJjZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIG1pbkNob3JvcGxldGhNYXBDbnQ6IG51bWJlciA9IEluZmluaXR5O1xuICBtYXhDaG9yb3BsZXRoTWFwQ250OiBudW1iZXIgPSAtSW5maW5pdHlcbiAgYWxsU2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlOiBzdHJpbmc7XG4gIGNob3JvcGxldGhNYXBEYXRhU291cmNlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY2hvcm9wbGV0aFRvb2x0aXBEYXRhU291cmNlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgY2hvcm9wbGV0aE1hcERhdGE6IGFueTtcbiAgaXNSYW5nZVNsaWRlclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2hvcm9wbGV0aE1hcENoYXJ0Q29uZmlnOiBhbnk7XG5cbiAgQElucHV0KFwiY2hhcnREYXRhU291cmNlXCIpXG4gIHNldCBjaGFydERhdGFTb3VyY2UodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWdnZXJcbiAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdlX2NvbmZpZyA9IHZhbHVlO1xuICAgICAgdGhpcy5wYWdlX3Bhcm1zID0gdmFsdWUudGl0bGVQYXJhbXM7XG4gICAgICB0aGlzLnNvcnRCeSA9IHZhbHVlLmtwaUNvbmZpZz8uZGF0YUNvbmZpZz8uc29ydEJ5O1xuICAgICAgLy8gdGhpcy5pblJvYW1lckdlb0NoYXJ0Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJyc7XG4gICAgICBpZiAodmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UgJiYgdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2UubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIGlmICh2YWx1ZS5rcGlDb25maWcuZm9ybWF0ZSA9PSBcIm1vbnRobHlcIikge1xuICAgICAgICAgIHRoaXMubWFwVFlwZSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcFR5cGU7XG4gICAgICAgICAgaWYgKHRoaXMubWFwVFlwZSA9PSBcImdlb01hcFwiKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvbiA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnJlZ2lvbjtcbiAgICAgICAgICAgIHRoaXMucmVnaW9uQ29kZSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnJlZ2lvbkNvZGU7XG4gICAgICAgICAgICB0aGlzLnRvb3RUaXBDb2x1bW4gPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgICBsZXQgZGF0YSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlO1xuICAgICAgICAgICAgdGhpcy5jaGFydEhlaWdodCA9IGAke3ZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnNpemV9cHhgO1xuICAgICAgICAgICAgdGhpcy5jaGFydFR5cGUgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydFR5cGU7XG4gICAgICAgICAgICB0aGlzLmJhY2dyb3VuZENvbG9yID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICAgICAgdGhpcy5tYXBDb2xvcnMgPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jb2xvcnM7XG4gICAgICAgICAgICAvLyBsZXQgY29uZmlnID0gdmFsdWUuY2hhcnRDb25maWc7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRhID0gW1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWdbXCJhcmd1bWVudEZpZWxkXCJdLFxuICAgICAgICAgICAgICAgIHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnW1wiY2hhcnRWYWx1ZUZpZWxkXCJdLFxuICAgICAgICAgICAgICAgIHsgdHlwZTogXCJzdHJpbmdcIiwgcm9sZTogXCJ0b29sdGlwXCIsIHA6IHsgaHRtbDogdHJ1ZSB9IH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBdLmNvbmNhdChcbiAgICAgICAgICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5nZXRUb29sdGlwKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICBpdGVtW3ZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnW1wiYXJndW1lbnRGaWVsZFwiXV0sXG4gICAgICAgICAgICAgICAgICBpdGVtW3ZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnW1wiY2hhcnRWYWx1ZUZpZWxkXCJdXSxcbiAgICAgICAgICAgICAgICAgIHRvb2x0aXAsXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNoYXJEYXRhID0gZm9ybWF0dGVkRGF0YTtcbiAgICAgICAgICAgIC8vIHRoaXMubG9hZEdvb2dsZUNoYXJ0cygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgLy8gdGhpcy5sb2FkR29vZ2xlQ2hhcnRzKCk7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUWXBlID09IFwiYnViYmxlTWFwXCIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25zID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0SGVpZ2h0ID0gYCR7dmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuc2l6ZX1weGA7XG4gICAgICAgICAgICB0aGlzLnRvb3RUaXBDb2x1bW4gPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgICB0aGlzLm1hcE9wdGlvbkZvckhlYXRNYXAgPSB7XG4gICAgICAgICAgICAgIHpvb206IHRoaXMuem9vbVZhbHVGb3JBbGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUWXBlID09IFwiY2hvcm9wbGV0aE1hcFwiKSB7XG4gICAgICAgICAgICBkZWJ1Z2dlclxuXG4gICAgICAgICAgICB0aGlzLmNob3JvcGxldGhNYXBEYXRhU291cmNlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgICAgICAgICAgIHRoaXMuY2hvcm9wbGV0aFRvb2x0aXBEYXRhU291cmNlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgICAgIHRoaXMuY2hvcm9wbGV0aE1hcERhdGEgPSB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZTtcblxuICAgICAgICAgICAgbGV0IGNoYXJ0Q29uZmlnID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWc7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhcnRIZWlnaHQgPSBgJHtjaGFydENvbmZpZy5zaXplfXB4YDtcblxuICAgICAgICAgICAgbGV0IHRvb3RUaXBDb2x1bW4gPSBjaGFydENvbmZpZy5jaGFydF9jb25maWdcbiAgICAgICAgICAgICAgLmZpbHRlcihjID0+IGMuZGlzcGxheUZvciA9PT0gJ21hcCcgfHwgYy5kaXNwbGF5Rm9yID09PSAndG9vbHRpcCcpO1xuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkID1cbiAgICAgICAgICAgICAgY2hhcnRDb25maWcuY2hhcnRfY29uZmlnLmZpbmQoYyA9PiBjLmRpc3BsYXlGb3IgPT09ICdtYXAnKT8uZGF0YUZpZWxkO1xuXG4gICAgICAgICAgICB2YWx1ZS5rcGlDb25maWcuZGF0YVNvdXJjZS5mb3JFYWNoKGQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBkW2NoYXJ0Q29uZmlnLmFyZ3VtZW50RmllbGRdLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgdmFsID0gZFt2YWx1ZUZpZWxkXTtcblxuICAgICAgICAgICAgICB0aGlzLmNob3JvcGxldGhNYXBEYXRhU291cmNlLnNldChrZXksIHZhbCk7XG4gICAgICAgICAgICAgIHRoaXMuY2hvcm9wbGV0aFRvb2x0aXBEYXRhU291cmNlLnNldChrZXksIGQpO1xuXG4gICAgICAgICAgICAgIHRoaXMubWluQ2hvcm9wbGV0aE1hcENudCA9IE1hdGgubWluKHRoaXMubWluQ2hvcm9wbGV0aE1hcENudCwgZFt2YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICAgIHRoaXMubWF4Q2hvcm9wbGV0aE1hcENudCA9IE1hdGgubWF4KHRoaXMubWF4Q2hvcm9wbGV0aE1hcENudCwgZFt2YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGNoYXJ0Q29uZmlnLmlzVmFsdWVGaWVsZFJhbmdlU2xpZGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWxsU2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlcyA9IFsuLi5uZXcgU2V0KHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlLm1hcChkID0+IGRbY2hhcnRDb25maWcuc2xpZGVyVmFsdWVGaWVsZF0pKV07XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlID0gdGhpcy5hbGxTZWxlY3RlZFJhbmdlU2xpZGVyVmFsdWVzWzBdO1xuICAgICAgICAgICAgICB0aGlzLmlzUmFuZ2VTbGlkZXJWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaG9yb3BsZXRoTWFwRGF0YSh0aGlzLnNlbGVjdGVkUmFuZ2VTbGlkZXJWYWx1ZSwgY2hhcnRDb25maWcpO1xuICAgICAgICAgICAgICB0aGlzLmNob3JvcGxldGhNYXBDaGFydENvbmZpZyA9IGNoYXJ0Q29uZmlnO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIHRoaXMuaW5pdENob3JvcGxldGhNYXAoY2hhcnRDb25maWcsIHRvb3RUaXBDb2x1bW4pO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgLy8gdGhpcy5sb2FkR29vZ2xlQ2hhcnRzKCk7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb25zID0gdmFsdWUua3BpQ29uZmlnLmRhdGFTb3VyY2U7XG4gICAgICAgICAgICB0aGlzLnRvb3RUaXBDb2x1bW4gPSB2YWx1ZS5rcGlDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0SGVpZ2h0ID0gYCR7dmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuc2l6ZX1weGA7XG4gICAgICAgICAgICB0aGlzLnpvb21WYWx1Rm9yQWxsID0gcGFyc2VGbG9hdChcbiAgICAgICAgICAgICAgdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy56b29tXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25Gb3JIZWF0TWFwID0ge1xuICAgICAgICAgICAgICB6b29tOiB0aGlzLnpvb21WYWx1Rm9yQWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLmtwaUNvbmZpZy5mb3JtYXRlID09IFwiZGFpbHlcIikge1xuICAgICAgICAgIHRoaXMubWFwVFlwZSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcFR5cGU7XG4gICAgICAgICAgY29uc3Qgc29ydGVkRGF0YSA9IHZhbHVlLmtwaUNvbmZpZy5kYXRhU291cmNlXG4gICAgICAgICAgICAuZmlsdGVyKHJlY29yZCA9PiByZWNvcmRbdGhpcy5zb3J0QnldKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IG1vbWVudChiW3RoaXMuc29ydEJ5XSkuZGlmZihtb21lbnQoYVt0aGlzLnNvcnRCeV0pKSk7XG4gICAgICAgICAgY29uc3QgbW9zdFJlY2VudFJlY29yZCA9IHNvcnRlZERhdGFbMF07XG5cbiAgICAgICAgICBpZiAodmFsdWUuZW5kRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9iamVjdHMgPSBzb3J0ZWREYXRhLmZpbHRlcihkYXRhID0+IGRhdGFbdGhpcy5zb3J0QnldID09PSB2YWx1ZS5lbmREYXRlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9iamVjdHMgPSBzb3J0ZWREYXRhLmZpbHRlcihkYXRhID0+IGRhdGFbdGhpcy5zb3J0QnldID09PSBtb3N0UmVjZW50UmVjb3JkW3RoaXMuc29ydEJ5XSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMubWFwVFlwZSA9PSBcImJ1YmJsZU1hcFwiKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9ucyA9IHRoaXMuZmlsdGVyZWRPYmplY3RzO1xuICAgICAgICAgICAgdGhpcy5jaGFydEhlaWdodCA9IGAke3ZhbHVlLmtwaUNvbmZpZy5kYXRhQ29uZmlnLnNpemV9cHhgO1xuICAgICAgICAgICAgdGhpcy50b290VGlwQ29sdW1uID0gdmFsdWUua3BpQ29uZmlnLmRhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgICAgICAgdGhpcy5tYXBPcHRpb25Gb3JIZWF0TWFwID0ge1xuICAgICAgICAgICAgICB6b29tOiB0aGlzLnpvb21WYWx1Rm9yQWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9XG5cblxuICAgIH1cblxuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcFRZcGUgPT0gXCJnZW9NYXBcIikge1xuICAgICAgdGhpcy5sb2FkR29vZ2xlQ2hhcnRzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1hcFRZcGUgPT0gXCJoZWF0TWFwXCIpIHtcbiAgICAgIGlmICh0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSA9PSBcImhlYXRNYXBPbmx5XCIpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRHb29nbGVIZWF0T25seU1hcHModGhpcy5sb2NhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSA9PSBcImhlYXRNYXBNYXJrZXJcIikge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1hcCgpO1xuICAgICAgICB0aGlzLmFkZE1hcmtlcnMoKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVIZWF0V2l0aE1hcmtlck1hcCh0aGlzLmxvY2F0aW9ucyk7XG5cbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUWXBlID09IFwiY2hvcm9wbGV0aE1hcFwiKSB7XG5cbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5pbml0aWFsaXplTWFwKCk7XG4gICAgICB0aGlzLmFkZEJ1YmJsZU1hcmtlcnMoKTtcbiAgICB9XG4gIH1cblxuICBsb2FkR29vZ2xlQ2hhcnRzKCkge1xuICAgIGdvb2dsZS5jaGFydHMubG9hZChcImN1cnJlbnRcIiwge1xuICAgICAgcGFja2FnZXM6IFt0aGlzLmNoYXJ0VHlwZV0sXG4gICAgfSk7XG4gICAgZ29vZ2xlLmNoYXJ0cy5zZXRPbkxvYWRDYWxsYmFjayh0aGlzLmRyYXdDaGFydC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGRyYXdDaGFydCgpIHtcbiAgICBjb25zdCBkYXRhID0gZ29vZ2xlLnZpc3VhbGl6YXRpb24uYXJyYXlUb0RhdGFUYWJsZSh0aGlzLmNoYXJEYXRhKTtcblxuICAgIC8vIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgLy8gICByZWdpb246ICdVU0EnLFxuICAgIC8vICAgZGlzcGxheU1vZGU6ICdtYXJrZXJzJyxcbiAgICAvLyAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNncm91bmRDb2xvcixcbiAgICAvLyAgIHRvb2x0aXA6IHsgaXNIdG1sOiB0cnVlIH0sXG4gICAgLy8gICBjb2xvckF4aXM6IHsgY29sb3JzOiB0aGlzLm1hcENvbG9ycyB9XG4gICAgLy8gfTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25Db25maWcoKTtcblxuICAgIGNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkdlb0NoYXJ0KFxuICAgICAgdGhpcy5nb29nbE1hcC5uYXRpdmVFbGVtZW50XG4gICAgKTtcbiAgICB0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jaGFydEhlaWdodDtcbiAgICBjaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0VG9vbHRpcChkYXRhKSB7XG4gICAgbGV0IHRvb2xUaXBEYXRhID0gXCJcIjtcbiAgICB0aGlzLnRvb3RUaXBDb2x1bW4uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgdG9vbFRpcERhdGEgKz1cbiAgICAgICAgICBcIjxkaXYgY2xhc3M9J2lubGluZSc+PGI+XCIgK1xuICAgICAgICAgIGVsZW1lbnQuY2FwdGlvbiArXG4gICAgICAgICAgXCI6PC9iPjwvZGl2PiBcIiArXG4gICAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnJvdW5kT2ZmVGlsbFR3byhkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSwgMikgK1xuICAgICAgICAgIFwiPGJyIC8+XCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b29sVGlwRGF0YSArPVxuICAgICAgICAgIFwiPGRpdiBjbGFzcz0naW5saW5lJz48Yj5cIiArXG4gICAgICAgICAgZWxlbWVudC5jYXB0aW9uICtcbiAgICAgICAgICBcIjo8L2I+PC9kaXY+IFwiICtcbiAgICAgICAgICBkYXRhW2VsZW1lbnQuZGF0YUZpZWxkXSArXG4gICAgICAgICAgXCI8YnIgLz5cIjtcbiAgICAgIH1cblxuXG4gICAgfSk7XG4gICAgcmV0dXJuIHRvb2xUaXBEYXRhO1xuICB9XG5cbiAgZ2V0T3B0aW9uQ29uZmlnKCkge1xuICAgIGlmICh0aGlzLnJlZ2lvbiA9PSAnY2l0eScpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb25Db2RlLFxuICAgICAgICBkaXNwbGF5TW9kZTogJ21hcmtlcnMnLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmFjZ3JvdW5kQ29sb3IsXG4gICAgICAgIHRvb2x0aXA6IHsgaXNIdG1sOiB0cnVlIH0sXG4gICAgICAgIGNvbG9yQXhpczogeyBjb2xvcnM6IHRoaXMubWFwQ29sb3JzIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJhY2dyb3VuZENvbG9yLFxuICAgICAgICB0b29sdGlwOiB7IGlzSHRtbDogdHJ1ZSB9LFxuICAgICAgICBjb2xvckF4aXM6IHsgY29sb3JzOiB0aGlzLm1hcENvbG9ycyB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICB9XG5cblxuICAvLyAgR2VvIE1hcCBlbmQgLy9cblxuICAvLyBIZWF0IE1hcCBzdGFydCAvL1xuICBpbml0aWFsaXplTWFwKCk6IHZvaWQge1xuICAgIGNvbnN0IG1hcE9wdGlvbnMgPSB0aGlzLm1hcE9wdGlvbkZvckhlYXRNYXA7XG4gICAgLy8ge1xuICAgIC8vICAgY2VudGVyOiB7IGxhdDogMzcuMDkwMiwgbG5nOiAtOTUuNzEyOSB9LCAvLyBDZW50ZXIgb2YgdGhlIFVTQVxuICAgIC8vICAgem9vbTogNSxcbiAgICAvLyB9O1xuXG4gICAgaWYgKHRoaXMubWFwVFlwZSA9PSBcImJ1YmJsZU1hcFwiKSB7XG4gICAgICBtYXBPcHRpb25zW1wic3R5bGVzXCJdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGU6IFwiYWxsXCIsXG4gICAgICAgICAgc3R5bGVyczogW1xuICAgICAgICAgICAgeyBzYXR1cmF0aW9uOiAtMTAwIH0sXG4gICAgICAgICAgICB7IGxpZ2h0bmVzczogNzAgfSxcbiAgICAgICAgICAgIHsgdmlzaWJpbGl0eTogXCJzaW1wbGlmaWVkXCIgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGU6IFwiYWRtaW5pc3RyYXRpdmUuY291bnRyeVwiLFxuICAgICAgICAgIGVsZW1lbnRUeXBlOiBcImxhYmVsc1wiLFxuICAgICAgICAgIHN0eWxlcnM6IFtcbiAgICAgICAgICAgIHsgbGlnaHRuZXNzOiAtMzAgfSwgLy8gRGFya2VuIGxhYmVscyBmdXJ0aGVyXG4gICAgICAgICAgICB7IHZpc2liaWxpdHk6IFwib25cIiB9LFxuICAgICAgICAgICAgeyBmb250V2VpZ2h0OiBcImJvbGRcIiB9LCAvLyBNYWtlIGxhYmVscyBib2xkXG4gICAgICAgICAgICB7IGZvbnRTaXplOiBcIjEycHhcIiB9LCAvLyBJbmNyZWFzZSBmb250IHNpemVcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZmVhdHVyZVR5cGU6IFwiYWRtaW5pc3RyYXRpdmUuY291bnRyeVwiLFxuICAgICAgICAgIGVsZW1lbnRUeXBlOiBcImdlb21ldHJ5LnN0cm9rZVwiLFxuICAgICAgICAgIHN0eWxlcnM6IFtcbiAgICAgICAgICAgIHsgbGlnaHRuZXNzOiAtNDAgfSwgLy8gRGFya2VuIGJvcmRlcnMgc2lnbmlmaWNhbnRseVxuICAgICAgICAgICAgeyB3ZWlnaHQ6IDEuNSB9LCAvLyBJbmNyZWFzZSBib3JkZXIgdGhpY2tuZXNzXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZlYXR1cmVUeXBlOiBcImFkbWluaXN0cmF0aXZlLmNvdW50cnlcIixcbiAgICAgICAgICBlbGVtZW50VHlwZTogXCJnZW9tZXRyeS5maWxsXCIsXG4gICAgICAgICAgc3R5bGVyczogW1xuICAgICAgICAgICAgeyBsaWdodG5lc3M6IDkwIH0sIC8vIEtlZXAgZmlsbCB2ZXJ5IGxpZ2h0XG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgdGhpcy5tYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKFxuICAgICAgLy8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWdpb25zX2RpdlwiKSAsXG4gICAgICB0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBtYXBPcHRpb25zXG4gICAgKTtcbiAgICB0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jaGFydEhlaWdodDtcbiAgfVxuXG4gIC8vIEFkZCBtYXJrZXJzIHRvIHRoZSBtYXBcbiAgYWRkTWFya2VycygpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2F0aW9ucy5mb3JFYWNoKChsb2NhdGlvbikgPT4ge1xuICAgICAgY29uc3QgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgbGF0OiBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgbG9jYXRpb25bdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMYXRpdHVkZV1cbiAgICAgICAgICApLFxuICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChcbiAgICAgICAgICAgIGxvY2F0aW9uW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcubWFya2VyTG9uZ2l0dWRlXVxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuaWNvbiA/IHtcbiAgICAgICAgICB1cmw6IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuaWNvbiwgLy8gUmVwbGFjZSB3aXRoIHlvdXIgaWNvbiBwYXRoXG4gICAgICAgICAgc2NhbGVkU2l6ZToge1xuICAgICAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgICAgICAgaGVpZ2h0OiAzMixcbiAgICAgICAgICB9LFxuICAgICAgICB9IDogJycsXG4gICAgICAgIC8vIHRvb2x0aXBUZXh0OlxuICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAvLyB0aXRsZTogYCR7bG9jYXRpb24uY2l0eX06ICQke2xvY2F0aW9uLnRvdGFsX3NhbGVzX2Ftb3VudH1gLFxuICAgICAgICB0aXRsZTogYCR7bG9jYXRpb24uY2l0eX06ICQke2xvY2F0aW9uLnRvdGFsX3NhbGVzX2Ftb3VudH1gLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJvdW5kcy5leHRlbmQobWFya2VyLmdldFBvc2l0aW9uKCkpO1xuICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcblxuICAgICAgLy8gQWRkIGFuIGluZm8gd2luZG93XG4gICAgICBsZXQgc3RyaW5nV2l0aG91dFF1b3RlcyA9IHRoaXMuZ2V0SW5mb1dpbmRvRGF0YShsb2NhdGlvbik7XG4gICAgICBjb25zdCBpbmZvV0luZG93RGF0YSA9IHRoaXMuZ2V0SW5mb1dpbmRvRGF0YShsb2NhdGlvbik7XG5cbiAgICAgIGNvbnN0IGluZm9XaW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyh7XG4gICAgICAgIC8vIGNvbnRlbnQ6IGluZm9XSW5kb3dEYXRhLFxuICAgICAgICBjb250ZW50OiBgPGRpdiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAyMHB4O1wiPlxuICAgICAgICAke2luZm9XSW5kb3dEYXRhfVxuICAgICAgPC9kaXY+YCxcbiAgICAgIH0pO1xuICAgICAgLy8ge1xuICAgICAgLy8gICBjb250ZW50OiBgPGRpdiBzdHlsZT1cIiAgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTtjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMjBweDtcIj48aDQ+JHtcbiAgICAgIC8vICAgICBsb2NhdGlvbi5jaXR5XG4gICAgICAvLyAgIH08L2g0PjxwPlRvdGFsIFNhbGVzOiAkJHtsb2NhdGlvbi50b3RhbF9zYWxlc19hbW91bnQudG9GaXhlZChcbiAgICAgIC8vICAgICAyXG4gICAgICAvLyAgICl9PC9wPjwvZGl2PmAsXG4gICAgICAvLyB9XG5cbiAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZm9XaW5kb3cpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbmZvV2luZG93LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5mb1dpbmRvdy5vcGVuKHRoaXMubWFwLCBtYXJrZXIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmZvV2luZG93ID0gaW5mb1dpbmRvdztcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMubWFwLmZpdEJvdW5kcyh0aGlzLmJvdW5kcyk7XG5cblxuICB9XG5cbiAgZ2V0SW5mb1dpbmRvRGF0YShkYXRhKSB7XG4gICAgbGV0IHRvb2xUaXBEYXRhID0gYGA7XG4gICAgdGhpcy50b290VGlwQ29sdW1uLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YVtlbGVtZW50LmRhdGFGaWVsZF0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgdG9vbFRpcERhdGEgKz1cbiAgICAgICAgICBgPGRpdiBjbGFzcz0naW5saW5lJz48Yj5gICtcbiAgICAgICAgICBlbGVtZW50LmNhcHRpb24gK1xuICAgICAgICAgIGA6PC9iPjwvZGl2PiBgICtcbiAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uucm91bmRPZmZUaWxsVHdvKGRhdGFbZWxlbWVudC5kYXRhRmllbGRdLCAyKSArXG4gICAgICAgICAgYDxiciAvPmA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b29sVGlwRGF0YSArPVxuICAgICAgICAgIGA8ZGl2IGNsYXNzPSdpbmxpbmUnPjxiPmAgK1xuICAgICAgICAgIGVsZW1lbnQuY2FwdGlvbiArXG4gICAgICAgICAgYDo8L2I+PC9kaXY+IGAgK1xuICAgICAgICAgIGRhdGFbZWxlbWVudC5kYXRhRmllbGRdICtcbiAgICAgICAgICBgPGJyIC8+YDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdG9vbFRpcERhdGE7XG4gIH1cbiAgLy8gSGVhdCBNYXAgRW5kIC8vXG5cbiAgLy9oZWF0IG9ubHkgbWFwIHN0YXJ0IC8vXG5cbiAgbG9hZEdvb2dsZUhlYXRPbmx5TWFwcyhkYXRhKTogdm9pZCB7XG4gICAgdGhpcy5oZWF0bWFwRGF0YSA9IFtdO1xuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgbGV0IGxhdGl0dWRlID0gcGFyc2VGbG9hdChcbiAgICAgICAgZWxlbWVudFt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLm1hcmtlckxhdGl0dWRlXVxuICAgICAgKTtcbiAgICAgIGxldCBsb2d0aXR1ZGUgPSBwYXJzZUZsb2F0KFxuICAgICAgICBlbGVtZW50W3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcubWFya2VyTG9uZ2l0dWRlXVxuICAgICAgKTtcbiAgICAgIC8vIGxldCB3ZWlnaHQgPSAoY2VsbE5vZGUucHJvcGVydGllc1snV2VpZ2h0J10gIT0gdW5kZWZpbmVkKSA/IGNlbGxOb2RlLnByb3BlcnRpZXNbJ1dlaWdodCddIDogXCJOQVwiO1xuICAgICAgdGhpcy5oZWF0bWFwRGF0YS5wdXNoKHtcbiAgICAgICAgbG9jYXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcobGF0aXR1ZGUsIGxvZ3RpdHVkZSlcbiAgICAgICAgLy8gd2VpZ2h0OiBwYXJzZUZsb2F0KHdlaWdodCksXG5cbiAgICAgIH0pO1xuICAgICAgdGhpcy5ib3VuZHMuZXh0ZW5kKG5ldyBnb29nbGUubWFwcy5MYXRMbmcobGF0aXR1ZGUsIGxvZ3RpdHVkZSkpO1xuICAgIH0pO1xuICAgIGNvbnN0IG1hcE9wdGlvbnMgPSB7XG4gICAgICAvLyBjZW50ZXI6IHtcbiAgICAgIC8vICAgbGF0OiBwYXJzZUZsb2F0KHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuY2VudGVyTGF0aXR1ZGUpLFxuICAgICAgLy8gICBsbmc6IHBhcnNlRmxvYXQodGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5jZW50ZXJMb25naXR1ZGUpLFxuICAgICAgLy8gfSxcbiAgICAgIC8vIHpvb206IHBhcnNlRmxvYXQodGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy56b29tKVxuICAgICAgem9vbTogdGhpcy56b29tVmFsdUZvckFsbFxuICAgIH07XG5cblxuXG5cbiAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAodGhpcy5nb29nbE1hcC5uYXRpdmVFbGVtZW50LCBtYXBPcHRpb25zKTtcbiAgICB0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jaGFydEhlaWdodDtcbiAgICB0aGlzLm1hcC5maXRCb3VuZHModGhpcy5ib3VuZHMpO1xuICAgIHRoaXMuaGVhdG1hcCA9IG5ldyBnb29nbGUubWFwcy52aXN1YWxpemF0aW9uLkhlYXRtYXBMYXllcih7XG4gICAgICBkYXRhOiB0aGlzLmhlYXRtYXBEYXRhLFxuICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICB9KTtcblxuICB9XG5cblxuICAvL2hlYXQgb25seSBtYXAgZW5kIC8vXG5cbiAgLy9oZWF0IGFuZCBNYXJrZXIgIG1hcCBTdGFydCAvL1xuICBpbml0aWFsaXplSGVhdFdpdGhNYXJrZXJNYXAoZGF0YSkge1xuICAgIC8vIEluaXRpYWxpemUgbWFwXG4gICAgdGhpcy5tYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKHRoaXMuZ29vZ2xNYXAubmF0aXZlRWxlbWVudCwge1xuICAgICAgLy8gY2VudGVyOiB7IGxhdDogMzcuNzc0OSwgbG5nOiAtMTIyLjQxOTQgfSxcbiAgICAgIHpvb206IHBhcnNlRmxvYXQoXG4gICAgICAgIHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuem9vbVxuICAgICAgKSxcbiAgICB9KTtcbiAgICB0aGlzLmdvb2dsTWFwLm5hdGl2ZUVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jaGFydEhlaWdodDtcbiAgICAvLyBJbml0aWFsaXplIGhlYXRtYXAgbGF5ZXJcbiAgICB0aGlzLmhlYXRtYXBEYXRhID0gW107XG4gICAgZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXG4gICAgICBsZXQgbGF0aXR1ZGUgPSBwYXJzZUZsb2F0KFxuICAgICAgICBlbGVtZW50W3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcubWFya2VyTGF0aXR1ZGVdXG4gICAgICApO1xuICAgICAgbGV0IGxvZ3RpdHVkZSA9IHBhcnNlRmxvYXQoXG4gICAgICAgIGVsZW1lbnRbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMb25naXR1ZGVdXG4gICAgICApO1xuICAgICAgdGhpcy5oZWF0bWFwRGF0YS5wdXNoKHtcbiAgICAgICAgbG9jYXRpb246IG5ldyBnb29nbGUubWFwcy5MYXRMbmcobGF0aXR1ZGUsIGxvZ3RpdHVkZSlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5ib3VuZHMuZXh0ZW5kKG5ldyBnb29nbGUubWFwcy5MYXRMbmcobGF0aXR1ZGUsIGxvZ3RpdHVkZSkpO1xuICAgIH0pO1xuICAgIHRoaXMuaGVhdG1hcCA9IG5ldyBnb29nbGUubWFwcy52aXN1YWxpemF0aW9uLkhlYXRtYXBMYXllcih7XG4gICAgICBkYXRhOiB0aGlzLmhlYXRtYXBEYXRhLFxuICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICB9KTtcbiAgICAvLyBJbml0aWFsaXplIG1hcmtlcnNcbiAgICB0aGlzLmxvY2F0aW9ucy5mb3JFYWNoKChsb2NhdGlvbikgPT4ge1xuICAgICAgY29uc3QgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgbGF0OiBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgbG9jYXRpb25bdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMYXRpdHVkZV1cbiAgICAgICAgICApLFxuICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChcbiAgICAgICAgICAgIGxvY2F0aW9uW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcubWFya2VyTG9uZ2l0dWRlXVxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuaWNvbiA/IHtcbiAgICAgICAgICB1cmw6IHRoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcuaWNvbiwgLy8gUmVwbGFjZSB3aXRoIHlvdXIgaWNvbiBwYXRoXG4gICAgICAgICAgc2NhbGVkU2l6ZToge1xuICAgICAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgICAgICAgaGVpZ2h0OiAzMixcbiAgICAgICAgICB9LFxuICAgICAgICB9IDogJycsXG4gICAgICAgIC8vIHRvb2x0aXBUZXh0OlxuICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAvLyB0aXRsZTogYCR7bG9jYXRpb24uY2l0eX06ICQke2xvY2F0aW9uLnRvdGFsX3NhbGVzX2Ftb3VudH1gLFxuICAgICAgICB0aXRsZTogYCR7bG9jYXRpb24uY2l0eX06ICQke2xvY2F0aW9uLnRvdGFsX3NhbGVzX2Ftb3VudH1gLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmJvdW5kcy5leHRlbmQobWFya2VyLmdldFBvc2l0aW9uKCkpO1xuICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcblxuICAgICAgLy8gQWRkIGFuIGluZm8gd2luZG93XG5cbiAgICAgIC8vIEFkZCBhbiBpbmZvIHdpbmRvd1xuICAgICAgY29uc3QgaW5mb1dJbmRvd0RhdGEgPSB0aGlzLmdldEluZm9XaW5kb0RhdGEobG9jYXRpb24pO1xuICAgICAgY29uc3QgaW5mb1dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHtcbiAgICAgICAgY29udGVudDogYDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMjBweDtcIj5cbiAgICAgICAgICAgICR7aW5mb1dJbmRvd0RhdGF9XG4gICAgICAgICAgPC9kaXY+YCxcbiAgICAgIH0pO1xuXG5cbiAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZm9XaW5kb3cpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbmZvV2luZG93LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5mb1dpbmRvdy5vcGVuKHRoaXMubWFwLCBtYXJrZXIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmZvV2luZG93ID0gaW5mb1dpbmRvdztcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMubWFwLmZpdEJvdW5kcyh0aGlzLmJvdW5kcyk7XG5cbiAgICAvLyBBZGQgbGlzdGVuZXIgZm9yIHpvb20gY2hhbmdlc1xuICAgIHRoaXMubWFwLmFkZExpc3RlbmVyKCd6b29tX2NoYW5nZWQnLCAoKSA9PiB0aGlzLmhhbmRsZVpvb21DaGFuZ2UoKSk7XG4gIH1cblxuICBoYW5kbGVab29tQ2hhbmdlKCkge1xuICAgIGNvbnN0IHpvb21MZXZlbCA9IHRoaXMubWFwLmdldFpvb20oKTtcbiAgICBpZiAoem9vbUxldmVsIDwgNSkge1xuICAgICAgLy8gU2hvdyBoZWF0bWFwIGFuZCBoaWRlIG1hcmtlcnNcbiAgICAgIHRoaXMuaGVhdG1hcC5zZXRNYXAodGhpcy5tYXApO1xuICAgICAgdGhpcy5tYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4gbWFya2VyLnNldE1hcChudWxsKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhpZGUgaGVhdG1hcCBhbmQgc2hvdyBtYXJrZXJzXG4gICAgICB0aGlzLmhlYXRtYXAuc2V0TWFwKG51bGwpO1xuICAgICAgdGhpcy5tYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4gbWFya2VyLnNldE1hcCh0aGlzLm1hcCkpO1xuICAgIH1cbiAgfVxuXG4gIC8vaGVhdCBhbmQgTWFya2VyICBtYXAgRW5kIC8vXG4gIC8vQnViYmxlIENoYXJ0IFN0YXJ0XG4gIGFkZEJ1YmJsZU1hcmtlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5wcmVwYXJlQnViYmxlRGF0YSgpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMubG9jYXRpb25zKTtcbiAgICB0aGlzLmxvY2F0aW9ucy5mb3JFYWNoKChsb2NhdGlvbikgPT4ge1xuICAgICAgY29uc3QgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgbGF0OiBwYXJzZUZsb2F0KFxuICAgICAgICAgICAgbG9jYXRpb25bdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5tYXJrZXJMYXRpdHVkZV1cbiAgICAgICAgICApLFxuICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChcbiAgICAgICAgICAgIGxvY2F0aW9uW3RoaXMucGFnZV9jb25maWcua3BpQ29uZmlnLmRhdGFDb25maWcubWFya2VyTG9uZ2l0dWRlXVxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICBwYXRoOiBnb29nbGUubWFwcy5TeW1ib2xQYXRoLkNJUkNMRSxcbiAgICAgICAgICBzY2FsZTogTWF0aC5yb3VuZChsb2NhdGlvbi5zYWxlc19wZXJjZW50YWdlKSwgLy8gQWRqdXN0IGJ1YmJsZSBzaXplXG4gICAgICAgICAgZmlsbENvbG9yOiB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmJ1YmJsZUNvbG9yLFxuICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYsXG4gICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAwLFxuICAgICAgICB9LFxuICAgICAgICAvLyB0b29sdGlwVGV4dDpcbiAgICAgICAgbWFwOiB0aGlzLm1hcCxcbiAgICAgICAgLy8gdGl0bGU6IGAke2xvY2F0aW9uLmNpdHl9OiAkJHtsb2NhdGlvbi50b3RhbF9zYWxlc19hbW91bnR9YCxcbiAgICAgICAgdGl0bGU6IGAke2xvY2F0aW9uLmNpdHl9OiAkJHtsb2NhdGlvblt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmFncnVtZW50VmFsdWVdXG4gICAgICAgICAgfWAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYm91bmRzLmV4dGVuZChtYXJrZXIuZ2V0UG9zaXRpb24oKSk7XG4gICAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpO1xuXG4gICAgICAvLyBBZGQgYW4gaW5mbyB3aW5kb3dcbiAgICAgIGxldCBzdHJpbmdXaXRob3V0UXVvdGVzID0gdGhpcy5nZXRJbmZvV2luZG9EYXRhKGxvY2F0aW9uKTtcbiAgICAgIGNvbnN0IGluZm9XSW5kb3dEYXRhID0gdGhpcy5nZXRJbmZvV2luZG9EYXRhKGxvY2F0aW9uKTtcblxuICAgICAgY29uc3QgaW5mb1dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHtcbiAgICAgICAgLy8gY29udGVudDogaW5mb1dJbmRvd0RhdGEsXG4gICAgICAgIGNvbnRlbnQ6IGA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDIwcHg7XCI+XG4gICAgICAgICAke2luZm9XSW5kb3dEYXRhfVxuICAgICAgIDwvZGl2PmAsXG4gICAgICB9KTtcblxuICAgICAgbWFya2VyLmFkZExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5mb1dpbmRvdykge1xuICAgICAgICAgIHRoaXMuY3VycmVudEluZm9XaW5kb3cuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpbmZvV2luZG93Lm9wZW4odGhpcy5tYXAsIG1hcmtlcik7XG4gICAgICAgIHRoaXMuY3VycmVudEluZm9XaW5kb3cgPSBpbmZvV2luZG93O1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXAuZml0Qm91bmRzKHRoaXMuYm91bmRzKTtcbiAgfVxuXG4gIHByZXBhcmVCdWJibGVEYXRhKCkge1xuICAgIC8vIFN0ZXAgMTogRmluZCBtaW4gYW5kIG1heCB0b3RhbF9zYWxlc19hbW91bnRcbiAgICBjb25zdCBtaW5TYWxlcyA9IE1hdGgubWluKFxuICAgICAgLi4udGhpcy5sb2NhdGlvbnMubWFwKFxuICAgICAgICAoZCkgPT4gZFt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmFncnVtZW50VmFsdWVdXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBtYXhTYWxlcyA9IE1hdGgubWF4KFxuICAgICAgLi4udGhpcy5sb2NhdGlvbnMubWFwKFxuICAgICAgICAoZCkgPT4gZFt0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmFncnVtZW50VmFsdWVdXG4gICAgICApXG4gICAgKTtcblxuICAgIC8vIFN0ZXAgMjogRGVmaW5lIG1pbiBhbmQgbWF4IHBlcmNlbnRhZ2UgdmFsdWVzXG4gICAgY29uc3QgbWluUGVyY2VudGFnZSA9XG4gICAgICB0aGlzLnBhZ2VfY29uZmlnLmtwaUNvbmZpZy5kYXRhQ29uZmlnLmJ1YmJsZU1pbmltdW1TaXplO1xuICAgIGNvbnN0IG1heFBlcmNlbnRhZ2UgPVxuICAgICAgdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5idWJibGVNYXhpbXVtU2l6ZTtcblxuICAgIC8vIFN0ZXAgMzogTm9ybWFsaXplIGZ1bmN0aW9uXG4gICAgY29uc3Qgbm9ybWFsaXplID0gKHZhbHVlLCBtaW4sIG1heCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgKCh2YWx1ZSAtIG1pbikgLyAobWF4IC0gbWluKSkgKiAobWF4UGVyY2VudGFnZSAtIG1pblBlcmNlbnRhZ2UpICtcbiAgICAgICAgbWluUGVyY2VudGFnZVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgLy8gU3RlcCA0OiBBc3NpZ24gY2FsY3VsYXRlZCBwZXJjZW50YWdlIHRvIGVhY2ggb2JqZWN0XG4gICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaCgoZCkgPT4ge1xuICAgICAgZC5zYWxlc19wZXJjZW50YWdlID0gTWF0aC5taW4oXG4gICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgIG5vcm1hbGl6ZShcbiAgICAgICAgICAgIGRbdGhpcy5wYWdlX2NvbmZpZy5rcGlDb25maWcuZGF0YUNvbmZpZy5hZ3J1bWVudFZhbHVlXSxcbiAgICAgICAgICAgIG1pblNhbGVzLFxuICAgICAgICAgICAgbWF4U2FsZXNcbiAgICAgICAgICApLFxuICAgICAgICAgIG1pblBlcmNlbnRhZ2VcbiAgICAgICAgKSxcbiAgICAgICAgbWF4UGVyY2VudGFnZVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuICAvL0J1YmJsZSBDaGFydCBFbmRcblxuICAvLyBjaG9yb3BsZXRoTWFwIHN0YXJ0IC8vXG5cbiAgZ2V0Q29sb3IoY250OiBudW1iZXIsIHN0YXJ0Q29sb3I6IHN0cmluZywgZW5kQ29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGNudCA9PT0gdW5kZWZpbmVkIHx8IGNudCA9PT0gbnVsbCB8fCB0aGlzLm1heENob3JvcGxldGhNYXBDbnQgPT09IHRoaXMubWluQ2hvcm9wbGV0aE1hcENudCkge1xuICAgICAgcmV0dXJuICcjY2NjY2NjJztcbiAgICB9XG5cbiAgICBjb25zdCByYXRpbyA9IE1hdGgubWluKFxuICAgICAgTWF0aC5tYXgoKGNudCAtIHRoaXMubWluQ2hvcm9wbGV0aE1hcENudCkgLyAodGhpcy5tYXhDaG9yb3BsZXRoTWFwQ250IC0gdGhpcy5taW5DaG9yb3BsZXRoTWFwQ250KSwgMCksXG4gICAgICAxXG4gICAgKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5oZXhUb1JnYihzdGFydENvbG9yKTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLmhleFRvUmdiKGVuZENvbG9yKTtcblxuICAgIGNvbnN0IHIgPSB0aGlzLmxlcnAoc3RhcnQuciwgZW5kLnIsIHJhdGlvKTtcbiAgICBjb25zdCBnID0gdGhpcy5sZXJwKHN0YXJ0LmcsIGVuZC5nLCByYXRpbyk7XG4gICAgY29uc3QgYiA9IHRoaXMubGVycChzdGFydC5iLCBlbmQuYiwgcmF0aW8pO1xuXG4gICAgcmV0dXJuIGByZ2IoJHtyfSwgJHtnfSwgJHtifSlgO1xuICB9XG5cbiAgbGVycChzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgcmF0aW86IG51bWJlcikge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAqIHJhdGlvKTtcbiAgfVxuICBoZXhUb1JnYihoZXg6IHN0cmluZykge1xuICAgIGNvbnN0IGNsZWFuSGV4ID0gaGV4LnJlcGxhY2UoJyMnLCAnJyk7XG4gICAgY29uc3QgYmlnaW50ID0gcGFyc2VJbnQoY2xlYW5IZXgsIDE2KTtcblxuICAgIHJldHVybiB7XG4gICAgICByOiAoYmlnaW50ID4+IDE2KSAmIDI1NSxcbiAgICAgIGc6IChiaWdpbnQgPj4gOCkgJiAyNTUsXG4gICAgICBiOiBiaWdpbnQgJiAyNTVcbiAgICB9O1xuICB9XG5cblxuICBpbml0Q2hvcm9wbGV0aE1hcChjaGFydENvbmZpZzogYW55LCB0b290VGlwQ29sdW1uOiBhbnlbXSk6IHZvaWQge1xuXG5cbiAgICB0aGlzLm1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImdvb2dsZW1hcFwiKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgIHtcbiAgICAgICAgY2VudGVyOiB7IGxhdDogcGFyc2VGbG9hdChjaGFydENvbmZpZy5jZW50ZXJMYXQpLCBsbmc6IHBhcnNlRmxvYXQoY2hhcnRDb25maWcuY2VudGVyTG5nKSB9LFxuICAgICAgICB6b29tOiBwYXJzZUludChjaGFydENvbmZpZy56b29tKVxuICAgICAgfVxuICAgICk7XG5cblxuICAgIHRoaXMubWFwLmRhdGEubG9hZEdlb0pzb24oY2hhcnRDb25maWcuZ2pzb25GaWxlUGF0aCk7XG4gICAgdGhpcy5tYXAuZGF0YS5zZXRTdHlsZShmZWF0dXJlID0+IHRoaXMuZ2V0RmVhdHVyZVN0eWxlKGZlYXR1cmUsIGNoYXJ0Q29uZmlnKSk7XG5cbiAgICB0aGlzLm1hcC5kYXRhLnNldFN0eWxlKChmZWF0dXJlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGRpc3RyaWN0ID0gZmVhdHVyZS5nZXRQcm9wZXJ0eSgnZCcpPy50b1VwcGVyQ2FzZSgpO1xuICAgICAgY29uc3QgY250ID0gdGhpcy5jaG9yb3BsZXRoTWFwRGF0YVNvdXJjZS5nZXQoZGlzdHJpY3QpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxsQ29sb3I6IHRoaXMuZ2V0Q29sb3IoXG4gICAgICAgICAgY250LFxuICAgICAgICAgIGNoYXJ0Q29uZmlnLmNvbG9yT25lLFxuICAgICAgICAgIGNoYXJ0Q29uZmlnLmNvbG9yVHdvXG4gICAgICAgICksXG4gICAgICAgIHN0cm9rZUNvbG9yOiAnIzU1NScsXG4gICAgICAgIHN0cm9rZVdlaWdodDogMSxcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuNzVcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbmZvV2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coKTtcblxuICAgIHRoaXMubWFwLmRhdGEuYWRkTGlzdGVuZXIoJ21vdXNlb3ZlcicsIChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCBkaXN0cmljdCA9IGV2ZW50LmZlYXR1cmUuZ2V0UHJvcGVydHkoJ2QnKTtcbiAgICAgIGNvbnN0IGtleSA9IGRpc3RyaWN0Py50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmNob3JvcGxldGhUb29sdGlwRGF0YVNvdXJjZS5nZXQoa2V5KTtcblxuICAgICAgaW5mb1dpbmRvdy5zZXRDb250ZW50KFxuICAgICAgICB0aGlzLmJ1aWxkSW5mb1dpbmRvd0NvbnRlbnQoZGlzdHJpY3QsIHJvdywgdG9vdFRpcENvbHVtbilcbiAgICAgICk7XG5cbiAgICAgIGluZm9XaW5kb3cuc2V0UG9zaXRpb24oZXZlbnQubGF0TG5nKTtcbiAgICAgIGluZm9XaW5kb3cub3Blbih0aGlzLm1hcCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcC5kYXRhLmFkZExpc3RlbmVyKCdtb3VzZW91dCcsICgpID0+IGluZm9XaW5kb3cuY2xvc2UoKSk7XG4gIH1cblxuXG4gIGJ1aWxkSW5mb1dpbmRvd0NvbnRlbnQoZGlzdHJpY3Q6IHN0cmluZywgcm93OiBhbnksIHRvb3RUaXBDb2x1bW46IGFueVtdKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IHJvd3MgPSB0b290VGlwQ29sdW1uLm1hcChjID0+IGBcbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtcIj5cbiAgICAgIDxzcGFuPiR7Yy5jYXB0aW9ufTwvc3Bhbj5cbiAgICAgIDxzdHJvbmc+JHtyb3c/LltjLmRhdGFGaWVsZF0gPz8gJ05vIGRhdGEnfTwvc3Ryb25nPlxuICAgIDwvZGl2PlxuICBgKS5qb2luKCcnKTtcblxuICAgIHJldHVybiBgXG4gICAgPGRpdiBzdHlsZT1cIlxuICAgICAgY29sb3I6IzAwMDtcbiAgICAgIGJhY2tncm91bmQ6I2ZmZjtcbiAgICAgIHBhZGRpbmc6OHB4IDEycHg7XG4gICAgICBmb250LXNpemU6MTNweDtcbiAgICAgIG1pbi13aWR0aDoxNTBweDtcbiAgICBcIj5cbiAgICAgIDxkaXYgc3R5bGU9XCJmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206NnB4O1wiPlxuICAgICAgICAke2Rpc3RyaWN0fVxuICAgICAgPC9kaXY+XG4gICAgICAke3Jvd3N9XG4gICAgPC9kaXY+XG4gIGA7XG4gIH1cblxuXG4gIHVwZGF0ZUNob3JvcGxldGhNYXBEYXRhKHllYXI6IHN0cmluZywgY2hhcnRDb25maWc6IGFueSkge1xuICAgIHRoaXMuY2hvcm9wbGV0aE1hcERhdGFTb3VyY2UuY2xlYXIoKTtcbiAgICB0aGlzLm1pbkNob3JvcGxldGhNYXBDbnQgPSBJbmZpbml0eTtcbiAgICB0aGlzLm1heENob3JvcGxldGhNYXBDbnQgPSAtSW5maW5pdHk7XG5cbiAgICB0aGlzLmNob3JvcGxldGhNYXBEYXRhXG4gICAgICAuZmlsdGVyKGQgPT4gZC55ZWFyID09PSB5ZWFyKVxuICAgICAgLmZvckVhY2goZCA9PiB7XG4gICAgICAgIHRoaXMuY2hvcm9wbGV0aE1hcERhdGFTb3VyY2Uuc2V0KGQuZGlzdHJpY3QudG9VcHBlckNhc2UoKSwgZC5jbnQpO1xuICAgICAgICB0aGlzLm1pbkNob3JvcGxldGhNYXBDbnQgPSBNYXRoLm1pbih0aGlzLm1pbkNob3JvcGxldGhNYXBDbnQsIGQuY250KTtcbiAgICAgICAgdGhpcy5tYXhDaG9yb3BsZXRoTWFwQ250ID0gTWF0aC5tYXgodGhpcy5tYXhDaG9yb3BsZXRoTWFwQ250LCBkLmNudCk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLm1hcCkge1xuICAgICAgdGhpcy5tYXAuZGF0YS5zZXRTdHlsZShmZWF0dXJlID0+IHRoaXMuZ2V0RmVhdHVyZVN0eWxlKGZlYXR1cmUsIGNoYXJ0Q29uZmlnKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmVhdHVyZVN0eWxlKGZlYXR1cmU6IGFueSwgY2hhcnRDb25maWc6IGFueSkge1xuICAgIGNvbnN0IGRpc3RyaWN0TmFtZSA9IGZlYXR1cmUuZ2V0UHJvcGVydHkoJ2QnKT8udG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBjbnQgPSB0aGlzLmNob3JvcGxldGhNYXBEYXRhU291cmNlLmdldChkaXN0cmljdE5hbWUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGxDb2xvcjogdGhpcy5nZXRDb2xvcihjbnQsIGNoYXJ0Q29uZmlnLmNvbG9yT25lLCBjaGFydENvbmZpZy5jb2xvclR3byksXG4gICAgICBzdHJva2VDb2xvcjogJyM1NTUnLFxuICAgICAgc3Ryb2tlV2VpZ2h0OiAxLFxuICAgICAgZmlsbE9wYWNpdHk6IDAuNzVcbiAgICB9O1xuICB9XG5cbiAgc2V0WWVhckJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlID0gdGhpcy5hbGxTZWxlY3RlZFJhbmdlU2xpZGVyVmFsdWVzW2luZGV4XTtcbiAgICB0aGlzLnVwZGF0ZUNob3JvcGxldGhNYXBEYXRhKHRoaXMuc2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlLCB0aGlzLmNob3JvcGxldGhNYXBDaGFydENvbmZpZyk7XG4gIH1cblxuICBvblllYXJDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5kZXggPSArKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLnNldFllYXJCeUluZGV4KGluZGV4KTtcbiAgfVxuICAvLyBjaG9yb3BsZXRoTWFwIHN0YXJ0IC8vXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJteC0yIGJnLWdyYXktODAwXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLXN0YXJ0IGJnLWdyYXktODAwIHAtMlwiPlxuICAgICAgPGFwcC1sb2FkZXI+PC9hcHAtbG9hZGVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwibXgtMiBwYi0yXCI+XG5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPGRpdiBpZD1cInJlZ2lvbnNfZGl2XCIgI2dvb2dsTWFwIHN0eWxlPVwid2lkdGg6IDEwMCVcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIHAtNCBzcGFjZS15LTRcIj5cbiAgICAgICAgPGRpdiBpZD1cImdvb2dsZW1hcFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJjaGFydEhlaWdodFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LXcteGwgbXgtYXV0byB3LWZ1bGxcIiAqbmdJZj1cImlzUmFuZ2VTbGlkZXJWaXNpYmxlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHllYXIgb2YgYWxsU2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlxuICAgICAgICAgIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lIHB4LTIgcHktMSByb3VuZGVkLW1kIHRyYW5zaXRpb25cbiAgICAgICAgXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdiZy1ibGFjayB0ZXh0LXdoaXRlIHNoYWRvdyc6IHllYXIgPT09IHNlbGVjdGVkUmFuZ2VTbGlkZXJWYWx1ZSxcbiAgICAgICAgICAndGV4dC1ncmF5LTMwMCBob3Zlcjp0ZXh0LXdoaXRlJzogeWVhciAhPT0gc2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlXG4gICAgICAgIH1cIiAoY2xpY2spPVwic2V0WWVhckJ5SW5kZXgoaSlcIj5cbiAgICAgICAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwiXG4gICAgICB3LWZ1bGwgaC0yIHJvdW5kZWQtbGcgYXBwZWFyYW5jZS1ub25lIGN1cnNvci1wb2ludGVyXG4gICAgICBiZy1ncmFkaWVudC10by1yIGZyb20tZ3JlZW4tNDAwIHZpYS15ZWxsb3ctNDAwIHRvLXJlZC01MDBcbiAgICBcIiBbbWluXT1cIjBcIiBbbWF4XT1cImFsbFNlbGVjdGVkUmFuZ2VTbGlkZXJWYWx1ZXMubGVuZ3RoIC0gMVwiIFt2YWx1ZV09XCJhbGxTZWxlY3RlZFJhbmdlU2xpZGVyVmFsdWVzLmluZGV4T2Yoc2VsZWN0ZWRSYW5nZVNsaWRlclZhbHVlKVwiIChpbnB1dCk9XCJvblllYXJDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgPC9kaXY+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG5cbiAgPC9kaXY+XG5cblxuPC9kaXY+Il19
@@ -21,7 +21,6 @@ export * from './lib/shared/advanced-component/gamma-advance-chart/gamma-advance
21
21
  export * from './lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component';
22
22
  export * from './lib/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component';
23
23
  export * from './lib/shared/advanced-component/gamma-today-previous/gamma-today-previous.component';
24
- export * from './lib/shared/advanced-component/google-geo-map/google-geo-map.component';
25
24
  export * from './lib/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component';
26
25
  export * from './lib/shared/app-title/app-title.component';
27
26
  export * from './lib/shared/gamam-widget/gamam-widget.component';
@@ -31,7 +30,6 @@ export * from './lib/shared/loader/loader.component';
31
30
  export * from './lib/application-controller/support-components/table-with-bar/table-with-bar.component';
32
31
  export * from './lib/application-controller/support-components/geo-map/geo-map.component';
33
32
  export * from './lib/shared/advanced-component/gamma-heatmap/gamma-heatmap.component';
34
- export * from './lib/shared/advanced-component/google-geo-map/google-geo-map.component';
35
33
  export * from './lib/shared/advanced-component/gamma-geo-chart/gamma-geo-chart.component';
36
34
  export * from './lib/shared/user-access/user-access.component';
37
35
  export * from './lib/shared/shared.module';
@@ -103,4 +101,4 @@ export * from './lib/template-module/bookmarked-template/bookmarked-dataset-call
103
101
  export * from './lib/shared/template-dataset-call-service';
104
102
  export * from './lib/shared/security_principal';
105
103
  export * from './lib/shared/permission-helper';
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0REFBNEQsQ0FBQztBQU8zRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHdEQUF3RCxDQUFDO0FBR3ZFLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyw4R0FBOEcsQ0FBQztBQUM3SCxjQUFjLDRHQUE0RyxDQUFDO0FBQzNILGNBQWMsb0dBQW9HLENBQUM7QUFDbkgsY0FBYyx3R0FBd0csQ0FBQztBQUN2SCxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxxR0FBcUcsQ0FBQztBQUNwSCxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsMkZBQTJGLENBQUM7QUFDMUcsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLHFHQUFxRyxDQUFDO0FBQ3BILGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyxxRkFBcUYsQ0FBQztBQUNwRyxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMseUZBQXlGLENBQUM7QUFDeEcsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLHVFQUF1RSxDQUFBO0FBQ3JGLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYywyRUFBMkUsQ0FBQztBQUUxRixjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyxnRkFBZ0YsQ0FBQztBQUMvRixjQUFjLDBHQUEwRyxDQUFDO0FBQ3pILGNBQWMsd0ZBQXdGLENBQUM7QUFHdkcsY0FBYyxnR0FBZ0csQ0FBQztBQUMvRyxjQUFjLGdHQUFnRyxDQUFDO0FBQy9HLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyx3R0FBd0csQ0FBQztBQUt2SCxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYyxrREFBa0QsQ0FBQTtBQUdoRSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNEZBQTRGLENBQUM7QUFDM0csY0FBYyw2RUFBNkUsQ0FBQztBQUc1RixjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDBDQUEwQyxDQUFDO0FBR3pELGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLG1HQUFtRyxDQUFDO0FBQ2xILGNBQWMsNkVBQTZFLENBQUM7QUFJNUYsY0FBYyw0Q0FBNEMsQ0FBQTtBQUkxRCxjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsb0VBQW9FLENBQUM7QUFFbkYsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHdEQUF3RCxDQUFDO0FBRXZFLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMsbUZBQW1GLENBQUM7QUFDbEcsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLCtGQUErRixDQUFDO0FBQzlHLGNBQWMsdUZBQXVGLENBQUM7QUFDdEcsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLHFGQUFxRixDQUFDO0FBS3BHLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyw2RUFBNkUsQ0FBQztBQUM1RixjQUFjLDhFQUE4RSxDQUFDO0FBQzdGLGNBQWMsc0VBQXNFLENBQUM7QUFFckYsY0FBYyx3RUFBd0UsQ0FBQztBQUN2RixjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLDRFQUE0RSxDQUFDO0FBQzNGLGNBQWMsb0VBQW9FLENBQUM7QUFFbkYsY0FBYywwRUFBMEUsQ0FBQztBQUN6RixjQUFjLDZFQUE2RSxDQUFDO0FBQzVGLGNBQWMsd0VBQXdFLENBQUM7QUFDdkYsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLDBFQUEwRSxDQUFDO0FBRXpGLGNBQWMsNEZBQTRGLENBQUM7QUFDM0csY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLDBGQUEwRixDQUFDO0FBQ3pHLGNBQWMsNEZBQTRGLENBQUM7QUFDM0csY0FBYywyRkFBMkYsQ0FBQztBQUcxRyxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLDJFQUEyRSxDQUFDO0FBSTFGLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBnYW1tYS1hcHAtY29udHJvbGxlclxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1jb250cm9sbGVyLm1vZHVsZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY2FsbC5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvZW52aXJvbm1lbnQnO1xuXG5cbi8vIEV4cG9ydCBNb2R1bGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nYW1tYS1hcHAtY29udHJvbGxlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1jb250cm9sbGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2xvYWRpbmcvbG9hZGluZ01vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQnO1xuXG4vLyBFeHBvcnQgQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1maWx0ZXIvYXBwbGljYXRpb24tZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0LWpzb24vY3JlYXRlLWRhdGFzZXQtanNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1kYXRhc2V0LWNvbXBvbmVudC9jcmVhdGUtZGF0YXNldC1zcWwvY3JlYXRlLWRhdGFzZXQtc3FsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0L2NyZWF0ZS1kYXRhc2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLXZpZXctY29tcG9uZW50cy9hcHBsaWNhdGlvbi12aWV3cy9hcHBsaWNhdGlvbi12aWV3cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi12aWV3LWNvbXBvbmVudHMvY3JlYXRlLWNvbXAtdmlldy9jcmVhdGUtY29tcC12aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbi1oZWFkZXIvY29tbW9uLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9hZHZhbmNlLXdpZGdldC1oZWFkZXItZmlsdGVyL2FkdmFuY2Utd2lkZ2V0LWhlYWRlci1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvYXBwLWFkdmFuY2UtaGVhZGVyL2FwcC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQvZ2FtbS1zaW5nbGUtbnVtYmVyLWNhcmQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtYWR2YW5jZS1jaGFydC9nYW1tYS1hZHZhbmNlLWNoYXJ0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLWFkdmFuY2Utb3BlcmF0b3ItdGFibGUvZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UvZ2FtbWEtdGFibGUtd2l0aC1wZXJjZW50YWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRvZGF5LXByZXZpb3VzL2dhbW1hLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dvb2dsZS1nZW8tbWFwL2dvb2dsZS1nZW8tbWFwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLWNsdW1uLWJhci1jaGFydC9nYW1tYS10YWJsZS1jbHVtbi1iYXItY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hcHAtdGl0bGUvYXBwLXRpdGxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvZ2FtYW0td2lkZ2V0L2dhbWFtLXdpZGdldC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2dhbW1hLWFkdmFuY2UtZmlsdGVyL2dhbW1hLWFkdmFuY2UtZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvZ2FtbWEtYnJlYWQtY3J1bWJzL2JyZWFkLWNydW1icy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL3RhYmxlLXdpdGgtYmFyL3RhYmxlLXdpdGgtYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy9nZW8tbWFwL2dlby1tYXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtaGVhdG1hcC9nYW1tYS1oZWF0bWFwLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ29vZ2xlLWdlby1tYXAvZ29vZ2xlLWdlby1tYXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtZ2VvLWNoYXJ0L2dhbW1hLWdlby1jaGFydC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvdXNlci1hY2Nlc3MvdXNlci1hY2Nlc3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb25maWcvcGFnZS1jb25maWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29uZmlnLW11bHRpLWxheW91dC9wYWdlLWNvbmZpZy1tdWx0aS1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50JztcblxuLy9tZXRyaWMgY29tcG9uZW50XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvY3JlYXRlLW1ldHJpY3MvY3JlYXRlLW1ldHJpY3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWV0cmljLWNvbmZpZy9vZmxpbmUtbWV0cmljcy9vZmxpbmUtbWV0cmljcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZXRyaWMtY29uZmlnL29ubGluZS1tZXRyaWNzL29ubGluZS1tZXRyaWNzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvYWxsLW1ldHJpY3MtY29uZmlnL2FsbC1tZXRyaWNzLWNvbmZpZy5jb21wb25lbnQnO1xuXG5cblxuLy8gRXhwb3J0IFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY2FsbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIva3BpLXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHAuaHR0cC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3Rva2VuU3RvcmFnZS5zZXJ2Y2UnXG5cbi8vIEV4cG9ydCBQaXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3NhZmVIdG1sUGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0LXNxbC9zcWxGb3JtYXR0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UvY29udGVudFNhZmVIdG1sJztcblxuLy8gRXhwb3J0IE1pc2NlbGxhbmVvdXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29ucy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cbi8vIHN1cHBvcnQgY29tcG9uZW50XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy9kYXNoLWNoYXJ0L2Rhc2gtY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2Rhc2gtdGFibGUvZGFzaC10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvZGFzaC10b2RheS1wcmV2aW91cy9kYXNoLXRvZGF5LXByZXZpb3VzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy9oZWF0LW1hcC9oZWF0LW1hcC5jb21wb25lbnQnO1xuXG5cbi8vbW9tZW50XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL21vbWVudC1oZWxwZXInXG5cblxuLy8gbW9kdWxzIGZvciBvcHVzaWRlIHVzZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2V4Y2VwdGlvbkNvbmZpZ01vZHVsZS9leGNlcHRpb24tb3BlcmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZXhjZXB0aW9uQ29uZmlnTW9kdWxlL2V4Y2VwdGlvbkNvbmZpZy5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvY2RyQ29uZmlnTW9kdWxlL2Nkci1jb25maWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9jZHJDb25maWdNb2R1bGUvY2RyQ29uZmlnLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS9jcmVhdGUta3BpLXRyZWUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS9rcGlDcmVhdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL3RyZWV2aWV3L3RyZWV2aWV3LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9hc2lkZS9hc2lkZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL3RyZWV2aWV3L2NvbXBvbmVudHMvYmFzaWMvYmFzaWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2NvbGxhcHNhYmxlL2NvbGxhcHNhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9kaXZpZGVyL2RpdmlkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2dyb3VwL2dyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9zcGFjZXIvc3BhY2VyLmNvbXBvbmVudCc7XG5cblxuXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoU2luZ2xlTGF5b3V0L2twaVdpdGhTaW5nbGVMYXlvdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoU2luZ2xlTGF5b3V0L2twaS13aXRoLWRhdGFzZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoU2luZ2xlTGF5b3V0L2R5bmFtaW4tbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoU2luZ2xlTGF5b3V0L2twaS1zaW5nbGUtbGF5b3V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQvYXBwbGljYXRpb24tY2hhdC1hcGktY2FsbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoU2luZ2xlTGF5b3V0L3NpbmdsZS1sYXlvdXQtZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQvc2luZ2xlLnRva2VuU3RvcmFnZS5zZXJ2Y2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUva3BpV2l0aE11bHRpTGF5b3V0L2R5bmFtaW4tbW9kYWwtbXVsdGkuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoTXVsdGlMYXlvdXQva3BpLXdpdGgtbXVsdGlsYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoTXVsdGlMYXlvdXQva3BpV2l0aE11bHRpYXlvdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoTXVsdGlMYXlvdXQva3BpLW11bHRpLWxheW91dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoTXVsdGlMYXlvdXQvbXVsdGktbGF5b3V0LWRhdGFzZXQtY2FsbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoTXVsdGlMYXlvdXQvbXVpbGkudG9rZW5TdG9yYWdlLnNlcnZjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nQ29tcG9uZW50L2xhbmRpbmctY29tcG9uZW50LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ0NvbXBvbmVudC9kZWZhdWx0TGFuZGluZ0NvbXBvbmVudC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2RlZmF1bExhbmRpbmdDb21wb25lbnQvbGFuZGluZy1jb21wb25lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ0NvbXBvbmVudC9sYW5kaW5nLWRhdGFzZXQtY2FsbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nQ29tcG9uZW50L2xhbmRpbmcudG9rZW5TdG9yYWdlLnNlcnZjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nTXVsdGlMYXlvdXRDb21wb25lbnQvZGVmYXVsTGFuZGluZ011bHRpTGF5b3V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ011bHRpTGF5b3V0Q29tcG9uZW50L2RlZmF1bExhbmRpbmdNdWx0aUxheW91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2RlZmF1bExhbmRpbmdNdWx0aUxheW91dENvbXBvbmVudC9kZWZhdWxMYW5kaW5nTXVsdGlMYXlvdXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ011bHRpTGF5b3V0Q29tcG9uZW50L211bHRpLWxhbmRpbmctZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2RlZmF1bExhbmRpbmdNdWx0aUxheW91dENvbXBvbmVudC9tdWx0aS1sYW5kaW5nLnRva2VuU3RvcmFnZS5zZXJ2Y2UnOyBcblxuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvYm9va21hcmtlZC10ZW1wbGF0ZS9ib29rbWFya2VkLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvYm9va21hcmtlZC10ZW1wbGF0ZS9ib29rbWFya2VkVGVtcGxhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9ib29rbWFya2VkLXRlbXBsYXRlL2Jvb2ttYXJrZWQtbGF5b3V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2Jvb2ttYXJrZWQtdGVtcGxhdGUvYm9va21hcmtlZC1kYXRhc2V0LWNhbGwuc2VydmljZSc7XG5cblxuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvdGVtcGxhdGUtZGF0YXNldC1jYWxsLXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3NlY3VyaXR5X3ByaW5jaXBhbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvcGVybWlzc2lvbi1oZWxwZXInO1xuXG5cblxuXG4iXX0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0REFBNEQsQ0FBQztBQU8zRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHdEQUF3RCxDQUFDO0FBR3ZFLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyw4R0FBOEcsQ0FBQztBQUM3SCxjQUFjLDRHQUE0RyxDQUFDO0FBQzNILGNBQWMsb0dBQW9HLENBQUM7QUFDbkgsY0FBYyx3R0FBd0csQ0FBQztBQUN2SCxjQUFjLHNHQUFzRyxDQUFDO0FBQ3JILGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxxR0FBcUcsQ0FBQztBQUNwSCxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsMkZBQTJGLENBQUM7QUFDMUcsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLHFHQUFxRyxDQUFDO0FBQ3BILGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyxxRkFBcUYsQ0FBQztBQUNwRyxjQUFjLG1HQUFtRyxDQUFDO0FBQ2xILGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtFQUFrRSxDQUFDO0FBQ2pGLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHlGQUF5RixDQUFDO0FBQ3hHLGNBQWMsMkVBQTJFLENBQUM7QUFDMUYsY0FBYyx1RUFBdUUsQ0FBQTtBQUNyRixjQUFjLDJFQUEyRSxDQUFDO0FBRTFGLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxjQUFjLGdGQUFnRixDQUFDO0FBQy9GLGNBQWMsMEdBQTBHLENBQUM7QUFDekgsY0FBYyx3RkFBd0YsQ0FBQztBQUd2RyxjQUFjLGdHQUFnRyxDQUFDO0FBQy9HLGNBQWMsZ0dBQWdHLENBQUM7QUFDL0csY0FBYyxnR0FBZ0csQ0FBQztBQUMvRyxjQUFjLHdHQUF3RyxDQUFDO0FBS3ZILGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywwREFBMEQsQ0FBQTtBQUN4RSxjQUFjLGtEQUFrRCxDQUFBO0FBR2hFLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0RkFBNEYsQ0FBQztBQUMzRyxjQUFjLDZFQUE2RSxDQUFDO0FBRzVGLGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsMENBQTBDLENBQUM7QUFHekQsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMsbUdBQW1HLENBQUM7QUFDbEgsY0FBYyw2RUFBNkUsQ0FBQztBQUk1RixjQUFjLDRDQUE0QyxDQUFBO0FBSTFELGNBQWMsMkVBQTJFLENBQUM7QUFDMUYsY0FBYyxvRUFBb0UsQ0FBQztBQUVuRixjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsd0RBQXdELENBQUM7QUFFdkUsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMscUVBQXFFLENBQUM7QUFDcEYsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMsK0ZBQStGLENBQUM7QUFDOUcsY0FBYyx1RkFBdUYsQ0FBQztBQUN0RyxjQUFjLG1GQUFtRixDQUFDO0FBQ2xHLGNBQWMscUZBQXFGLENBQUM7QUFLcEcsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLDZFQUE2RSxDQUFDO0FBQzVGLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyxzRUFBc0UsQ0FBQztBQUVyRixjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsNEVBQTRFLENBQUM7QUFDM0YsY0FBYyxvRUFBb0UsQ0FBQztBQUVuRixjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMsNkVBQTZFLENBQUM7QUFDNUYsY0FBYyx3RUFBd0UsQ0FBQztBQUN2RixjQUFjLDJFQUEyRSxDQUFDO0FBQzFGLGNBQWMsMEVBQTBFLENBQUM7QUFFekYsY0FBYyw0RkFBNEYsQ0FBQztBQUMzRyxjQUFjLHlGQUF5RixDQUFDO0FBQ3hHLGNBQWMsMEZBQTBGLENBQUM7QUFDekcsY0FBYyw0RkFBNEYsQ0FBQztBQUMzRyxjQUFjLDJGQUEyRixDQUFDO0FBRzFHLGNBQWMseUVBQXlFLENBQUM7QUFDeEYsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMsMkVBQTJFLENBQUM7QUFJMUYsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGdhbW1hLWFwcC1jb250cm9sbGVyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nYW1tYS1hcHAtY29udHJvbGxlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIubW9kdWxlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cblxuLy8gRXhwb3J0IE1vZHVsZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2dhbW1hLWFwcC1jb250cm9sbGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbG9hZGluZy9sb2FkaW5nTW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbG9hZGluZy9sb2FkaW5nLmNvbXBvbmVudCc7XG5cbi8vIEV4cG9ydCBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWZpbHRlci9hcHBsaWNhdGlvbi1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvY3JlYXRlLWRhdGFzZXQtanNvbi9jcmVhdGUtZGF0YXNldC1qc29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWRhdGFzZXQtY29tcG9uZW50L2NyZWF0ZS1kYXRhc2V0LXNxbC9jcmVhdGUtZGF0YXNldC1zcWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvY3JlYXRlLWRhdGFzZXQvY3JlYXRlLWRhdGFzZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tdmlldy1jb21wb25lbnRzL2FwcGxpY2F0aW9uLXZpZXdzL2FwcGxpY2F0aW9uLXZpZXdzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLXZpZXctY29tcG9uZW50cy9jcmVhdGUtY29tcC12aWV3L2NyZWF0ZS1jb21wLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvY29tbW9uLWhlYWRlci9jb21tb24taGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2FkdmFuY2Utd2lkZ2V0LWhlYWRlci1maWx0ZXIvYWR2YW5jZS13aWRnZXQtaGVhZGVyLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9hcHAtYWR2YW5jZS1oZWFkZXIvYXBwLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tLXNpbmdsZS1udW1iZXItY2FyZC9nYW1tLXNpbmdsZS1udW1iZXItY2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1hZHZhbmNlLWNoYXJ0L2dhbW1hLWFkdmFuY2UtY2hhcnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtYWR2YW5jZS1vcGVyYXRvci10YWJsZS9nYW1tYS1hZHZhbmNlLW9wZXJhdG9yLXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS9nYW1tYS10YWJsZS13aXRoLXBlcmNlbnRhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdG9kYXktcHJldmlvdXMvZ2FtbWEtdG9kYXktcHJldmlvdXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9hZHZhbmNlZC1jb21wb25lbnQvZ2FtbWEtdGFibGUtY2x1bW4tYmFyLWNoYXJ0L2dhbW1hLXRhYmxlLWNsdW1uLWJhci1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FwcC10aXRsZS9hcHAtdGl0bGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9nYW1hbS13aWRnZXQvZ2FtYW0td2lkZ2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvZ2FtbWEtYWR2YW5jZS1maWx0ZXIvZ2FtbWEtYWR2YW5jZS1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9nYW1tYS1icmVhZC1jcnVtYnMvYnJlYWQtY3J1bWJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvdGFibGUtd2l0aC1iYXIvdGFibGUtd2l0aC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2dlby1tYXAvZ2VvLW1hcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1oZWF0bWFwL2dhbW1hLWhlYXRtYXAuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2FkdmFuY2VkLWNvbXBvbmVudC9nYW1tYS1nZW8tY2hhcnQvZ2FtbWEtZ2VvLWNoYXJ0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC91c2VyLWFjY2Vzcy91c2VyLWFjY2Vzcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbmZpZy9wYWdlLWNvbmZpZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb25maWctbXVsdGktbGF5b3V0L3BhZ2UtY29uZmlnLW11bHRpLWxheW91dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQnO1xuXG4vL21ldHJpYyBjb21wb25lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWV0cmljLWNvbmZpZy9jcmVhdGUtbWV0cmljcy9jcmVhdGUtbWV0cmljcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9hcHBsaWNhdGlvbi1tZXRyaWMtY29uZmlnL29mbGluZS1tZXRyaWNzL29mbGluZS1tZXRyaWNzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLW1ldHJpYy1jb25maWcvb25saW5lLW1ldHJpY3Mvb25saW5lLW1ldHJpY3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tbWV0cmljLWNvbmZpZy9hbGwtbWV0cmljcy1jb25maWcvYWxsLW1ldHJpY3MtY29uZmlnLmNvbXBvbmVudCc7XG5cblxuXG4vLyBFeHBvcnQgU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9rcGktc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcC5odHRwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvdG9rZW5TdG9yYWdlLnNlcnZjZSdcblxuLy8gRXhwb3J0IFBpcGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvc2FmZUh0bWxQaXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvYXBwbGljYXRpb24tZGF0YXNldC1jb21wb25lbnQvY3JlYXRlLWRhdGFzZXQtc3FsL3NxbEZvcm1hdHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvYWR2YW5jZWQtY29tcG9uZW50L2dhbW1hLXRhYmxlLXdpdGgtcGVyY2VudGFnZS9jb250ZW50U2FmZUh0bWwnO1xuXG4vLyBFeHBvcnQgTWlzY2VsbGFuZW91c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2FtbWEtYXBwLWNvbnRyb2xsZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb25zLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL2Vudmlyb25tZW50JztcblxuLy8gc3VwcG9ydCBjb21wb25lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2Rhc2gtY2hhcnQvZGFzaC1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9zdXBwb3J0LWNvbXBvbmVudHMvZGFzaC10YWJsZS9kYXNoLXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcHBsaWNhdGlvbi1jb250cm9sbGVyL3N1cHBvcnQtY29tcG9uZW50cy9kYXNoLXRvZGF5LXByZXZpb3VzL2Rhc2gtdG9kYXktcHJldmlvdXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2hlYXQtbWFwL2hlYXQtbWFwLmNvbXBvbmVudCc7XG5cblxuLy9tb21lbnRcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvbW9tZW50LWhlbHBlcidcblxuXG4vLyBtb2R1bHMgZm9yIG9wdXNpZGUgdXNlXG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZXhjZXB0aW9uQ29uZmlnTW9kdWxlL2V4Y2VwdGlvbi1vcGVyYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9leGNlcHRpb25Db25maWdNb2R1bGUvZXhjZXB0aW9uQ29uZmlnLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9jZHJDb25maWdNb2R1bGUvY2RyLWNvbmZpZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2NkckNvbmZpZ01vZHVsZS9jZHJDb25maWcubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL2NyZWF0ZS1rcGktdHJlZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL2twaUNyZWF0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvdHJlZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2FzaWRlL2FzaWRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9iYXNpYy9iYXNpYy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL3RyZWV2aWV3L2NvbXBvbmVudHMvY29sbGFwc2FibGUvY29sbGFwc2FibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL0twaUNyZWF0aW9uTW9kdWxlL3RyZWV2aWV3L2NvbXBvbmVudHMvZ3JvdXAvZ3JvdXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL3NwYWNlci9zcGFjZXIuY29tcG9uZW50JztcblxuXG5cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQva3BpV2l0aFNpbmdsZUxheW91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQva3BpLXdpdGgtZGF0YXNldC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQvZHluYW1pbi1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQva3BpLXNpbmdsZS1sYXlvdXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUva3BpV2l0aFNpbmdsZUxheW91dC9hcHBsaWNhdGlvbi1jaGF0LWFwaS1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhTaW5nbGVMYXlvdXQvc2luZ2xlLWxheW91dC1kYXRhc2V0LWNhbGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUva3BpV2l0aFNpbmdsZUxheW91dC9zaW5nbGUudG9rZW5TdG9yYWdlLnNlcnZjZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9rcGlXaXRoTXVsdGlMYXlvdXQvZHluYW1pbi1tb2RhbC1tdWx0aS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhNdWx0aUxheW91dC9rcGktd2l0aC1tdWx0aWxheW91dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhNdWx0aUxheW91dC9rcGlXaXRoTXVsdGlheW91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhNdWx0aUxheW91dC9rcGktbXVsdGktbGF5b3V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhNdWx0aUxheW91dC9tdWx0aS1sYXlvdXQtZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2twaVdpdGhNdWx0aUxheW91dC9tdWlsaS50b2tlblN0b3JhZ2Uuc2VydmNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2RlZmF1bExhbmRpbmdDb21wb25lbnQvbGFuZGluZy1jb21wb25lbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nQ29tcG9uZW50L2RlZmF1bHRMYW5kaW5nQ29tcG9uZW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ0NvbXBvbmVudC9sYW5kaW5nLWNvbXBvbmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nQ29tcG9uZW50L2xhbmRpbmctZGF0YXNldC1jYWxsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2RlZmF1bExhbmRpbmdDb21wb25lbnQvbGFuZGluZy50b2tlblN0b3JhZ2Uuc2VydmNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2RlZmF1bExhbmRpbmdNdWx0aUxheW91dENvbXBvbmVudC9kZWZhdWxMYW5kaW5nTXVsdGlMYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nTXVsdGlMYXlvdXRDb21wb25lbnQvZGVmYXVsTGFuZGluZ011bHRpTGF5b3V0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ011bHRpTGF5b3V0Q29tcG9uZW50L2RlZmF1bExhbmRpbmdNdWx0aUxheW91dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9kZWZhdWxMYW5kaW5nTXVsdGlMYXlvdXRDb21wb25lbnQvbXVsdGktbGFuZGluZy1kYXRhc2V0LWNhbGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvZGVmYXVsTGFuZGluZ011bHRpTGF5b3V0Q29tcG9uZW50L211bHRpLWxhbmRpbmcudG9rZW5TdG9yYWdlLnNlcnZjZSc7IFxuXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9ib29rbWFya2VkLXRlbXBsYXRlL2Jvb2ttYXJrZWQtdGVtcGxhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RlbXBsYXRlLW1vZHVsZS9ib29rbWFya2VkLXRlbXBsYXRlL2Jvb2ttYXJrZWRUZW1wbGF0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGVtcGxhdGUtbW9kdWxlL2Jvb2ttYXJrZWQtdGVtcGxhdGUvYm9va21hcmtlZC1sYXlvdXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90ZW1wbGF0ZS1tb2R1bGUvYm9va21hcmtlZC10ZW1wbGF0ZS9ib29rbWFya2VkLWRhdGFzZXQtY2FsbC5zZXJ2aWNlJztcblxuXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC90ZW1wbGF0ZS1kYXRhc2V0LWNhbGwtc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvc2VjdXJpdHlfcHJpbmNpcGFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9wZXJtaXNzaW9uLWhlbHBlcic7XG5cblxuXG5cbiJdfQ==