@hestia-earth/ui-components 0.19.3 → 0.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/maps-utils.d.ts +1 -1
- package/common/precision.pipe.d.ts +2 -1
- package/esm2020/common/data-table/data-table.component.mjs +2 -2
- package/esm2020/common/maps-utils.mjs +8 -7
- package/esm2020/common/precision.pipe.mjs +5 -4
- package/esm2020/files/files-error.model.mjs +3 -1
- package/esm2020/fontawesome/fontawesome.module.mjs +3 -3
- package/esm2020/node/node-logs-models/node-logs-models.component.mjs +4 -3
- package/esm2020/search/search.model.mjs +4 -1
- package/esm2020/sites/sites-maps/sites-maps.component.mjs +2 -2
- package/esm2020/terms/index.mjs +4 -1
- package/esm2020/terms/terms-property-content/terms-property-content.component.mjs +30 -0
- package/esm2020/terms/terms-sub-class-of-content/terms-sub-class-of-content.component.mjs +52 -0
- package/esm2020/terms/terms.module.mjs +37 -0
- package/fesm2015/hestia-earth-ui-components.mjs +147 -42
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +145 -43
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +2 -1
- package/package.json +1 -1
- package/search/search.model.d.ts +5 -0
- package/terms/index.d.ts +3 -0
- package/terms/terms-property-content/terms-property-content.component.d.ts +11 -0
- package/terms/terms-sub-class-of-content/terms-sub-class-of-content.component.d.ts +18 -0
- package/terms/terms.module.d.ts +13 -0
package/common/maps-utils.d.ts
CHANGED
|
@@ -64,6 +64,6 @@ export declare const pointToCoordinates: (point: google.maps.LatLng) => number[]
|
|
|
64
64
|
export declare const coordinatesToPoint: (values: (number | number[])[]) => any;
|
|
65
65
|
export declare const polygonToCoordinates: (polygon: google.maps.Polygon) => number[][];
|
|
66
66
|
export declare const addPolygonToFeature: (feat: feature, polygon: google.maps.Polygon) => any;
|
|
67
|
-
export declare const polygonsFromFeature: (feat: feature) => google.maps.Polygon[];
|
|
67
|
+
export declare const polygonsFromFeature: (feat: feature, color?: string) => google.maps.Polygon[];
|
|
68
68
|
export declare const polygonBounds: (polygon?: google.maps.Polygon | google.maps.Polygon[]) => google.maps.LatLngBounds;
|
|
69
69
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
export declare const transform: (value: string | number | boolean, precision?: string | number, enableComma?: boolean) => string | number | boolean;
|
|
3
4
|
export declare class PrecisionPipe implements PipeTransform {
|
|
4
|
-
transform(value: string | number, precision?: string | number, enableComma?: boolean): string | number;
|
|
5
|
+
transform(value: string | number | boolean, precision?: string | number, enableComma?: boolean): string | number | boolean;
|
|
5
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrecisionPipe, never>;
|
|
6
7
|
static ɵpipe: i0.ɵɵPipeDeclaration<PrecisionPipe, "precision", false>;
|
|
7
8
|
}
|
|
@@ -7,7 +7,7 @@ export class DataTableComponent {
|
|
|
7
7
|
this.el = el;
|
|
8
8
|
this.navigationMenuService = navigationMenuService;
|
|
9
9
|
this.subscriptions = [];
|
|
10
|
-
this.minHeight =
|
|
10
|
+
this.minHeight = 200;
|
|
11
11
|
this.small = false;
|
|
12
12
|
this.height = defaultSize;
|
|
13
13
|
this.width = defaultSize;
|
|
@@ -71,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
71
71
|
type: HostListener,
|
|
72
72
|
args: ['window:resize', []]
|
|
73
73
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUN4RCxNQUFNLGVBQWUsQ0FBQzs7O0FBS3ZCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQztBQU8zQixNQUFNLE9BQU8sa0JBQWtCO0lBdUI3QixZQUNVLEVBQWMsRUFDdEIsR0FBc0IsRUFDZCxxQkFBNEM7UUFGNUMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUVkLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUF6QjlDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUduQyxjQUFTLEdBQW9CLEdBQUcsQ0FBQztRQUlqQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBRWYsV0FBTSxHQUFHLFdBQVcsQ0FBQztRQUNyQixVQUFLLEdBQUcsV0FBVyxDQUFDO1FBaUJ6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzVGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQW5CRCxJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHUyxRQUFRO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBYUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbEQsQ0FBQzs7K0dBdEVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGdRQ2YvQix5U0FhQTsyRkRFYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsZUFBZTtxS0FRakIsU0FBUztzQkFEaEIsS0FBSztnQkFHRSxTQUFTO3NCQURoQixLQUFLO2dCQUdFLEtBQUs7c0JBRFosS0FBSztnQkFPSyxPQUFPO3NCQURqQixXQUFXO3VCQUFDLGdCQUFnQjtnQkFNbkIsUUFBUTtzQkFEakIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOYXZpZ2F0aW9uTWVudVNlcnZpY2UgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLW1lbnUuc2VydmljZSc7XG5cbmNvbnN0IGRlZmF1bHRTaXplID0gJzEwMCUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1kYXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBtaW5IZWlnaHQ6IHN0cmluZyB8IG51bWJlciA9IDIwMDtcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBtYXhIZWlnaHQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgc21hbGwgPSBmYWxzZTtcblxuICBwdWJsaWMgaGVpZ2h0ID0gZGVmYXVsdFNpemU7XG4gIHB1YmxpYyB3aWR0aCA9IGRlZmF1bHRTaXplO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtc21hbGwnKVxuICBwdWJsaWMgZ2V0IGlzU21hbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc21hbGw7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgW10pXG4gIHByb3RlY3RlZCBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlU2l6ZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICByZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvbk1lbnVTZXJ2aWNlOiBOYXZpZ2F0aW9uTWVudVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5uYXZpZ2F0aW9uTWVudVNlcnZpY2UuY29sbGFwc2VkJC5zdWJzY3JpYmUoKCkgPT4gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYmxlU2l6ZSgpO1xuICAgICAgcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVRhYmxlU2l6ZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIHRoaXMudXBkYXRlVGFibGVTaXplKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgaGFzQ2hhbmdlcyA9IE9iamVjdC52YWx1ZXMoY2hhbmdlcykuc29tZSh2ID0+ICF2LmZpcnN0Q2hhbmdlKTtcbiAgICByZXR1cm4gaGFzQ2hhbmdlcyAmJiB0aGlzLnVwZGF0ZVRhYmxlU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdGFibGVFbCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5iSGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5lbD8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvckFsbCgnLnRhYmxlIHRoZWFkIHRyJyk/Lmxlbmd0aCB8fCAxO1xuICB9XG5cbiAgcHVibGljIGdldCByb3dIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc21hbGwgPyAzMCA6IDQyO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJsZVNpemUoKSB7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy50YWJsZUVsLm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBtaW5IZWlnaHQgPSB0aGlzLm1pbkhlaWdodCA/ICt0aGlzLm1pbkhlaWdodCA6IGhlaWdodDtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLm1heEhlaWdodCA/ICt0aGlzLm1heEhlaWdodCA6IGhlaWdodDtcbiAgICB0aGlzLmhlaWdodCA9IGAke01hdGgubWF4KG1pbkhlaWdodCwgTWF0aC5taW4oaGVpZ2h0LCBtYXhIZWlnaHQpKX1weGA7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmVsPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLndpZHRoID0gd2lkdGggPyBgJHt3aWR0aH1weGAgOiBkZWZhdWx0U2l6ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGEtdGFibGUtaG9sZGVyXCJcbiAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRcIlxuICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZGF0YS10YWJsZS1jb250ZW50XCJcbiAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFwiXG4gICAgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -90,9 +90,10 @@ export const polygonToCoordinates = (polygon) => polygon.getPaths().getArray().m
|
|
|
90
90
|
pointToCoordinates(points[0])
|
|
91
91
|
];
|
|
92
92
|
})[0];
|
|
93
|
-
const coordinatesToPolygon = (coordinates) => new google.maps.Polygon({
|
|
93
|
+
const coordinatesToPolygon = (coordinates, color = strokeColor) => new google.maps.Polygon({
|
|
94
94
|
paths: coordinates.map(coordinatesToPoint).filter(Boolean),
|
|
95
|
-
...strokeStyle
|
|
95
|
+
...strokeStyle,
|
|
96
|
+
strokeColor: color
|
|
96
97
|
});
|
|
97
98
|
const getCoordinates = (feat) => feat.type === 'Polygon' || feat.type === 'MultiPolygon'
|
|
98
99
|
? feat.coordinates
|
|
@@ -104,11 +105,11 @@ export const addPolygonToFeature = (feat, polygon) => feat.type === 'FeatureColl
|
|
|
104
105
|
: feat.type === 'GeometryCollection'
|
|
105
106
|
? feat.geometries.map(geometry => (geometry?.coordinates || []).push(polygonToCoordinates(polygon)))
|
|
106
107
|
: (getCoordinates(feat) || []).push(polygonToCoordinates(polygon));
|
|
107
|
-
export const polygonsFromFeature = (feat) => feat.type === 'FeatureCollection'
|
|
108
|
-
? feat.features.flatMap(polygonsFromFeature)
|
|
108
|
+
export const polygonsFromFeature = (feat, color) => feat.type === 'FeatureCollection'
|
|
109
|
+
? feat.features.flatMap(values => polygonsFromFeature(values, color))
|
|
109
110
|
: feat.type === 'GeometryCollection'
|
|
110
|
-
? feat.geometries?.flatMap(geometry => (geometry.coordinates || []).map(coordinatesToPolygon))
|
|
111
|
-
: (getCoordinates(feat) || []).map(coordinatesToPolygon);
|
|
111
|
+
? feat.geometries?.flatMap(geometry => (geometry.coordinates || []).map(values => coordinatesToPolygon(values, color)))
|
|
112
|
+
: (getCoordinates(feat) || []).map(values => coordinatesToPolygon(values, color));
|
|
112
113
|
export const polygonBounds = (polygon) => {
|
|
113
114
|
const paths = polygon
|
|
114
115
|
? Array.isArray(polygon)
|
|
@@ -117,4 +118,4 @@ export const polygonBounds = (polygon) => {
|
|
|
117
118
|
: [];
|
|
118
119
|
return paths.reduce((prev, curr) => prev.extend(curr), new google.maps.LatLngBounds());
|
|
119
120
|
};
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQVcsR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUMxRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLE9BQU87UUFDTCxnQkFBZ0IsRUFBRTtZQUNoQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEQsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFO2FBQzdEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixTQUFTO0lBQ1QsV0FBVyxFQUFFLEdBQUc7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixXQUFXO0lBQ1gsYUFBYSxFQUFFLEdBQUc7SUFDbEIsWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyx3RkFBd0YsQ0FBQztBQUd2SCxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDbkQsTUFB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SUFBSSxFQUFFLENBQUM7WUFDckQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBsb2NhdGlvblF1ZXJ5ID0gKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzLCBzZWFyY2hGaWVsZCA9ICdsb2NhdGlvbicpID0+IHtcbiAgY29uc3QgdG9wUmlnaHQgPSBib3VuZHMuZ2V0Tm9ydGhFYXN0KCk7XG4gIGNvbnN0IGJvdHRvbUxlZnQgPSBib3VuZHMuZ2V0U291dGhXZXN0KCk7XG4gIHJldHVybiB7XG4gICAgZ2VvX2JvdW5kaW5nX2JveDoge1xuICAgICAgW3NlYXJjaEZpZWxkXToge1xuICAgICAgICB0b3BfbGVmdDogeyBsYXQ6IHRvcFJpZ2h0LmxhdCgpLCBsb246IGJvdHRvbUxlZnQubG5nKCkgfSxcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7IGxhdDogYm90dG9tTGVmdC5sYXQoKSwgbG9uOiB0b3BSaWdodC5sbmcoKSB9LFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWxsQ29sb3IgPSAnIzE5Mzk1Nyc7XG5leHBvcnQgY29uc3Qgc3Ryb2tlQ29sb3IgPSAnIzBDMUIyOSc7XG5cbmV4cG9ydCBjb25zdCBmaWxsU3R5bGUgPSB7XG4gIGZpbGxDb2xvcixcbiAgZmlsbE9wYWNpdHk6IDAuNlxufTtcblxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlID0ge1xuICBzdHJva2VDb2xvcixcbiAgc3Ryb2tlT3BhY2l0eTogMC42LFxuICBzdHJva2VXZWlnaHQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyZXJJbWFnZSA9ICdodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9tYXJrZXJjbHVzdGVyZXIvbSc7XG5cblxuY29uc3QgZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50ID0gKHBlcmNlbnQ6IG51bWJlcikgPT4ge1xuICBjb25zdCB4ID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgKiBwZXJjZW50KTtcbiAgY29uc3QgeSA9IE1hdGguc2luKDIgKiBNYXRoLlBJICogcGVyY2VudCk7XG4gIHJldHVybiBbeCwgeV07XG59O1xuXG5pbnRlcmZhY2UgSU1hcmtlclBpZUNvbmZpZyB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbn1cblxuY29uc3QgcGllVXJsID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZTogbnVtYmVyKSA9PiB7XG4gIGxldCBjdW11bGF0aXZlUGVyY2VudCA9IDA7XG5cbiAgcmV0dXJuICdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudChgXG4gICAgPHN2ZyB3aWR0aD1cIiR7c2l6ZX1cIiBoZWlnaHQ9XCIke3NpemV9XCIgdmlld0JveD1cIi0xIC0xIDIgMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4ke1xuICAgIGNvbmZpZ3MubWFwKCh7IHBlcmNlbnQsIGNvbG9yIH0pID0+IHtcbiAgICAgIGNvbnN0IFtzdGFydFgsIHN0YXJ0WV0gPSBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQoY3VtdWxhdGl2ZVBlcmNlbnQpO1xuICAgICAgY3VtdWxhdGl2ZVBlcmNlbnQgKz0gcGVyY2VudDtcbiAgICAgIGNvbnN0IFtlbmRYLCBlbmRZXSA9IGdldENvb3JkaW5hdGVzRm9yUGVyY2VudChjdW11bGF0aXZlUGVyY2VudCk7XG4gICAgICBjb25zdCBsYXJnZUFyY0ZsYWcgPSBwZXJjZW50ID4gLjUgPyAxIDogMDtcbiAgICAgIGNvbnN0IHBhdGhEYXRhID0gW1xuICAgICAgICBgTSAke3N0YXJ0WH0gJHtzdGFydFl9YCwgLy8gTW92ZVxuICAgICAgICBgQSAxIDEgMCAke2xhcmdlQXJjRmxhZ30gMSAke2VuZFh9ICR7ZW5kWX1gLCAvLyBBcmNcbiAgICAgICAgYEwgMCAwYCwgLy8gTGluZVxuICAgICAgXS5qb2luKCcgJyk7XG4gICAgICByZXR1cm4gYDxwYXRoIGZpbGw9XCIke2NvbG9yfVwiIGQ9XCIke3BhdGhEYXRhfVwiPjwvcGF0aD5gO1xuICAgIH0pLmpvaW4oJycpfTwvc3ZnPlxuICBgLnRyaW0oKSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyUGllID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZSA9IDcpID0+ICh7XG4gIGFuY2hvcjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KHNpemUgLyAyLCBzaXplIC8gMiksXG4gIHVybDogcGllVXJsKGNvbmZpZ3MsIHNpemUpLFxuICBsYWJlbE9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIC0yKVxufSk7XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJJY29uID0gKHNjYWxlID0gNyk6IGdvb2dsZS5tYXBzLlN5bWJvbCA9PiAoe1xuICBwYXRoOiBnb29nbGUubWFwcy5TeW1ib2xQYXRoLkNJUkNMRSxcbiAgLi4uZmlsbFN0eWxlLFxuICAuLi5zdHJva2VTdHlsZSxcbiAgc2NhbGUsXG4gIGxhYmVsT3JpZ2luOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMCwgLTIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hcmtlciA9IChcbiAgcG9zaXRpb24/OiBnb29nbGUubWFwcy5MYXRMbmcgfCBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsLCB0ZXh0ID0gJycsIGNvbG9yID0gZmlsbENvbG9yLCBzY2FsZT86IG51bWJlclxuKSA9PiAoXG4gIHBvc2l0aW9uICYmIHBvc2l0aW9uLmxhdCAmJiBwb3NpdGlvbi5sbmcgPyBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICBwb3NpdGlvbixcbiAgICBsYWJlbDogeyBjb2xvciwgdGV4dCB9LFxuICAgIGljb246IG1hcmtlckljb24oc2NhbGUpXG4gIH0pIDogdW5kZWZpbmVkXG4pIGFzIGdvb2dsZS5tYXBzLk1hcmtlcjtcblxuaW50ZXJmYWNlIElQb2x5Z29uIHtcbiAgdHlwZTogJ1BvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG5pbnRlcmZhY2UgSU11bHRpUG9seWdvbiB7XG4gIHR5cGU6ICdNdWx0aVBvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG50eXBlIGdlb21ldHJ5ID0gSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlIHtcbiAgdHlwZTogJ0ZlYXR1cmUnO1xuICBwcm9wZXJ0aWVzOiBhbnk7XG4gIGdlb21ldHJ5OiBnZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmVhdHVyZUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nO1xuICBmZWF0dXJlczogSUZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR2VvbWV0cnlDb2xsZWN0aW9uIHtcbiAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbic7XG4gIGdlb21ldHJpZXM6IGdlb21ldHJ5W107XG59XG5cbnR5cGUgZmVhdHVyZSA9IElGZWF0dXJlIHwgSUZlYXR1cmVDb2xsZWN0aW9uIHwgSUdlb21ldHJ5Q29sbGVjdGlvbiB8IElQb2x5Z29uIHwgSU11bHRpUG9seWdvbjtcblxuY29uc3QgZmVhdHVyZTogSUZlYXR1cmUgPSBPYmplY3QuZnJlZXplKHtcbiAgdHlwZTogJ0ZlYXR1cmUnLFxuICBwcm9wZXJ0aWVzOiB7fSxcbiAgZ2VvbWV0cnk6ICh7XG4gICAgdHlwZTogJ1BvbHlnb24nLFxuICAgIGNvb3JkaW5hdGVzOiBbXVxuICB9IGFzIGdlb21ldHJ5KVxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmVhdHVyZSA9ICgpOiBJRmVhdHVyZSA9PiAoeyAuLi5mZWF0dXJlIH0pO1xuXG5leHBvcnQgY29uc3QgcG9pbnRUb0Nvb3JkaW5hdGVzID0gKHBvaW50OiBnb29nbGUubWFwcy5MYXRMbmcpID0+IFtwb2ludC5sbmcoKSwgcG9pbnQubGF0KCldO1xuXG5leHBvcnQgY29uc3QgY29vcmRpbmF0ZXNUb1BvaW50ID0gKHZhbHVlczogKG51bWJlciB8IG51bWJlcltdKVtdKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzWzBdKVxuICAgICAgPyB2YWx1ZXMubWFwKCh2OiBhbnkpID0+IGNvb3JkaW5hdGVzVG9Qb2ludCh2KSlcbiAgICAgIDogKHZhbHVlcyBhcyBudW1iZXJbXSk/LnNvbWUoaXNOYU4pXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoKHZhbHVlcyBhcyBudW1iZXJbXSlbMV0sICh2YWx1ZXMgYXMgbnVtYmVyW10pWzBdKTtcbiAgfVxuICBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9Db29yZGluYXRlcyA9IChwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PiBwb2x5Z29uLmdldFBhdGhzKCkuZ2V0QXJyYXkoKS5tYXAocGF0aCA9PiB7XG4gIGNvbnN0IHBvaW50cyA9IHBhdGguZ2V0QXJyYXkoKTtcbiAgcmV0dXJuIFtcbiAgICAuLi5wb2ludHMubWFwKHBvaW50VG9Db29yZGluYXRlcyksXG4gICAgcG9pbnRUb0Nvb3JkaW5hdGVzKHBvaW50c1swXSlcbiAgXTtcbn0pWzBdO1xuXG5jb25zdCBjb29yZGluYXRlc1RvUG9seWdvbiA9IChjb29yZGluYXRlczogbnVtYmVyW11bXSkgPT4gbmV3IGdvb2dsZS5tYXBzLlBvbHlnb24oe1xuICBwYXRoczogY29vcmRpbmF0ZXMubWFwKGNvb3JkaW5hdGVzVG9Qb2ludCkuZmlsdGVyKEJvb2xlYW4pLFxuICAuLi5zdHJva2VTdHlsZVxufSk7XG5cbmNvbnN0IGdldENvb3JkaW5hdGVzID0gKGZlYXQ6IGZlYXR1cmUpID0+XG4gIGZlYXQudHlwZSA9PT0gJ1BvbHlnb24nIHx8IGZlYXQudHlwZSA9PT0gJ011bHRpUG9seWdvbidcbiAgPyBmZWF0LmNvb3JkaW5hdGVzXG4gIDogZmVhdC50eXBlID09PSAnRmVhdHVyZSdcbiAgPyBmZWF0Lmdlb21ldHJ5Py5jb29yZGluYXRlc1xuICA6IFtdO1xuXG5leHBvcnQgY29uc3QgYWRkUG9seWdvblRvRmVhdHVyZSA9IChmZWF0OiBmZWF0dXJlLCBwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PlxuICBmZWF0LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbidcbiAgPyBmZWF0LmZlYXR1cmVzLnB1c2goYWRkUG9seWdvblRvRmVhdHVyZShkZWZhdWx0RmVhdHVyZSgpLCBwb2x5Z29uKSlcbiAgOiBmZWF0LnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nXG4gID8gZmVhdC5nZW9tZXRyaWVzLm1hcChnZW9tZXRyeSA9PiAoZ2VvbWV0cnk/LmNvb3JkaW5hdGVzIHx8IFtdKS5wdXNoKHBvbHlnb25Ub0Nvb3JkaW5hdGVzKHBvbHlnb24pKSlcbiAgOiAoZ2V0Q29vcmRpbmF0ZXMoZmVhdCkgfHwgW10pLnB1c2gocG9seWdvblRvQ29vcmRpbmF0ZXMocG9seWdvbikpXG4gIDtcblxuZXhwb3J0IGNvbnN0IHBvbHlnb25zRnJvbUZlYXR1cmUgPSAoZmVhdDogZmVhdHVyZSk6IGdvb2dsZS5tYXBzLlBvbHlnb25bXSA9PlxuICBmZWF0LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbidcbiAgPyBmZWF0LmZlYXR1cmVzLmZsYXRNYXAocG9seWdvbnNGcm9tRmVhdHVyZSlcbiAgOiBmZWF0LnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nXG4gID8gZmVhdC5nZW9tZXRyaWVzPy5mbGF0TWFwKGdlb21ldHJ5ID0+IChnZW9tZXRyeS5jb29yZGluYXRlcyB8fCBbXSkubWFwKGNvb3JkaW5hdGVzVG9Qb2x5Z29uKSlcbiAgOiAoZ2V0Q29vcmRpbmF0ZXMoZmVhdCkgfHwgW10pLm1hcChjb29yZGluYXRlc1RvUG9seWdvbilcbiAgO1xuXG5leHBvcnQgY29uc3QgcG9seWdvbkJvdW5kcyA9IChwb2x5Z29uPzogZ29vZ2xlLm1hcHMuUG9seWdvbiB8IGdvb2dsZS5tYXBzLlBvbHlnb25bXSkgPT4ge1xuICBjb25zdCBwYXRocyA9IHBvbHlnb25cbiAgICA/IEFycmF5LmlzQXJyYXkocG9seWdvbilcbiAgICAgID8gcG9seWdvbi5mbGF0TWFwKHAgPT4gcC5nZXRQYXRoKCk/LmdldEFycmF5KCkgfHwgW10pXG4gICAgICA6IHBvbHlnb24uZ2V0UGF0aCgpPy5nZXRBcnJheSgpIHx8IFtdXG4gICAgOiBbXTtcbiAgcmV0dXJuIHBhdGhzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldi5leHRlbmQoY3VyciksIG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKSk7XG59O1xuIl19
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcy11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbWFwcy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQVcsR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUMxRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLE9BQU87UUFDTCxnQkFBZ0IsRUFBRTtZQUNoQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDeEQsWUFBWSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFO2FBQzdEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixTQUFTO0lBQ1QsV0FBVyxFQUFFLEdBQUc7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixXQUFXO0lBQ1gsYUFBYSxFQUFFLEdBQUc7SUFDbEIsWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyx3RkFBd0YsQ0FBQztBQUd2SCxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDbkQsTUFB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RyxDQUFDLE9BQXFELEVBQUUsRUFBRTtJQUNyRixNQUFNLEtBQUssR0FBRyxPQUFPO1FBQ25CLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN0QixDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDckQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDUCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBsb2NhdGlvblF1ZXJ5ID0gKGJvdW5kczogZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzLCBzZWFyY2hGaWVsZCA9ICdsb2NhdGlvbicpID0+IHtcbiAgY29uc3QgdG9wUmlnaHQgPSBib3VuZHMuZ2V0Tm9ydGhFYXN0KCk7XG4gIGNvbnN0IGJvdHRvbUxlZnQgPSBib3VuZHMuZ2V0U291dGhXZXN0KCk7XG4gIHJldHVybiB7XG4gICAgZ2VvX2JvdW5kaW5nX2JveDoge1xuICAgICAgW3NlYXJjaEZpZWxkXToge1xuICAgICAgICB0b3BfbGVmdDogeyBsYXQ6IHRvcFJpZ2h0LmxhdCgpLCBsb246IGJvdHRvbUxlZnQubG5nKCkgfSxcbiAgICAgICAgYm90dG9tX3JpZ2h0OiB7IGxhdDogYm90dG9tTGVmdC5sYXQoKSwgbG9uOiB0b3BSaWdodC5sbmcoKSB9LFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWxsQ29sb3IgPSAnIzE5Mzk1Nyc7XG5leHBvcnQgY29uc3Qgc3Ryb2tlQ29sb3IgPSAnIzBDMUIyOSc7XG5cbmV4cG9ydCBjb25zdCBmaWxsU3R5bGUgPSB7XG4gIGZpbGxDb2xvcixcbiAgZmlsbE9wYWNpdHk6IDAuNlxufTtcblxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlID0ge1xuICBzdHJva2VDb2xvcixcbiAgc3Ryb2tlT3BhY2l0eTogMC42LFxuICBzdHJva2VXZWlnaHQ6IDFcbn07XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyZXJJbWFnZSA9ICdodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9tYXJrZXJjbHVzdGVyZXIvbSc7XG5cblxuY29uc3QgZ2V0Q29vcmRpbmF0ZXNGb3JQZXJjZW50ID0gKHBlcmNlbnQ6IG51bWJlcikgPT4ge1xuICBjb25zdCB4ID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgKiBwZXJjZW50KTtcbiAgY29uc3QgeSA9IE1hdGguc2luKDIgKiBNYXRoLlBJICogcGVyY2VudCk7XG4gIHJldHVybiBbeCwgeV07XG59O1xuXG5pbnRlcmZhY2UgSU1hcmtlclBpZUNvbmZpZyB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgY29sb3I6IHN0cmluZztcbn1cblxuY29uc3QgcGllVXJsID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZTogbnVtYmVyKSA9PiB7XG4gIGxldCBjdW11bGF0aXZlUGVyY2VudCA9IDA7XG5cbiAgcmV0dXJuICdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudChgXG4gICAgPHN2ZyB3aWR0aD1cIiR7c2l6ZX1cIiBoZWlnaHQ9XCIke3NpemV9XCIgdmlld0JveD1cIi0xIC0xIDIgMlwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4ke1xuICAgIGNvbmZpZ3MubWFwKCh7IHBlcmNlbnQsIGNvbG9yIH0pID0+IHtcbiAgICAgIGNvbnN0IFtzdGFydFgsIHN0YXJ0WV0gPSBnZXRDb29yZGluYXRlc0ZvclBlcmNlbnQoY3VtdWxhdGl2ZVBlcmNlbnQpO1xuICAgICAgY3VtdWxhdGl2ZVBlcmNlbnQgKz0gcGVyY2VudDtcbiAgICAgIGNvbnN0IFtlbmRYLCBlbmRZXSA9IGdldENvb3JkaW5hdGVzRm9yUGVyY2VudChjdW11bGF0aXZlUGVyY2VudCk7XG4gICAgICBjb25zdCBsYXJnZUFyY0ZsYWcgPSBwZXJjZW50ID4gLjUgPyAxIDogMDtcbiAgICAgIGNvbnN0IHBhdGhEYXRhID0gW1xuICAgICAgICBgTSAke3N0YXJ0WH0gJHtzdGFydFl9YCwgLy8gTW92ZVxuICAgICAgICBgQSAxIDEgMCAke2xhcmdlQXJjRmxhZ30gMSAke2VuZFh9ICR7ZW5kWX1gLCAvLyBBcmNcbiAgICAgICAgYEwgMCAwYCwgLy8gTGluZVxuICAgICAgXS5qb2luKCcgJyk7XG4gICAgICByZXR1cm4gYDxwYXRoIGZpbGw9XCIke2NvbG9yfVwiIGQ9XCIke3BhdGhEYXRhfVwiPjwvcGF0aD5gO1xuICAgIH0pLmpvaW4oJycpfTwvc3ZnPlxuICBgLnRyaW0oKSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyUGllID0gKGNvbmZpZ3M6IElNYXJrZXJQaWVDb25maWdbXSwgc2l6ZSA9IDcpID0+ICh7XG4gIGFuY2hvcjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KHNpemUgLyAyLCBzaXplIC8gMiksXG4gIHVybDogcGllVXJsKGNvbmZpZ3MsIHNpemUpLFxuICBsYWJlbE9yaWdpbjogbmV3IGdvb2dsZS5tYXBzLlBvaW50KDAsIC0yKVxufSk7XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJJY29uID0gKHNjYWxlID0gNyk6IGdvb2dsZS5tYXBzLlN5bWJvbCA9PiAoe1xuICBwYXRoOiBnb29nbGUubWFwcy5TeW1ib2xQYXRoLkNJUkNMRSxcbiAgLi4uZmlsbFN0eWxlLFxuICAuLi5zdHJva2VTdHlsZSxcbiAgc2NhbGUsXG4gIGxhYmVsT3JpZ2luOiBuZXcgZ29vZ2xlLm1hcHMuUG9pbnQoMCwgLTIpXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hcmtlciA9IChcbiAgcG9zaXRpb24/OiBnb29nbGUubWFwcy5MYXRMbmcgfCBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsLCB0ZXh0ID0gJycsIGNvbG9yID0gZmlsbENvbG9yLCBzY2FsZT86IG51bWJlclxuKSA9PiAoXG4gIHBvc2l0aW9uICYmIHBvc2l0aW9uLmxhdCAmJiBwb3NpdGlvbi5sbmcgPyBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcbiAgICBwb3NpdGlvbixcbiAgICBsYWJlbDogeyBjb2xvciwgdGV4dCB9LFxuICAgIGljb246IG1hcmtlckljb24oc2NhbGUpXG4gIH0pIDogdW5kZWZpbmVkXG4pIGFzIGdvb2dsZS5tYXBzLk1hcmtlcjtcblxuaW50ZXJmYWNlIElQb2x5Z29uIHtcbiAgdHlwZTogJ1BvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG5pbnRlcmZhY2UgSU11bHRpUG9seWdvbiB7XG4gIHR5cGU6ICdNdWx0aVBvbHlnb24nO1xuICBjb29yZGluYXRlczogbnVtYmVyW11bXVtdO1xufVxuXG50eXBlIGdlb21ldHJ5ID0gSVBvbHlnb24gfCBJTXVsdGlQb2x5Z29uO1xuXG5leHBvcnQgaW50ZXJmYWNlIElGZWF0dXJlIHtcbiAgdHlwZTogJ0ZlYXR1cmUnO1xuICBwcm9wZXJ0aWVzOiBhbnk7XG4gIGdlb21ldHJ5OiBnZW9tZXRyeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmVhdHVyZUNvbGxlY3Rpb24ge1xuICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nO1xuICBmZWF0dXJlczogSUZlYXR1cmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR2VvbWV0cnlDb2xsZWN0aW9uIHtcbiAgdHlwZTogJ0dlb21ldHJ5Q29sbGVjdGlvbic7XG4gIGdlb21ldHJpZXM6IGdlb21ldHJ5W107XG59XG5cbnR5cGUgZmVhdHVyZSA9IElGZWF0dXJlIHwgSUZlYXR1cmVDb2xsZWN0aW9uIHwgSUdlb21ldHJ5Q29sbGVjdGlvbiB8IElQb2x5Z29uIHwgSU11bHRpUG9seWdvbjtcblxuY29uc3QgZmVhdHVyZTogSUZlYXR1cmUgPSBPYmplY3QuZnJlZXplKHtcbiAgdHlwZTogJ0ZlYXR1cmUnLFxuICBwcm9wZXJ0aWVzOiB7fSxcbiAgZ2VvbWV0cnk6ICh7XG4gICAgdHlwZTogJ1BvbHlnb24nLFxuICAgIGNvb3JkaW5hdGVzOiBbXVxuICB9IGFzIGdlb21ldHJ5KVxufSk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RmVhdHVyZSA9ICgpOiBJRmVhdHVyZSA9PiAoeyAuLi5mZWF0dXJlIH0pO1xuXG5leHBvcnQgY29uc3QgcG9pbnRUb0Nvb3JkaW5hdGVzID0gKHBvaW50OiBnb29nbGUubWFwcy5MYXRMbmcpID0+IFtwb2ludC5sbmcoKSwgcG9pbnQubGF0KCldO1xuXG5leHBvcnQgY29uc3QgY29vcmRpbmF0ZXNUb1BvaW50ID0gKHZhbHVlczogKG51bWJlciB8IG51bWJlcltdKVtdKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWVzWzBdKVxuICAgICAgPyB2YWx1ZXMubWFwKCh2OiBhbnkpID0+IGNvb3JkaW5hdGVzVG9Qb2ludCh2KSlcbiAgICAgIDogKHZhbHVlcyBhcyBudW1iZXJbXSk/LnNvbWUoaXNOYU4pXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IG5ldyBnb29nbGUubWFwcy5MYXRMbmcoKHZhbHVlcyBhcyBudW1iZXJbXSlbMV0sICh2YWx1ZXMgYXMgbnVtYmVyW10pWzBdKTtcbiAgfVxuICBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9Db29yZGluYXRlcyA9IChwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uKSA9PiBwb2x5Z29uLmdldFBhdGhzKCkuZ2V0QXJyYXkoKS5tYXAocGF0aCA9PiB7XG4gIGNvbnN0IHBvaW50cyA9IHBhdGguZ2V0QXJyYXkoKTtcbiAgcmV0dXJuIFtcbiAgICAuLi5wb2ludHMubWFwKHBvaW50VG9Db29yZGluYXRlcyksXG4gICAgcG9pbnRUb0Nvb3JkaW5hdGVzKHBvaW50c1swXSlcbiAgXTtcbn0pWzBdO1xuXG5jb25zdCBjb29yZGluYXRlc1RvUG9seWdvbiA9IChjb29yZGluYXRlczogbnVtYmVyW11bXSwgY29sb3IgPSBzdHJva2VDb2xvcikgPT4gbmV3IGdvb2dsZS5tYXBzLlBvbHlnb24oe1xuICBwYXRoczogY29vcmRpbmF0ZXMubWFwKGNvb3JkaW5hdGVzVG9Qb2ludCkuZmlsdGVyKEJvb2xlYW4pLFxuICAuLi5zdHJva2VTdHlsZSxcbiAgc3Ryb2tlQ29sb3I6IGNvbG9yXG59KTtcblxuY29uc3QgZ2V0Q29vcmRpbmF0ZXMgPSAoZmVhdDogZmVhdHVyZSkgPT5cbiAgZmVhdC50eXBlID09PSAnUG9seWdvbicgfHwgZmVhdC50eXBlID09PSAnTXVsdGlQb2x5Z29uJ1xuICA/IGZlYXQuY29vcmRpbmF0ZXNcbiAgOiBmZWF0LnR5cGUgPT09ICdGZWF0dXJlJ1xuICA/IGZlYXQuZ2VvbWV0cnk/LmNvb3JkaW5hdGVzXG4gIDogW107XG5cbmV4cG9ydCBjb25zdCBhZGRQb2x5Z29uVG9GZWF0dXJlID0gKGZlYXQ6IGZlYXR1cmUsIHBvbHlnb246IGdvb2dsZS5tYXBzLlBvbHlnb24pID0+XG4gIGZlYXQudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJ1xuICA/IGZlYXQuZmVhdHVyZXMucHVzaChhZGRQb2x5Z29uVG9GZWF0dXJlKGRlZmF1bHRGZWF0dXJlKCksIHBvbHlnb24pKVxuICA6IGZlYXQudHlwZSA9PT0gJ0dlb21ldHJ5Q29sbGVjdGlvbidcbiAgPyBmZWF0Lmdlb21ldHJpZXMubWFwKGdlb21ldHJ5ID0+IChnZW9tZXRyeT8uY29vcmRpbmF0ZXMgfHwgW10pLnB1c2gocG9seWdvblRvQ29vcmRpbmF0ZXMocG9seWdvbikpKVxuICA6IChnZXRDb29yZGluYXRlcyhmZWF0KSB8fCBbXSkucHVzaChwb2x5Z29uVG9Db29yZGluYXRlcyhwb2x5Z29uKSlcbiAgO1xuXG5leHBvcnQgY29uc3QgcG9seWdvbnNGcm9tRmVhdHVyZSA9IChmZWF0OiBmZWF0dXJlLCBjb2xvcj86IHN0cmluZyk6IGdvb2dsZS5tYXBzLlBvbHlnb25bXSA9PlxuICBmZWF0LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbidcbiAgPyBmZWF0LmZlYXR1cmVzLmZsYXRNYXAodmFsdWVzID0+IHBvbHlnb25zRnJvbUZlYXR1cmUodmFsdWVzLCBjb2xvcikpXG4gIDogZmVhdC50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xuICA/IGZlYXQuZ2VvbWV0cmllcz8uZmxhdE1hcChnZW9tZXRyeSA9PiAoZ2VvbWV0cnkuY29vcmRpbmF0ZXMgfHwgW10pLm1hcCh2YWx1ZXMgPT4gY29vcmRpbmF0ZXNUb1BvbHlnb24odmFsdWVzLCBjb2xvcikpKVxuICA6IChnZXRDb29yZGluYXRlcyhmZWF0KSB8fCBbXSkubWFwKHZhbHVlcyA9PiBjb29yZGluYXRlc1RvUG9seWdvbih2YWx1ZXMsIGNvbG9yKSlcbiAgO1xuXG5leHBvcnQgY29uc3QgcG9seWdvbkJvdW5kcyA9IChwb2x5Z29uPzogZ29vZ2xlLm1hcHMuUG9seWdvbiB8IGdvb2dsZS5tYXBzLlBvbHlnb25bXSkgPT4ge1xuICBjb25zdCBwYXRocyA9IHBvbHlnb25cbiAgICA/IEFycmF5LmlzQXJyYXkocG9seWdvbilcbiAgICAgID8gcG9seWdvbi5mbGF0TWFwKHAgPT4gcC5nZXRQYXRoKCk/LmdldEFycmF5KCkgfHwgW10pXG4gICAgICA6IHBvbHlnb24uZ2V0UGF0aCgpPy5nZXRBcnJheSgpIHx8IFtdXG4gICAgOiBbXTtcbiAgcmV0dXJuIHBhdGhzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldi5leHRlbmQoY3VyciksIG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKSk7XG59O1xuIl19
|
|
@@ -2,11 +2,12 @@ import { Pipe } from '@angular/core';
|
|
|
2
2
|
import { isUndefined, isNumber, toPrecision, toComma } from '@hestia-earth/utils';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
const parsePrecision = (value, precision) => toPrecision(parseFloat(`${value}`), parseInt(`${precision}`, 10));
|
|
5
|
+
export const transform = (value, precision = 3, enableComma = true) => typeof value !== 'boolean' && !isUndefined(value) && isNumber(value)
|
|
6
|
+
? `${(enableComma ? toComma : v => v)(parsePrecision(value, precision))}`.replace(/\.00$/, '')
|
|
7
|
+
: value;
|
|
5
8
|
export class PrecisionPipe {
|
|
6
9
|
transform(value, precision = 3, enableComma = true) {
|
|
7
|
-
return
|
|
8
|
-
? `${(enableComma ? toComma : v => v)(parsePrecision(value, precision))}`.replace(/\.00$/, '')
|
|
9
|
-
: value;
|
|
10
|
+
return transform(value, precision, enableComma);
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
PrecisionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: PrecisionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -17,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
17
18
|
name: 'precision'
|
|
18
19
|
}]
|
|
19
20
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlY2lzaW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL3ByZWNpc2lvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFbEYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFNBQXdCLEVBQUUsRUFBRSxDQUN4RSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQTRCLEVBQUUsWUFBMkIsQ0FBQyxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUMxRyxPQUFPLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQztJQUNsRSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQzlGLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFLWixNQUFNLE9BQU8sYUFBYTtJQUN4QixTQUFTLENBQUMsS0FBNEIsRUFBRSxZQUEyQixDQUFDLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDdEYsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDOzswR0FIVSxhQUFhO3dHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFIekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1VuZGVmaW5lZCwgaXNOdW1iZXIsIHRvUHJlY2lzaW9uLCB0b0NvbW1hIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5cbmNvbnN0IHBhcnNlUHJlY2lzaW9uID0gKHZhbHVlOiBzdHJpbmd8bnVtYmVyLCBwcmVjaXNpb246IHN0cmluZ3xudW1iZXIpID0+XG4gIHRvUHJlY2lzaW9uKHBhcnNlRmxvYXQoYCR7dmFsdWV9YCksIHBhcnNlSW50KGAke3ByZWNpc2lvbn1gLCAxMCkpO1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtID0gKHZhbHVlOiBzdHJpbmd8bnVtYmVyfGJvb2xlYW4sIHByZWNpc2lvbjogc3RyaW5nfG51bWJlciA9IDMsIGVuYWJsZUNvbW1hID0gdHJ1ZSkgPT5cbiAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicgJiYgIWlzVW5kZWZpbmVkKHZhbHVlKSAmJiBpc051bWJlcih2YWx1ZSlcbiAgICA/IGAkeyhlbmFibGVDb21tYSA/IHRvQ29tbWEgOiB2ID0+IHYpKHBhcnNlUHJlY2lzaW9uKHZhbHVlLCBwcmVjaXNpb24pKX1gLnJlcGxhY2UoL1xcLjAwJC8sICcnKVxuICAgIDogdmFsdWU7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ByZWNpc2lvbidcbn0pXG5leHBvcnQgY2xhc3MgUHJlY2lzaW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbiwgcHJlY2lzaW9uOiBzdHJpbmd8bnVtYmVyID0gMywgZW5hYmxlQ29tbWEgPSB0cnVlKSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybSh2YWx1ZSwgcHJlY2lzaW9uLCBlbmFibGVDb21tYSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -220,6 +220,8 @@ const customErrorMessage = {
|
|
|
220
220
|
Please add the Product in the Cycle or remove the link with the Cycle.`,
|
|
221
221
|
'multiple ImpactAssessment are associated with the same Product of the same Cycle': () => `Only 1 Impact Assessment can be related to this Product.
|
|
222
222
|
Please make sure the product is correct or the cycle.id you are referring to is correct.`,
|
|
223
|
+
'multiple ImpactAssessment are associated with this Product': () => `Only 1 Impact Assessment can be related to this Product.
|
|
224
|
+
Please make sure the product of the related ImpactAssessments are correct or the cycle.id is correct.`,
|
|
223
225
|
'must be less than or equal to land occupation': () => `Land transformation should be less than or equal to land occupation
|
|
224
226
|
(land transformation is the amount of land converted between some date in the past and the current year,
|
|
225
227
|
divided by an amortization period, so it should always be less than land occupation by definition).`,
|
|
@@ -317,4 +319,4 @@ export const filterError = (error) => [
|
|
|
317
319
|
isFailingKeywordError
|
|
318
320
|
].every(func => !func(error));
|
|
319
321
|
export const missingNodeErrors = (errors) => errors.filter(({ keyword, params }) => keyword === 'required' && (params?.missingProperty === '@type' || params?.missingProperty === '@id'));
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBOEJoRCxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDN0MsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEcsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3BDLEtBQUssRUFBRSxTQUFTLENBQUMsVUFB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RUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksZ0JBQWdCLElBQUksTUFBTSxDQUFDO0FBRXZHLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDO0lBQ3RELHFCQUFxQjtDQUN0QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUEwQixFQUFFLEVBQUUsQ0FDOUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDcEMsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRSxlQUFlLEtBQUssT0FBTyxJQUFJLE1BQU0sRUFBRSxlQUFlLEtBQUssS0FBSyxDQUFDLENBQ3JHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgeyBTY2hlbWFUeXBlLCBTaXRlU2l0ZVR5cGUsIFRlcm0sIFRlcm1UZXJtVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHRvUHJlY2lzaW9uLCBrZXlUb0xhYmVsLCB1bmlxdWUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHsgdGVybVR5cGVMYWJlbCB9IGZyb20gJy4uL3Rlcm1zL3Rlcm1zLm1vZGVsJztcbmltcG9ydCB7IHBhdGhUb0FwaURvY3NQYXRoIH0gZnJvbSAnLi4vZW5naW5lL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IGJhc2VVcmwsIGNvZGUsIGNvbnRhY3RVc0xpbmssIGV4dGVybmFsTGluaywgZ2xvc3NhcnlMaW5rLCBzY2hlbWFMaW5rIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4uL2NvbW1vbi9wbHVyYWxpemUnO1xuXG4vLyBUT0RPOiBhZGQgbW9yZSB2YWxpZGF0aW9uIGtleXdvcmQgYW5kIHBhcmFtc1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yTGV2ZWwgPSAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yUGFyYW0gPSAnbWlzc2luZ1Byb3BlcnR5JyB8ICd0eXBlJyB8ICd0ZXJtJyB8ICdtb2RlbCcgfCAncHJvZHVjdCcgfCAncmFuZ2UnIHwgJ25vZGUnIHxcbiAgJ2FsbG93ZWRWYWx1ZXMnIHwgJ2FsbG93ZWRWYWx1ZScgfCAnYWRkaXRpb25hbFByb3BlcnR5JyB8ICdleHBlY3RlZCcgfCAnZGVmYXVsdCcgfCAnY3VycmVudCcgfCAncGVyY2VudGFnZScgfCAna2V5cycgfFxuICAndGhyZXNob2xkJyB8ICdvdXRsaWVycycgfCAnY291bnRyeScgfCAnbWluJyB8ICdtYXgnIHwgJ2RlZmF1bHRTb3VyY2UnIHwgJ3NvdXJjZScgfCAnZ3JvdXAnIHwgJ21lc3NhZ2UnIHwgJ2Rpc3RhbmNlJyB8XG4gICdzaXRlVHlwZScgfCAncHJvZHVjdHMnIHwgJ3VuaXRzJztcbmV4cG9ydCB0eXBlIHZhbGlkYXRpb25FcnJvcktleXdvcmQgPSAncmVxdWlyZWQnIHwgJ3R5cGUnIHwgJ2lmJyB8ICd0aGVuJztcblxuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdGlvbkVycm9yIHtcbiAgaW5kZXg/OiBudW1iZXI7XG4gIG5vZGVJbmRleD86IG51bWJlcjtcbiAgbGV2ZWw/OiB2YWxpZGF0aW9uRXJyb3JMZXZlbDtcbiAgZGF0YVBhdGg/OiBzdHJpbmc7XG4gIHNjaGVtYVBhdGg/OiBzdHJpbmc7XG4gIGtleXdvcmQ/OiB2YWxpZGF0aW9uRXJyb3JLZXl3b3JkO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhcmFtcz86IHsgW2tleSBpbiB2YWxpZGF0aW9uRXJyb3JQYXJhbV0/OiBhbnkgfTtcbiAgbWFwRXJyb3I/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElWYWxpZGF0aW9uRXJyb3JXaXRoSW5kZXgge1xuICBlcnJvcjogSVZhbGlkYXRpb25FcnJvcltdO1xuICBpbmRleDogbnVtYmVyO1xuICBjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxudHlwZSBoYW5kbGVFcnJvckZ1bmMgPSAoZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IsIGVycm9yQ291bnQ/OiBudW1iZXIsIGFsbEVycm9ycz86IElWYWxpZGF0aW9uRXJyb3JbXSkgPT4gc3RyaW5nO1xuXG5jb25zdCBtYXBFcnJvck1lc3NhZ2UgPSAnZG9lcyBub3QgY29udGFpbiBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0YVBhdGggPSAoZGF0YVBhdGggPSAnJykgPT4ge1xuICBjb25zdCBbXywgLi4ucGF0aHNdID0gZGF0YVBhdGgucmVwbGFjZSgvW1xcW1xcXVxcJ1xcJ1xcXCJcXFwiXS9nLCAnJykucmVwbGFjZSgvKFxcdykoXFxAKS9nLCAnJDEuQCcpLnNwbGl0KCcuJyk7XG4gIHJldHVybiBwYXRocy5tYXAocGF0aCA9PiAoe1xuICAgIHBhdGg6IHBhdGgucmVwbGFjZSgvKFxcZCspL2csICdbJDFdJyksXG4gICAgbGFiZWw6IHBsdXJhbGl6ZShrZXlUb0xhYmVsKHBhdGgucmVwbGFjZSgvW1xcZFxcQF0rL2csICcnKSksIDEpXG4gIH0pKTtcbn07XG5cbmNvbnN0IGdsb3NzYXJ5VHlwZUxpbmsgPSAodHlwZTogVGVybVRlcm1UeXBlLCB0ZXh0ID0gdGVybVR5cGVMYWJlbCh0eXBlKSkgPT4gZXh0ZXJuYWxMaW5rKGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/dGVybVR5cGU9JHt0eXBlfWAsIHRleHQpO1xuY29uc3QgdGVybUxpbmsgPSAoeyBpZCwgbmFtZSB9OiBQYXJ0aWFsPFRlcm0+KSA9PiBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS90ZXJtLyR7aWR9YCwgbmFtZSB8fCBpZCk7XG5jb25zdCBkYXRlRm9ybWF0TWVzc2FnZSA9XG4gIGBzaG91bGQgZm9sbG93IHRoZSBJU08gODYwMSBkYXRlIGZvcm1hdCwgZS5nLiAke2NvZGUoMjAwMCl9LCBvciAke2NvZGUoJzIwMDAtMTInKX0sIG9yICR7Y29kZSgnMjAwMC0xMi0zMCcpfWA7XG5jb25zdCBtb2RlbExpbmsgPSAodGVybTogVGVybSwgbW9kZWw6IFRlcm0pID0+IGBcbiAgPGEgaHJlZj1cIiR7cGF0aFRvQXBpRG9jc1BhdGgobW9kZWxbJ0BpZCddLCB0ZXJtWydAaWQnXSl9XCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJwci0xXCI+JHttb2RlbC5uYW1lfTwvc3Bhbj5cbiAgICA8c3Bhbj4oVmlldyBEb2NzKTwvc3Bhbj5cbiAgPC9hPlxuYDtcbmNvbnN0IHRocmVzaG9sZCA9ICh2YWx1ZTogbnVtYmVyKSA9PiBjb2RlKGAke3ZhbHVlICogMTAwfSVgKTtcblxuY29uc3Qgbm9UaWxsYWdlOiBQYXJ0aWFsPFRlcm0+ID0geyBpZDogJ25vVGlsbGFnZScsIG5hbWU6ICdObyB0aWxsYWdlJyB9O1xuY29uc3QgcGFzdHVyZUdyYXNzOiBQYXJ0aWFsPFRlcm0+ID0geyBpZDogJ3Bhc3R1cmVHcmFzcycsIG5hbWU6ICdQYXN0dXJlIGdyYXNzJyB9O1xuXG5jb25zdCBpZE5vdEZvdW5kRGVmYXVsdE1lc3NhZ2UgPSBgXG4gIElmIHlvdSBhcmUgdXNpbmcgdGhlICR7Y29kZSgnbmFtZScpfSBvZiB0aGUgVGVybSwgbWFrZSBzdXJlIHRvIHVzZSAke2NvZGUoJ3Rlcm0ubmFtZScpfSBjb2x1bW47XG4gIGlmIHlvdSBhcmUgdXNpbmcgdGhlICR7Y29kZSgnQGlkJyl9IG9mIHRoZSBUZXJtLCB1c2UgdGhlICR7Y29kZSgndGVybS5AaWQnKX0gY29sdW1uIGluc3RlYWQuXG5gLnRyaW0oKTtcblxuZXhwb3J0IGNvbnN0IGlzTWlncmF0aW9uRXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gcGFyYW1zPy5jdXJyZW50ICYmICgnZXhwZWN0ZWQnIGluIHBhcmFtcyk7XG5cbmV4cG9ydCBjb25zdCBtaWdyYXRpb25FcnJvck1lc3NhZ2UgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAgcGFyYW1zPy5leHBlY3RlZFxuICAgID8gYFRoZSBUZXJtICR7Y29kZShwYXJhbXMuY3VycmVudCl9IHdhcyB1cGRhdGVkLCBwbGVhc2UgdXNlIHRoaXMgVGVybSBpbnN0ZWFkOiAke2NvZGUocGFyYW1zLmV4cGVjdGVkKX0uYFxuICAgIDogYFRoZSBUZXJtICR7Y29kZShwYXJhbXMuY3VycmVudCl9IHdhcyBkZWxldGVkLiBQbGVhc2Ugc2VhcmNoIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3NhcnknKX0gZm9yIGEgbmV3IFRlcm0uYDtcblxuY29uc3QgaWROb3RGb3VuZEVycm9yOiBoYW5kbGVFcnJvckZ1bmMgPSAoX2Vycm9yLCBfZXJyb3JDb3VudCwgYWxsRXJyb3JzKSA9PiB7XG4gIGNvbnN0IG1pZ3JhdGlvbkVycm9ycyA9IGFsbEVycm9ycy5maWx0ZXIoaXNNaWdyYXRpb25FcnJvcik7XG4gIGNvbnN0IG5vTWlncmF0aW9uRXJyb3JzID0gYWxsRXJyb3JzLmZpbHRlcihlcnJvciA9PiAhaXNNaWdyYXRpb25FcnJvcihlcnJvcikpO1xuICByZXR1cm4gYFxuICAgIDxwPkRvZXMgbm90IGV4aXN0IGluIEhlc3RpYS48L3A+XG4gICAgJHtub01pZ3JhdGlvbkVycm9ycy5sZW5ndGggPyBgPHA+JHtpZE5vdEZvdW5kRGVmYXVsdE1lc3NhZ2V9PC9wPmAgOiAnJ31cbiAgICAke3VuaXF1ZShtaWdyYXRpb25FcnJvcnMubWFwKG1pZ3JhdGlvbkVycm9yTWVzc2FnZSkpLmpvaW4oJzwvYnI+Jyl9XG4gIGA7XG59O1xuXG4vLyBzZXQgbWVzc2FnZSBhcyBlbXB0eSB0byBub3QgZGlzcGxheSBpdFxuY29uc3QgY3VzdG9tRXJyb3JNZXNzYWdlOiB7XG4gIFtrZXk6IHN0cmluZ106IGhhbmRsZUVycm9yRnVuYztcbn0gPSB7XG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdAaWRcXCcnOiBpZE5vdEZvdW5kRXJyb3IsXG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdAdHlwZVxcJyc6ICgpID0+ICcnLFxuICAnc2hvdWxkIGhhdmUgcmVxdWlyZWQgcHJvcGVydHkgXFwnaWRcXCcnOiBpZE5vdEZvdW5kRXJyb3IsXG4gICdzaG91bGQgbWF0Y2ggZXhhY3RseSBvbmUgc2NoZW1hIGluIG9uZU9mJzogKCkgPT4gJycsXG4gICdzaG91bGQgbWF0Y2ggc29tZSBzY2hlbWEgaW4gYW55T2YnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBtYXRjaCBcInRoZW5cIiBzY2hlbWEnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBOT1QgaGF2ZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgIGBUaGUgZm9sbG93aW5nIGZpZWxkIGRvZXMgbm90IGV4aXN0OiAke3BhcmFtcz8uYWRkaXRpb25hbFByb3BlcnR5fSBvciBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNhc2UuYCA6XG4gICAgICBgU2hvdWxkIG5vdCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllcy5gLFxuICAnc2hvdWxkIE5PVCBiZSB2YWxpZCc6ICgpID0+ICdTaG91bGQgbm90IGJlIHVzZWQgaW4gdGhpcyBjYXNlLicsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5cXFxcZHsxM30kXCInOiAoKSA9PiBgc2hvdWxkIGJlIGNvbXBvc2VkIG9mIDEzIG51bWJlcnNgLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeWzAtOV17NH0oLVswLTldezJ9KT8oLVswLTldezJ9KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXihbMC05XXs0fXwtKSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/KFtUXVswLTJdWzAtOV1cXDpbMC01XVswLTldXFw6WzAtNV1bMC05XSgoXFwrfFxcLSlbMC0xXVswLTldOlswLTVdWzAtOV0pPyk/JFwiJzogKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdzaG91bGQgYmUgbGlua2VkIHRvIGFuIGV4aXN0aW5nIG5vZGUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgWW91ciB1cGxvYWQgZG9lcyBub3QgY29udGFpbiB0aGUgJHtwYXJhbXM/Lm5vZGU/LnR5cGV9IHdpdGggJHtjb2RlKGBpZD0ke3BhcmFtcz8ubm9kZT8uaWR9YCl9LlxuICAgIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGxpbmsgdG8gYW4gZXhpc3RpbmcgJHtwYXJhbXM/Lm5vZGU/LnR5cGV9IG9uIHRoZSBIZXN0aWEgcGxhdGZvcm0sIHlvdSBtdXN0IHVzZSAke2NvZGUoYEBpZD0ke3BhcmFtcz8ubm9kZT8uaWR9YCl9IGluc3RlYWQuXG4gICAgT3RoZXJ3aXNlIHlvdSBtdXN0IGluY2x1ZGUgYSBmdWxsICR7cGFyYW1zPy5ub2RlPy50eXBlfSB3aXRoIGlkICR7Y29kZShwYXJhbXM/Lm5vZGU/LmlkKX0uYCxcbiAgJ211c3QgYmUgd2l0aGluIHRoZSBjb3VudHJ5JzogKCkgPT4gYFRoZSBjb3VudHJ5IHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlZ2lvbiBwcm92aWRlZC4gUGxlYXNlIGNoZWNrXG4gIHRoZSBjb3VudHJ5IGZvciBlcnJvcnMgb3IgdGhlIHJlZ2lvbiBmb3IgZXJyb3JzLCBhbmQgcmVmZXJlbmNlIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCxcbiAgW21hcEVycm9yTWVzc2FnZV06ICh7IGRhdGFQYXRoLCBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICA/IGBUaGUgbG9uZ2l0dWRlIGFuZCBsYXRpdHVkZSBwcm92aWRlZCBhcmUke1xuICAgICAgICBwYXJhbXM/LmRpc3RhbmNlID8gYCAke3BhcmFtcz8uZGlzdGFuY2V9a21zYDogJydcbiAgICAgIH0gb3V0c2lkZSBvZiB0aGUgJHtkYXRhUGF0aC5zdWJzdHJpbmcoMSl9IHByb3ZpZGVkLlxuICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGZvciBlcnJvcnMgb3IgY2hlY2sgaWYgdGhlIHdyb25nICR7ZGF0YVBhdGguc3Vic3RyaW5nKDEpfSBmcm9tIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnJlZ2lvbiwgJ0dsb3NzYXJ5Jyl9IHdhcyB1c2VkLlxuICAgICAgJHtwYXJhbXM/LmV4cGVjdGVkID8gYEhpbnQ6IHRoZSBjb29yZGluYXRlcyBhcHBlYXIgdG8gYmUgbG9jYXRlZCBpbiB0aGUgZm9sbG93aW5nICR7ZGF0YVBhdGguc3Vic3RyaW5nKDEpfTogJHt0ZXJtTGluayh7IGlkOiAncGFyYW1zLmV4cGVjdGVkJyB9KX1gIDogJyd9YFxuICAgICAgOiBgVGhlIHJlZ2lvbiBwcm92aWRlZCBkb2VzIG5vdCBjb250YWluIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHByb3ZpZGVkLlxuICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIGZvciBlcnJvcnMgb3IgdGhlIHJlZ2lvbiBmb3IgZXJyb3IsIGFuZCByZWZlcmVuY2UgdGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUucmVnaW9uLCAnR2xvc3Nhcnkgb2YgVGVybXMnKX0uYCxcbiAgJ3N1bSBub3QgZXF1YWwgdG8gMTAwJSBmb3Igc2FuZENvbnRlbnQsIHNpbHRDb250ZW50LCBjbGF5Q29udGVudCc6XG4gICAgKCkgPT4gYFRoZSBzdW0gb2YgU2FuZCwgU2lsdCwgYW5kIENsYXkgY29udGVudCBzaG91bGQgZXF1YWwgMTAwJSBmb3IgZWFjaCBzb2lsIGRlcHRoIGludGVydmFsLmAsXG4gICdpcyBvdXRzaWRlIHRoZSBhbGxvd2VkIHJhbmdlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxXG4gICAgICAgID8gcGFyYW1zPy50ZXJtXG4gICAgICAgICAgICA/IGBUaGUgdmFsdWUgZm9yICR7Y29kZShwYXJhbXM/LnRlcm1bJ0BpZCddIHx8IHBhcmFtcz8udGVybS5uYW1lKX0gaXMgb3V0c2lkZSB0aGUgcmFuZ2UgZXN0YWJsaXNoZWQgZm9yIHRoZSBzb2lsIHRleHR1cmUgeW91IHByb3ZpZGVkLlxuICAgICAgICAgICAgRm9yIHRoaXMgc29pbCB0ZXh0dXJlLCB0aGUgbWF4aW11bSAke2NvZGUocGFyYW1zPy50ZXJtWydAaWQnXSB8fCBwYXJhbXM/LnRlcm0ubmFtZSl9IGlzICR7cGFyYW1zPy5yYW5nZT8ubWF4fSBhbmQgdGhlIG1pbmltdW0gaXMgJHtwYXJhbXM/LnJhbmdlPy5taW59LmBcbiAgICAgICAgICAgIDogYERvZXMgbm90IG1hdGNoIHRoZSBwb3NzaWJsZSByYW5nZXMgb2Ygc2FuZCwgc2lsdCBhbmQgY2xheSBjb250ZW50LmBcbiAgICAgICAgOiBgRWFjaCBzb2lsIHRleHR1cmUgaGFzIGEgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZSBmb3Igc2FuZCwgc2lsdCwgYW5kIGNsYXkgY29udGVudC5cbiAgICAgICAgQXQgbGVhc3Qgb25lIG1lYXN1cmVtZW50IG9mIHNhbmQsIHNpbHQsIG9yIGNsYXkgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIHRoZSBzcGVjaWZpZWQgc29pbCB0ZXh0dXJlLmBcbiAgICB9XG4gICAgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBgUGxlYXNlIGNoZWNrIHRoZSBtZWFzdXJlbWVudCwgaXRzIGRlcHRoIGludGVydmFscywgYW5kIHRoZSBkYXRlcyBvZiB0aGUgbWVhc3VyZW1lbnQgb3IgdXBkYXRlIHRoZSBzb2lsIHRleHR1cmUgaWYgbmVlZGVkLmBcbiAgICAgICAgOiBgUGxlYXNlIGNoZWNrIHlvdXIgbWVhc3VyZW1lbnRzLCB0aGVpciBkZXB0aCBpbnRlcnZhbHMsIGFuZCB0aGUgZGF0ZXMgb2YgdGhlIG1lYXN1cmVtZW50cyBvciB1cGRhdGUgdGhlIHNvaWwgdGV4dHVyZXMgaWYgbmVlZGVkLmBcbiAgICB9YCxcbiAgJ3Nob3VsZCBiZSBlcXVhbCB0byBvbmUgb2YgdGhlIGFsbG93ZWQgdmFsdWVzJzpcbiAgICAoeyBwYXJhbXMsIGRhdGFQYXRoIH0pID0+IHtcbiAgICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgICAgY29uc3QgdmFsdWVzID0gcGF0aHMubGVuZ3RoID49IDJcbiAgICAgICAgPyBwbHVyYWxpemUocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0ucGF0aCwgcGFyYW1zPy5hbGxvd2VkVmFsdWVzPy5sZW5ndGggfHwgMClcbiAgICAgICAgOiAndmFsdWVzJztcbiAgICAgIHJldHVybiBgT25seSB0aGUgJHtcbiAgICAgICAgcGF0aHMubGVuZ3RoID09PSAzID8gYCR7cGF0aHNbMV0ubGFiZWx9IHdpdGggdGhlIGAgOiAnJ1xuICAgICAgfWZvbGxvd2luZyAke3ZhbHVlc30gYXJlIHBlcm1pdHRlZCBmb3IgJHtwYXRoc1swXS5sYWJlbH06ICR7cGFyYW1zPy5hbGxvd2VkVmFsdWVzLm1hcChjb2RlKS5qb2luKCcsICcpfS5cbiAgICAgIFBsZWFzZSBlaXRoZXIgY2hhbmdlIHRoZSAke1xuICAgICAgICBwYXRocy5sZW5ndGggPj0gMiA/IHBhdGhzWzFdLmxhYmVsIDogcGF0aHNbMF0ubGFiZWxcbiAgICAgIH0geW91IGFyZSB1c2luZyBhbmQgZW5zdXJlIGl0IGhhcyBvbmUgb2YgdGhlICR7dmFsdWVzfSBsaXN0ZWQgYWJvdmUsXG4gICAgICBvciBmb2xsb3cgdGhlIHNjaGVtYSB0byBpZGVudGlmeSB3aGVyZSB0aGlzICR7XG4gICAgICAgIHBhdGhzLmxlbmd0aCA+PSAyID8gcGF0aHNbMV0ubGFiZWwgOiBwYXRoc1swXS5sYWJlbFxuICAgICAgfSBjYW4gYmUgYWRkZWQuYDtcbiAgICB9LFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIGNvbnN0YW50JzpcbiAgICAoeyBwYXJhbXMgfSkgPT4gYE11c3QgYmU6ICR7Y29kZShwYXJhbXM/LmFsbG93ZWRWYWx1ZSl9YCxcbiAgJ2lzIG5vdCBhbGxvd2VkIGZvciB0aGlzIGNoYXJhY3RlcmlzZWRJbmRpY2F0b3InOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtlcnJvckNvdW50ID09PSAxID9cbiAgICAgIGAke1xuICAgICAgICBwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubGVuZ3RoID9cbiAgICAgICAgICBgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIG9uZSBvZiB0aGVzZSBtZXRob2RzOiAke3BhcmFtcz8uYWxsb3dlZFZhbHVlcy5tYXAoY29kZSkuam9pbignLCAnKX1gIDpcbiAgICAgICAgICBgZG9lcyBub3QgY3VycmVudGx5IGhhdmUgYW55IG1ldGhvZCBhbGxvd2VkLiBQbGVhc2UgJHtjb250YWN0VXNMaW5rKCl9IHRvIGNoYW5nZSB0aGlzLmBcbiAgICAgIH0uYCA6XG4gICAgICBgU29tZSBUZXJtcyBhcmUgbm90IGFsbG93ZWQgd2l0aCB0aGUgbWV0aG9kIHlvdSBzZWxlY3RlZC5gfVxuICAgIFlvdSBjYW4gZmluZCB0aGUgbGlzdCBvZiBhbGxvd2VkIG1ldGhvZHMgZm9yIGVhY2ggVGVybSBieSBjbGlja2luZyBvbiB0aGVtLmAsXG4gICdzaG91bGQgY29udGFpbiBhIHZhbGlkIGl0ZW0nOiAoeyBkYXRhUGF0aCB9KSA9PiB7XG4gICAgY29uc3QgcGF0aHMgPSBwYXJzZURhdGFQYXRoKGRhdGFQYXRoISk7XG4gICAgcmV0dXJuIHBhdGhzLmxlbmd0aCA+PSAyXG4gICAgICA/IGBUaGUgJHtwYXRoc1twYXRocy5sZW5ndGggLSAxXS5wYXRofSByZWxhdGVkIHRvIHRoaXMgJHtwbHVyYWxpemUocGF0aHNbcGF0aHMubGVuZ3RoIC0gMl0ubGFiZWwsIDEpfSBhcmUgaW52YWxpZGBcbiAgICAgIDogYFRoZSAke3BhdGhzWzBdLnBhdGh9IGFyZSBpbnZhbGlkYDtcbiAgfSxcbiAgJ21heSBiZSBiZXR3ZWVuIDAgYW5kIDEwMCc6ICgpID0+ICdQZXJjZW50YWdlcyBzaG91bGQgYmUgYmV0d2VlbiAwIGFuZCAxMDAsIG5vdCAwIGFuZCAxLiBUaGlzIG1heSBiZSBhbiBlcnJvci4nLFxuICAnbWF5IG5vdCBhbGwgYmUgc2V0IHRvIGZhbHNlJzogKCkgPT5cbiAgICBgRXZlcnkgdmFsdWUgaW4gdGhlIGRhdGEgY29tcGxldGVuZXNzIGFzc2Vzc21lbnQgaXMgJHtjb2RlKGZhbHNlKX0uIFlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZmlsbCBpdCBpbi5cbiAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBmaWxsIGl0IGluLCBwbGVhc2Ugc2VlIHRoZSAke3NjaGVtYUxpbmsoJ0N5Y2xlI2NvbXBsZXRlbmVzcycsICdzY2hlbWEnKX0uYCxcbiAgJ21heSBub3QgYmUgZW1wdHknOiAoKSA9PiAnaWYgdGhpcyB2YWx1ZSBzaWduaWZpZXMgbm8gZGF0YSwgSGVzdGlhIG9ubHkgYWNjZXB0cyBcIi1cIiBvciBlbXB0eSBmb3Igbm8gZGF0YScsXG4gICdtYXkgbm90IGJlIDAnOiAoeyBkYXRhUGF0aCB9LCBlcnJvckNvdW50KSA9PiB7XG4gICAgY29uc3QgcGF0aHMgPSBwYXJzZURhdGFQYXRoKGRhdGFQYXRoISk7XG4gICAgcmV0dXJuIGBBZGRpbmcgYSB2YWx1ZSAke2Vycm9yQ291bnQgPT09IDEgPyBgIHRvIGV2ZXJ5ICR7cGF0aHNbMF0ubGFiZWx9IGAgOiAnICd9IGlzIGhpZ2hseSByZWNvbW1lbmRlZFxuICAgICAgYXMgd2l0aG91dCB0aGlzIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjYWxjdWxhdGUgdGhlIEltcGFjdCBBc3Nlc3NtZW50LlxuICAgICAgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB3ZSByZWNvbW1lbmQgc2V0dGluZyB2YWx1ZSB0byAwLmA7XG4gIH0sXG4gICd0aGUgc3VtIG9mIGFib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgYW5kIGJlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyc6ICgpID0+XG4gICAgYEZvciBzaXRlcyBvZiB0eXBlICR7Y29kZShTaXRlU2l0ZVR5cGUuY3JvcGxhbmQpfSBvciAke2NvZGUoU2l0ZVNpdGVUeXBlWydwZXJtYW5lbnQgcGFzdHVyZSddKX0sXG4gICAgaWYgZGF0YSBjb21wbGV0ZW5lc3MgaXMgbWFya2VkICR7Y29kZSh0cnVlKX0gZm9yIGNyb3AgcmVzaWR1ZSxcbiAgICB0aGUgc3VtIG9mIHRoZSBBYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIHRlcm1zIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVybyxcbiAgICBhbmQgQmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHplcm8uYCxcbiAgJ2xvbmdGYWxsb3dQZXJpb2QgbXVzdCBiZSBsb3dlciB0aGFuIDUgeWVhcnMnOiAoKSA9PlxuICAgIGBZb3VyIGxvbmdGYWxsb3dQZXJpb2QgaXMgZ3JlYXRlciB0aGFuIGZpdmUgeWVhcnMuXG4gICAgRmFsbG93IGlzIGRlZmluZWQgYnkgRkFPU1RBVCBhcyBsYW5kIGxlZnQgdW5jdWx0aXZhdGVkIGZvciBiZXR3ZWVuIDEgYW5kIDUgeWVhcnMsXG4gICAgYW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB1c2VkIGZvciBIZXN0aWEgYWxzby5gLFxuICAnc2hvdWxkIGJlIHdpdGhpbiBwZXJjZW50YWdlIG9mIGRlZmF1bHQgdmFsdWUnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgIGBUaGlzIHZhbHVlIGlzIMKxJHt0aHJlc2hvbGQocGFyYW1zPy50aHJlc2hvbGQpfSBkaWZmZXJlbnQgdG8gb3VyIGRlZmF1bHQgdmFsdWUgd2hpY2ggaXMgJHtwYXJhbXM/LmRlZmF1bHR9LlxuICAgICAgUGxlYXNlIGNoZWNrIHlvdXIgdXBsb2FkZWQgZGF0YSBhcyB0aGlzIG1heSBiZSBhbiBlcnJvci5gIDpcbiAgICAgIGBUaGlzIHZhbHVlIGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IHRoYW4gb3VyIGRlZmF1bHQgdmFsdWUuXG4gICAgICBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAsXG4gICd0aGUgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0JzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYFRoZSBleHBlY3RlZCByZXN1bHQgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5jdXJyZW50LCAzKSl9LlxuICAgICAgICAke3BhcmFtcz8udGhyZXNob2xkID8gYE91ciB0aHJlc2hvbGQgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9LmAgOiAnJ31cbiAgICAgICAgUGxlYXNlIGVpdGhlcjpcbiAgICAgICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRlY2ltYWxcIj5cbiAgICAgICAgPGxpPkNoZWNrIHRoZSAke3BhcmFtcz8udGVybS50ZXJtVHlwZX0gdmFsdWUgeW91IHByb3ZpZGVkOzwvbGk+XG4gICAgICAgIDxsaT5DaGVjayB0aGUgZGF0YSB5b3UgcHJvdmlkZWQgd2hpY2ggaXMgdGhlIGlucHV0IGludG8gdGhpcyBtb2RlbDs8L2xpPlxuICAgICAgICA8bGk+Q2FyZWZ1bGx5IHJlYWQgdGhlIGRvY3VtZW50YXRpb24gdG8gdW5kZXJzdGFuZCBpZiB3ZSB1c2VkIGEgZGVmYXVsdCBwcm9wZXJ0eSBhcyBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbnMuPC9saT5cbiAgICAgICAgPC91bD5gXG4gICAgICAgIDogJ25vdCBjb25zaXN0ZW50IHdpdGggdGhlIG1vZGVsIHJlc3VsdC4nXG4gICAgfWAsXG4gICd0aGUgbWVhc3VyZW1lbnQgcHJvdmlkZWQgbWlnaHQgYmUgaW4gZXJyb3InOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4cGVjdGVkIHZhbHVlIGZvciAke2NvZGUocGFyYW1zPy50ZXJtLm5hbWUpfVxuICAgICR7cGFyYW1zPy5tb2RlbD8ubmFtZSA/IGB1c2luZyAke21vZGVsTGluayhwYXJhbXM/LnRlcm0sIHBhcmFtcz8ubW9kZWwpfSBgIDogJyd9XG4gICAgZnJvbSB0aGUgZGF0YSBwcm92aWRlZCBpbiB0aGUgdXBsb2FkIGlzICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgICAgYCR7Y29kZSh0b1ByZWNpc2lvbihwYXJhbXM/LmV4cGVjdGVkLCAzKSl9LCBidXQgdGhlIHZhbHVlIGluIHRoZSB1cGxvYWQgaXMgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uY3VycmVudCwgMykpfS5cbiAgICAgICAgJHtwYXJhbXM/LnRocmVzaG9sZCA/IGBPdXIgdGhyZXNob2xkIGlzIMKxJHt0aHJlc2hvbGQocGFyYW1zPy50aHJlc2hvbGQpfS5gIDogJyd9YCA6XG4gICAgICAgIGBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBtb2RlbCByZXN1bHQuYFxuICAgIH1gLFxuICAnbXVzdCBiZSBlcXVhbCB0byBwcmV2aW91cyBwcm9kdWN0IG11bHRpcGxpZWQgYnkgdGhlIHNoYXJlJzogKCkgPT5cbiAgICBgUHJvZHVjdHMgZnJvbSBhIHRyYW5zZm9ybWF0aW9uIHdoaWNoIGFyZSBhbiBJbnB1dCBpbiB0byB0aGUgbmV4dCB0cmFuc2Zvcm1hdGlvbiBtdXN0IGZvbGxvdyB0aGUgZm9sbG93aW5nIHJ1bGU6XG4gICAgJHtjb2RlKCdwcmV2aW91cy5wcm9kdWN0LnZhbHVlICogY3VycmVudC50cmFuc2Zvcm1lZFNoYXJlIC8gMTAwID09IGN1cnJlbnQuaW5wdXQudmFsdWUnKX1gLFxuICAnYXQgbGVhc3Qgb25lIElucHV0IG11c3QgYmUgYSBQcm9kdWN0IG9mIHRoZSBDeWNsZSc6ICgpID0+XG4gICAgYEEgVHJhbnNmb3JtYXRpb24gY29udmVydHMgYSBQcm9kdWN0IGZyb20gYSBDeWNsZSBpbnRvIGFub3RoZXIgUHJvZHVjdC5cbiAgICBUaGVyZWZvcmUsIGF0IGxlYXN0IG9uZSBJbnB1dCBpbnRvIHRoZSBUcmFuc2Zvcm1hdGlvbiBtdXN0IGJlIGEgUHJvZHVjdCBvZiB0aGUgQ3ljbGUuYCxcbiAgJ211c3QgaGF2ZSBvbmx5IG9uZSBlbnRyeSB3aXRoIHRoZSBzYW1lIHRlcm0udGVybVR5cGUgPSBleGNyZXRhTWFuYWdlbWVudCc6ICgpID0+XG4gICAgYFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBQcmFjdGljZSBvZiB0eXBlIGV4Y3JldGFNYW5hZ2VtZW50IGluIGEgQ3ljbGUuXG4gICAgVG8gcmVwcmVzZW50IG11bHRpcGxlIGV4Y3JldGEgbWFuYWdlbWVudCBzeXN0ZW1zIGVpdGhlciB1c2UgbXVsdGlwbGUgQ3ljbGVzIGFuZCBsaW5rIHRoZW0gdG9nZXRoZXIsXG4gICAgb3IgdXNlIFRyYW5zZm9ybWF0aW9ucyB3aXRoaW4gYSBDeWNsZSBhbmQgbGluayB0aG9zZSB0b2dldGhlci5gLFxuICAnbXVzdCBiZSBpbmNsdWRlZCBhcyBhbiBJbnB1dCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBUaGUgZXhjcmV0YSBQcm9kdWN0cyBhcmUgbm90IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGV4Y3JldGEgSW5wdXRzLlxuICAgICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgICAgYEUuZy4sIHlvdSBjYW5ub3QgZ2V0ICR7XG4gICAgICAgICAgY29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpXG4gICAgICAgIH0gZnJvbSAke1xuICAgICAgICAgIChwYXJhbXM/LmV4cGVjdGVkIHx8IFtdKS5tYXAodiA9PiBjb2RlKGtleVRvTGFiZWwodikpKS5qb2luKCcgb3IgJylcbiAgICAgICAgfS5gIDpcbiAgICAgICAgJydcbiAgICB9XG4gICAgUGxlYXNlIGNoZWNrIHRoZSBJbnB1dHMgYW5kIFByb2R1Y3RzIG9mIHRoZSBUcmFuc2Zvcm1hdGlvbi5gLFxuICAnbXVzdCBhZGQgdGhlIGxpbmtlZCBpbnB1dHMgdG8gdGhlIGN5Y2xlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgICAgYFlvdSBoYXZlIHN0YXRlZCB0aGF0ICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfSB3YXMgY3JlYXRlZCBieSB0aGUgZm9sbG93aW5nIElucHV0cyAke1xuICAgICAgICAgIHBhcmFtcz8uZXhwZWN0ZWQ/Lm1hcChlID0+IGNvZGUoZS5uYW1lKSkuam9pbignICwgJylcbiAgICAgICAgfWA6XG4gICAgICAgICdZb3UgaGF2ZSBzdGF0ZWQgc29tZSBFbWlzc2lvbnMgd2VyZSBjcmVhdGVkIGJ5IHNvbWUgSW5wdXRzJ1xuICAgIH0uXG4gICAgSG93ZXZlciwgdGhlc2UgSW5wdXRzIGRvIG5vdCBleGlzdCBpbiB0aGUgQ3ljbGUuXG4gICAgUGxlYXNlIGFkZCB0aGVzZSBJbnB1dHMsIGV2ZW4gaWYgeW91IGRvIG5vdCBoYXZlIGEgdmFsdWUgZm9yIHRoZW0uYCxcbiAgJ211c3QgYWRkIHRoZSBsaW5rZWQgdHJhbnNmb3JtYXRpb25zIHRvIHRoZSBjeWNsZSc6ICh7IGxldmVsLCBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgWW91IGhhdmUgc3BlY2lmaWVkIHRoYXQke2NvZGUocGFyYW1zPy50ZXJtPy5uYW1lKX0gd2FzIGNyZWF0ZWQgZHVyaW5nIGEgVHJhbnNmb3JtYXRpb24gd2l0aCB0aGUgVGVybSBuYW1lICR7Y29kZShwYXJhbXM/LmV4cGVjdGVkPy5uYW1lKX1gIDpcbiAgICAgICAgJ1lvdSBoYXZlIHN0YXRlZCBzb21lIEVtaXNzaW9ucyB3ZXJlIGNyZWF0ZWQgYnkgc29tZSBUcmFuc2Zvcm1hdGlvbnMnXG4gICAgfS5cbiAgICBIb3dldmVyLCB3ZSBjYW5ub3QgZmluZCBhIFRyYW5zZm9ybWF0aW9uIHdpdGhpbiB0aGUgQ3ljbGUgd2l0aCB0aGlzIFRlcm0gbmFtZS5cbiAgICAke1xuICAgICAgbGV2ZWwgPT09ICdlcnJvcicgP1xuICAgICAgICAnUGxlYXNlIGNoZWNrIHRoZSBUZXJtcyB1c2VkIGluIHRoZSBFbWlzc2lvbnMgYW5kL29yIHRoZSBUcmFuc2Zvcm1hdGlvbnMuJyA6XG4gICAgICAgICdZb3UgbWF5IHdhbnQgdG8gYWRkIHRoaXMgVHJhbnNmb3JtYXRpb24uJ1xuICAgIH1gLFxuICAnZXZlcnkgaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgYmUgdW5pcXVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgQmxhbmsgTm9kZSBpcyBkdXBsaWNhdGVkLiBFdmVyeSBCbGFuayBOb2RlIHNob3VsZCBiZSB1bmlxdWUuXG4gICAgVW5pcXVlbmVzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgZmllbGRzOiAke1xuICAgICAgKHBhcmFtcz8ua2V5cyB8fCBbXSkubWFwKGNvZGUpLmpvaW4oJywgJylcbiAgICB9YCxcbiAgJ211c3QgY29udGFpbiBhcyBtYW55IGl0ZW1zIGFzIHZhbHVlcyc6ICh7IHBhcmFtcywgZGF0YVBhdGggfSkgPT5cbiAgICBgVGhlIG51bWJlciBvZiAke2NvZGUoZGF0YVBhdGguc3BsaXQoJy4nKS5wb3AoKSl9IG11c3QgbWF0Y2ggdGhlIG51bWJlciBvZiAke2NvZGUoJ3ZhbHVlJyl9LlxuICAgIEN1cnJlbnRseSB0aGVyZSBhcmUgJHtwYXJhbXM/LmN1cnJlbnR9ICR7Y29kZShkYXRhUGF0aC5zcGxpdCgnLicpLnBvcCgpKX0gYnV0ICR7cGFyYW1zPy5leHBlY3RlZH0gJHtjb2RlKCd2YWx1ZScpfS5gLFxuICAnaXMgdG9vIGdlbmVyaWMnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgWW91IGhhdmUgdGhlIGZvbGxvd2luZyBQcm9kdWN0ICR7Y29kZShwYXJhbXM/LnByb2R1Y3Q/Lm5hbWUpfSBob3dldmVyLFxuICAgIHlvdSBoYXZlIHVzZWQgYSBnZW5lcmljICR7Z2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKX0gdGVybSAke2NvZGUocGFyYW1zPy50ZXJtPy5uYW1lKX0uXG4gICAgVXNlIGEgbW9yZSBzcGVjaWZpYyB0ZXJtIGZvciB0aGUgJHtcbiAgICAgIGdsb3NzYXJ5VHlwZUxpbmsocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSlcbiAgICB9IHdoaWNoIHJlZmxlY3RzIHRoZSBzcGVjaWZpYyAke1xuICAgICAgZ2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnByb2R1Y3Q/LnRlcm1UeXBlKVxuICAgIH0uYCxcbiAgJ3Nob3VsZCBub3QgdXNlIGlkZW50aWNhbCB0ZXJtcyB3aXRoIGRpZmZlcmVudCB1bml0cyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSBhZGRlZCB0aGUgc2FtZSAke1xuICAgICAgY29kZShwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKVxuICAgIH0gaW4gJHtcbiAgICAgIHBhcmFtcz8udW5pdHM/Lm1hcCh1bml0ID0+IGNvZGUodW5pdCkpLmpvaW4oJyBhbmQgJylcbiAgICB9IHVuaXRzLlxuICAgIElmIHRoZXNlIHRlcm1zIHJlZmVyIHRvIHRoZSBzYW1lICR7XG4gICAgICBjb2RlKHBhcmFtcz8udGVybT8udGVybVR5cGUpXG4gICAgfSwgdGhpcyB3aWxsIGxlYWQgdG8gZG91YmxlIGNvdW50aW5nLiR7XG4gICAgICBwYXJhbXM/LnVuaXRzPy5pbmNsdWRlcygna2cgTicpXG4gICAgICAgID8gYCBJbnN0ZWFkIHVzZSB0aGUgJHtcbiAgICAgICAgICB0ZXJtTGluayh7IGlkOiAnbml0cm9nZW5Db250ZW50JywgbmFtZTogJ05pdHJvZ2VuIENvbnRlbnQnIH0pXG4gICAgICAgIH0gUHJvcGVydHkgb24gdGhlICR7Y29kZSgna2cnKX0gdGVybSB0byBkZWZpbmUgdGhlIG5pdHJvZ2VuIGNvbnRlbnQgb2YgdGhlICR7XG4gICAgICAgICAgY29kZShwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKVxuICAgICAgICB9LmBcbiAgICAgICAgOiAnJ1xuICAgIH1gLFxuICAnaXMgbWlzc2luZyByZXF1aXJlZCBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uJzogKCkgPT5cbiAgICBgVGhlIGF1dG9tYXRpYyBiaWJsaW9ncmFwaHkgc2VhcmNoIGZhaWxlZCBmb3IgdGhpcyBCaWJsaW9ncmFwaHkuIEVpdGhlcjpcbiAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGVjaW1hbFwiPlxuICAgIDxsaT5NYW51YWxseSBmaWxsLWluIHRoZSA8Yj5yZXF1aXJlZDwvYj4gYmlibGlvZ3JhcGhpYyBpbmZvcm1hdGlvbiBhcyBwZXIgJHtzY2hlbWFMaW5rKFNjaGVtYVR5cGUuQmlibGlvZ3JhcGh5LCAnb3VyIHNjaGVtYScpfS48L2xpPlxuICAgIDxsaT5Qcm92aWRlIHRoZSAke2NvZGUoJ2RvY3VtZW50RE9JJyl9IGFzIHdlbGwgYXMgdGhlICR7Y29kZSgndGl0bGUnKX0uPC9saT5cbiAgICA8bGk+Q2hlY2sgdGhlICR7Y29kZSgnZG9jdW1lbnRET0knKX0gYW5kICR7Y29kZSgndGl0bGUnKX0gZm9yIHR5cG9zIGFnYWluc3QgdGhlICR7ZXh0ZXJuYWxMaW5rKCdodHRwczovL3d3dy5tZW5kZWxleS5jb20nLCAnTWVuZGVsZXkgY2F0YWxvZ3VlJyl9LjwvbGk+XG4gICAgPC91bD5gLFxuICAnc2hvdWxkIGJlIGxvd2VyIHRoYW4gbWF4IHNpemUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhlIGJvdW5kYXJ5IG9yIHJlZ2lvbiBpcyA+JHtwYXJhbXM/LmV4cGVjdGVkfWttMiBhbmQgaXMgdG9vIGxhcmdlIHRvIHJlbGlhYmx5IGdhcCBmaWxsIE1lYXN1cmVtZW50cy5cbiAgICBJZiB5b3UgYXJlIGFibGUgdG8gdXNlIGEgbW9yZSBzcGVjaWZpYyByZWdpb24sIHBsZWFzZSBkby5gLFxuICAnYW4gZXhjcmV0YSBpbnB1dCBpcyByZXF1aXJlZCB3aGVuIHVzaW5nIGFuIGV4Y3JldGFNYW5hZ2VtZW50IHByYWN0aWNlJzogKHsgZGF0YVBhdGggfSkgPT4ge1xuICAgIGNvbnN0IHBhdGhzID0gcGFyc2VEYXRhUGF0aChkYXRhUGF0aCEpO1xuICAgIHJldHVybiBgRXhjcmV0YSBtYW5hZ2VtZW50IGlzIHRoZSBjb252ZXJzaW9uIG9mIGV4Y3JldGEgdG8gYW5vdGhlciB0eXBlIG9mIGV4Y3JldGEuXG4gICAgICBZb3UgaGF2ZSBhZGRlZCBhbiBleGNyZXRhTWFuYWdlbWVudCBQcmFjdGljZSB0byB0aGlzICR7cGF0aHNbMF0ubGFiZWx9IGJ1dCB0aGVyZSBpcyBubyBleGNyZXRhIElucHV0LlxuICAgICAgVG8gcmVwcmVzZW50IGV4Y3JldGEgbWFuYWdlbWVudCwgdXNlIGEgJHtwYXRoc1swXS5sYWJlbH0gd2l0aCBleGNyZXRhIGFzIGFuIElucHV0IGFuZCBleGNyZXRhTWFuYWdlbWVudCBhcyBhIFByYWN0aWNlLmA7XG4gIH0sXG4gICdvbmx5IDEgcHJpbWFyeSBwcm9kdWN0IGFsbG93ZWQnOiAoKSA9PiAnVGhlcmUgY2FuIG9ubHkgYmUgb25lIHByaW1hcnkgcHJvZHVjdCBpbiBlYWNoIEN5Y2xlLicsXG4gICdpcyBub3QgYWxsb3dlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG5vVGlsbGFnZSc6ICgpID0+XG4gICAgYFRoaXMgb3BlcmF0aW9uIGludm9sdmVzIHRpbGxhZ2UsIHlldCB5b3UgaGF2ZSBzcGVjaWZpZWQgdGhlIFByYWN0aWNlICR7dGVybUxpbmsobm9UaWxsYWdlKX0uXG4gICAgRWl0aGVyIGNoYW5nZSB0aGlzIG9wZXJhdGlvbiBvciB0aGUgUHJhY3RpY2UuYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYFdlIHJlY29tbWVuZCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHRpbGxhZ2UgdXNlZCBmb3IgdGhpcyBDeWNsZS5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBnbG9zc2FyeS5gLFxuICAnbXVzdCBzZXQgdmFsdWUgZm9yIGV2ZXJ5IHRpbGxhZ2UgcHJhY3RpY2UnOiAoKSA9PlxuICAgIGBFaXRoZXIgc3BlY2lmeSBhIHNpbmdsZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZSBvciBhZGQgYSB2YWx1ZSB0byBhbGwgcHJhY3RpY2VzLmAsXG4gICdzdW0gbm90IGVxdWFsIHRvIDEwMCUgZm9yIHRpbGxhZ2UgcHJhY3RpY2VzJzogKCkgPT5cbiAgICBgVGhlIHN1bSBvZiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnRpbGxhZ2UpfSBwcmFjdGljZXMgbXVzdCBlcXVhbCAxMDAlLmAsXG4gICdjYW4gb25seSBoYXZlIDEgdGlsbGFnZSBwcmFjdGljZSB3aXRob3V0IGEgdmFsdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgSXQgaXMgbm90IHBvc3NpYmxlIGZvciBhIEN5Y2xlIHRvIGhhdmUgdGhlIGZvbGxvd2luZyB0aWxsYWdlIFByYWN0aWNlczpcbiAgICAkeyhwYXJhbXM/LmN1cnJlbnQgPz8gW10pLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpLmpvaW4oJyBhbmQgJyl9IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgSWYgbXVsdGlwbGUgdGlsbGFnZSBwcmFjdGljZXMgZGlkIG9jY3VyLCBwbGVhc2Ugc3BlY2lmeSB0aGUgcGVyY2VudGFnZSBvZiBhcmVhIHRoZXkgb2NjdXJyZWQgb24uYCxcbiAgJ2NhbiBub3QgYmUgbGlua2VkIHRvIHRoZSBzYW1lIEN5Y2xlJzogKCkgPT4gJ1lvdSBjYW4gbm90IGxpbmsgYW4gSW5wdXQgdG8gdGhlIEltcGFjdCBBc3Nlc3NtZW50IG9mIHRoZSBzYW1lIEN5Y2xlLicsXG4gIC8vIGRlcHJlY2F0ZWQsIHJlbW92ZSB3aGVuIG1lc3NhZ2UgaXMgbm90IGJlaW5nIHVzZWQgYW55bW9yZVxuICAnbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBkYXRhUGF0aCwgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYElmIHRoZSBhbW91bnQgcHJvZHVjZWQgaXMgemVybywgdGhlICR7Y29kZShkYXRhUGF0aD8uc3BsaXQoJy4nKS5wb3AoKSEpfSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmAsXG4gICdlY29ub21pY1ZhbHVlU2hhcmUgbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgZWNvbm9taWNWYWx1ZVNoYXJlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3JldmVudWUgbXVzdCBiZSAwIGZvciBwcm9kdWN0IHZhbHVlIDAnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgcmV2ZW51ZSBvZiAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGNvZGUocGFyYW1zPy50ZXJtLm5hbWUpIDogJ3RoYXQgcHJvZHVjdCdcbiAgICB9IG11c3QgYWxzbyBiZSB6ZXJvLmAsXG4gICdzaG91bGQgYWRkIGEgc291cmNlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFdlIHJlY29tbWVuZCBhZGRpbmcgYSBTb3VyY2UgdG8gYWxsIGRhdGEgaXRlbXMuXG4gICAgVGhpcyBjYW4gYmUgZG9uZSBieSBhZGRpbmcgdGhlICR7Y29kZShwYXJhbXM/LmN1cnJlbnQpfSBmaWVsZC5cbiAgICBTb3VyY2VzIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBkYXRhIGl0ZW0gKGkuZS4sIGVhY2ggSW5wdXQsIEVtaXNzaW9uLCBQcm9kdWN0LCBQcmFjdGljZSwgTWVhc3VyZW1lbnQsIG9yIEluZnJhc3RydWN0dXJlKS5gLFxuICAnY292ZXIgY3JvcCBjeWNsZSBjb250YWlucyBub24gY292ZXIgY3JvcCBwcm9kdWN0JzogKCkgPT5cbiAgICBgWW91IGhhdmUgc3BlY2lmaWVkIHRoYXQgdGhpcyBjcm9wIGlzIGEgY292ZXIgY3JvcCB1c2luZyBhIFByYWN0aWNlLlxuICAgIEEgY292ZXIgY3JvcCBpcyBkZWZpbmVkIGFzIFwiYSBjcm9wIHdoaWNoIGlzIGxlZnQgaW4gdGhlIGZpZWxkIHdpdGhvdXQgYW55IGZyYWN0aW9uIGhhcnZlc3RlZCBieSB0aGUgZW5kIG9mIHRoZSBDeWNsZVwiLlxuICAgIFRoZSBQcm9kdWN0cyBvZiB0aGlzIEN5Y2xlIGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGlzIGNyb3AgYmVpbmcgYSBjb3ZlciBjcm9wLlxuICAgIFBsZWFzZSBjaGVjayB0aGUgUHJvZHVjdHMgb3IgdGhlIFByYWN0aWNlcy5gLFxuICAnc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBjeWNsZSBwcm9kdWN0cyc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAgIGBUaGUgUHJvZHVjdCAke2NvZGUocGFyYW1zLnByb2R1Y3QubmFtZSl9IGRvZXMgbm90IGV4aXN0IGluIHRoZSBDeWNsZSB3aXRoIGlkICR7Y29kZShwYXJhbXMubm9kZS5pZCl9YCA6XG4gICAgICAgICdUaGUgSW1wYWN0QXNzZXNzbWVudCBQcm9kdWN0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBsaW5rZWQgQ3ljbGUnXG4gICAgfS5cbiAgICBQbGVhc2UgYWRkIHRoZSBQcm9kdWN0IGluIHRoZSBDeWNsZSBvciByZW1vdmUgdGhlIGxpbmsgd2l0aCB0aGUgQ3ljbGUuYCxcbiAgJ211bHRpcGxlIEltcGFjdEFzc2Vzc21lbnQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSBQcm9kdWN0IG9mIHRoZSBzYW1lIEN5Y2xlJzogKCkgPT5cbiAgICBgT25seSAxIEltcGFjdCBBc3Nlc3NtZW50IGNhbiBiZSByZWxhdGVkIHRvIHRoaXMgUHJvZHVjdC5cbiAgICBQbGVhc2UgbWFrZSBzdXJlIHRoZSBwcm9kdWN0IGlzIGNvcnJlY3Qgb3IgdGhlIGN5Y2xlLmlkIHlvdSBhcmUgcmVmZXJyaW5nIHRvIGlzIGNvcnJlY3QuYCxcbiAgJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGxhbmQgb2NjdXBhdGlvbic6ICgpID0+XG4gICAgYExhbmQgdHJhbnNmb3JtYXRpb24gc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBsYW5kIG9jY3VwYXRpb25cbiAgICAobGFuZCB0cmFuc2Zvcm1hdGlvbiBpcyB0aGUgYW1vdW50IG9mIGxhbmQgY29udmVydGVkIGJldHdlZW4gc29tZSBkYXRlIGluIHRoZSBwYXN0IGFuZCB0aGUgY3VycmVudCB5ZWFyLFxuICAgIGRpdmlkZWQgYnkgYW4gYW1vcnRpemF0aW9uIHBlcmlvZCwgc28gaXQgc2hvdWxkIGFsd2F5cyBiZSBsZXNzIHRoYW4gbGFuZCBvY2N1cGF0aW9uIGJ5IGRlZmluaXRpb24pLmAsXG4gICdzaG91bGQgYmUgbGlua2VkIHRvIGFuIGVtaXNzaW9uIGluIHRoZSBDeWNsZSc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/IGAke2NvZGUocGFyYW1zPy50ZXJtLm5hbWUpfSBleGlzdHNgIDogJ1NvbWUgRW1pc3Npb25zIGV4aXN0J1xuICAgIH0gaW4gYm90aCB0aGUgQ3ljbGUgYW5kIHRoZSBUcmFuc2Zvcm1hdGlvbiBidXQgJHtlcnJvckNvdW50ID09PSAxID8gJ2l0IGlzJyA6ICd0aGV5IGFyZSd9IG5vdCBsaW5rZWQgdXNpbmcgJHtcbiAgICAgIGNvZGUoJ2N5Y2xlLmVtaXNzaW9ucy5YLnRyYW5zZm9ybWF0aW9uLnRlcm0nKVxuICAgIH0uIFRoaXMgbWF5IGJlIGFuIGVycm9yLmAsXG4gICdzaG91bGQgYWRkIGFuIGFuaW1hbCBwcm9kdWN0aW9uIHN5c3RlbSc6ICgpID0+XG4gICAgYEZvciBhbmltYWwgcHJvZHVjdGlvbiBjeWNsZXMsIHdlIHJlY29tbWVuZCBzcGVjaWZ5aW5nIHRoZSBhbmltYWwgcHJvZHVjdGlvbiAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnN5c3RlbSl9IGFzIGEgUHJhY3RpY2UuXG4gICAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiBzeXN0ZW1zIGluIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLnN5c3RlbSwgJ0dsb3NzYXJ5Jyl9LmAsXG4gICdtdXN0IGJlIHNldCB0byBmYWxzZSB3aGVuIHNwZWNpZnlpbmcgZnVlbCB1c2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgSWYgbWFjaGluZXJ5IGZ1ZWwgKCR7cGFyYW1zPy5hbGxvd2VkVmFsdWVzLm1hcChjb2RlKS5qb2luKCcsICcpfSkgaXMgdXNlZCBkdXJpbmcgYSBDeWNsZSxcbiAgICBidXQgdGhlcmUgaXMgbm8gZGF0YSBvbiB0aGUgYW1vdW50IG9mICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUubWF0ZXJpYWwpfSB1c2VkIGZvciBhZ3JpY3VsdHVyYWwgZXF1aXBtZW50LFxuICAgIHRoZW4gJHtjb2RlKCdjb21wbGV0ZW5lc3MubWF0ZXJpYWwnKX0gbXVzdCBiZSAke2NvZGUoJ2ZhbHNlJyl9LmAsXG4gICdtdXN0IGJlIGJlbG93IG9yIGVxdWFsIHRvIDEgZm9yIHVuaXQgaW4gaGEnOiAoKSA9PlxuICAgIGBUaGUgbWF4aW11bSB2YWx1ZSBmb3IgYSBwcm9kdWN0IHdpdGggdW5pdHMgJHtjb2RlKCdoYScpfSBvbiBhIEN5Y2xlIHdpdGggYSAke1xuICAgICAgc2NoZW1hTGluaygnQ3ljbGUjZnVuY3Rpb25hbFVuaXQnLCAnZnVuY3Rpb25hbCB1bml0JylcbiAgICB9IG9mICR7Y29kZSgnMSBoYScpfSBpcyAke2NvZGUoJzEnKX0uXG4gICAgSWYgeW91IGFyZSB0cnlpbmcgdG8gYWRkIGEgcHJvZHVjdCB3aXRoIHRoZSB1bml0cyAke2NvZGUoJ2tnJyl9LCB1c2UgYSBkaWZmZXJlbnQgdGVybS5gLFxuICAncGFzdHVyZUdyYXNzIGtleSB1bml0cyBtdXN0IGJlIFxcJ2hhXFwnJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBUZXJtICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGNhbid0IGJlIHVzZWQgYXMgYSBrZXkgZm9yICR7dGVybUxpbmsocGFzdHVyZUdyYXNzKX0uXG4gICAgUGxlYXNlIHVzZSB0aGUgVGVybSBkZXNjcmliaW5nIHRoZSBwbGFudCB3aXRoIHRoZSB1bml0cyAke2NvZGUocGFyYW1zLmV4cGVjdGVkKX0gaW5zdGVhZC5cbiAgICBUaGlzIHdpbGwgaGVscCB1cyBnYXAtZmlsbCB0aGUgYW1vdW50IG9mIGdyYXNzIGNvbnN1bWVkIGJ5IHRoZSBoZXJkLmAsXG4gICd0aGUgc3VtIG9mIGFsbCBwYXN0dXJlR3Jhc3MgdmFsdWVzIG11c3QgYmUgMTAwJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBzdW0gb2YgYWxsICR7dGVybUxpbmsocGFzdHVyZUdyYXNzKX0gdmFsdWVzIG11c3QgYmUgZXF1YWwgdG8gJHtwYXJhbXMuZXhwZWN0ZWR9JS5gLFxuICAnaXMgb3V0c2lkZSBjb25maWRlbmNlIGludGVydmFsJzogKF9lcnJvciwgZXJyb3JDb3VudCwgYWxsRXJyb3JzKSA9PlxuICAgIGAke3VuaXF1ZShhbGxFcnJvcnMuZmxhdE1hcCgoeyBkYXRhUGF0aCwgcGFyYW1zIH0pID0+IHBhcmFtcz8ub3V0bGllcnM/Lm1hcCh2YWx1ZSA9PlxuICAgICAgYFRoZSAke1xuICAgICAgICBkYXRhUGF0aC5pbmNsdWRlcygncHJvZHVjdCcpID8gJ3Byb2R1Y3QnIDogJ2lucHV0J1xuICAgICAgfSB2YWx1ZSAke1xuICAgICAgICBlcnJvckNvdW50ID09PSAxID8gYCR7Y29kZSh2YWx1ZSl9IGAgOiAnJ1xuICAgICAgfWlzICR7XG4gICAgICAgIHZhbHVlID4gcGFyYW1zPy5taW4gPyAnYWJvdmUnIDogJ2JlbG93J1xuICAgICAgfSAke1xuICAgICAgICBwYXJhbXM/LnRocmVzaG9sZCA/IGAke2NvZGUoYCR7KHBhcmFtcy50aHJlc2hvbGQgKyAoKDEgLSBwYXJhbXMudGhyZXNob2xkKSAvIDIpKSAqIDEwMH0lYCl9IG9mYCA6ICcnXG4gICAgICB9IGFsbCAke1xuICAgICAgICBwYXJhbXM/Lmdyb3VwID8gY29kZShwYXJhbXMuZ3JvdXApIDogY29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpXG4gICAgICB9IGRhdGEgaW4gJHtcbiAgICAgICAgY29kZShwYXJhbXM/LmNvdW50cnkubmFtZSlcbiAgICAgIH0gb24gdGhlIEhlc3RpYSBwbGF0Zm9ybS5gXG4gICAgKSkpLmpvaW4oJzwvYnI+Jyl9XG4gICAgPC9icj5cbiAgICBQbGVhc2UgZG91YmxlLWNoZWNrIHRoZXNlIHZhbHVlcyBiZWZvcmUgc3VibWl0dGluZy5gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIGJvdW5kYXJ5JzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoZSBjYWxjdWxhdGVkIGFyZWEgZnJvbSAke2NvZGUoJ2JvdW5kYXJ5Jyl9IGlzICR7Y29kZShwYXJhbXM/LmV4cGVjdGVkKX0uXG4gICAgVGhpcyBtYXkgYmUgYW4gZXJyb3IgaWYgdGhlIGJvdW5kYXJ5IHJlcHJlc2VudHMgdGhlIGFyZWEgdW5kZXIgY3VsdGl2YXRpb24uYCxcbiAgJ211c3Qgc3BlY2lmeSB0aGUgZmF0ZSBvZiBjcm9wUmVzaWR1ZSc6ICgpID0+XG4gICAgYEZvciBzaXRlcyBvZiB0eXBlIGNyb3BsYW5kIG9yIHBlcm1hbmVudCBwYXN0dXJlLCBpZiBkYXRhIGNvbXBsZXRlbmVzcyBpcyBtYXJrZWQgJHtjb2RlKHRydWUpfSBmb3IgY3JvcCByZXNpZHVlLCB0aGUgZmF0ZXMgYW5kIHF1YW50aXRpZXMgb2YgdGhlIHJlc2lkdWUgbXVzdCBiZSBzcGVjaWZpZWQuXG4gICAgPGJyLz5cbiAgICBUaGUgcXVhbnRpdHkgbXVzdCBpbmNsdWRlIGJvdGggYWJvdmUgYW5kIGJlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUsIHdoZXJlIHRoZSBzdW0gb2YgYWJvdmUgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICAgIFRoaXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSB0ZXJtczpcbiAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGlzYyBpcy1ub3dyYXBcIj5cbiAgICA8bGk+JHt0ZXJtTGluayh7IGlkOiAnYmVsb3dHcm91bmRDcm9wUmVzaWR1ZScsIG5hbWU6ICdCZWxvdyBncm91bmQgY3JvcCByZXNpZHVlJyB9KX07IGFuZDwvbGk+XG4gICAgPGxpPiR7dGVybUxpbmsoeyBpZDogJ2Fib3ZlR3JvdW5kQ3JvcFJlc2lkdWVUb3RhbCcsIG5hbWU6ICdBYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIHRvdGFsJyB9KX0uPC9saT5cbiAgICA8L3VsPlxuICAgIDxici8+XG4gICAgVGhlIGZhdGUgY2FuIGJlIGFkZGVkIHVzaW5nOlxuICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kaXNjIGlzLW5vd3JhcFwiPlxuICAgIDxsaT50aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5jcm9wUmVzaWR1ZU1hbmFnZW1lbnQpfSBwcmFjdGljZXM7IGFuZC9vcjwvbGk+XG4gICAgPGxpPnRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmNyb3BSZXNpZHVlKX0gcHJvZHVjdHM8L2xpPlxuICAgIDwvdWw+XG4gICAgYCxcbiAgJ3Nob3VsZCBzcGVjaWZ5IHRoZSBmYXRlIG9mIGNyb3BSZXNpZHVlJzogKCkgPT5cbiAgICBgWW91IGhhdmUgbm90IHNwZWNpZmllZCB0aGUgZmF0ZSBvZiB0aGUgY3JvcCByZXNpZHVlLlxuICAgIEFkZGluZyB0aGlzIGluZm9ybWF0aW9uIHdpbGwgaW1wcm92ZSBlbWlzc2lvbnMgYW5kIHNvaWwgY2FyYm9uIHN0b2NrIGNhbGN1bGF0aW9ucy5cbiAgICBUaGUgZmF0ZSBjYW4gYmUgYWRkZWQgdXNpbmc6XG4gICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRpc2MgaXMtbm93cmFwXCI+XG4gICAgPGxpPnRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmNyb3BSZXNpZHVlTWFuYWdlbWVudCl9IHByYWN0aWNlczsgYW5kL29yPC9saT5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWUpfSBwcm9kdWN0czs8L2xpPlxuICAgIDwvdWw+XG4gICAgUmVtZW1iZXIgdG8gc2V0ICR7Y29kZSgnY29tcGxldGVuZXNzLmNyb3BSZXNpZHVlJyl9IHRvICR7Y29kZSh0cnVlKX0gaWYgYm90aCB0aGUgYWJvdmUgYW5kIGJlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUgcXVhbnRpdGllcyBhbmQgZmF0ZXMgYXJlIHNwZWNpZmllZC5gLFxuICAnc2hvdWxkIGhhdmUgdGhlIHNhbWUgcHJpdmFjeSBhcyB0aGUgcmVsYXRlZCBzb3VyY2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVG8gbGluayB0byBhICR7KHBhcmFtcz8uZGVmYXVsdFNvdXJjZSB8fCBwYXJhbXM/LnNvdXJjZSk/LmRhdGFQcml2YXRlID8gJ3ByaXZhdGUnIDogJ3B1YmxpYyd9IFNvdXJjZSxcbiAgICB0aGlzIE5vZGUgbmVlZHMgdG8gYmUgJHsocGFyYW1zPy5kZWZhdWx0U291cmNlIHx8IHBhcmFtcz8uc291cmNlKT8uZGF0YVByaXZhdGUgPyAncHJpdmF0ZScgOiAncHVibGljJ30gYXMgd2VsbC5cbiAgICBQbGVhc2Ugc2V0ICR7Y29kZSgnZGF0YVByaXZhdGUnKX09JHtjb2RlKGAkeyhwYXJhbXM/LmRlZmF1bHRTb3VyY2UgfHwgcGFyYW1zPy5zb3VyY2UpPy5kYXRhUHJpdmF0ZX1gKX0uYCxcbiAgJ3Nob3VsZCBub3QgdXNlIG5vdCByZWxldmFudCBtb2RlbCc6ICgpID0+XG4gICAgYEFsbCBlbWlzc2lvbnMgc2hvdWxkIGdlbmVyYWxseSBoYXZlIGEgbWV0aG9kIHRpZXIsIHdoaWNoIHN0YXRlcyBob3cgdGhlIGRhdGEgd2VyZSBtb2RlbGxlZCBvciBob3cgdGhlIGRhdGEgd2VyZSBjb2xsZWN0ZWQuXG4gICAgUGxlYXNlIHNlZSB0aGUgJHtzY2hlbWFMaW5rKCdFbWlzc2lvbiNtZXRob2RUaWVyJywgJ3NjaGVtYScpfSBmb3IgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGFuZCBkZWZpbml0aW9ucyBvZiB0aGUgb3B0aW9ucy5gLFxuICAnc2hvdWxkIG5vdCB1c2Ugbm90IHJlbGV2YW50IG1ldGhvZFRpZXInOiAoKSA9PlxuICAgIGBBbGwgZW1pc3Npb25zIHNob3VsZCBnZW5lcmFsbHkgaGF2ZSBhIG1ldGhvZCB0aWVyLCB3aGljaCBzdGF0ZXMgaG93IHRoZSBkYXRhIHdlcmUgbW9kZWxsZWQgb3IgaG93IHRoZSBkYXRhIHdlcmUgY29sbGVjdGVkLlxuICAgIFBsZWFzZSBzZWUgdGhlICR7c2NoZW1hTGluaygnRW1pc3Npb24jbWV0aG9kVGllcicsICdzY2hlbWEnKX0gZm9yIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBhbmQgZGVmaW5pdGlvbnMgb2YgdGhlIG9wdGlvbnMuYCxcbiAgJ211c3QgaGF2ZSBpbnB1dHMgcmVwcmVzZW50aW5nIHRoZSBmb3JhZ2Ugd2hlbiBzZXQgdG8gdHJ1ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGlzIEN5Y2xlIGluY2x1ZGVzIGFuaW1hbHMgJHtcbiAgICAgIHBhcmFtcz8uc2l0ZVR5cGUgPyBgb24gJHtwYXJhbXMuc2l0ZVR5cGV9YCA6ICcnXG4gICAgfSBhbmQgY29tcGxldGVuZXNzIGlzIHNldCB0byAkeyhjb2RlKHRydWUpKX0gZm9yICR7Y29kZSgnYW5pbWFsRmVlZCcpfS5cbiAgICBIb3dldmVyLCB0aGVyZSBhcmUgbm8gSW5wdXRzIHJlcHJlc2VudGluZyB0aGUgZm9yYWdlIGludGFrZSBieSBhbmltYWxzIGluIHRoZSBDeWNsZSAoSW5wdXRzIHdpdGggdGVybXMgd2hpY2ggY29udGFpbiB0aGUgd29yZHMgXCJmcmVzaCBmb3JhZ2VcIiBhbmQgYSAke2NvZGUoJ3ZhbHVlJyl9KS5cbiAgICBFaXRoZXIsIHNldCBjb21wbGV0ZW5lc3MgdG8gJHsoY29kZShmYWxzZSkpfSBmb3IgJHtjb2RlKCdhbmltYWxGZWVkJyl9LCBtYWtlIHN1cmUgYWxsIFwiZnJlc2ggZm9yYWdlXCIgSW5wdXRzIGhhdmUgYSAke2NvZGUoJ3ZhbHVlJyl9LCBvciBhZGQgb25lIG9yIG1vcmUgSW5wdXRzIHJlcHJlc2VudGluZyB0aGUgZm9yYWdlIGludGFrZS5gLFxuICAnbXVzdCBzcGVjaWZ5IGlzIGl0IGFuIGFuaW1hbCBmZWVkJzogKCkgPT5cbiAgICBgVGhpcyBDeWNsZSBpcyBhbiBhbmltYWwgcHJvZHVjdGlvbiBDeWNsZSBhbmQgdGhpcyBJbnB1dCBjb3VsZCBiZSBhbiBhbmltYWwgZmVlZCBvciBjb3VsZCBiZSBmb3IgYW5vdGhlciB1c2UuXG4gICAgUGxlYXNlIHNwZWNpZnkgdGhlICR7c2NoZW1hTGluaygnSW5wdXQjaXNBbmltYWxGZWVkJywgJ2lzQW5pbWFsRmVlZCcpfSBmaWVsZCBvbiB0aGlzIElucHV0LlxuICAgIEtub3dpbmcgdGhlIGZhdGUgaXMgZXNzZW50aWFsIHRvIGRpc3Rpbmd1aXNoIElucHV0cyBiZXR3ZWVuIHRob3NlIHdoaWNoIGFyZSBmZWQgdG8gYW5pbWFscyBhbmQgdGhvc2Ugd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLmAsXG4gICdzaG91bGQgc3BlY2lmeSBhIHRyZWF0bWVudCB3aGVuIGV4cGVyaW1lbnREZXNpZ24gaXMgc3BlY2lmaWVkJzogKCkgPT5cbiAgICBgWW91IGhhdmUgc3BlY2lmaWVkIHRoYXQgdGhpcyBTb3VyY2UgdXNlcyBhbiBleHBlcmltZW50YWwgZGVzaWduLCBidXQgaGF2ZSBub3Qgc3BlY2lmaWVkIHRoZSB0cmVhdG1lbnQgZm9yIHRoaXMgQ3ljbGUuXG4gICAgQWRkaW5nIHRoZSB0cmVhdG1lbnQgcHJvdmlkZXMgaW1wb3J0YW50IG1ldGEtZGF0YSBhbmQgd2lsbCBlbmFibGUgZ3JlYXRlciByZS11c2Ugb2YgdGhlc2UgZGF0YS5cbiAgICBBZGQgdGhlICR7c2NoZW1hTGluaygnQ3ljbGUjdHJlYXRtZW50JywgJ3RyZWF0bWVudCcpfSBmaWVsZCB0byB0aGUgQ3ljbGUuXG4gICAgTm90ZSB0aGF0IHRoZSBmaWVsZCAke3NjaGVtYUxpbmsoJ0N5Y2xlI2NvbW1lcmNpYWxQcmFjdGljZVRyZWF0bWVudCcsICdjb21tZXJjaWFsUHJhY3RpY2VUcmVhdG1lbnQnKX0gYmVjb21lcyByZXF1aXJlZCBpZiB0cmVhdG1lbnQgaXMgc3BlY2lmaWVkLmAsXG4gICdzaG91bGQgbm90IHNwZWNpZnkgYm90aCBsaXZlQW5pbWFsIGFuZCBhbmltYWxQcm9kdWN0JzogKCkgPT5cbiAgICBgWW91IGhhdmUgYWRkZWQgYm90aCBhICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUubGl2ZUFuaW1hbCl9IGFuZCAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmFuaW1hbFByb2R1Y3QpfSB0ZXJtIGFzIFByb2R1Y3RzLlxuICAgIElmIHRoZXNlIHRlcm1zIHJlZmVyIHRvIHRoZSBzYW1lIGFuaW1hbHMsIHRoaXMgd2lsbCBsZWFkIHRvIGRvdWJsZSBjb3VudGluZzpcbiAgICBpbnN0ZWFkIHVzZSBhIFByb3BlcnR5IG9uIHRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmxpdmVBbmltYWwpfSB0ZXJtIHRvIGRlZmluZSB0aGUgcXVhbnRpdHkgb2YgbGl2ZXdlaWdodCBwZXIgaGVhZCwgY2FyY2FzcyB3ZWlnaHQgcGVyIGhlYWQsIGV0Yy5gLFxuICAnbXVzdCBhZGQgYW4gZXhjcmV0YSBwcm9kdWN0IHdpdGggYSBsaXZlQW5pbWFsIHByb2R1Y3QnOiAoKSA9PlxuICAgIGBBbmltYWwgcHJvZHVjdGlvbiBDeWNsZXMgY3JlYXRlIGV4Y3JldGEuXG4gICAgVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgJHtjb2RlKFRlcm1UZXJtVHlwZS5leGNyZXRhKX0gcHJvZHVjdCBpbiB0aGlzIEN5Y2xlLlxuICAgIFBsZWFzZSBhZGQgYW4gJHtjb2RlKFRlcm1UZXJtVHlwZS5leGNyZXRhKX0gUHJvZHVjdCB0byB0aGUgQ3ljbGUuXG4gICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCBhICR7Y29kZSgndmFsdWUnKX0gZm9yIHRoZSBQcm9kdWN0LCBidXQgYWRkaW5nIGEgJHtjb2RlKCd2YWx1ZScpfSBpcyBkZXNpcmFibGUuYCxcbiAgJ3ZhbHVlIHNob3VsZCBzdW0gdG8gMTAwIG9yIGxlc3MgYWNyb3NzIHdhdGVyIHJlZ2ltZSBwcmFjdGljZXMnOiAoKSA9PlxuICAgIGBUaGUgdG90YWwgJSBhcmVhIGNvdmVyZWQgYnkgdGhlICR7Y29kZShUZXJtVGVybVR5cGUud2F0ZXJSZWdpbWUpfSBwcmFjdGljZXMgeW91IHNwZWNpZmllZCBpcyBub3QgZXF1YWwgdG8gJHtjb2RlKDEwMCl9LlxuICAgIE1ha2Ugc3VyZSB0byBhZGQgYW55IG1pc3NpbmcgcHJhY3RpY2UgaWYgbmVlZGVkIGFuZC9vciBhZGp1c3QgdGhlIHZhbHVlcyBvZiB0aGUgJHtjb2RlKFRlcm1UZXJtVHlwZS53YXRlclJlZ2ltZSl9IHByYWN0aWNlcyB5b3UgYWxyZWFkeSByZWNvcmRlZC5gLFxuICAncmljZSBwcm9kdWN0cyBub3QgYWxsb3dlZCBmb3IgdGhpcyB3YXRlciByZWdpbWUgcHJhY3RpY2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBwcmFjdGljZSBpcyBub3QgYWxsb3dlZCB3aXRoIHRoZSBwcm9kdWN0cyAke1xuICAgICAgcGFyYW1zLnByb2R1Y3RzPy5tYXAocCA9PiBjb2RlKHAubmFtZSB8fCBwWydAaWQnXSkpXG4gICAgfS5cbiAgICBSZWNvcmRpbmcgdGhlIHJpZ2h0IHdhdGVyIHJlZ2ltZSBmb3IgcmljZSBlbnN1cmVzIG1ldGhhbmUgZW1pc3Npb25zIGZyb20gZmxvb2RlZCBmaWVsZHMgYXJlIGNvcnJlY3RseSByZWNhbGN1bGF0ZWQuXG4gICAgVG8gZml4IHRoaXMgZXJyb3IsIGVpdGhlciBjaGFuZ2UgdGhlIHByYWN0aWNlIG9yIHRoZSBwcm9kdWN0cy5cbiAgICBgXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VzdG9tRXJyb3JNZXNzYWdlID0gKG1lc3NhZ2U/OiBzdHJpbmcsIGVycm9yPzogSVZhbGlkYXRpb25FcnJvciwgYWxsRXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10gPSBbXSkgPT4ge1xuICBjb25zdCBmb3JtYXR0ZWRNZXNzYWdlID0gbWVzc2FnZSAmJiBtZXNzYWdlIGluIGN1c3RvbUVycm9yTWVzc2FnZSA/XG4gICAgY3VzdG9tRXJyb3JNZXNzYWdlW21lc3NhZ2VdKGVycm9yISwgYWxsRXJyb3JzLmxlbmd0aCwgYWxsRXJyb3JzKSA6XG4gICAgbWVzc2FnZTtcbiAgcmV0dXJuIGZvcm1hdHRlZE1lc3NhZ2UgPyBgPHAgY2xhc3M9XCJpcy1ub3JtYWxcIj4ke2Zvcm1hdHRlZE1lc3NhZ2V9PC9wPmAgOiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRFcnJvciA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IsIGFsbEVycm9yczogSVZhbGlkYXRpb25FcnJvcltdID0gW10pOiBJVmFsaWRhdGlvbkVycm9yIHwgdW5kZWZpbmVkID0+XG4gIGVycm9yXG4gICAgPyAoe1xuICAgICAgbGV2ZWw6ICdlcnJvcicsXG4gICAgICAuLi5lcnJvcixcbiAgICAgIG1hcEVycm9yOiBlcnJvci5tZXNzYWdlID09PSBtYXBFcnJvck1lc3NhZ2UsXG4gICAgICBtZXNzYWdlOiBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IubWVzc2FnZSwgZXJyb3IsIGFsbEVycm9ycylcbiAgICB9KVxuICAgIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNFcnJvciA9IChlcnJvcj86IElWYWxpZGF0aW9uRXJyb3IpID0+IGVycm9yICYmIChlcnJvci5sZXZlbCA9PT0gJ2Vycm9yJyB8fCAhZXJyb3IubGV2ZWwpO1xuXG5leHBvcnQgY29uc3QgZXJyb3JIYXNXYXJuaW5nID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgZXJyb3IubGV2ZWwgPT09ICd3YXJuaW5nJztcblxuZXhwb3J0IGNvbnN0IGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IgPSAoeyBwYXJhbXMgfTogSVZhbGlkYXRpb25FcnJvcikgPT4gISFwYXJhbXMgJiYgJ21pc3NpbmdQcm9wZXJ0eScgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nT25lT2ZFcnJvciA9ICh7IGtleXdvcmQsIHNjaGVtYVBhdGggfTogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAga2V5d29yZCA9PT0gJ3JlcXVpcmVkJyAmJiAoc2NoZW1hUGF0aCB8fCAnJykuaW5jbHVkZXMoJ29uZU9mJyk7XG5cbmNvbnN0IGlzRmFpbGluZ0tleXdvcmRFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnZmFpbGluZ0tleXdvcmQnIGluIHBhcmFtcztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckVycm9yID0gKGVycm9yOiBJVmFsaWRhdGlvbkVycm9yKSA9PiBbXG4gIGlzRmFpbGluZ0tleXdvcmRFcnJvclxuXS5ldmVyeShmdW5jID0+ICFmdW5jKGVycm9yKSk7XG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nTm9kZUVycm9ycyA9IChlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSkgPT5cbiAgZXJyb3JzLmZpbHRlcigoeyBrZXl3b3JkLCBwYXJhbXMgfSkgPT5cbiAgICBrZXl3b3JkID09PSAncmVxdWlyZWQnICYmIChwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0B0eXBlJyB8fCBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpXG4gICk7XG4iXX0=
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZXJyb3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBOEJoRCxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDN0MsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEcsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3BDLEtBQUssRUFBRSxTQUFTLENBQUMsVUFB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QU0scUJBQXFCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsSUFBSSxNQUFNLENBQUM7QUFFdkcsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUM7SUFDdEQscUJBQXFCO0NBQ3RCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQTBCLEVBQUUsRUFBRSxDQUM5RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUNwQyxPQUFPLEtBQUssVUFBVSxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWUsS0FBSyxPQUFPLElBQUksTUFBTSxFQUFFLGVBQWUsS0FBSyxLQUFLLENBQUMsQ0FDckcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCB7IFNjaGVtYVR5cGUsIFNpdGVTaXRlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIGtleVRvTGFiZWwsIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5pbXBvcnQgeyB0ZXJtVHlwZUxhYmVsIH0gZnJvbSAnLi4vdGVybXMvdGVybXMubW9kZWwnO1xuaW1wb3J0IHsgcGF0aFRvQXBpRG9jc1BhdGggfSBmcm9tICcuLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuaW1wb3J0IHsgYmFzZVVybCwgY29kZSwgY29udGFjdFVzTGluaywgZXh0ZXJuYWxMaW5rLCBnbG9zc2FyeUxpbmssIHNjaGVtYUxpbmsgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnLi4vY29tbW9uL3BsdXJhbGl6ZSc7XG5cbi8vIFRPRE86IGFkZCBtb3JlIHZhbGlkYXRpb24ga2V5d29yZCBhbmQgcGFyYW1zXG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JMZXZlbCA9ICdlcnJvcicgfCAnd2FybmluZyc7XG5leHBvcnQgdHlwZSB2YWxpZGF0aW9uRXJyb3JQYXJhbSA9ICdtaXNzaW5nUHJvcGVydHknIHwgJ3R5cGUnIHwgJ3Rlcm0nIHwgJ21vZGVsJyB8ICdwcm9kdWN0JyB8ICdyYW5nZScgfCAnbm9kZScgfFxuICAnYWxsb3dlZFZhbHVlcycgfCAnYWxsb3dlZFZhbHVlJyB8ICdhZGRpdGlvbmFsUHJvcGVydHknIHwgJ2V4cGVjdGVkJyB8ICdkZWZhdWx0JyB8ICdjdXJyZW50JyB8ICdwZXJjZW50YWdlJyB8ICdrZXlzJyB8XG4gICd0aHJlc2hvbGQnIHwgJ291dGxpZXJzJyB8ICdjb3VudHJ5JyB8ICdtaW4nIHwgJ21heCcgfCAnZGVmYXVsdFNvdXJjZScgfCAnc291cmNlJyB8ICdncm91cCcgfCAnbWVzc2FnZScgfCAnZGlzdGFuY2UnIHxcbiAgJ3NpdGVUeXBlJyB8ICdwcm9kdWN0cycgfCAndW5pdHMnO1xuZXhwb3J0IHR5cGUgdmFsaWRhdGlvbkVycm9yS2V5d29yZCA9ICdyZXF1aXJlZCcgfCAndHlwZScgfCAnaWYnIHwgJ3RoZW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElWYWxpZGF0aW9uRXJyb3Ige1xuICBpbmRleD86IG51bWJlcjtcbiAgbm9kZUluZGV4PzogbnVtYmVyO1xuICBsZXZlbD86IHZhbGlkYXRpb25FcnJvckxldmVsO1xuICBkYXRhUGF0aD86IHN0cmluZztcbiAgc2NoZW1hUGF0aD86IHN0cmluZztcbiAga2V5d29yZD86IHZhbGlkYXRpb25FcnJvcktleXdvcmQ7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcGFyYW1zPzogeyBba2V5IGluIHZhbGlkYXRpb25FcnJvclBhcmFtXT86IGFueSB9O1xuICBtYXBFcnJvcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRpb25FcnJvcldpdGhJbmRleCB7XG4gIGVycm9yOiBJVmFsaWRhdGlvbkVycm9yW107XG4gIGluZGV4OiBudW1iZXI7XG4gIGNoYW5nZWQ/OiBib29sZWFuO1xufVxuXG50eXBlIGhhbmRsZUVycm9yRnVuYyA9IChlcnJvcjogSVZhbGlkYXRpb25FcnJvciwgZXJyb3JDb3VudD86IG51bWJlciwgYWxsRXJyb3JzPzogSVZhbGlkYXRpb25FcnJvcltdKSA9PiBzdHJpbmc7XG5cbmNvbnN0IG1hcEVycm9yTWVzc2FnZSA9ICdkb2VzIG5vdCBjb250YWluIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUnO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEYXRhUGF0aCA9IChkYXRhUGF0aCA9ICcnKSA9PiB7XG4gIGNvbnN0IFtfLCAuLi5wYXRoc10gPSBkYXRhUGF0aC5yZXBsYWNlKC9bXFxbXFxdXFwnXFwnXFxcIlxcXCJdL2csICcnKS5yZXBsYWNlKC8oXFx3KShcXEApL2csICckMS5AJykuc3BsaXQoJy4nKTtcbiAgcmV0dXJuIHBhdGhzLm1hcChwYXRoID0+ICh7XG4gICAgcGF0aDogcGF0aC5yZXBsYWNlKC8oXFxkKykvZywgJ1skMV0nKSxcbiAgICBsYWJlbDogcGx1cmFsaXplKGtleVRvTGFiZWwocGF0aC5yZXBsYWNlKC9bXFxkXFxAXSsvZywgJycpKSwgMSlcbiAgfSkpO1xufTtcblxuY29uc3QgZ2xvc3NhcnlUeXBlTGluayA9ICh0eXBlOiBUZXJtVGVybVR5cGUsIHRleHQgPSB0ZXJtVHlwZUxhYmVsKHR5cGUpKSA9PiBleHRlcm5hbExpbmsoYCR7YmFzZVVybCgpfS9nbG9zc2FyeT90ZXJtVHlwZT0ke3R5cGV9YCwgdGV4dCk7XG5jb25zdCB0ZXJtTGluayA9ICh7IGlkLCBuYW1lIH06IFBhcnRpYWw8VGVybT4pID0+IGV4dGVybmFsTGluayhgJHtiYXNlVXJsKCl9L3Rlcm0vJHtpZH1gLCBuYW1lIHx8IGlkKTtcbmNvbnN0IGRhdGVGb3JtYXRNZXNzYWdlID1cbiAgYHNob3VsZCBmb2xsb3cgdGhlIElTTyA4NjAxIGRhdGUgZm9ybWF0LCBlLmcuICR7Y29kZSgyMDAwKX0sIG9yICR7Y29kZSgnMjAwMC0xMicpfSwgb3IgJHtjb2RlKCcyMDAwLTEyLTMwJyl9YDtcbmNvbnN0IG1vZGVsTGluayA9ICh0ZXJtOiBUZXJtLCBtb2RlbDogVGVybSkgPT4gYFxuICA8YSBocmVmPVwiJHtwYXRoVG9BcGlEb2NzUGF0aChtb2RlbFsnQGlkJ10sIHRlcm1bJ0BpZCddKX1cIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICA8c3BhbiBjbGFzcz1cInByLTFcIj4ke21vZGVsLm5hbWV9PC9zcGFuPlxuICAgIDxzcGFuPihWaWV3IERvY3MpPC9zcGFuPlxuICA8L2E+XG5gO1xuY29uc3QgdGhyZXNob2xkID0gKHZhbHVlOiBudW1iZXIpID0+IGNvZGUoYCR7dmFsdWUgKiAxMDB9JWApO1xuXG5jb25zdCBub1RpbGxhZ2U6IFBhcnRpYWw8VGVybT4gPSB7IGlkOiAnbm9UaWxsYWdlJywgbmFtZTogJ05vIHRpbGxhZ2UnIH07XG5jb25zdCBwYXN0dXJlR3Jhc3M6IFBhcnRpYWw8VGVybT4gPSB7IGlkOiAncGFzdHVyZUdyYXNzJywgbmFtZTogJ1Bhc3R1cmUgZ3Jhc3MnIH07XG5cbmNvbnN0IGlkTm90Rm91bmREZWZhdWx0TWVzc2FnZSA9IGBcbiAgSWYgeW91IGFyZSB1c2luZyB0aGUgJHtjb2RlKCduYW1lJyl9IG9mIHRoZSBUZXJtLCBtYWtlIHN1cmUgdG8gdXNlICR7Y29kZSgndGVybS5uYW1lJyl9IGNvbHVtbjtcbiAgaWYgeW91IGFyZSB1c2luZyB0aGUgJHtjb2RlKCdAaWQnKX0gb2YgdGhlIFRlcm0sIHVzZSB0aGUgJHtjb2RlKCd0ZXJtLkBpZCcpfSBjb2x1bW4gaW5zdGVhZC5cbmAudHJpbSgpO1xuXG5leHBvcnQgY29uc3QgaXNNaWdyYXRpb25FcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiBwYXJhbXM/LmN1cnJlbnQgJiYgKCdleHBlY3RlZCcgaW4gcGFyYW1zKTtcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbkVycm9yTWVzc2FnZSA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PlxuICBwYXJhbXM/LmV4cGVjdGVkXG4gICAgPyBgVGhlIFRlcm0gJHtjb2RlKHBhcmFtcy5jdXJyZW50KX0gd2FzIHVwZGF0ZWQsIHBsZWFzZSB1c2UgdGhpcyBUZXJtIGluc3RlYWQ6ICR7Y29kZShwYXJhbXMuZXhwZWN0ZWQpfS5gXG4gICAgOiBgVGhlIFRlcm0gJHtjb2RlKHBhcmFtcy5jdXJyZW50KX0gd2FzIGRlbGV0ZWQuIFBsZWFzZSBzZWFyY2ggdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeScpfSBmb3IgYSBuZXcgVGVybS5gO1xuXG5jb25zdCBpZE5vdEZvdW5kRXJyb3I6IGhhbmRsZUVycm9yRnVuYyA9IChfZXJyb3IsIF9lcnJvckNvdW50LCBhbGxFcnJvcnMpID0+IHtcbiAgY29uc3QgbWlncmF0aW9uRXJyb3JzID0gYWxsRXJyb3JzLmZpbHRlcihpc01pZ3JhdGlvbkVycm9yKTtcbiAgY29uc3Qgbm9NaWdyYXRpb25FcnJvcnMgPSBhbGxFcnJvcnMuZmlsdGVyKGVycm9yID0+ICFpc01pZ3JhdGlvbkVycm9yKGVycm9yKSk7XG4gIHJldHVybiBgXG4gICAgPHA+RG9lcyBub3QgZXhpc3QgaW4gSGVzdGlhLjwvcD5cbiAgICAke25vTWlncmF0aW9uRXJyb3JzLmxlbmd0aCA/IGA8cD4ke2lkTm90Rm91bmREZWZhdWx0TWVzc2FnZX08L3A+YCA6ICcnfVxuICAgICR7dW5pcXVlKG1pZ3JhdGlvbkVycm9ycy5tYXAobWlncmF0aW9uRXJyb3JNZXNzYWdlKSkuam9pbignPC9icj4nKX1cbiAgYDtcbn07XG5cbi8vIHNldCBtZXNzYWdlIGFzIGVtcHR5IHRvIG5vdCBkaXNwbGF5IGl0XG5jb25zdCBjdXN0b21FcnJvck1lc3NhZ2U6IHtcbiAgW2tleTogc3RyaW5nXTogaGFuZGxlRXJyb3JGdW5jO1xufSA9IHtcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ0BpZFxcJyc6IGlkTm90Rm91bmRFcnJvcixcbiAgJ3Nob3VsZCBoYXZlIHJlcXVpcmVkIHByb3BlcnR5IFxcJ0B0eXBlXFwnJzogKCkgPT4gJycsXG4gICdzaG91bGQgaGF2ZSByZXF1aXJlZCBwcm9wZXJ0eSBcXCdpZFxcJyc6IGlkTm90Rm91bmRFcnJvcixcbiAgJ3Nob3VsZCBtYXRjaCBleGFjdGx5IG9uZSBzY2hlbWEgaW4gb25lT2YnOiAoKSA9PiAnJyxcbiAgJ3Nob3VsZCBtYXRjaCBzb21lIHNjaGVtYSBpbiBhbnlPZic6ICgpID0+ICcnLFxuICAnc2hvdWxkIG1hdGNoIFwidGhlblwiIHNjaGVtYSc6ICgpID0+ICcnLFxuICAnc2hvdWxkIE5PVCBoYXZlIGFkZGl0aW9uYWwgcHJvcGVydGllcyc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgYFRoZSBmb2xsb3dpbmcgZmllbGQgZG9lcyBub3QgZXhpc3Q6ICR7cGFyYW1zPy5hZGRpdGlvbmFsUHJvcGVydHl9IG9yIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY2FzZS5gIDpcbiAgICAgIGBTaG91bGQgbm90IGhhdmUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLmAsXG4gICdzaG91bGQgTk9UIGJlIHZhbGlkJzogKCkgPT4gJ1Nob3VsZCBub3QgYmUgdXNlZCBpbiB0aGlzIGNhc2UuJyxcbiAgJ3Nob3VsZCBtYXRjaCBwYXR0ZXJuIFwiXlxcXFxkezEzfSRcIic6ICgpID0+IGBzaG91bGQgYmUgY29tcG9zZWQgb2YgMTMgbnVtYmVyc2AsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl5bMC05XXs0fSgtWzAtOV17Mn0pPygtWzAtOV17Mn0pPyRcIic6ICgpID0+IGRhdGVGb3JtYXRNZXNzYWdlLFxuICAnc2hvdWxkIG1hdGNoIHBhdHRlcm4gXCJeKFswLTldezR9fC0pKC1bMC05XXsyfSk/KC1bMC05XXsyfSk/JFwiJzogKCkgPT4gZGF0ZUZvcm1hdE1lc3NhZ2UsXG4gICdzaG91bGQgbWF0Y2ggcGF0dGVybiBcIl4oWzAtOV17NH18LSkoLVswLTldezJ9KT8oLVswLTldezJ9KT8oW1RdWzAtMl1bMC05XVxcOlswLTVdWzAtOV1cXDpbMC01XVswLTldKChcXCt8XFwtKVswLTFdWzAtOV06WzAtNV1bMC05XSk/KT8kXCInOiAoKSA9PiBkYXRlRm9ybWF0TWVzc2FnZSxcbiAgJ3Nob3VsZCBiZSBsaW5rZWQgdG8gYW4gZXhpc3Rpbmcgbm9kZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3VyIHVwbG9hZCBkb2VzIG5vdCBjb250YWluIHRoZSAke3BhcmFtcz8ubm9kZT8udHlwZX0gd2l0aCAke2NvZGUoYGlkPSR7cGFyYW1zPy5ub2RlPy5pZH1gKX0uXG4gICAgSWYgeW91IGFyZSB0cnlpbmcgdG8gbGluayB0byBhbiBleGlzdGluZyAke3BhcmFtcz8ubm9kZT8udHlwZX0gb24gdGhlIEhlc3RpYSBwbGF0Zm9ybSwgeW91IG11c3QgdXNlICR7Y29kZShgQGlkPSR7cGFyYW1zPy5ub2RlPy5pZH1gKX0gaW5zdGVhZC5cbiAgICBPdGhlcndpc2UgeW91IG11c3QgaW5jbHVkZSBhIGZ1bGwgJHtwYXJhbXM/Lm5vZGU/LnR5cGV9IHdpdGggaWQgJHtjb2RlKHBhcmFtcz8ubm9kZT8uaWQpfS5gLFxuICAnbXVzdCBiZSB3aXRoaW4gdGhlIGNvdW50cnknOiAoKSA9PiBgVGhlIGNvdW50cnkgcHJvdmlkZWQgZG9lcyBub3QgY29udGFpbiB0aGUgcmVnaW9uIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2tcbiAgdGhlIGNvdW50cnkgZm9yIGVycm9ycyBvciB0aGUgcmVnaW9uIGZvciBlcnJvcnMsIGFuZCByZWZlcmVuY2UgdGhlICR7Z2xvc3NhcnlMaW5rKCdHbG9zc2FyeSBvZiBUZXJtcycpfS5gLFxuICBbbWFwRXJyb3JNZXNzYWdlXTogKHsgZGF0YVBhdGgsIHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgID8gYFRoZSBsb25naXR1ZGUgYW5kIGxhdGl0dWRlIHByb3ZpZGVkIGFyZSR7XG4gICAgICAgIHBhcmFtcz8uZGlzdGFuY2UgPyBgICR7cGFyYW1zPy5kaXN0YW5jZX1rbXNgOiAnJ1xuICAgICAgfSBvdXRzaWRlIG9mIHRoZSAke2RhdGFQYXRoLnN1YnN0cmluZygxKX0gcHJvdmlkZWQuXG4gICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgZm9yIGVycm9ycyBvciBjaGVjayBpZiB0aGUgd3JvbmcgJHtkYXRhUGF0aC5zdWJzdHJpbmcoMSl9IGZyb20gdGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUucmVnaW9uLCAnR2xvc3NhcnknKX0gd2FzIHVzZWQuXG4gICAgICAke3BhcmFtcz8uZXhwZWN0ZWQgPyBgSGludDogdGhlIGNvb3JkaW5hdGVzIGFwcGVhciB0byBiZSBsb2NhdGVkIGluIHRoZSBmb2xsb3dpbmcgJHtkYXRhUGF0aC5zdWJzdHJpbmcoMSl9OiAke3Rlcm1MaW5rKHsgaWQ6ICdwYXJhbXMuZXhwZWN0ZWQnIH0pfWAgOiAnJ31gXG4gICAgICA6IGBUaGUgcmVnaW9uIHByb3ZpZGVkIGRvZXMgbm90IGNvbnRhaW4gdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgcHJvdmlkZWQuXG4gICAgICBQbGVhc2UgY2hlY2sgdGhlIGxvbmdpdHVkZSBhbmQgbGF0aXR1ZGUgZm9yIGVycm9ycyBvciB0aGUgcmVnaW9uIGZvciBlcnJvciwgYW5kIHJlZmVyZW5jZSB0aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5yZWdpb24sICdHbG9zc2FyeSBvZiBUZXJtcycpfS5gLFxuICAnc3VtIG5vdCBlcXVhbCB0byAxMDAlIGZvciBzYW5kQ29udGVudCwgc2lsdENvbnRlbnQsIGNsYXlDb250ZW50JzpcbiAgICAoKSA9PiBgVGhlIHN1bSBvZiBTYW5kLCBTaWx0LCBhbmQgQ2xheSBjb250ZW50IHNob3VsZCBlcXVhbCAxMDAlIGZvciBlYWNoIHNvaWwgZGVwdGggaW50ZXJ2YWwuYCxcbiAgJ2lzIG91dHNpZGUgdGhlIGFsbG93ZWQgcmFuZ2UnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDFcbiAgICAgICAgPyBwYXJhbXM/LnRlcm1cbiAgICAgICAgICAgID8gYFRoZSB2YWx1ZSBmb3IgJHtjb2RlKHBhcmFtcz8udGVybVsnQGlkJ10gfHwgcGFyYW1zPy50ZXJtLm5hbWUpfSBpcyBvdXRzaWRlIHRoZSByYW5nZSBlc3RhYmxpc2hlZCBmb3IgdGhlIHNvaWwgdGV4dHVyZSB5b3UgcHJvdmlkZWQuXG4gICAgICAgICAgICBGb3IgdGhpcyBzb2lsIHRleHR1cmUsIHRoZSBtYXhpbXVtICR7Y29kZShwYXJhbXM/LnRlcm1bJ0BpZCddIHx8IHBhcmFtcz8udGVybS5uYW1lKX0gaXMgJHtwYXJhbXM/LnJhbmdlPy5tYXh9IGFuZCB0aGUgbWluaW11bSBpcyAke3BhcmFtcz8ucmFuZ2U/Lm1pbn0uYFxuICAgICAgICAgICAgOiBgRG9lcyBub3QgbWF0Y2ggdGhlIHBvc3NpYmxlIHJhbmdlcyBvZiBzYW5kLCBzaWx0IGFuZCBjbGF5IGNvbnRlbnQuYFxuICAgICAgICA6IGBFYWNoIHNvaWwgdGV4dHVyZSBoYXMgYSBtYXhpbXVtIGFuZCBtaW5pbXVtIHZhbHVlIGZvciBzYW5kLCBzaWx0LCBhbmQgY2xheSBjb250ZW50LlxuICAgICAgICBBdCBsZWFzdCBvbmUgbWVhc3VyZW1lbnQgb2Ygc2FuZCwgc2lsdCwgb3IgY2xheSBjb250ZW50IGRvZXMgbm90IG1hdGNoIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgdGhlIHNwZWNpZmllZCBzb2lsIHRleHR1cmUuYFxuICAgIH1cbiAgICAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgICA/IGBQbGVhc2UgY2hlY2sgdGhlIG1lYXN1cmVtZW50LCBpdHMgZGVwdGggaW50ZXJ2YWxzLCBhbmQgdGhlIGRhdGVzIG9mIHRoZSBtZWFzdXJlbWVudCBvciB1cGRhdGUgdGhlIHNvaWwgdGV4dHVyZSBpZiBuZWVkZWQuYFxuICAgICAgICA6IGBQbGVhc2UgY2hlY2sgeW91ciBtZWFzdXJlbWVudHMsIHRoZWlyIGRlcHRoIGludGVydmFscywgYW5kIHRoZSBkYXRlcyBvZiB0aGUgbWVhc3VyZW1lbnRzIG9yIHVwZGF0ZSB0aGUgc29pbCB0ZXh0dXJlcyBpZiBuZWVkZWQuYFxuICAgIH1gLFxuICAnc2hvdWxkIGJlIGVxdWFsIHRvIG9uZSBvZiB0aGUgYWxsb3dlZCB2YWx1ZXMnOlxuICAgICh7IHBhcmFtcywgZGF0YVBhdGggfSkgPT4ge1xuICAgICAgY29uc3QgcGF0aHMgPSBwYXJzZURhdGFQYXRoKGRhdGFQYXRoISk7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBwYXRocy5sZW5ndGggPj0gMlxuICAgICAgICA/IHBsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAxXS5wYXRoLCBwYXJhbXM/LmFsbG93ZWRWYWx1ZXM/Lmxlbmd0aCB8fCAwKVxuICAgICAgICA6ICd2YWx1ZXMnO1xuICAgICAgcmV0dXJuIGBPbmx5IHRoZSAke1xuICAgICAgICBwYXRocy5sZW5ndGggPT09IDMgPyBgJHtwYXRoc1sxXS5sYWJlbH0gd2l0aCB0aGUgYCA6ICcnXG4gICAgICB9Zm9sbG93aW5nICR7dmFsdWVzfSBhcmUgcGVybWl0dGVkIGZvciAke3BhdGhzWzBdLmxhYmVsfTogJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubWFwKGNvZGUpLmpvaW4oJywgJyl9LlxuICAgICAgUGxlYXNlIGVpdGhlciBjaGFuZ2UgdGhlICR7XG4gICAgICAgIHBhdGhzLmxlbmd0aCA+PSAyID8gcGF0aHNbMV0ubGFiZWwgOiBwYXRoc1swXS5sYWJlbFxuICAgICAgfSB5b3UgYXJlIHVzaW5nIGFuZCBlbnN1cmUgaXQgaGFzIG9uZSBvZiB0aGUgJHt2YWx1ZXN9IGxpc3RlZCBhYm92ZSxcbiAgICAgIG9yIGZvbGxvdyB0aGUgc2NoZW1hIHRvIGlkZW50aWZ5IHdoZXJlIHRoaXMgJHtcbiAgICAgICAgcGF0aHMubGVuZ3RoID49IDIgPyBwYXRoc1sxXS5sYWJlbCA6IHBhdGhzWzBdLmxhYmVsXG4gICAgICB9IGNhbiBiZSBhZGRlZC5gO1xuICAgIH0sXG4gICdzaG91bGQgYmUgZXF1YWwgdG8gY29uc3RhbnQnOlxuICAgICh7IHBhcmFtcyB9KSA9PiBgTXVzdCBiZTogJHtjb2RlKHBhcmFtcz8uYWxsb3dlZFZhbHVlKX1gLFxuICAnaXMgbm90IGFsbG93ZWQgZm9yIHRoaXMgY2hhcmFjdGVyaXNlZEluZGljYXRvcic6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGAke2Vycm9yQ291bnQgPT09IDEgP1xuICAgICAgYCR7XG4gICAgICAgIHBhcmFtcz8uYWxsb3dlZFZhbHVlcy5sZW5ndGggP1xuICAgICAgICAgIGBjYW4gb25seSBiZSB1c2VkIHdpdGggb25lIG9mIHRoZXNlIG1ldGhvZHM6ICR7cGFyYW1zPy5hbGxvd2VkVmFsdWVzLm1hcChjb2RlKS5qb2luKCcsICcpfWAgOlxuICAgICAgICAgIGBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbnkgbWV0aG9kIGFsbG93ZWQuIFBsZWFzZSAke2NvbnRhY3RVc0xpbmsoKX0gdG8gY2hhbmdlIHRoaXMuYFxuICAgICAgfS5gIDpcbiAgICAgIGBTb21lIFRlcm1zIGFyZSBub3QgYWxsb3dlZCB3aXRoIHRoZSBtZXRob2QgeW91IHNlbGVjdGVkLmB9XG4gICAgWW91IGNhbiBmaW5kIHRoZSBsaXN0IG9mIGFsbG93ZWQgbWV0aG9kcyBmb3IgZWFjaCBUZXJtIGJ5IGNsaWNraW5nIG9uIHRoZW0uYCxcbiAgJ3Nob3VsZCBjb250YWluIGEgdmFsaWQgaXRlbSc6ICh7IGRhdGFQYXRoIH0pID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gcGF0aHMubGVuZ3RoID49IDJcbiAgICAgID8gYFRoZSAke3BhdGhzW3BhdGhzLmxlbmd0aCAtIDFdLnBhdGh9IHJlbGF0ZWQgdG8gdGhpcyAke3BsdXJhbGl6ZShwYXRoc1twYXRocy5sZW5ndGggLSAyXS5sYWJlbCwgMSl9IGFyZSBpbnZhbGlkYFxuICAgICAgOiBgVGhlICR7cGF0aHNbMF0ucGF0aH0gYXJlIGludmFsaWRgO1xuICB9LFxuICAnbWF5IGJlIGJldHdlZW4gMCBhbmQgMTAwJzogKCkgPT4gJ1BlcmNlbnRhZ2VzIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDEwMCwgbm90IDAgYW5kIDEuIFRoaXMgbWF5IGJlIGFuIGVycm9yLicsXG4gICdtYXkgbm90IGFsbCBiZSBzZXQgdG8gZmFsc2UnOiAoKSA9PlxuICAgIGBFdmVyeSB2YWx1ZSBpbiB0aGUgZGF0YSBjb21wbGV0ZW5lc3MgYXNzZXNzbWVudCBpcyAke2NvZGUoZmFsc2UpfS4gWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBmaWxsIGl0IGluLlxuICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGZpbGwgaXQgaW4sIHBsZWFzZSBzZWUgdGhlICR7c2NoZW1hTGluaygnQ3ljbGUjY29tcGxldGVuZXNzJywgJ3NjaGVtYScpfS5gLFxuICAnbWF5IG5vdCBiZSBlbXB0eSc6ICgpID0+ICdpZiB0aGlzIHZhbHVlIHNpZ25pZmllcyBubyBkYXRhLCBIZXN0aWEgb25seSBhY2NlcHRzIFwiLVwiIG9yIGVtcHR5IGZvciBubyBkYXRhJyxcbiAgJ21heSBub3QgYmUgMCc6ICh7IGRhdGFQYXRoIH0sIGVycm9yQ291bnQpID0+IHtcbiAgICBjb25zdCBwYXRocyA9IHBhcnNlRGF0YVBhdGgoZGF0YVBhdGghKTtcbiAgICByZXR1cm4gYEFkZGluZyBhIHZhbHVlICR7ZXJyb3JDb3VudCA9PT0gMSA/IGAgdG8gZXZlcnkgJHtwYXRoc1swXS5sYWJlbH0gYCA6ICcgJ30gaXMgaGlnaGx5IHJlY29tbWVuZGVkXG4gICAgICBhcyB3aXRob3V0IHRoaXMgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgSW1wYWN0IEFzc2Vzc21lbnQuXG4gICAgICBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHdlIHJlY29tbWVuZCBzZXR0aW5nIHZhbHVlIHRvIDAuYDtcbiAgfSxcbiAgJ3RoZSBzdW0gb2YgYWJvdmUgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvJzogKCkgPT5cbiAgICBgRm9yIHNpdGVzIG9mIHR5cGUgJHtjb2RlKFNpdGVTaXRlVHlwZS5jcm9wbGFuZCl9IG9yICR7Y29kZShTaXRlU2l0ZVR5cGVbJ3Blcm1hbmVudCBwYXN0dXJlJ10pfSxcbiAgICBpZiBkYXRhIGNvbXBsZXRlbmVzcyBpcyBtYXJrZWQgJHtjb2RlKHRydWUpfSBmb3IgY3JvcCByZXNpZHVlLFxuICAgIHRoZSBzdW0gb2YgdGhlIEFib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgdGVybXMgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLFxuICAgIGFuZCBCZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyby5gLFxuICAnbG9uZ0ZhbGxvd1BlcmlvZCBtdXN0IGJlIGxvd2VyIHRoYW4gNSB5ZWFycyc6ICgpID0+XG4gICAgYFlvdXIgbG9uZ0ZhbGxvd1BlcmlvZCBpcyBncmVhdGVyIHRoYW4gZml2ZSB5ZWFycy5cbiAgICBGYWxsb3cgaXMgZGVmaW5lZCBieSBGQU9TVEFUIGFzIGxhbmQgbGVmdCB1bmN1bHRpdmF0ZWQgZm9yIGJldHdlZW4gMSBhbmQgNSB5ZWFycyxcbiAgICBhbmQgdGhpcyBkZWZpbml0aW9uIGlzIHVzZWQgZm9yIEhlc3RpYSBhbHNvLmAsXG4gICdzaG91bGQgYmUgd2l0aGluIHBlcmNlbnRhZ2Ugb2YgZGVmYXVsdCB2YWx1ZSc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgYFRoaXMgdmFsdWUgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9IGRpZmZlcmVudCB0byBvdXIgZGVmYXVsdCB2YWx1ZSB3aGljaCBpcyAke3BhcmFtcz8uZGVmYXVsdH0uXG4gICAgICBQbGVhc2UgY2hlY2sgeW91ciB1cGxvYWRlZCBkYXRhIGFzIHRoaXMgbWF5IGJlIGFuIGVycm9yLmAgOlxuICAgICAgYFRoaXMgdmFsdWUgaXMgc3Vic3RhbnRpYWxseSBkaWZmZXJlbnQgdGhhbiBvdXIgZGVmYXVsdCB2YWx1ZS5cbiAgICAgIFBsZWFzZSBjaGVjayB5b3VyIHVwbG9hZGVkIGRhdGEgYXMgdGhpcyBtYXkgYmUgYW4gZXJyb3IuYCxcbiAgJ3RoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBtb2RlbCByZXN1bHQnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgVGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgJHtjb2RlKHBhcmFtcz8udGVybS5uYW1lKX1cbiAgICAke3BhcmFtcz8ubW9kZWw/Lm5hbWUgPyBgdXNpbmcgJHttb2RlbExpbmsocGFyYW1zPy50ZXJtLCBwYXJhbXM/Lm1vZGVsKX0gYCA6ICcnfVxuICAgIGZyb20gdGhlIGRhdGEgcHJvdmlkZWQgaW4gdGhlIHVwbG9hZCBpcyAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMVxuICAgICAgICA/IGAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5leHBlY3RlZCwgMykpfSwgYnV0IHRoZSB2YWx1ZSBpbiB0aGUgdXBsb2FkIGlzICR7Y29kZSh0b1ByZWNpc2lvbihwYXJhbXM/LmN1cnJlbnQsIDMpKX0uXG4gICAgICAgICR7cGFyYW1zPy50aHJlc2hvbGQgPyBgT3VyIHRocmVzaG9sZCBpcyDCsSR7dGhyZXNob2xkKHBhcmFtcz8udGhyZXNob2xkKX0uYCA6ICcnfVxuICAgICAgICBQbGVhc2UgZWl0aGVyOlxuICAgICAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGVjaW1hbFwiPlxuICAgICAgICA8bGk+Q2hlY2sgdGhlICR7cGFyYW1zPy50ZXJtLnRlcm1UeXBlfSB2YWx1ZSB5b3UgcHJvdmlkZWQ7PC9saT5cbiAgICAgICAgPGxpPkNoZWNrIHRoZSBkYXRhIHlvdSBwcm92aWRlZCB3aGljaCBpcyB0aGUgaW5wdXQgaW50byB0aGlzIG1vZGVsOzwvbGk+XG4gICAgICAgIDxsaT5DYXJlZnVsbHkgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIGlmIHdlIHVzZWQgYSBkZWZhdWx0IHByb3BlcnR5IGFzIHBhcnQgb2YgdGhlIGNhbGN1bGF0aW9ucy48L2xpPlxuICAgICAgICA8L3VsPmBcbiAgICAgICAgOiAnbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgbW9kZWwgcmVzdWx0LidcbiAgICB9YCxcbiAgJ3RoZSBtZWFzdXJlbWVudCBwcm92aWRlZCBtaWdodCBiZSBpbiBlcnJvcic6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBUaGUgZXhwZWN0ZWQgdmFsdWUgZm9yICR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9XG4gICAgJHtwYXJhbXM/Lm1vZGVsPy5uYW1lID8gYHVzaW5nICR7bW9kZWxMaW5rKHBhcmFtcz8udGVybSwgcGFyYW1zPy5tb2RlbCl9IGAgOiAnJ31cbiAgICBmcm9tIHRoZSBkYXRhIHByb3ZpZGVkIGluIHRoZSB1cGxvYWQgaXMgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgJHtjb2RlKHRvUHJlY2lzaW9uKHBhcmFtcz8uZXhwZWN0ZWQsIDMpKX0sIGJ1dCB0aGUgdmFsdWUgaW4gdGhlIHVwbG9hZCBpcyAke2NvZGUodG9QcmVjaXNpb24ocGFyYW1zPy5jdXJyZW50LCAzKSl9LlxuICAgICAgICAke3BhcmFtcz8udGhyZXNob2xkID8gYE91ciB0aHJlc2hvbGQgaXMgwrEke3RocmVzaG9sZChwYXJhbXM/LnRocmVzaG9sZCl9LmAgOiAnJ31gIDpcbiAgICAgICAgYG5vdCBjb25zaXN0ZW50IHdpdGggdGhlIG1vZGVsIHJlc3VsdC5gXG4gICAgfWAsXG4gICdtdXN0IGJlIGVxdWFsIHRvIHByZXZpb3VzIHByb2R1Y3QgbXVsdGlwbGllZCBieSB0aGUgc2hhcmUnOiAoKSA9PlxuICAgIGBQcm9kdWN0cyBmcm9tIGEgdHJhbnNmb3JtYXRpb24gd2hpY2ggYXJlIGFuIElucHV0IGluIHRvIHRoZSBuZXh0IHRyYW5zZm9ybWF0aW9uIG11c3QgZm9sbG93IHRoZSBmb2xsb3dpbmcgcnVsZTpcbiAgICAke2NvZGUoJ3ByZXZpb3VzLnByb2R1Y3QudmFsdWUgKiBjdXJyZW50LnRyYW5zZm9ybWVkU2hhcmUgLyAxMDAgPT0gY3VycmVudC5pbnB1dC52YWx1ZScpfWAsXG4gICdhdCBsZWFzdCBvbmUgSW5wdXQgbXVzdCBiZSBhIFByb2R1Y3Qgb2YgdGhlIEN5Y2xlJzogKCkgPT5cbiAgICBgQSBUcmFuc2Zvcm1hdGlvbiBjb252ZXJ0cyBhIFByb2R1Y3QgZnJvbSBhIEN5Y2xlIGludG8gYW5vdGhlciBQcm9kdWN0LlxuICAgIFRoZXJlZm9yZSwgYXQgbGVhc3Qgb25lIElucHV0IGludG8gdGhlIFRyYW5zZm9ybWF0aW9uIG11c3QgYmUgYSBQcm9kdWN0IG9mIHRoZSBDeWNsZS5gLFxuICAnbXVzdCBoYXZlIG9ubHkgb25lIGVudHJ5IHdpdGggdGhlIHNhbWUgdGVybS50ZXJtVHlwZSA9IGV4Y3JldGFNYW5hZ2VtZW50JzogKCkgPT5cbiAgICBgVGhlcmUgY2FuIG9ubHkgYmUgb25lIFByYWN0aWNlIG9mIHR5cGUgZXhjcmV0YU1hbmFnZW1lbnQgaW4gYSBDeWNsZS5cbiAgICBUbyByZXByZXNlbnQgbXVsdGlwbGUgZXhjcmV0YSBtYW5hZ2VtZW50IHN5c3RlbXMgZWl0aGVyIHVzZSBtdWx0aXBsZSBDeWNsZXMgYW5kIGxpbmsgdGhlbSB0b2dldGhlcixcbiAgICBvciB1c2UgVHJhbnNmb3JtYXRpb25zIHdpdGhpbiBhIEN5Y2xlIGFuZCBsaW5rIHRob3NlIHRvZ2V0aGVyLmAsXG4gICdtdXN0IGJlIGluY2x1ZGVkIGFzIGFuIElucHV0JzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYFRoZSBleGNyZXRhIFByb2R1Y3RzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgZXhjcmV0YSBJbnB1dHMuXG4gICAgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgRS5nLiwgeW91IGNhbm5vdCBnZXQgJHtcbiAgICAgICAgICBjb2RlKHBhcmFtcz8udGVybT8ubmFtZSlcbiAgICAgICAgfSBmcm9tICR7XG4gICAgICAgICAgKHBhcmFtcz8uZXhwZWN0ZWQgfHwgW10pLm1hcCh2ID0+IGNvZGUoa2V5VG9MYWJlbCh2KSkpLmpvaW4oJyBvciAnKVxuICAgICAgICB9LmAgOlxuICAgICAgICAnJ1xuICAgIH1cbiAgICBQbGVhc2UgY2hlY2sgdGhlIElucHV0cyBhbmQgUHJvZHVjdHMgb2YgdGhlIFRyYW5zZm9ybWF0aW9uLmAsXG4gICdtdXN0IGFkZCB0aGUgbGlua2VkIGlucHV0cyB0byB0aGUgY3ljbGUnOiAoeyBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgP1xuICAgICAgICBgWW91IGhhdmUgc3RhdGVkIHRoYXQgJHtjb2RlKHBhcmFtcz8udGVybT8ubmFtZSl9IHdhcyBjcmVhdGVkIGJ5IHRoZSBmb2xsb3dpbmcgSW5wdXRzICR7XG4gICAgICAgICAgcGFyYW1zPy5leHBlY3RlZD8ubWFwKGUgPT4gY29kZShlLm5hbWUpKS5qb2luKCcgLCAnKVxuICAgICAgICB9YDpcbiAgICAgICAgJ1lvdSBoYXZlIHN0YXRlZCBzb21lIEVtaXNzaW9ucyB3ZXJlIGNyZWF0ZWQgYnkgc29tZSBJbnB1dHMnXG4gICAgfS5cbiAgICBIb3dldmVyLCB0aGVzZSBJbnB1dHMgZG8gbm90IGV4aXN0IGluIHRoZSBDeWNsZS5cbiAgICBQbGVhc2UgYWRkIHRoZXNlIElucHV0cywgZXZlbiBpZiB5b3UgZG8gbm90IGhhdmUgYSB2YWx1ZSBmb3IgdGhlbS5gLFxuICAnbXVzdCBhZGQgdGhlIGxpbmtlZCB0cmFuc2Zvcm1hdGlvbnMgdG8gdGhlIGN5Y2xlJzogKHsgbGV2ZWwsIHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGAke1xuICAgICAgZXJyb3JDb3VudCA9PT0gMSA/XG4gICAgICAgIGBZb3UgaGF2ZSBzcGVjaWZpZWQgdGhhdCR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfSB3YXMgY3JlYXRlZCBkdXJpbmcgYSBUcmFuc2Zvcm1hdGlvbiB3aXRoIHRoZSBUZXJtIG5hbWUgJHtjb2RlKHBhcmFtcz8uZXhwZWN0ZWQ/Lm5hbWUpfWAgOlxuICAgICAgICAnWW91IGhhdmUgc3RhdGVkIHNvbWUgRW1pc3Npb25zIHdlcmUgY3JlYXRlZCBieSBzb21lIFRyYW5zZm9ybWF0aW9ucydcbiAgICB9LlxuICAgIEhvd2V2ZXIsIHdlIGNhbm5vdCBmaW5kIGEgVHJhbnNmb3JtYXRpb24gd2l0aGluIHRoZSBDeWNsZSB3aXRoIHRoaXMgVGVybSBuYW1lLlxuICAgICR7XG4gICAgICBsZXZlbCA9PT0gJ2Vycm9yJyA/XG4gICAgICAgICdQbGVhc2UgY2hlY2sgdGhlIFRlcm1zIHVzZWQgaW4gdGhlIEVtaXNzaW9ucyBhbmQvb3IgdGhlIFRyYW5zZm9ybWF0aW9ucy4nIDpcbiAgICAgICAgJ1lvdSBtYXkgd2FudCB0byBhZGQgdGhpcyBUcmFuc2Zvcm1hdGlvbi4nXG4gICAgfWAsXG4gICdldmVyeSBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBiZSB1bmlxdWUnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhpcyBCbGFuayBOb2RlIGlzIGR1cGxpY2F0ZWQuIEV2ZXJ5IEJsYW5rIE5vZGUgc2hvdWxkIGJlIHVuaXF1ZS5cbiAgICBVbmlxdWVuZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBmaWVsZHM6ICR7XG4gICAgICAocGFyYW1zPy5rZXlzIHx8IFtdKS5tYXAoY29kZSkuam9pbignLCAnKVxuICAgIH1gLFxuICAnbXVzdCBjb250YWluIGFzIG1hbnkgaXRlbXMgYXMgdmFsdWVzJzogKHsgcGFyYW1zLCBkYXRhUGF0aCB9KSA9PlxuICAgIGBUaGUgbnVtYmVyIG9mICR7Y29kZShkYXRhUGF0aC5zcGxpdCgnLicpLnBvcCgpKX0gbXVzdCBtYXRjaCB0aGUgbnVtYmVyIG9mICR7Y29kZSgndmFsdWUnKX0uXG4gICAgQ3VycmVudGx5IHRoZXJlIGFyZSAke3BhcmFtcz8uY3VycmVudH0gJHtjb2RlKGRhdGFQYXRoLnNwbGl0KCcuJykucG9wKCkpfSBidXQgJHtwYXJhbXM/LmV4cGVjdGVkfSAke2NvZGUoJ3ZhbHVlJyl9LmAsXG4gICdpcyB0b28gZ2VuZXJpYyc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBZb3UgaGF2ZSB0aGUgZm9sbG93aW5nIFByb2R1Y3QgJHtjb2RlKHBhcmFtcz8ucHJvZHVjdD8ubmFtZSl9IGhvd2V2ZXIsXG4gICAgeW91IGhhdmUgdXNlZCBhIGdlbmVyaWMgJHtnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8udGVybT8udGVybVR5cGUpfSB0ZXJtICR7Y29kZShwYXJhbXM/LnRlcm0/Lm5hbWUpfS5cbiAgICBVc2UgYSBtb3JlIHNwZWNpZmljIHRlcm0gZm9yIHRoZSAke1xuICAgICAgZ2xvc3NhcnlUeXBlTGluayhwYXJhbXM/LnRlcm0/LnRlcm1UeXBlKVxuICAgIH0gd2hpY2ggcmVmbGVjdHMgdGhlIHNwZWNpZmljICR7XG4gICAgICBnbG9zc2FyeVR5cGVMaW5rKHBhcmFtcz8ucHJvZHVjdD8udGVybVR5cGUpXG4gICAgfS5gLFxuICAnc2hvdWxkIG5vdCB1c2UgaWRlbnRpY2FsIHRlcm1zIHdpdGggZGlmZmVyZW50IHVuaXRzJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFlvdSBoYXZlIGFkZGVkIHRoZSBzYW1lICR7XG4gICAgICBjb2RlKHBhcmFtcz8udGVybT8udGVybVR5cGUpXG4gICAgfSBpbiAke1xuICAgICAgcGFyYW1zPy51bml0cz8ubWFwKHVuaXQgPT4gY29kZSh1bml0KSkuam9pbignIGFuZCAnKVxuICAgIH0gdW5pdHMuXG4gICAgSWYgdGhlc2UgdGVybXMgcmVmZXIgdG8gdGhlIHNhbWUgJHtcbiAgICAgIGNvZGUocGFyYW1zPy50ZXJtPy50ZXJtVHlwZSlcbiAgICB9LCB0aGlzIHdpbGwgbGVhZCB0byBkb3VibGUgY291bnRpbmcuJHtcbiAgICAgIHBhcmFtcz8udW5pdHM/LmluY2x1ZGVzKCdrZyBOJylcbiAgICAgICAgPyBgIEluc3RlYWQgdXNlIHRoZSAke1xuICAgICAgICAgIHRlcm1MaW5rKHsgaWQ6ICduaXRyb2dlbkNvbnRlbnQnLCBuYW1lOiAnTml0cm9nZW4gQ29udGVudCcgfSlcbiAgICAgICAgfSBQcm9wZXJ0eSBvbiB0aGUgJHtjb2RlKCdrZycpfSB0ZXJtIHRvIGRlZmluZSB0aGUgbml0cm9nZW4gY29udGVudCBvZiB0aGUgJHtcbiAgICAgICAgICBjb2RlKHBhcmFtcz8udGVybT8udGVybVR5cGUpXG4gICAgICAgIH0uYFxuICAgICAgICA6ICcnXG4gICAgfWAsXG4gICdpcyBtaXNzaW5nIHJlcXVpcmVkIGJpYmxpb2dyYXBoaWMgaW5mb3JtYXRpb24nOiAoKSA9PlxuICAgIGBUaGUgYXV0b21hdGljIGJpYmxpb2dyYXBoeSBzZWFyY2ggZmFpbGVkIGZvciB0aGlzIEJpYmxpb2dyYXBoeS4gRWl0aGVyOlxuICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kZWNpbWFsXCI+XG4gICAgPGxpPk1hbnVhbGx5IGZpbGwtaW4gdGhlIDxiPnJlcXVpcmVkPC9iPiBiaWJsaW9ncmFwaGljIGluZm9ybWF0aW9uIGFzIHBlciAke3NjaGVtYUxpbmsoU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHksICdvdXIgc2NoZW1hJyl9LjwvbGk+XG4gICAgPGxpPlByb3ZpZGUgdGhlICR7Y29kZSgnZG9jdW1lbnRET0knKX0gYXMgd2VsbCBhcyB0aGUgJHtjb2RlKCd0aXRsZScpfS48L2xpPlxuICAgIDxsaT5DaGVjayB0aGUgJHtjb2RlKCdkb2N1bWVudERPSScpfSBhbmQgJHtjb2RlKCd0aXRsZScpfSBmb3IgdHlwb3MgYWdhaW5zdCB0aGUgJHtleHRlcm5hbExpbmsoJ2h0dHBzOi8vd3d3Lm1lbmRlbGV5LmNvbScsICdNZW5kZWxleSBjYXRhbG9ndWUnKX0uPC9saT5cbiAgICA8L3VsPmAsXG4gICdzaG91bGQgYmUgbG93ZXIgdGhhbiBtYXggc2l6ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGUgYm91bmRhcnkgb3IgcmVnaW9uIGlzID4ke3BhcmFtcz8uZXhwZWN0ZWR9a20yIGFuZCBpcyB0b28gbGFyZ2UgdG8gcmVsaWFibHkgZ2FwIGZpbGwgTWVhc3VyZW1lbnRzLlxuICAgIElmIHlvdSBhcmUgYWJsZSB0byB1c2UgYSBtb3JlIHNwZWNpZmljIHJlZ2lvbiwgcGxlYXNlIGRvLmAsXG4gICdhbiBleGNyZXRhIGlucHV0IGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgYW4gZXhjcmV0YU1hbmFnZW1lbnQgcHJhY3RpY2UnOiAoeyBkYXRhUGF0aCB9KSA9PiB7XG4gICAgY29uc3QgcGF0aHMgPSBwYXJzZURhdGFQYXRoKGRhdGFQYXRoISk7XG4gICAgcmV0dXJuIGBFeGNyZXRhIG1hbmFnZW1lbnQgaXMgdGhlIGNvbnZlcnNpb24gb2YgZXhjcmV0YSB0byBhbm90aGVyIHR5cGUgb2YgZXhjcmV0YS5cbiAgICAgIFlvdSBoYXZlIGFkZGVkIGFuIGV4Y3JldGFNYW5hZ2VtZW50IFByYWN0aWNlIHRvIHRoaXMgJHtwYXRoc1swXS5sYWJlbH0gYnV0IHRoZXJlIGlzIG5vIGV4Y3JldGEgSW5wdXQuXG4gICAgICBUbyByZXByZXNlbnQgZXhjcmV0YSBtYW5hZ2VtZW50LCB1c2UgYSAke3BhdGhzWzBdLmxhYmVsfSB3aXRoIGV4Y3JldGEgYXMgYW4gSW5wdXQgYW5kIGV4Y3JldGFNYW5hZ2VtZW50IGFzIGEgUHJhY3RpY2UuYDtcbiAgfSxcbiAgJ29ubHkgMSBwcmltYXJ5IHByb2R1Y3QgYWxsb3dlZCc6ICgpID0+ICdUaGVyZSBjYW4gb25seSBiZSBvbmUgcHJpbWFyeSBwcm9kdWN0IGluIGVhY2ggQ3ljbGUuJyxcbiAgJ2lzIG5vdCBhbGxvd2VkIGluIGNvbWJpbmF0aW9uIHdpdGggbm9UaWxsYWdlJzogKCkgPT5cbiAgICBgVGhpcyBvcGVyYXRpb24gaW52b2x2ZXMgdGlsbGFnZSwgeWV0IHlvdSBoYXZlIHNwZWNpZmllZCB0aGUgUHJhY3RpY2UgJHt0ZXJtTGluayhub1RpbGxhZ2UpfS5cbiAgICBFaXRoZXIgY2hhbmdlIHRoaXMgb3BlcmF0aW9uIG9yIHRoZSBQcmFjdGljZS5gLFxuICAnc2hvdWxkIGNvbnRhaW4gYSB0aWxsYWdlIHByYWN0aWNlJzogKCkgPT5cbiAgICBgV2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgdGlsbGFnZSB1c2VkIGZvciB0aGlzIEN5Y2xlLlxuICAgIFBsZWFzZSBzZWUgdGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUudGlsbGFnZSl9IGdsb3NzYXJ5LmAsXG4gICdtdXN0IHNldCB2YWx1ZSBmb3IgZXZlcnkgdGlsbGFnZSBwcmFjdGljZSc6ICgpID0+XG4gICAgYEVpdGhlciBzcGVjaWZ5IGEgc2luZ2xlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUudGlsbGFnZSl9IHByYWN0aWNlIG9yIGFkZCBhIHZhbHVlIHRvIGFsbCBwcmFjdGljZXMuYCxcbiAgJ3N1bSBub3QgZXF1YWwgdG8gMTAwJSBmb3IgdGlsbGFnZSBwcmFjdGljZXMnOiAoKSA9PlxuICAgIGBUaGUgc3VtIG9mICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUudGlsbGFnZSl9IHByYWN0aWNlcyBtdXN0IGVxdWFsIDEwMCUuYCxcbiAgJ2NhbiBvbmx5IGhhdmUgMSB0aWxsYWdlIHByYWN0aWNlIHdpdGhvdXQgYSB2YWx1ZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBJdCBpcyBub3QgcG9zc2libGUgZm9yIGEgQ3ljbGUgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIHRpbGxhZ2UgUHJhY3RpY2VzOlxuICAgICR7KHBhcmFtcz8uY3VycmVudCA/PyBbXSkubWFwKCh7IG5hbWUgfSkgPT4gbmFtZSkuam9pbignIGFuZCAnKX0gYXQgdGhlIHNhbWUgdGltZS5cbiAgICBJZiBtdWx0aXBsZSB0aWxsYWdlIHByYWN0aWNlcyBkaWQgb2NjdXIsIHBsZWFzZSBzcGVjaWZ5IHRoZSBwZXJjZW50YWdlIG9mIGFyZWEgdGhleSBvY2N1cnJlZCBvbi5gLFxuICAnY2FuIG5vdCBiZSBsaW5rZWQgdG8gdGhlIHNhbWUgQ3ljbGUnOiAoKSA9PiAnWW91IGNhbiBub3QgbGluayBhbiBJbnB1dCB0byB0aGUgSW1wYWN0IEFzc2Vzc21lbnQgb2YgdGhlIHNhbWUgQ3ljbGUuJyxcbiAgLy8gZGVwcmVjYXRlZCwgcmVtb3ZlIHdoZW4gbWVzc2FnZSBpcyBub3QgYmVpbmcgdXNlZCBhbnltb3JlXG4gICdtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IGRhdGFQYXRoLCBwYXJhbXMgfSwgZXJyb3JDb3VudCkgPT5cbiAgICBgSWYgdGhlIGFtb3VudCBwcm9kdWNlZCBpcyB6ZXJvLCB0aGUgJHtjb2RlKGRhdGFQYXRoPy5zcGxpdCgnLicpLnBvcCgpISl9IG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ2Vjb25vbWljVmFsdWVTaGFyZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSBlY29ub21pY1ZhbHVlU2hhcmUgb2YgJHtcbiAgICAgIGVycm9yQ291bnQgPT09IDEgPyBjb2RlKHBhcmFtcz8udGVybS5uYW1lKSA6ICd0aGF0IHByb2R1Y3QnXG4gICAgfSBtdXN0IGFsc28gYmUgemVyby5gLFxuICAncmV2ZW51ZSBtdXN0IGJlIDAgZm9yIHByb2R1Y3QgdmFsdWUgMCc6ICh7IHBhcmFtcyB9LCBlcnJvckNvdW50KSA9PlxuICAgIGBJZiB0aGUgYW1vdW50IHByb2R1Y2VkIGlzIHplcm8sIHRoZSByZXZlbnVlIG9mICR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gY29kZShwYXJhbXM/LnRlcm0ubmFtZSkgOiAndGhhdCBwcm9kdWN0J1xuICAgIH0gbXVzdCBhbHNvIGJlIHplcm8uYCxcbiAgJ3Nob3VsZCBhZGQgYSBzb3VyY2UnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgV2UgcmVjb21tZW5kIGFkZGluZyBhIFNvdXJjZSB0byBhbGwgZGF0YSBpdGVtcy5cbiAgICBUaGlzIGNhbiBiZSBkb25lIGJ5IGFkZGluZyB0aGUgJHtjb2RlKHBhcmFtcz8uY3VycmVudCl9IGZpZWxkLlxuICAgIFNvdXJjZXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGZvciBlYWNoIGRhdGEgaXRlbSAoaS5lLiwgZWFjaCBJbnB1dCwgRW1pc3Npb24sIFByb2R1Y3QsIFByYWN0aWNlLCBNZWFzdXJlbWVudCwgb3IgSW5mcmFzdHJ1Y3R1cmUpLmAsXG4gICdjb3ZlciBjcm9wIGN5Y2xlIGNvbnRhaW5zIG5vbiBjb3ZlciBjcm9wIHByb2R1Y3QnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBzcGVjaWZpZWQgdGhhdCB0aGlzIGNyb3AgaXMgYSBjb3ZlciBjcm9wIHVzaW5nIGEgUHJhY3RpY2UuXG4gICAgQSBjb3ZlciBjcm9wIGlzIGRlZmluZWQgYXMgXCJhIGNyb3Agd2hpY2ggaXMgbGVmdCBpbiB0aGUgZmllbGQgd2l0aG91dCBhbnkgZnJhY3Rpb24gaGFydmVzdGVkIGJ5IHRoZSBlbmQgb2YgdGhlIEN5Y2xlXCIuXG4gICAgVGhlIFByb2R1Y3RzIG9mIHRoaXMgQ3ljbGUgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoaXMgY3JvcCBiZWluZyBhIGNvdmVyIGNyb3AuXG4gICAgUGxlYXNlIGNoZWNrIHRoZSBQcm9kdWN0cyBvciB0aGUgUHJhY3RpY2VzLmAsXG4gICdzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGN5Y2xlIHByb2R1Y3RzJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID9cbiAgICAgICAgYFRoZSBQcm9kdWN0ICR7Y29kZShwYXJhbXMucHJvZHVjdC5uYW1lKX0gZG9lcyBub3QgZXhpc3QgaW4gdGhlIEN5Y2xlIHdpdGggaWQgJHtjb2RlKHBhcmFtcy5ub2RlLmlkKX1gIDpcbiAgICAgICAgJ1RoZSBJbXBhY3RBc3Nlc3NtZW50IFByb2R1Y3QgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGxpbmtlZCBDeWNsZSdcbiAgICB9LlxuICAgIFBsZWFzZSBhZGQgdGhlIFByb2R1Y3QgaW4gdGhlIEN5Y2xlIG9yIHJlbW92ZSB0aGUgbGluayB3aXRoIHRoZSBDeWNsZS5gLFxuICAnbXVsdGlwbGUgSW1wYWN0QXNzZXNzbWVudCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIFByb2R1Y3Qgb2YgdGhlIHNhbWUgQ3ljbGUnOiAoKSA9PlxuICAgIGBPbmx5IDEgSW1wYWN0IEFzc2Vzc21lbnQgY2FuIGJlIHJlbGF0ZWQgdG8gdGhpcyBQcm9kdWN0LlxuICAgIFBsZWFzZSBtYWtlIHN1cmUgdGhlIHByb2R1Y3QgaXMgY29ycmVjdCBvciB0aGUgY3ljbGUuaWQgeW91IGFyZSByZWZlcnJpbmcgdG8gaXMgY29ycmVjdC5gLFxuICAnbXVsdGlwbGUgSW1wYWN0QXNzZXNzbWVudCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZHVjdCc6ICgpID0+XG4gICAgYE9ubHkgMSBJbXBhY3QgQXNzZXNzbWVudCBjYW4gYmUgcmVsYXRlZCB0byB0aGlzIFByb2R1Y3QuXG4gICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGUgcHJvZHVjdCBvZiB0aGUgcmVsYXRlZCBJbXBhY3RBc3Nlc3NtZW50cyBhcmUgY29ycmVjdCBvciB0aGUgY3ljbGUuaWQgaXMgY29ycmVjdC5gLFxuICAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbGFuZCBvY2N1cGF0aW9uJzogKCkgPT5cbiAgICBgTGFuZCB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGxhbmQgb2NjdXBhdGlvblxuICAgIChsYW5kIHRyYW5zZm9ybWF0aW9uIGlzIHRoZSBhbW91bnQgb2YgbGFuZCBjb252ZXJ0ZWQgYmV0d2VlbiBzb21lIGRhdGUgaW4gdGhlIHBhc3QgYW5kIHRoZSBjdXJyZW50IHllYXIsXG4gICAgZGl2aWRlZCBieSBhbiBhbW9ydGl6YXRpb24gcGVyaW9kLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIGxlc3MgdGhhbiBsYW5kIG9jY3VwYXRpb24gYnkgZGVmaW5pdGlvbikuYCxcbiAgJ3Nob3VsZCBiZSBsaW5rZWQgdG8gYW4gZW1pc3Npb24gaW4gdGhlIEN5Y2xlJzogKHsgcGFyYW1zIH0sIGVycm9yQ291bnQpID0+XG4gICAgYCR7XG4gICAgICBlcnJvckNvdW50ID09PSAxID8gYCR7Y29kZShwYXJhbXM/LnRlcm0ubmFtZSl9IGV4aXN0c2AgOiAnU29tZSBFbWlzc2lvbnMgZXhpc3QnXG4gICAgfSBpbiBib3RoIHRoZSBDeWNsZSBhbmQgdGhlIFRyYW5zZm9ybWF0aW9uIGJ1dCAke2Vycm9yQ291bnQgPT09IDEgPyAnaXQgaXMnIDogJ3RoZXkgYXJlJ30gbm90IGxpbmtlZCB1c2luZyAke1xuICAgICAgY29kZSgnY3ljbGUuZW1pc3Npb25zLlgudHJhbnNmb3JtYXRpb24udGVybScpXG4gICAgfS4gVGhpcyBtYXkgYmUgYW4gZXJyb3IuYCxcbiAgJ3Nob3VsZCBhZGQgYW4gYW5pbWFsIHByb2R1Y3Rpb24gc3lzdGVtJzogKCkgPT5cbiAgICBgRm9yIGFuaW1hbCBwcm9kdWN0aW9uIGN5Y2xlcywgd2UgcmVjb21tZW5kIHNwZWNpZnlpbmcgdGhlIGFuaW1hbCBwcm9kdWN0aW9uICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuc3lzdGVtKX0gYXMgYSBQcmFjdGljZS5cbiAgICBZb3UgY2FuIGZpbmQgYSBsaXN0IG9mIHN5c3RlbXMgaW4gdGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuc3lzdGVtLCAnR2xvc3NhcnknKX0uYCxcbiAgJ211c3QgYmUgc2V0IHRvIGZhbHNlIHdoZW4gc3BlY2lmeWluZyBmdWVsIHVzZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBJZiBtYWNoaW5lcnkgZnVlbCAoJHtwYXJhbXM/LmFsbG93ZWRWYWx1ZXMubWFwKGNvZGUpLmpvaW4oJywgJyl9KSBpcyB1c2VkIGR1cmluZyBhIEN5Y2xlLFxuICAgIGJ1dCB0aGVyZSBpcyBubyBkYXRhIG9uIHRoZSBhbW91bnQgb2YgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5tYXRlcmlhbCl9IHVzZWQgZm9yIGFncmljdWx0dXJhbCBlcXVpcG1lbnQsXG4gICAgdGhlbiAke2NvZGUoJ2NvbXBsZXRlbmVzcy5tYXRlcmlhbCcpfSBtdXN0IGJlICR7Y29kZSgnZmFsc2UnKX0uYCxcbiAgJ211c3QgYmUgYmVsb3cgb3IgZXF1YWwgdG8gMSBmb3IgdW5pdCBpbiBoYSc6ICgpID0+XG4gICAgYFRoZSBtYXhpbXVtIHZhbHVlIGZvciBhIHByb2R1Y3Qgd2l0aCB1bml0cyAke2NvZGUoJ2hhJyl9IG9uIGEgQ3ljbGUgd2l0aCBhICR7XG4gICAgICBzY2hlbWFMaW5rKCdDeWNsZSNmdW5jdGlvbmFsVW5pdCcsICdmdW5jdGlvbmFsIHVuaXQnKVxuICAgIH0gb2YgJHtjb2RlKCcxIGhhJyl9IGlzICR7Y29kZSgnMScpfS5cbiAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBhZGQgYSBwcm9kdWN0IHdpdGggdGhlIHVuaXRzICR7Y29kZSgna2cnKX0sIHVzZSBhIGRpZmZlcmVudCB0ZXJtLmAsXG4gICdwYXN0dXJlR3Jhc3Mga2V5IHVuaXRzIG11c3QgYmUgXFwnaGFcXCcnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhlIFRlcm0gJHtjb2RlKHBhcmFtcz8udGVybS5uYW1lKX0gY2FuJ3QgYmUgdXNlZCBhcyBhIGtleSBmb3IgJHt0ZXJtTGluayhwYXN0dXJlR3Jhc3MpfS5cbiAgICBQbGVhc2UgdXNlIHRoZSBUZXJtIGRlc2NyaWJpbmcgdGhlIHBsYW50IHdpdGggdGhlIHVuaXRzICR7Y29kZShwYXJhbXMuZXhwZWN0ZWQpfSBpbnN0ZWFkLlxuICAgIFRoaXMgd2lsbCBoZWxwIHVzIGdhcC1maWxsIHRoZSBhbW91bnQgb2YgZ3Jhc3MgY29uc3VtZWQgYnkgdGhlIGhlcmQuYCxcbiAgJ3RoZSBzdW0gb2YgYWxsIHBhc3R1cmVHcmFzcyB2YWx1ZXMgbXVzdCBiZSAxMDAnOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhlIHN1bSBvZiBhbGwgJHt0ZXJtTGluayhwYXN0dXJlR3Jhc3MpfSB2YWx1ZXMgbXVzdCBiZSBlcXVhbCB0byAke3BhcmFtcy5leHBlY3RlZH0lLmAsXG4gICdpcyBvdXRzaWRlIGNvbmZpZGVuY2UgaW50ZXJ2YWwnOiAoX2Vycm9yLCBlcnJvckNvdW50LCBhbGxFcnJvcnMpID0+XG4gICAgYCR7dW5pcXVlKGFsbEVycm9ycy5mbGF0TWFwKCh7IGRhdGFQYXRoLCBwYXJhbXMgfSkgPT4gcGFyYW1zPy5vdXRsaWVycz8ubWFwKHZhbHVlID0+XG4gICAgICBgVGhlICR7XG4gICAgICAgIGRhdGFQYXRoLmluY2x1ZGVzKCdwcm9kdWN0JykgPyAncHJvZHVjdCcgOiAnaW5wdXQnXG4gICAgICB9IHZhbHVlICR7XG4gICAgICAgIGVycm9yQ291bnQgPT09IDEgPyBgJHtjb2RlKHZhbHVlKX0gYCA6ICcnXG4gICAgICB9aXMgJHtcbiAgICAgICAgdmFsdWUgPiBwYXJhbXM/Lm1pbiA/ICdhYm92ZScgOiAnYmVsb3cnXG4gICAgICB9ICR7XG4gICAgICAgIHBhcmFtcz8udGhyZXNob2xkID8gYCR7Y29kZShgJHsocGFyYW1zLnRocmVzaG9sZCArICgoMSAtIHBhcmFtcy50aHJlc2hvbGQpIC8gMikpICogMTAwfSVgKX0gb2ZgIDogJydcbiAgICAgIH0gYWxsICR7XG4gICAgICAgIHBhcmFtcz8uZ3JvdXAgPyBjb2RlKHBhcmFtcy5ncm91cCkgOiBjb2RlKHBhcmFtcz8udGVybT8ubmFtZSlcbiAgICAgIH0gZGF0YSBpbiAke1xuICAgICAgICBjb2RlKHBhcmFtcz8uY291bnRyeS5uYW1lKVxuICAgICAgfSBvbiB0aGUgSGVzdGlhIHBsYXRmb3JtLmBcbiAgICApKSkuam9pbignPC9icj4nKX1cbiAgICA8L2JyPlxuICAgIFBsZWFzZSBkb3VibGUtY2hlY2sgdGhlc2UgdmFsdWVzIGJlZm9yZSBzdWJtaXR0aW5nLmAsXG4gICdzaG91bGQgYmUgZXF1YWwgdG8gYm91bmRhcnknOiAoeyBwYXJhbXMgfSkgPT5cbiAgICBgVGhlIGNhbGN1bGF0ZWQgYXJlYSBmcm9tICR7Y29kZSgnYm91bmRhcnknKX0gaXMgJHtjb2RlKHBhcmFtcz8uZXhwZWN0ZWQpfS5cbiAgICBUaGlzIG1heSBiZSBhbiBlcnJvciBpZiB0aGUgYm91bmRhcnkgcmVwcmVzZW50cyB0aGUgYXJlYSB1bmRlciBjdWx0aXZhdGlvbi5gLFxuICAnbXVzdCBzcGVjaWZ5IHRoZSBmYXRlIG9mIGNyb3BSZXNpZHVlJzogKCkgPT5cbiAgICBgRm9yIHNpdGVzIG9mIHR5cGUgY3JvcGxhbmQgb3IgcGVybWFuZW50IHBhc3R1cmUsIGlmIGRhdGEgY29tcGxldGVuZXNzIGlzIG1hcmtlZCAke2NvZGUodHJ1ZSl9IGZvciBjcm9wIHJlc2lkdWUsIHRoZSBmYXRlcyBhbmQgcXVhbnRpdGllcyBvZiB0aGUgcmVzaWR1ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICA8YnIvPlxuICAgIFRoZSBxdWFudGl0eSBtdXN0IGluY2x1ZGUgYm90aCBhYm92ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSwgd2hlcmUgdGhlIHN1bSBvZiBhYm92ZSBncm91bmQgY3JvcCByZXNpZHVlIGFuZCBiZWxvdyBncm91bmQgY3JvcCByZXNpZHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uXG4gICAgVGhpcyBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIHRlcm1zOlxuICAgIDx1bCBjbGFzcz1cImlzLXBsLTMgaXMtbGlzdC1zdHlsZS1kaXNjIGlzLW5vd3JhcFwiPlxuICAgIDxsaT4ke3Rlcm1MaW5rKHsgaWQ6ICdiZWxvd0dyb3VuZENyb3BSZXNpZHVlJywgbmFtZTogJ0JlbG93IGdyb3VuZCBjcm9wIHJlc2lkdWUnIH0pfTsgYW5kPC9saT5cbiAgICA8bGk+JHt0ZXJtTGluayh7IGlkOiAnYWJvdmVHcm91bmRDcm9wUmVzaWR1ZVRvdGFsJywgbmFtZTogJ0Fib3ZlIGdyb3VuZCBjcm9wIHJlc2lkdWUgdG90YWwnIH0pfS48L2xpPlxuICAgIDwvdWw+XG4gICAgPGJyLz5cbiAgICBUaGUgZmF0ZSBjYW4gYmUgYWRkZWQgdXNpbmc6XG4gICAgPHVsIGNsYXNzPVwiaXMtcGwtMyBpcy1saXN0LXN0eWxlLWRpc2MgaXMtbm93cmFwXCI+XG4gICAgPGxpPnRoZSAke2dsb3NzYXJ5VHlwZUxpbmsoVGVybVRlcm1UeXBlLmNyb3BSZXNpZHVlTWFuYWdlbWVudCl9IHByYWN0aWNlczsgYW5kL29yPC9saT5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWUpfSBwcm9kdWN0czwvbGk+XG4gICAgPC91bD5cbiAgICBgLFxuICAnc2hvdWxkIHNwZWNpZnkgdGhlIGZhdGUgb2YgY3JvcFJlc2lkdWUnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBub3Qgc3BlY2lmaWVkIHRoZSBmYXRlIG9mIHRoZSBjcm9wIHJlc2lkdWUuXG4gICAgQWRkaW5nIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbXByb3ZlIGVtaXNzaW9ucyBhbmQgc29pbCBjYXJib24gc3RvY2sgY2FsY3VsYXRpb25zLlxuICAgIFRoZSBmYXRlIGNhbiBiZSBhZGRlZCB1c2luZzpcbiAgICA8dWwgY2xhc3M9XCJpcy1wbC0zIGlzLWxpc3Qtc3R5bGUtZGlzYyBpcy1ub3dyYXBcIj5cbiAgICA8bGk+dGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuY3JvcFJlc2lkdWVNYW5hZ2VtZW50KX0gcHJhY3RpY2VzOyBhbmQvb3I8L2xpPlxuICAgIDxsaT50aGUgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5jcm9wUmVzaWR1ZSl9IHByb2R1Y3RzOzwvbGk+XG4gICAgPC91bD5cbiAgICBSZW1lbWJlciB0byBzZXQgJHtjb2RlKCdjb21wbGV0ZW5lc3MuY3JvcFJlc2lkdWUnKX0gdG8gJHtjb2RlKHRydWUpfSBpZiBib3RoIHRoZSBhYm92ZSBhbmQgYmVsb3cgZ3JvdW5kIGNyb3AgcmVzaWR1ZSBxdWFudGl0aWVzIGFuZCBmYXRlcyBhcmUgc3BlY2lmaWVkLmAsXG4gICdzaG91bGQgaGF2ZSB0aGUgc2FtZSBwcml2YWN5IGFzIHRoZSByZWxhdGVkIHNvdXJjZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUbyBsaW5rIHRvIGEgJHsocGFyYW1zPy5kZWZhdWx0U291cmNlIHx8IHBhcmFtcz8uc291cmNlKT8uZGF0YVByaXZhdGUgPyAncHJpdmF0ZScgOiAncHVibGljJ30gU291cmNlLFxuICAgIHRoaXMgTm9kZSBuZWVkcyB0byBiZSAkeyhwYXJhbXM/LmRlZmF1bHRTb3VyY2UgfHwgcGFyYW1zPy5zb3VyY2UpPy5kYXRhUHJpdmF0ZSA/ICdwcml2YXRlJyA6ICdwdWJsaWMnfSBhcyB3ZWxsLlxuICAgIFBsZWFzZSBzZXQgJHtjb2RlKCdkYXRhUHJpdmF0ZScpfT0ke2NvZGUoYCR7KHBhcmFtcz8uZGVmYXVsdFNvdXJjZSB8fCBwYXJhbXM/LnNvdXJjZSk/LmRhdGFQcml2YXRlfWApfS5gLFxuICAnc2hvdWxkIG5vdCB1c2Ugbm90IHJlbGV2YW50IG1vZGVsJzogKCkgPT5cbiAgICBgQWxsIGVtaXNzaW9ucyBzaG91bGQgZ2VuZXJhbGx5IGhhdmUgYSBtZXRob2QgdGllciwgd2hpY2ggc3RhdGVzIGhvdyB0aGUgZGF0YSB3ZXJlIG1vZGVsbGVkIG9yIGhvdyB0aGUgZGF0YSB3ZXJlIGNvbGxlY3RlZC5cbiAgICBQbGVhc2Ugc2VlIHRoZSAke3NjaGVtYUxpbmsoJ0VtaXNzaW9uI21ldGhvZFRpZXInLCAnc2NoZW1hJyl9IGZvciB0aGUgb3B0aW9ucyBhdmFpbGFibGUgYW5kIGRlZmluaXRpb25zIG9mIHRoZSBvcHRpb25zLmAsXG4gICdzaG91bGQgbm90IHVzZSBub3QgcmVsZXZhbnQgbWV0aG9kVGllcic6ICgpID0+XG4gICAgYEFsbCBlbWlzc2lvbnMgc2hvdWxkIGdlbmVyYWxseSBoYXZlIGEgbWV0aG9kIHRpZXIsIHdoaWNoIHN0YXRlcyBob3cgdGhlIGRhdGEgd2VyZSBtb2RlbGxlZCBvciBob3cgdGhlIGRhdGEgd2VyZSBjb2xsZWN0ZWQuXG4gICAgUGxlYXNlIHNlZSB0aGUgJHtzY2hlbWFMaW5rKCdFbWlzc2lvbiNtZXRob2RUaWVyJywgJ3NjaGVtYScpfSBmb3IgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGFuZCBkZWZpbml0aW9ucyBvZiB0aGUgb3B0aW9ucy5gLFxuICAnbXVzdCBoYXZlIGlucHV0cyByZXByZXNlbnRpbmcgdGhlIGZvcmFnZSB3aGVuIHNldCB0byB0cnVlJzogKHsgcGFyYW1zIH0pID0+XG4gICAgYFRoaXMgQ3ljbGUgaW5jbHVkZXMgYW5pbWFscyAke1xuICAgICAgcGFyYW1zPy5zaXRlVHlwZSA/IGBvbiAke3BhcmFtcy5zaXRlVHlwZX1gIDogJydcbiAgICB9IGFuZCBjb21wbGV0ZW5lc3MgaXMgc2V0IHRvICR7KGNvZGUodHJ1ZSkpfSBmb3IgJHtjb2RlKCdhbmltYWxGZWVkJyl9LlxuICAgIEhvd2V2ZXIsIHRoZXJlIGFyZSBubyBJbnB1dHMgcmVwcmVzZW50aW5nIHRoZSBmb3JhZ2UgaW50YWtlIGJ5IGFuaW1hbHMgaW4gdGhlIEN5Y2xlIChJbnB1dHMgd2l0aCB0ZXJtcyB3aGljaCBjb250YWluIHRoZSB3b3JkcyBcImZyZXNoIGZvcmFnZVwiIGFuZCBhICR7Y29kZSgndmFsdWUnKX0pLlxuICAgIEVpdGhlciwgc2V0IGNvbXBsZXRlbmVzcyB0byAkeyhjb2RlKGZhbHNlKSl9IGZvciAke2NvZGUoJ2FuaW1hbEZlZWQnKX0sIG1ha2Ugc3VyZSBhbGwgXCJmcmVzaCBmb3JhZ2VcIiBJbnB1dHMgaGF2ZSBhICR7Y29kZSgndmFsdWUnKX0sIG9yIGFkZCBvbmUgb3IgbW9yZSBJbnB1dHMgcmVwcmVzZW50aW5nIHRoZSBmb3JhZ2UgaW50YWtlLmAsXG4gICdtdXN0IHNwZWNpZnkgaXMgaXQgYW4gYW5pbWFsIGZlZWQnOiAoKSA9PlxuICAgIGBUaGlzIEN5Y2xlIGlzIGFuIGFuaW1hbCBwcm9kdWN0aW9uIEN5Y2xlIGFuZCB0aGlzIElucHV0IGNvdWxkIGJlIGFuIGFuaW1hbCBmZWVkIG9yIGNvdWxkIGJlIGZvciBhbm90aGVyIHVzZS5cbiAgICBQbGVhc2Ugc3BlY2lmeSB0aGUgJHtzY2hlbWFMaW5rKCdJbnB1dCNpc0FuaW1hbEZlZWQnLCAnaXNBbmltYWxGZWVkJyl9IGZpZWxkIG9uIHRoaXMgSW5wdXQuXG4gICAgS25vd2luZyB0aGUgZmF0ZSBpcyBlc3NlbnRpYWwgdG8gZGlzdGluZ3Vpc2ggSW5wdXRzIGJldHdlZW4gdGhvc2Ugd2hpY2ggYXJlIGZlZCB0byBhbmltYWxzIGFuZCB0aG9zZSB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuYCxcbiAgJ3Nob3VsZCBzcGVjaWZ5IGEgdHJlYXRtZW50IHdoZW4gZXhwZXJpbWVudERlc2lnbiBpcyBzcGVjaWZpZWQnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBzcGVjaWZpZWQgdGhhdCB0aGlzIFNvdXJjZSB1c2VzIGFuIGV4cGVyaW1lbnRhbCBkZXNpZ24sIGJ1dCBoYXZlIG5vdCBzcGVjaWZpZWQgdGhlIHRyZWF0bWVudCBmb3IgdGhpcyBDeWNsZS5cbiAgICBBZGRpbmcgdGhlIHRyZWF0bWVudCBwcm92aWRlcyBpbXBvcnRhbnQgbWV0YS1kYXRhIGFuZCB3aWxsIGVuYWJsZSBncmVhdGVyIHJlLXVzZSBvZiB0aGVzZSBkYXRhLlxuICAgIEFkZCB0aGUgJHtzY2hlbWFMaW5rKCdDeWNsZSN0cmVhdG1lbnQnLCAndHJlYXRtZW50Jyl9IGZpZWxkIHRvIHRoZSBDeWNsZS5cbiAgICBOb3RlIHRoYXQgdGhlIGZpZWxkICR7c2NoZW1hTGluaygnQ3ljbGUjY29tbWVyY2lhbFByYWN0aWNlVHJlYXRtZW50JywgJ2NvbW1lcmNpYWxQcmFjdGljZVRyZWF0bWVudCcpfSBiZWNvbWVzIHJlcXVpcmVkIGlmIHRyZWF0bWVudCBpcyBzcGVjaWZpZWQuYCxcbiAgJ3Nob3VsZCBub3Qgc3BlY2lmeSBib3RoIGxpdmVBbmltYWwgYW5kIGFuaW1hbFByb2R1Y3QnOiAoKSA9PlxuICAgIGBZb3UgaGF2ZSBhZGRlZCBib3RoIGEgJHtnbG9zc2FyeVR5cGVMaW5rKFRlcm1UZXJtVHlwZS5saXZlQW5pbWFsKX0gYW5kICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUuYW5pbWFsUHJvZHVjdCl9IHRlcm0gYXMgUHJvZHVjdHMuXG4gICAgSWYgdGhlc2UgdGVybXMgcmVmZXIgdG8gdGhlIHNhbWUgYW5pbWFscywgdGhpcyB3aWxsIGxlYWQgdG8gZG91YmxlIGNvdW50aW5nOlxuICAgIGluc3RlYWQgdXNlIGEgUHJvcGVydHkgb24gdGhlICR7Z2xvc3NhcnlUeXBlTGluayhUZXJtVGVybVR5cGUubGl2ZUFuaW1hbCl9IHRlcm0gdG8gZGVmaW5lIHRoZSBxdWFudGl0eSBvZiBsaXZld2VpZ2h0IHBlciBoZWFkLCBjYXJjYXNzIHdlaWdodCBwZXIgaGVhZCwgZXRjLmAsXG4gICdtdXN0IGFkZCBhbiBleGNyZXRhIHByb2R1Y3Qgd2l0aCBhIGxpdmVBbmltYWwgcHJvZHVjdCc6ICgpID0+XG4gICAgYEFuaW1hbCBwcm9kdWN0aW9uIEN5Y2xlcyBjcmVhdGUgZXhjcmV0YS5cbiAgICBUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSAke2NvZGUoVGVybVRlcm1UeXBlLmV4Y3JldGEpfSBwcm9kdWN0IGluIHRoaXMgQ3ljbGUuXG4gICAgUGxlYXNlIGFkZCBhbiAke2NvZGUoVGVybVRlcm1UeXBlLmV4Y3JldGEpfSBQcm9kdWN0IHRvIHRoZSBDeWNsZS5cbiAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IGEgJHtjb2RlKCd2YWx1ZScpfSBmb3IgdGhlIFByb2R1Y3QsIGJ1dCBhZGRpbmcgYSAke2NvZGUoJ3ZhbHVlJyl9IGlzIGRlc2lyYWJsZS5gLFxuICAndmFsdWUgc2hvdWxkIHN1bSB0byAxMDAgb3IgbGVzcyBhY3Jvc3Mgd2F0ZXIgcmVnaW1lIHByYWN0aWNlcyc6ICgpID0+XG4gICAgYFRoZSB0b3RhbCAlIGFyZWEgY292ZXJlZCBieSB0aGUgJHtjb2RlKFRlcm1UZXJtVHlwZS53YXRlclJlZ2ltZSl9IHByYWN0aWNlcyB5b3Ugc3BlY2lmaWVkIGlzIG5vdCBlcXVhbCB0byAke2NvZGUoMTAwKX0uXG4gICAgTWFrZSBzdXJlIHRvIGFkZCBhbnkgbWlzc2luZyBwcmFjdGljZSBpZiBuZWVkZWQgYW5kL29yIGFkanVzdCB0aGUgdmFsdWVzIG9mIHRoZSAke2NvZGUoVGVybVRlcm1UeXBlLndhdGVyUmVnaW1lKX0gcHJhY3RpY2VzIHlvdSBhbHJlYWR5IHJlY29yZGVkLmAsXG4gICdyaWNlIHByb2R1Y3RzIG5vdCBhbGxvd2VkIGZvciB0aGlzIHdhdGVyIHJlZ2ltZSBwcmFjdGljZSc6ICh7IHBhcmFtcyB9KSA9PlxuICAgIGBUaGlzIHByYWN0aWNlIGlzIG5vdCBhbGxvd2VkIHdpdGggdGhlIHByb2R1Y3RzICR7XG4gICAgICBwYXJhbXMucHJvZHVjdHM/Lm1hcChwID0+IGNvZGUocC5uYW1lIHx8IHBbJ0BpZCddKSlcbiAgICB9LlxuICAgIFJlY29yZGluZyB0aGUgcmlnaHQgd2F0ZXIgcmVnaW1lIGZvciByaWNlIGVuc3VyZXMgbWV0aGFuZSBlbWlzc2lvbnMgZnJvbSBmbG9vZGVkIGZpZWxkcyBhcmUgY29ycmVjdGx5IHJlY2FsY3VsYXRlZC5cbiAgICBUbyBmaXggdGhpcyBlcnJvciwgZWl0aGVyIGNoYW5nZSB0aGUgcHJhY3RpY2Ugb3IgdGhlIHByb2R1Y3RzLlxuICAgIGBcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UgPSAobWVzc2FnZT86IHN0cmluZywgZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yLCBhbGxFcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSA9IFtdKSA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlZE1lc3NhZ2UgPSBtZXNzYWdlICYmIG1lc3NhZ2UgaW4gY3VzdG9tRXJyb3JNZXNzYWdlID9cbiAgICBjdXN0b21FcnJvck1lc3NhZ2VbbWVzc2FnZV0oZXJyb3IhLCBhbGxFcnJvcnMubGVuZ3RoLCBhbGxFcnJvcnMpIDpcbiAgICBtZXNzYWdlO1xuICByZXR1cm4gZm9ybWF0dGVkTWVzc2FnZSA/IGA8cCBjbGFzcz1cImlzLW5vcm1hbFwiPiR7Zm9ybWF0dGVkTWVzc2FnZX08L3A+YCA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEVycm9yID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvciwgYWxsRXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10gPSBbXSk6IElWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQgPT5cbiAgZXJyb3JcbiAgICA/ICh7XG4gICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgIC4uLmVycm9yLFxuICAgICAgbWFwRXJyb3I6IGVycm9yLm1lc3NhZ2UgPT09IG1hcEVycm9yTWVzc2FnZSxcbiAgICAgIG1lc3NhZ2U6IGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZShlcnJvci5tZXNzYWdlLCBlcnJvciwgYWxsRXJyb3JzKVxuICAgIH0pXG4gICAgOiB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBlcnJvckhhc0Vycm9yID0gKGVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT4gZXJyb3IgJiYgKGVycm9yLmxldmVsID09PSAnZXJyb3InIHx8ICFlcnJvci5sZXZlbCk7XG5cbmV4cG9ydCBjb25zdCBlcnJvckhhc1dhcm5pbmcgPSAoZXJyb3I/OiBJVmFsaWRhdGlvbkVycm9yKSA9PiBlcnJvciAmJiBlcnJvci5sZXZlbCA9PT0gJ3dhcm5pbmcnO1xuXG5leHBvcnQgY29uc3QgaXNNaXNzaW5nUHJvcGVydHlFcnJvciA9ICh7IHBhcmFtcyB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PiAhIXBhcmFtcyAmJiAnbWlzc2luZ1Byb3BlcnR5JyBpbiBwYXJhbXM7XG5cbmV4cG9ydCBjb25zdCBpc01pc3NpbmdPbmVPZkVycm9yID0gKHsga2V5d29yZCwgc2NoZW1hUGF0aCB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PlxuICBrZXl3b3JkID09PSAncmVxdWlyZWQnICYmIChzY2hlbWFQYXRoIHx8ICcnKS5pbmNsdWRlcygnb25lT2YnKTtcblxuY29uc3QgaXNGYWlsaW5nS2V5d29yZEVycm9yID0gKHsgcGFyYW1zIH06IElWYWxpZGF0aW9uRXJyb3IpID0+ICEhcGFyYW1zICYmICdmYWlsaW5nS2V5d29yZCcgaW4gcGFyYW1zO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyRXJyb3IgPSAoZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IpID0+IFtcbiAgaXNGYWlsaW5nS2V5d29yZEVycm9yXG5dLmV2ZXJ5KGZ1bmMgPT4gIWZ1bmMoZXJyb3IpKTtcblxuZXhwb3J0IGNvbnN0IG1pc3NpbmdOb2RlRXJyb3JzID0gKGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdKSA9PlxuICBlcnJvcnMuZmlsdGVyKCh7IGtleXdvcmQsIHBhcmFtcyB9KSA9PlxuICAgIGtleXdvcmQgPT09ICdyZXF1aXJlZCcgJiYgKHBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5ID09PSAnQHR5cGUnIHx8IHBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5ID09PSAnQGlkJylcbiAgKTtcbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
4
4
|
import { faClone as farClone, faCircle as farCircle, faIdBadge as farIdBadge } from '@fortawesome/free-regular-svg-icons';
|
|
5
|
-
import { faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDotCircle, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faListAlt, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faPlus, faPlusCircle, faSearch, faSeedling, faSortAmountUpAlt, faSpellCheck, faSpinner, faTable, faTimes, faUser } from '@fortawesome/free-solid-svg-icons';
|
|
5
|
+
import { faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDotCircle, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faListAlt, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faMinus, faPlus, faPlusCircle, faSearch, faSeedling, faSortAmountUpAlt, faSpellCheck, faSpinner, faTable, faTimes, faUser } from '@fortawesome/free-solid-svg-icons';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@fortawesome/angular-fontawesome";
|
|
8
8
|
export class HeFontawesomeModule {
|
|
@@ -11,7 +11,7 @@ export class HeFontawesomeModule {
|
|
|
11
11
|
// free-regular
|
|
12
12
|
farClone, farCircle, farIdBadge,
|
|
13
13
|
// free-solid
|
|
14
|
-
faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDotCircle, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faListAlt, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faPlus, faPlusCircle, faSearch, faSeedling, faSortAmountUpAlt, faSpellCheck, faSpinner, faTable, faTimes, faUser);
|
|
14
|
+
faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDotCircle, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faListAlt, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faMinus, faPlus, faPlusCircle, faSearch, faSeedling, faSortAmountUpAlt, faSpellCheck, faSpinner, faTable, faTimes, faUser);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
HeFontawesomeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: HeFontawesomeModule, deps: [{ token: i1.FaIconLibrary }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
|
|
|
31
31
|
]
|
|
32
32
|
}]
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i1.FaIconLibrary }]; } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udGF3ZXNvbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZvbnRhd2Vzb21lL2ZvbnRhd2Vzb21lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sa0NBQWtDLENBQUM7QUFDcEYsT0FBTyxFQUNMLE9BQU8sSUFBSSxRQUFRLEVBQ25CLFFBQVEsSUFBSSxTQUFTLEVBQ3JCLFNBQVMsSUFBSSxVQUFVLEVBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGVBQWUsRUFDZixPQUFPLEVBQ1AsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNiLE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsS0FBSyxFQUNMLFdBQVcsRUFDWCxjQUFjLEVBQ2QsT0FBTyxFQUNQLE1BQU0sRUFDTixZQUFZLEVBQ1osUUFBUSxFQUNSLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFNBQVMsRUFDVCxPQUFPLEVBQ1AsT0FBTyxFQUNQLE1BQU0sRUFDUCxNQUFNLG1DQUFtQyxDQUFDOzs7QUFXM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFZLE9BQXNCO1FBQ2hDLE9BQU8sQ0FBQyxRQUFRO1FBQ2QsZUFBZTtRQUNmLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVTtRQUNWLGFBQWE7UUFDYixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixPQUFPLEVBQ1AsUUFBUSxFQUNSLFdBQVcsRUFDWCxlQUFlLEVBQ2YsT0FBTyxFQUNQLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLGFBQWEsRUFDYixNQUFNLEVBQ04sV0FBVyxFQUNYLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLEtBQUssRUFDTCxXQUFXLEVBQ1gsY0FBYyxFQUNkLE9BQU8sRUFDUCxNQUFNLEVBQ04sWUFBWSxFQUNaLFFBQVEsRUFDUixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7O2dIQXBEVSxtQkFBbUI7aUhBQW5CLG1CQUFtQixZQVA1QixZQUFZO1FBQ1osaUJBQWlCLGFBR2pCLGlCQUFpQjtpSEFHUixtQkFBbUIsWUFQNUIsWUFBWTtRQUNaLGlCQUFpQixFQUdqQixpQkFBaUI7MkZBR1IsbUJBQW1CO2tCQVQvQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjtxQkFDbEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlLCBGYUljb25MaWJyYXJ5IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHtcbiAgZmFDbG9uZSBhcyBmYXJDbG9uZSxcbiAgZmFDaXJjbGUgYXMgZmFyQ2lyY2xlLFxuICBmYUlkQmFkZ2UgYXMgZmFySWRCYWRnZVxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1yZWd1bGFyLXN2Zy1pY29ucyc7XG5pbXBvcnQge1xuICBmYUFuZ2xlRG91YmxlTGVmdCxcbiAgZmFBbmdsZURvdWJsZVJpZ2h0LFxuICBmYUFuZ2xlRG93bixcbiAgZmFBbmdsZUxlZnQsXG4gIGZhQW5nbGVSaWdodCxcbiAgZmFCb29rT3BlbixcbiAgZmFCdWlsZGluZyxcbiAgZmFDYWxjdWxhdG9yLFxuICBmYUNoYXJ0QmFyLFxuICBmYUNoZWNrLFxuICBmYUNpcmNsZSxcbiAgZmFDbGlwYm9hcmQsXG4gIGZhQ2xpcGJvYXJkTGlzdCxcbiAgZmFDbG9uZSxcbiAgZmFDb21tZW50cyxcbiAgZmFEb3dubG9hZCxcbiAgZmFEb3RDaXJjbGUsXG4gIGZhRHJhd1BvbHlnb24sXG4gIGZhRWRpdCxcbiAgZmFFbGxpcHNpc1YsXG4gIGZhRXhjbGFtYXRpb25UcmlhbmdsZSxcbiAgZmFFeHRlcm5hbExpbmtBbHQsXG4gIGZhRmlsdGVyLFxuICBmYUxpc3QsXG4gIGZhTGlzdEFsdCxcbiAgZmFMb25nQXJyb3dBbHREb3duLFxuICBmYUxvbmdBcnJvd0FsdFVwLFxuICBmYUxvbmdBcnJvd0FsdExlZnQsXG4gIGZhTG9uZ0Fycm93QWx0UmlnaHQsXG4gIGZhTWFwLFxuICBmYU1hcE1hcmtlZCxcbiAgZmFNYXBNYXJrZWRBbHQsXG4gIGZhTWludXMsXG4gIGZhUGx1cyxcbiAgZmFQbHVzQ2lyY2xlLFxuICBmYVNlYXJjaCxcbiAgZmFTZWVkbGluZyxcbiAgZmFTb3J0QW1vdW50VXBBbHQsXG4gIGZhU3BlbGxDaGVjayxcbiAgZmFTcGlubmVyLFxuICBmYVRhYmxlLFxuICBmYVRpbWVzLFxuICBmYVVzZXJcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb250QXdlc29tZU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRm9udEF3ZXNvbWVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBIZUZvbnRhd2Vzb21lTW9kdWxlIHtcbiAgY29uc3RydWN0b3IobGlicmFyeTogRmFJY29uTGlicmFyeSkge1xuICAgIGxpYnJhcnkuYWRkSWNvbnMoXG4gICAgICAvLyBmcmVlLXJlZ3VsYXJcbiAgICAgIGZhckNsb25lLFxuICAgICAgZmFyQ2lyY2xlLFxuICAgICAgZmFySWRCYWRnZSxcbiAgICAgIC8vIGZyZWUtc29saWRcbiAgICAgIGZhQW5nbGVEb3VibGVMZWZ0LFxuICAgICAgZmFBbmdsZURvdWJsZVJpZ2h0LFxuICAgICAgZmFBbmdsZURvd24sXG4gICAgICBmYUFuZ2xlTGVmdCxcbiAgICAgIGZhQW5nbGVSaWdodCxcbiAgICAgIGZhQm9va09wZW4sXG4gICAgICBmYUJ1aWxkaW5nLFxuICAgICAgZmFDYWxjdWxhdG9yLFxuICAgICAgZmFDaGFydEJhcixcbiAgICAgIGZhQ2hlY2ssXG4gICAgICBmYUNpcmNsZSxcbiAgICAgIGZhQ2xpcGJvYXJkLFxuICAgICAgZmFDbGlwYm9hcmRMaXN0LFxuICAgICAgZmFDbG9uZSxcbiAgICAgIGZhQ29tbWVudHMsXG4gICAgICBmYURvd25sb2FkLFxuICAgICAgZmFEb3RDaXJjbGUsXG4gICAgICBmYURyYXdQb2x5Z29uLFxuICAgICAgZmFFZGl0LFxuICAgICAgZmFFbGxpcHNpc1YsXG4gICAgICBmYUV4Y2xhbWF0aW9uVHJpYW5nbGUsXG4gICAgICBmYUV4dGVybmFsTGlua0FsdCxcbiAgICAgIGZhRmlsdGVyLFxuICAgICAgZmFMaXN0LFxuICAgICAgZmFMaXN0QWx0LFxuICAgICAgZmFMb25nQXJyb3dBbHREb3duLFxuICAgICAgZmFMb25nQXJyb3dBbHRVcCxcbiAgICAgIGZhTG9uZ0Fycm93QWx0TGVmdCxcbiAgICAgIGZhTG9uZ0Fycm93QWx0UmlnaHQsXG4gICAgICBmYU1hcCxcbiAgICAgIGZhTWFwTWFya2VkLFxuICAgICAgZmFNYXBNYXJrZWRBbHQsXG4gICAgICBmYU1pbnVzLFxuICAgICAgZmFQbHVzLFxuICAgICAgZmFQbHVzQ2lyY2xlLFxuICAgICAgZmFTZWFyY2gsXG4gICAgICBmYVNlZWRsaW5nLFxuICAgICAgZmFTb3J0QW1vdW50VXBBbHQsXG4gICAgICBmYVNwZWxsQ2hlY2ssXG4gICAgICBmYVNwaW5uZXIsXG4gICAgICBmYVRhYmxlLFxuICAgICAgZmFUaW1lcyxcbiAgICAgIGZhVXNlclxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|