raain-ui 1.0.15
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/README.md +19 -0
- package/RELEASE.md +3 -0
- package/drawers/CartesianDrawer.d.ts +26 -0
- package/drawers/CartesianDrawer.js +73 -0
- package/drawers/CartesianDrawerOptimization.d.ts +10 -0
- package/drawers/CartesianDrawerOptimization.js +42 -0
- package/drawers/CartesianGridValue.d.ts +15 -0
- package/drawers/CartesianGridValue.js +25 -0
- package/drawers/GridValue.d.ts +12 -0
- package/drawers/GridValue.js +75 -0
- package/drawers/PolarDrawer.d.ts +28 -0
- package/drawers/PolarDrawer.js +187 -0
- package/drawers/PolarDrawerOptimization.d.ts +14 -0
- package/drawers/PolarDrawerOptimization.js +54 -0
- package/drawers/PolarGridValue.d.ts +13 -0
- package/drawers/PolarGridValue.js +50 -0
- package/factories/ElementsFactory.d.ts +96 -0
- package/factories/ElementsFactory.js +762 -0
- package/index.d.ts +22 -0
- package/index.js +39 -0
- package/layers/CartesianLayer.d.ts +24 -0
- package/layers/CartesianLayer.js +96 -0
- package/layers/CompositeLayer.d.ts +17 -0
- package/layers/CompositeLayer.js +69 -0
- package/layers/IPixiLayer.d.ts +7 -0
- package/layers/IPixiLayer.js +3 -0
- package/layers/IPixiUniqueLayer.d.ts +8 -0
- package/layers/IPixiUniqueLayer.js +3 -0
- package/layers/MarkersLayer.d.ts +16 -0
- package/layers/MarkersLayer.js +73 -0
- package/layers/PixiGridLayer.d.ts +58 -0
- package/layers/PixiGridLayer.js +188 -0
- package/layers/PolarLayer.d.ts +26 -0
- package/layers/PolarLayer.js +124 -0
- package/layers/PolarLayerConfig.d.ts +9 -0
- package/layers/PolarLayerConfig.js +32 -0
- package/package.json +49 -0
- package/timeframes/FrameContainer.d.ts +9 -0
- package/timeframes/FrameContainer.js +13 -0
- package/timeframes/TimeframeContainer.d.ts +12 -0
- package/timeframes/TimeframeContainer.js +34 -0
- package/timeframes/TimeframeContainers.d.ts +9 -0
- package/timeframes/TimeframeContainers.js +84 -0
- package/tools/CartesianMapValue.d.ts +12 -0
- package/tools/CartesianMapValue.js +25 -0
- package/tools/MapLatLng.d.ts +7 -0
- package/tools/MapLatLng.js +14 -0
- package/tools/MapTools.d.ts +11 -0
- package/tools/MapTools.js +32 -0
- package/tools/PolarMapValue.d.ts +21 -0
- package/tools/PolarMapValue.js +67 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CartesianMapValue = void 0;
|
|
4
|
+
const MapLatLng_1 = require("./MapLatLng");
|
|
5
|
+
class CartesianMapValue extends MapLatLng_1.MapLatLng {
|
|
6
|
+
constructor(value, latitude, longitude, latitude2, longitude2, id, name) {
|
|
7
|
+
super(latitude, longitude, undefined, id, name, value);
|
|
8
|
+
this.latitude = latitude;
|
|
9
|
+
this.longitude = longitude;
|
|
10
|
+
this.latitude2 = latitude2;
|
|
11
|
+
this.longitude2 = longitude2;
|
|
12
|
+
}
|
|
13
|
+
static Duplicate(src) {
|
|
14
|
+
return new CartesianMapValue(src.value, src.latitude, src.longitude, src.latitude2, src.longitude2, src.id, src.name);
|
|
15
|
+
}
|
|
16
|
+
static From(cartesianValues, widthForMap) {
|
|
17
|
+
const cartesianMapValues = [];
|
|
18
|
+
cartesianValues.forEach(cartesianValue => {
|
|
19
|
+
cartesianMapValues.push(new CartesianMapValue(cartesianValue.value, cartesianValue.lat, cartesianValue.lng, cartesianValue.lat + widthForMap.lat, cartesianValue.lng + widthForMap.lng));
|
|
20
|
+
});
|
|
21
|
+
return cartesianMapValues;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.CartesianMapValue = CartesianMapValue;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FydGVzaWFuTWFwVmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvQ2FydGVzaWFuTWFwVmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMkNBQXNDO0FBRXRDLE1BQWEsaUJBQWtCLFNBQVEscUJBQVM7SUFFNUMsWUFDSSxLQUFhLEVBQ0csUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsU0FBa0IsRUFDbEIsVUFBbUIsRUFDbkMsRUFBVyxFQUNYLElBQWE7UUFFYixLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQVB2QyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFTO0lBS3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQXNCO1FBQzFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FDeEIsR0FBRyxDQUFDLEtBQUssRUFDVCxHQUFHLENBQUMsUUFBUSxFQUNaLEdBQUcsQ0FBQyxTQUFTLEVBQ2IsR0FBRyxDQUFDLFNBQVMsRUFDYixHQUFHLENBQUMsVUFBVSxFQUNkLEdBQUcsQ0FBQyxFQUFFLEVBQ04sR0FBRyxDQUFDLElBQUksQ0FDWCxDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBaUMsRUFBRSxXQUFtQjtRQUNyRSxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM5QixlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3JDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUN6QyxjQUFjLENBQUMsS0FBSyxFQUNwQixjQUFjLENBQUMsR0FBRyxFQUNsQixjQUFjLENBQUMsR0FBRyxFQUNsQixjQUFjLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQ3BDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FDdkMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGtCQUFrQixDQUFDO0lBQzlCLENBQUM7Q0FFSjtBQXhDRCw4Q0F3Q0MifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapLatLng = void 0;
|
|
4
|
+
const leaflet_1 = require("leaflet");
|
|
5
|
+
class MapLatLng extends leaflet_1.LatLng {
|
|
6
|
+
constructor(lat, lng, alt, id, name, value) {
|
|
7
|
+
super(lat, lng, alt);
|
|
8
|
+
this.id = id;
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.value = value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.MapLatLng = MapLatLng;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwTGF0TG5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL01hcExhdExuZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBK0I7QUFFL0IsTUFBYSxTQUFVLFNBQVEsZ0JBQU07SUFFakMsWUFDSSxHQUFXLEVBQ1gsR0FBVyxFQUNYLEdBQVksRUFDSSxFQUFXLEVBQ1gsSUFBYSxFQUNiLEtBQWM7UUFDOUIsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFITCxPQUFFLEdBQUYsRUFBRSxDQUFTO1FBQ1gsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNiLFVBQUssR0FBTCxLQUFLLENBQVM7SUFFbEMsQ0FBQztDQUVKO0FBWkQsOEJBWUMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LatLng, Point } from 'leaflet';
|
|
2
|
+
import { PolarMapValue } from './PolarMapValue';
|
|
3
|
+
import { CartesianMapValue } from './CartesianMapValue';
|
|
4
|
+
export declare class MapTools {
|
|
5
|
+
static getPolarDistanceRatio(centerPoint: Point, lastGeoValue: PolarMapValue, polarMap2Point: (pv: PolarMapValue) => Point): number;
|
|
6
|
+
static getCartesianDistanceRatio(center: LatLng, geoValues: CartesianMapValue[], cartesianMap2Points: (mapValue: CartesianMapValue) => {
|
|
7
|
+
p1: Point;
|
|
8
|
+
p2: Point;
|
|
9
|
+
}): number;
|
|
10
|
+
static hexStringToNumber(hexString: string): number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapTools = void 0;
|
|
4
|
+
const PolarMapValue_1 = require("./PolarMapValue");
|
|
5
|
+
const CartesianMapValue_1 = require("./CartesianMapValue");
|
|
6
|
+
class MapTools {
|
|
7
|
+
static getPolarDistanceRatio(centerPoint, lastGeoValue, polarMap2Point) {
|
|
8
|
+
const lastGeoValueDuplicated = PolarMapValue_1.PolarMapValue.Duplicate(lastGeoValue);
|
|
9
|
+
// const firstGeoValue = PolarMapValue.Duplicate(geoValues[0]);
|
|
10
|
+
// const centerPoint = polarMap2Point(firstGeoValue);
|
|
11
|
+
const lastPoint = polarMap2Point(lastGeoValueDuplicated);
|
|
12
|
+
return Math.sqrt(Math.pow(centerPoint.x - lastPoint.x, 2) + Math.pow(centerPoint.y - lastPoint.y, 2)) / lastGeoValueDuplicated.polarDistanceInMeters;
|
|
13
|
+
}
|
|
14
|
+
static getCartesianDistanceRatio(center, geoValues, cartesianMap2Points) {
|
|
15
|
+
if (geoValues.length <= 1) {
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
const centerIntermediate = new CartesianMapValue_1.CartesianMapValue(0, center.lat, center.lng, 0, 0);
|
|
19
|
+
const centerPoint = cartesianMap2Points(centerIntermediate).p1;
|
|
20
|
+
const lastGeoValue = geoValues[geoValues.length - 1];
|
|
21
|
+
const distanceInMeters = lastGeoValue.distanceTo(center);
|
|
22
|
+
const points = cartesianMap2Points(lastGeoValue);
|
|
23
|
+
return Math.sqrt(Math.pow(centerPoint.x - points.p1.x, 2) + Math.pow(centerPoint.y - points.p1.y, 2)) / distanceInMeters;
|
|
24
|
+
}
|
|
25
|
+
static hexStringToNumber(hexString) {
|
|
26
|
+
const hex = hexString.substring(1, 3) + hexString.substring(3, 5) + hexString.substring(5, 7);
|
|
27
|
+
// console.log('hex:', hex);
|
|
28
|
+
return parseInt(hex, 16);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.MapTools = MapTools;
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvTWFwVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQThDO0FBQzlDLDJEQUFzRDtBQUV0RCxNQUFhLFFBQVE7SUFFakIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFdBQWtCLEVBQ2xCLFlBQTJCLEVBQzNCLGNBQTRDO1FBRXJFLE1BQU0sc0JBQXNCLEdBQUcsNkJBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUsK0RBQStEO1FBQy9ELHFEQUFxRDtRQUNyRCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLEdBQUcsc0JBQXNCLENBQUMscUJBQXFCLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxNQUFjLEVBQ2QsU0FBOEIsRUFDOUIsbUJBR0M7UUFDOUIsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUN2QixPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHFDQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBRS9ELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDdEYsR0FBRyxnQkFBZ0IsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlGLDRCQUE0QjtRQUM1QixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNKO0FBekNELDRCQXlDQyJ9
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MeasureValuePolarContainer } from 'raain-model';
|
|
2
|
+
import { MapLatLng } from './MapLatLng';
|
|
3
|
+
export declare class PolarMapValue extends MapLatLng {
|
|
4
|
+
polarAzimuthInDegrees: number;
|
|
5
|
+
polarDistanceInMeters: number;
|
|
6
|
+
altitude?: number;
|
|
7
|
+
private center;
|
|
8
|
+
constructor(value: number, polarAzimuthInDegrees: number, polarDistanceInMeters: number, altitude?: number, id?: string, name?: string);
|
|
9
|
+
static Duplicate(src: PolarMapValue): PolarMapValue;
|
|
10
|
+
static from(measureValuePolarContainers: MeasureValuePolarContainer[]): PolarMapValue[];
|
|
11
|
+
private static GetLatLngFromPolar;
|
|
12
|
+
setCenter(center: {
|
|
13
|
+
latitude: number;
|
|
14
|
+
longitude: number;
|
|
15
|
+
}): void;
|
|
16
|
+
setPolarAzimuthInDegrees(polarAzimuthInDegrees: number): void;
|
|
17
|
+
setPolarDistanceInMeters(polarDistanceInMeters: number): void;
|
|
18
|
+
getLatitude(): number;
|
|
19
|
+
getLongitude(): number;
|
|
20
|
+
private setLatLngConsistentWithPolar;
|
|
21
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PolarMapValue = void 0;
|
|
4
|
+
const leaflet_1 = require("leaflet");
|
|
5
|
+
const geolib_1 = require("geolib");
|
|
6
|
+
const MapLatLng_1 = require("./MapLatLng");
|
|
7
|
+
class PolarMapValue extends MapLatLng_1.MapLatLng {
|
|
8
|
+
constructor(value, polarAzimuthInDegrees, polarDistanceInMeters, altitude, id, name) {
|
|
9
|
+
super(0, 0, altitude, id, name, value);
|
|
10
|
+
this.polarAzimuthInDegrees = polarAzimuthInDegrees;
|
|
11
|
+
this.polarDistanceInMeters = polarDistanceInMeters;
|
|
12
|
+
this.altitude = altitude;
|
|
13
|
+
this.center = new leaflet_1.LatLng(0, 0);
|
|
14
|
+
this.setLatLngConsistentWithPolar();
|
|
15
|
+
}
|
|
16
|
+
static Duplicate(src) {
|
|
17
|
+
const value = new PolarMapValue(src.value, src.polarAzimuthInDegrees, src.polarDistanceInMeters, src.altitude, src.id, src.name);
|
|
18
|
+
value.setCenter({ latitude: src.center.lat, longitude: src.center.lng });
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
static from(measureValuePolarContainers) {
|
|
22
|
+
const polarMapValues = [];
|
|
23
|
+
measureValuePolarContainers.forEach(measureValuePolarContainer => {
|
|
24
|
+
measureValuePolarContainer.polarEdges.forEach((edge, index) => {
|
|
25
|
+
polarMapValues.push(new PolarMapValue(edge, measureValuePolarContainer.azimuth, measureValuePolarContainer.distance * (index + 1)));
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
return polarMapValues;
|
|
29
|
+
}
|
|
30
|
+
static GetLatLngFromPolar(center, polarAzimuthInDegrees, polarDistanceInMeters) {
|
|
31
|
+
const dest = (0, geolib_1.computeDestinationPoint)(center, polarDistanceInMeters, polarAzimuthInDegrees);
|
|
32
|
+
return {
|
|
33
|
+
lat: dest.latitude,
|
|
34
|
+
lng: dest.longitude
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
setCenter(center) {
|
|
38
|
+
this.center = new leaflet_1.LatLng(center.latitude, center.longitude);
|
|
39
|
+
this.setLatLngConsistentWithPolar();
|
|
40
|
+
}
|
|
41
|
+
setPolarAzimuthInDegrees(polarAzimuthInDegrees) {
|
|
42
|
+
this.polarAzimuthInDegrees = polarAzimuthInDegrees;
|
|
43
|
+
this.setLatLngConsistentWithPolar();
|
|
44
|
+
}
|
|
45
|
+
setPolarDistanceInMeters(polarDistanceInMeters) {
|
|
46
|
+
this.polarDistanceInMeters = polarDistanceInMeters;
|
|
47
|
+
this.setLatLngConsistentWithPolar();
|
|
48
|
+
}
|
|
49
|
+
getLatitude() {
|
|
50
|
+
this.setLatLngConsistentWithPolar();
|
|
51
|
+
return this.lat;
|
|
52
|
+
}
|
|
53
|
+
getLongitude() {
|
|
54
|
+
this.setLatLngConsistentWithPolar();
|
|
55
|
+
return this.lng;
|
|
56
|
+
}
|
|
57
|
+
setLatLngConsistentWithPolar() {
|
|
58
|
+
if (this.center.lat === 0 && this.center.lng === 0) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const latLng = PolarMapValue.GetLatLngFromPolar(this.center, this.polarAzimuthInDegrees, this.polarDistanceInMeters);
|
|
62
|
+
this.lat = latLng.lat;
|
|
63
|
+
this.lng = latLng.lng;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.PolarMapValue = PolarMapValue;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9sYXJNYXBWYWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9Qb2xhck1hcFZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUErQjtBQUMvQixtQ0FBK0M7QUFFL0MsMkNBQXNDO0FBRXRDLE1BQWEsYUFBYyxTQUFRLHFCQUFTO0lBSXhDLFlBQ0ksS0FBYSxFQUNOLHFCQUE2QixFQUM3QixxQkFBNkIsRUFDN0IsUUFBaUIsRUFDeEIsRUFBVyxFQUNYLElBQWE7UUFFYixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQU5oQywwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFLeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQWtCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUMzQixHQUFHLENBQUMsS0FBSyxFQUNULEdBQUcsQ0FBQyxxQkFBcUIsRUFDekIsR0FBRyxDQUFDLHFCQUFxQixFQUN6QixHQUFHLENBQUMsUUFBUSxFQUNaLEdBQUcsQ0FBQyxFQUFFLEVBQ04sR0FBRyxDQUFDLElBQUksQ0FDWCxDQUFDO1FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFF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
|