@kando-env/kando-ui 1.2.122-alpha.7 → 1.2.122
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/lib/Widgets/Map/Map.js +161 -38
- package/lib/Widgets/Map/areas/AreaPolygon.js +2 -2
- package/lib/Widgets/Map/events/EventIndicator.js +46 -21
- package/lib/Widgets/Map/events/EventIndicatorHover.js +252 -0
- package/lib/Widgets/Map/events/EventPath.js +37 -16
- package/lib/Widgets/Map/events/EventPathHover.js +81 -0
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +117 -3
- package/lib/Widgets/Map/points/PointMarker.js +472 -10
- package/lib/Widgets/Map/points/PointMarkers.js +17 -24
- package/lib/components/Header/Toolbar/Toolbar.js +2 -2
- package/lib/components/SevereEvent/SevereEvent.js +2 -2
- package/lib/hooks/useInitializeHeaders.js +3 -2
- package/lib/i18n/en.json +2 -1
- package/lib/i18n/he.json +1 -0
- package/lib/macros/getVersion.js +2 -2
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +4 -1
- package/lib/pages/EventsPage/events/EventsStyle.scss +0 -1
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +2 -2
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +1 -1
- package/lib/pages/EventsPage/events/events_list/EventsList.js +8 -25
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +2 -2
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +1 -4
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +49 -2
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +8 -25
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +2 -2
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +4 -4
- package/lib/store/permissions/permissionsSlice.js +3 -2
- package/lib/ui-kit/KandoTable/KandoTable.js +5 -5
- package/lib/utilities/urls.js +5 -2
- package/package.json +1 -1
- package/lib/Widgets/Map/MapUtils.js +0 -103
- package/lib/Widgets/Map/events/Event.js +0 -69
- package/lib/Widgets/Map/events/EventUtils.js +0 -245
- package/lib/Widgets/Map/events/PointOfEvent.js +0 -131
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +0 -55
- package/lib/Widgets/Map/events/Snail.js +0 -60
- package/lib/Widgets/Map/points/PointUtils.js +0 -368
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _leafletGeometryutil = require("leaflet-geometryutil");
|
|
13
|
+
|
|
14
|
+
require("leaflet-polylinedecorator");
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _reactRedux = require("react-redux");
|
|
19
|
+
|
|
20
|
+
var _useUpdateEventBodyTail = _interopRequireDefault(require("hooks/useUpdateEventBodyTail"));
|
|
21
|
+
|
|
22
|
+
var _actions = require("store/events/actions");
|
|
23
|
+
|
|
24
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
+
|
|
26
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
+
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
function mapStateToProps(state) {
|
|
30
|
+
var events_data = state.events_data,
|
|
31
|
+
global_data = state.global_data,
|
|
32
|
+
edges_data = state.edges_data;
|
|
33
|
+
return {
|
|
34
|
+
events_data: events_data,
|
|
35
|
+
global_data: global_data,
|
|
36
|
+
edges_data: edges_data
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var EventIndicatorHover = function EventIndicatorHover(props) {
|
|
41
|
+
var L = props.L,
|
|
42
|
+
map = props.map,
|
|
43
|
+
events_data = props.events_data,
|
|
44
|
+
edges_data = props.edges_data,
|
|
45
|
+
global_data = props.global_data;
|
|
46
|
+
var hoveredEvent = events_data.hoveredEvent,
|
|
47
|
+
hoveredEventPaths = events_data.hoveredEventPaths,
|
|
48
|
+
hoveredEventIndicator = events_data.hoveredEventIndicator;
|
|
49
|
+
var dispatch = (0, _reactRedux.useDispatch)();
|
|
50
|
+
var eventParts = [];
|
|
51
|
+
|
|
52
|
+
var removeExistingIndicator = function removeExistingIndicator() {
|
|
53
|
+
if (hoveredEventIndicator) {
|
|
54
|
+
hoveredEventIndicator.eachLayer(function (layer) {
|
|
55
|
+
map.removeLayer(layer);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var makePairs = function makePairs(array) {
|
|
61
|
+
var pairs = [];
|
|
62
|
+
|
|
63
|
+
for (var i = 0; i < array.length; i++) {
|
|
64
|
+
if (i < array.length - 1) {
|
|
65
|
+
pairs.push([array[i], array[i + 1]]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return pairs;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
var calculateBodyAndTail = function calculateBodyAndTail(segment, bodyStart, bodyEnd) {
|
|
73
|
+
var tailPath = [];
|
|
74
|
+
var bodyPath = [];
|
|
75
|
+
var foundBodyStart = false;
|
|
76
|
+
var eventBodyStartMarker = bodyStart._latlng;
|
|
77
|
+
var eventBodyEndMarker = bodyEnd._latlng;
|
|
78
|
+
var subSegments = makePairs(segment._latlngs);
|
|
79
|
+
var shouldContinue = true;
|
|
80
|
+
|
|
81
|
+
for (var i = 0; i < subSegments.length; i++) {
|
|
82
|
+
var foundBodyStartOnCurrentSubSegment = false;
|
|
83
|
+
|
|
84
|
+
if (shouldContinue && !foundBodyStart) {
|
|
85
|
+
// if bodyStartMarker exist on subSegment
|
|
86
|
+
if ((0, _leafletGeometryutil.belongsSegment)(eventBodyStartMarker, subSegments[i][0], subSegments[i][1], 0.0000001)) {
|
|
87
|
+
tailPath.push([subSegments[i][0], eventBodyStartMarker]);
|
|
88
|
+
foundBodyStart = true;
|
|
89
|
+
foundBodyStartOnCurrentSubSegment = true;
|
|
90
|
+
} else {
|
|
91
|
+
tailPath.push([subSegments[i][0], subSegments[i][1]]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (shouldContinue && foundBodyStart) {
|
|
96
|
+
var beginningOfBody = foundBodyStartOnCurrentSubSegment ? eventBodyStartMarker : subSegments[i][0];
|
|
97
|
+
|
|
98
|
+
if ((0, _leafletGeometryutil.belongsSegment)(eventBodyEndMarker, subSegments[i][0], subSegments[i][1], 0.0000001)) {
|
|
99
|
+
bodyPath.push([beginningOfBody, eventBodyEndMarker]);
|
|
100
|
+
shouldContinue = false;
|
|
101
|
+
} else {
|
|
102
|
+
bodyPath.push([beginningOfBody, subSegments[i][1]]);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
tailPath: tailPath,
|
|
109
|
+
bodyPath: bodyPath
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var renderEventIndicator = function renderEventIndicator() {
|
|
114
|
+
if (hoveredEvent !== null && hoveredEvent.path.length >= 1) {
|
|
115
|
+
removeExistingIndicator();
|
|
116
|
+
|
|
117
|
+
for (var i = 0; i < hoveredEvent.path.length; i++) {
|
|
118
|
+
if (hoveredEvent.path[i] !== undefined && hoveredEvent.path[i].event_body_part <= 100 && hoveredEvent.path[i].event_body_part > 0 && hoveredEventPaths[i] !== undefined) {
|
|
119
|
+
var eventBodyStart = L.marker((0, _leafletGeometryutil.interpolateOnLine)(map, hoveredEventPaths[i]._latlngs, hoveredEvent.path[i].event_tail_part / 100).latLng, {
|
|
120
|
+
icon: L.divIcon({
|
|
121
|
+
iconAnchor: [0, 0],
|
|
122
|
+
iconSize: [0, 0]
|
|
123
|
+
}),
|
|
124
|
+
opacity: 0
|
|
125
|
+
}).addTo(map);
|
|
126
|
+
eventBodyStart['kando_object_id'] = hoveredEvent.id;
|
|
127
|
+
eventBodyStart['kando_object'] = 'EventBodyStart';
|
|
128
|
+
var eventBodyEnd = L.marker((0, _leafletGeometryutil.interpolateOnLine)(map, hoveredEventPaths[i]._latlngs, (hoveredEvent.path[i].event_body_part + hoveredEvent.path[i].event_tail_part) / 100).latLng, {
|
|
129
|
+
icon: L.divIcon({
|
|
130
|
+
iconAnchor: [0, 0],
|
|
131
|
+
iconSize: [0, 0]
|
|
132
|
+
}),
|
|
133
|
+
opacity: 0
|
|
134
|
+
}).addTo(map);
|
|
135
|
+
eventBodyEnd['kando_object_id'] = hoveredEvent.id;
|
|
136
|
+
eventBodyEnd['kando_object'] = 'EventBodyEnd';
|
|
137
|
+
var path = calculateBodyAndTail(hoveredEventPaths[i], eventBodyStart, eventBodyEnd);
|
|
138
|
+
var eventTail = L.polyline(path.tailPath, {
|
|
139
|
+
color: '#f50b56',
|
|
140
|
+
weight: 12,
|
|
141
|
+
className: 'event-tail',
|
|
142
|
+
opacity: 0.3
|
|
143
|
+
}).addTo(map);
|
|
144
|
+
eventTail['kando_object_id'] = hoveredEvent.id;
|
|
145
|
+
eventTail['kando_object'] = 'EventTail';
|
|
146
|
+
var eventBody = L.polyline(path.bodyPath, {
|
|
147
|
+
color: '#f50b56',
|
|
148
|
+
weight: 12,
|
|
149
|
+
className: 'event-body'
|
|
150
|
+
}).addTo(map);
|
|
151
|
+
eventBody['kando_object_id'] = hoveredEvent.id;
|
|
152
|
+
eventBody['kando_object'] = 'EventBody';
|
|
153
|
+
eventBody.bringToFront();
|
|
154
|
+
var tailDash = L.polylineDecorator(eventTail._latlngs, {
|
|
155
|
+
patterns: [// defines a pattern of 10px-wide dashes, repeated every 20px on the line
|
|
156
|
+
{
|
|
157
|
+
offset: 15,
|
|
158
|
+
repeat: 25,
|
|
159
|
+
symbol: L.Symbol.arrowHead({
|
|
160
|
+
pixelSize: 3,
|
|
161
|
+
polygon: false,
|
|
162
|
+
pathOptions: {
|
|
163
|
+
stroke: true,
|
|
164
|
+
color: 'rgba(255,255,255,1)',
|
|
165
|
+
weight: 1
|
|
166
|
+
}
|
|
167
|
+
})
|
|
168
|
+
}]
|
|
169
|
+
}).addTo(map);
|
|
170
|
+
tailDash['kando_object'] = 'Decorator';
|
|
171
|
+
var bodyLine = L.polyline(eventBody._latlngs, {
|
|
172
|
+
color: 'rgba(255, 255, 255, .6)',
|
|
173
|
+
weight: 1
|
|
174
|
+
}).addTo(map);
|
|
175
|
+
bodyLine['kando_object'] = 'Decorator';
|
|
176
|
+
var tailLine = L.polyline(eventTail._latlngs, {
|
|
177
|
+
color: 'rgba(255, 255, 255)',
|
|
178
|
+
weight: 1
|
|
179
|
+
}).addTo(map);
|
|
180
|
+
tailLine['kando_object'] = 'Decorator';
|
|
181
|
+
var arrowHead = L.polylineDecorator(eventBody, {
|
|
182
|
+
patterns: [// defines a pattern of 10px-wide dashes, repeated every 20px on the line
|
|
183
|
+
{
|
|
184
|
+
offset: 5,
|
|
185
|
+
repeat: 25,
|
|
186
|
+
symbol: L.Symbol.arrowHead({
|
|
187
|
+
pixelSize: 3,
|
|
188
|
+
polygon: false,
|
|
189
|
+
pathOptions: {
|
|
190
|
+
stroke: true,
|
|
191
|
+
color: 'rgba(255,255,255,1)',
|
|
192
|
+
weight: 1
|
|
193
|
+
}
|
|
194
|
+
})
|
|
195
|
+
}]
|
|
196
|
+
}).addTo(map);
|
|
197
|
+
arrowHead['kando_object'] = 'Decorator';
|
|
198
|
+
eventParts.push(eventBody, eventTail, tailDash, bodyLine, arrowHead, tailLine);
|
|
199
|
+
} else if (hoveredEvent.path[i] !== undefined && hoveredEvent.path[i].event_body_part === 0 && hoveredEvent.path[i].event_tail_part > 0 && hoveredEventPaths[i] !== undefined) {
|
|
200
|
+
var _eventTail = L.polyline(hoveredEventPaths[i]._latlngs, {
|
|
201
|
+
color: '#f50b56',
|
|
202
|
+
weight: 12,
|
|
203
|
+
className: 'event-tail',
|
|
204
|
+
opacity: 0.3
|
|
205
|
+
}).addTo(map);
|
|
206
|
+
|
|
207
|
+
_eventTail['kando_object_id'] = hoveredEvent.id;
|
|
208
|
+
_eventTail['kando_object'] = 'EventTail';
|
|
209
|
+
tailDash = L.polylineDecorator(_eventTail._latlngs, {
|
|
210
|
+
patterns: [// defines a pattern of 10px-wide dashes, repeated every 20px on the line
|
|
211
|
+
{
|
|
212
|
+
offset: 15,
|
|
213
|
+
repeat: 25,
|
|
214
|
+
symbol: L.Symbol.arrowHead({
|
|
215
|
+
pixelSize: 3,
|
|
216
|
+
polygon: false,
|
|
217
|
+
pathOptions: {
|
|
218
|
+
stroke: true,
|
|
219
|
+
color: 'rgba(255,255,255,1)',
|
|
220
|
+
weight: 1
|
|
221
|
+
}
|
|
222
|
+
})
|
|
223
|
+
}]
|
|
224
|
+
}).addTo(map);
|
|
225
|
+
tailDash['kando_object'] = 'Decorator';
|
|
226
|
+
tailLine = L.polyline(_eventTail._latlngs, {
|
|
227
|
+
color: 'rgba(255, 255, 255)',
|
|
228
|
+
weight: 1
|
|
229
|
+
}).addTo(map);
|
|
230
|
+
tailLine['kando_object'] = 'Decorator';
|
|
231
|
+
eventParts.push(_eventTail, tailDash, tailLine);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
dispatch((0, _actions.setHoverEventIndicator)(L.layerGroup(eventParts)));
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
(0, _useUpdateEventBodyTail.default)(hoveredEvent !== null ? global_data.current_time : 0, hoveredEvent, edges_data, true //isHover
|
|
240
|
+
);
|
|
241
|
+
(0, _react.useEffect)(function () {
|
|
242
|
+
if (hoveredEvent && hoveredEventPaths.length !== 0) renderEventIndicator();
|
|
243
|
+
}, [hoveredEvent, hoveredEventPaths]);
|
|
244
|
+
return /*#__PURE__*/_react.default.createElement("div", null);
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
var connector = (0, _reactRedux.connect)(mapStateToProps);
|
|
248
|
+
|
|
249
|
+
var _default = connector(EventIndicatorHover);
|
|
250
|
+
|
|
251
|
+
exports.default = _default;
|
|
252
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvRXZlbnRJbmRpY2F0b3JIb3Zlci50c3giXSwibmFtZXMiOlsibWFwU3RhdGVUb1Byb3BzIiwic3RhdGUiLCJldmVudHNfZGF0YSIsImdsb2JhbF9kYXRhIiwiZWRnZXNfZGF0YSIsIkV2ZW50SW5kaWNhdG9ySG92ZXIiLCJwcm9wcyIsIkwiLCJtYXAiLCJob3ZlcmVkRXZlbnQiLCJob3ZlcmVkRXZlbnRQYXRocyIsImhvdmVyZWRFdmVudEluZGljYXRvciIsImRpc3BhdGNoIiwiZXZlbnRQYXJ0cyIsInJlbW92ZUV4aXN0aW5nSW5kaWNhdG9yIiwiZWFjaExheWVyIiwibGF5ZXIiLCJyZW1vdmVMYXllciIsIm1ha2VQYWlycyIsImFycmF5IiwicGFpcnMiLCJpIiwibGVuZ3RoIiwicHVzaCIsImNhbGN1bGF0ZUJvZHlBbmRUYWlsIiwic2VnbWVudCIsImJvZHlTdGFydCIsImJvZHlFbmQiLCJ0YWlsUGF0aCIsImJvZHlQYXRoIiwiZm91bmRCb2R5U3RhcnQiLCJldmVudEJvZHlTdGFydE1hcmtlciIsIl9sYXRsbmciLCJldmVudEJvZHlFbmRNYXJrZXIiLCJzdWJTZWdtZW50cyIsIl9sYXRsbmdzIiwic2hvdWxkQ29udGludWUiLCJmb3VuZEJvZHlTdGFydE9uQ3VycmVudFN1YlNlZ21lbnQiLCJiZWdpbm5pbmdPZkJvZHkiLCJyZW5kZXJFdmVudEluZGljYXRvciIsInBhdGgiLCJ1bmRlZmluZWQiLCJldmVudF9ib2R5X3BhcnQiLCJldmVudEJvZHlTdGFydCIsIm1hcmtlciIsImV2ZW50X3RhaWxfcGFydCIsImxhdExuZyIsImljb24iLCJkaXZJY29uIiwiaWNvbkFuY2hvciIsImljb25TaXplIiwib3BhY2l0eSIsImFkZFRvIiwiaWQiLCJldmVudEJvZHlFbmQiLCJldmVudFRhaWwiLCJwb2x5bGluZSIsImNvbG9yIiwid2VpZ2h0IiwiY2xhc3NOYW1lIiwiZXZlbnRCb2R5IiwiYnJpbmdUb0Zyb250IiwidGFpbERhc2giLCJwb2x5bGluZURlY29yYXRvciIsInBhdHRlcm5zIiwib2Zmc2V0IiwicmVwZWF0Iiwic3ltYm9sIiwiU3ltYm9sIiwiYXJyb3dIZWFkIiwicGl4ZWxTaXplIiwicG9seWdvbiIsInBhdGhPcHRpb25zIiwic3Ryb2tlIiwiYm9keUxpbmUiLCJ0YWlsTGluZSIsImxheWVyR3JvdXAiLCJjdXJyZW50X3RpbWUiLCJjb25uZWN0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7OztBQVBBO0FBVUEsU0FBU0EsZUFBVCxDQUF5QkMsS0FBekIsRUFBMkM7QUFDekMsTUFBUUMsV0FBUixHQUFpREQsS0FBakQsQ0FBUUMsV0FBUjtBQUFBLE1BQXFCQyxXQUFyQixHQUFpREYsS0FBakQsQ0FBcUJFLFdBQXJCO0FBQUEsTUFBa0NDLFVBQWxDLEdBQWlESCxLQUFqRCxDQUFrQ0csVUFBbEM7QUFFQSxTQUFPO0FBQ0xGLElBQUFBLFdBQVcsRUFBWEEsV0FESztBQUVMQyxJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTEMsSUFBQUEsVUFBVSxFQUFWQTtBQUhLLEdBQVA7QUFLRDs7QUFTRCxJQUFNQyxtQkFBcUMsR0FBRyxTQUF4Q0EsbUJBQXdDLENBQUNDLEtBQUQsRUFBVztBQUN2RCxNQUFRQyxDQUFSLEdBQXlERCxLQUF6RCxDQUFRQyxDQUFSO0FBQUEsTUFBV0MsR0FBWCxHQUF5REYsS0FBekQsQ0FBV0UsR0FBWDtBQUFBLE1BQWdCTixXQUFoQixHQUF5REksS0FBekQsQ0FBZ0JKLFdBQWhCO0FBQUEsTUFBNkJFLFVBQTdCLEdBQXlERSxLQUF6RCxDQUE2QkYsVUFBN0I7QUFBQSxNQUF5Q0QsV0FBekMsR0FBeURHLEtBQXpELENBQXlDSCxXQUF6QztBQUNBLE1BQVFNLFlBQVIsR0FDRVAsV0FERixDQUFRTyxZQUFSO0FBQUEsTUFBc0JDLGlCQUF0QixHQUNFUixXQURGLENBQXNCUSxpQkFBdEI7QUFBQSxNQUF5Q0MscUJBQXpDLEdBQ0VULFdBREYsQ0FBeUNTLHFCQUF6QztBQUVBLE1BQU1DLFFBQVEsR0FBRyw4QkFBakI7QUFDQSxNQUFJQyxVQUFpQixHQUFHLEVBQXhCOztBQUVBLE1BQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBMEIsR0FBTTtBQUNwQyxRQUFJSCxxQkFBSixFQUEyQjtBQUN6QkEsTUFBQUEscUJBQXFCLENBQUNJLFNBQXRCLENBQWdDLFVBQUNDLEtBQUQsRUFBZ0I7QUFDOUNSLFFBQUFBLEdBQUcsQ0FBQ1MsV0FBSixDQUFnQkQsS0FBaEI7QUFDRCxPQUZEO0FBR0Q7QUFDRixHQU5EOztBQVFBLE1BQU1FLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLEtBQUQsRUFBZTtBQUMvQixRQUFJQyxLQUFZLEdBQUcsRUFBbkI7O0FBQ0EsU0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixLQUFLLENBQUNHLE1BQTFCLEVBQWtDRCxDQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFVBQUlBLENBQUMsR0FBR0YsS0FBSyxDQUFDRyxNQUFOLEdBQWUsQ0FBdkIsRUFBMEI7QUFDeEJGLFFBQUFBLEtBQUssQ0FBQ0csSUFBTixDQUFXLENBQUNKLEtBQUssQ0FBQ0UsQ0FBRCxDQUFOLEVBQVdGLEtBQUssQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBaEIsQ0FBWDtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0QsS0FBUDtBQUNELEdBVEQ7O0FBV0EsTUFBTUksb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixDQUFDQyxPQUFELEVBQWVDLFNBQWYsRUFBK0JDLE9BQS9CLEVBQWdEO0FBQzNFLFFBQUlDLFFBQWUsR0FBRyxFQUF0QjtBQUNBLFFBQUlDLFFBQWUsR0FBRyxFQUF0QjtBQUNBLFFBQUlDLGNBQWMsR0FBRyxLQUFyQjtBQUNBLFFBQUlDLG9CQUFvQixHQUFHTCxTQUFTLENBQUNNLE9BQXJDO0FBQ0EsUUFBSUMsa0JBQWtCLEdBQUdOLE9BQU8sQ0FBQ0ssT0FBakM7QUFDQSxRQUFJRSxXQUFXLEdBQUdoQixTQUFTLENBQUNPLE9BQU8sQ0FBQ1UsUUFBVCxDQUEzQjtBQUNBLFFBQUlDLGNBQWMsR0FBRyxJQUFyQjs7QUFFQSxTQUFLLElBQUlmLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdhLFdBQVcsQ0FBQ1osTUFBaEMsRUFBd0NELENBQUMsRUFBekMsRUFBNkM7QUFDM0MsVUFBSWdCLGlDQUFpQyxHQUFHLEtBQXhDOztBQUVBLFVBQUlELGNBQWMsSUFBSSxDQUFDTixjQUF2QixFQUF1QztBQUNyQztBQUVBLFlBQ0UseUNBQ0VDLG9CQURGLEVBRUVHLFdBQVcsQ0FBQ2IsQ0FBRCxDQUFYLENBQWUsQ0FBZixDQUZGLEVBR0VhLFdBQVcsQ0FBQ2IsQ0FBRCxDQUFYLENBQWUsQ0FBZixDQUhGLEVBSUUsU0FKRixDQURGLEVBT0U7QUFDQU8sVUFBQUEsUUFBUSxDQUFDTCxJQUFULENBQWMsQ0FBQ1csV0FBVyxDQUFDYixDQUFELENBQVgsQ0FBZSxDQUFmLENBQUQsRUFBb0JVLG9CQUFwQixDQUFkO0FBRUFELFVBQUFBLGNBQWMsR0FBRyxJQUFqQjtBQUNBTyxVQUFBQSxpQ0FBaUMsR0FBRyxJQUFwQztBQUNELFNBWkQsTUFZTztBQUNMVCxVQUFBQSxRQUFRLENBQUNMLElBQVQsQ0FBYyxDQUFDVyxXQUFXLENBQUNiLENBQUQsQ0FBWCxDQUFlLENBQWYsQ0FBRCxFQUFvQmEsV0FBVyxDQUFDYixDQUFELENBQVgsQ0FBZSxDQUFmLENBQXBCLENBQWQ7QUFDRDtBQUNGOztBQUVELFVBQUllLGNBQWMsSUFBSU4sY0FBdEIsRUFBc0M7QUFDcEMsWUFBSVEsZUFBZSxHQUFHRCxpQ0FBaUMsR0FDbkROLG9CQURtRCxHQUVuREcsV0FBVyxDQUFDYixDQUFELENBQVgsQ0FBZSxDQUFmLENBRko7O0FBSUEsWUFDRSx5Q0FDRVksa0JBREYsRUFFRUMsV0FBVyxDQUFDYixDQUFELENBQVgsQ0FBZSxDQUFmLENBRkYsRUFHRWEsV0FBVyxDQUFDYixDQUFELENBQVgsQ0FBZSxDQUFmLENBSEYsRUFJRSxTQUpGLENBREYsRUFPRTtBQUNBUSxVQUFBQSxRQUFRLENBQUNOLElBQVQsQ0FBYyxDQUFDZSxlQUFELEVBQWtCTCxrQkFBbEIsQ0FBZDtBQUNBRyxVQUFBQSxjQUFjLEdBQUcsS0FBakI7QUFDRCxTQVZELE1BVU87QUFDTFAsVUFBQUEsUUFBUSxDQUFDTixJQUFULENBQWMsQ0FBQ2UsZUFBRCxFQUFrQkosV0FBVyxDQUFDYixDQUFELENBQVgsQ0FBZSxDQUFmLENBQWxCLENBQWQ7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBTztBQUNMTyxNQUFBQSxRQUFRLEVBQUVBLFFBREw7QUFFTEMsTUFBQUEsUUFBUSxFQUFFQTtBQUZMLEtBQVA7QUFJRCxHQXpERDs7QUEyREEsTUFBTVUsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUF1QixHQUFNO0FBQ2pDLFFBQUk5QixZQUFZLEtBQUssSUFBakIsSUFBeUJBLFlBQVksQ0FBQytCLElBQWIsQ0FBa0JsQixNQUFsQixJQUE0QixDQUF6RCxFQUE0RDtBQUMxRFIsTUFBQUEsdUJBQXVCOztBQUN2QixXQUFLLElBQUlPLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdaLFlBQVksQ0FBQytCLElBQWIsQ0FBa0JsQixNQUF0QyxFQUE4Q0QsQ0FBQyxFQUEvQyxFQUFtRDtBQUNqRCxZQUNFWixZQUFZLENBQUMrQixJQUFiLENBQWtCbkIsQ0FBbEIsTUFBeUJvQixTQUF6QixJQUNBaEMsWUFBWSxDQUFDK0IsSUFBYixDQUFrQm5CLENBQWxCLEVBQXFCcUIsZUFBckIsSUFBd0MsR0FEeEMsSUFFQWpDLFlBQVksQ0FBQytCLElBQWIsQ0FBa0JuQixDQUFsQixFQUFxQnFCLGVBQXJCLEdBQXVDLENBRnZDLElBR0FoQyxpQkFBaUIsQ0FBQ1csQ0FBRCxDQUFqQixLQUF5Qm9CLFNBSjNCLEVBS0U7QUFDQSxjQUFJRSxjQUFjLEdBQUdwQyxDQUFDLENBQUNxQyxNQUFGLENBQ25CLDRDQUNFcEMsR0FERixFQUVFRSxpQkFBaUIsQ0FBQ1csQ0FBRCxDQUFqQixDQUFxQmMsUUFGdkIsRUFHRTFCLFlBQVksQ0FBQytCLElBQWIsQ0FBa0JuQixDQUFsQixFQUFxQndCLGVBQXJCLEdBQXVDLEdBSHpDLEVBSUVDLE1BTGlCLEVBTW5CO0FBQ0VDLFlBQUFBLElBQUksRUFBRXhDLENBQUMsQ0FBQ3lDLE9BQUYsQ0FBVTtBQUNkQyxjQUFBQSxVQUFVLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQURFO0FBRWRDLGNBQUFBLFFBQVEsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKO0FBRkksYUFBVixDQURSO0FBS0VDLFlBQUFBLE9BQU8sRUFBRTtBQUxYLFdBTm1CLEVBYW5CQyxLQWJtQixDQWFiNUMsR0FiYSxDQUFyQjtBQWNBbUMsVUFBQUEsY0FBYyxDQUFDLGlCQUFELENBQWQsR0FBb0NsQyxZQUFZLENBQUM0QyxFQUFqRDtBQUNBVixVQUFBQSxjQUFjLENBQUMsY0FBRCxDQUFkLEdBQWlDLGdCQUFqQztBQUVBLGNBQUlXLFlBQVksR0FBRy9DLENBQUMsQ0FBQ3FDLE1BQUYsQ0FDakIsNENBQ0VwQyxHQURGLEVBRUVFLGlCQUFpQixDQUFDVyxDQUFELENBQWpCLENBQXFCYyxRQUZ2QixFQUdFLENBQUMxQixZQUFZLENBQUMrQixJQUFiLENBQWtCbkIsQ0FBbEIsRUFBcUJxQixlQUFyQixHQUNDakMsWUFBWSxDQUFDK0IsSUFBYixDQUFrQm5CLENBQWxCLEVBQXFCd0IsZUFEdkIsSUFFRSxHQUxKLEVBTUVDLE1BUGUsRUFRakI7QUFDRUMsWUFBQUEsSUFBSSxFQUFFeEMsQ0FBQyxDQUFDeUMsT0FBRixDQUFVO0FBQ2RDLGNBQUFBLFVBQVUsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBREU7QUFFZEMsY0FBQUEsUUFBUSxFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUo7QUFGSSxhQUFWLENBRFI7QUFLRUMsWUFBQUEsT0FBTyxFQUFFO0FBTFgsV0FSaUIsRUFlakJDLEtBZmlCLENBZVg1QyxHQWZXLENBQW5CO0FBZ0JBOEMsVUFBQUEsWUFBWSxDQUFDLGlCQUFELENBQVosR0FBa0M3QyxZQUFZLENBQUM0QyxFQUEvQztBQUNBQyxVQUFBQSxZQUFZLENBQUMsY0FBRCxDQUFaLEdBQStCLGNBQS9CO0FBRUEsY0FBSWQsSUFBSSxHQUFHaEIsb0JBQW9CLENBQzdCZCxpQkFBaUIsQ0FBQ1csQ0FBRCxDQURZLEVBRTdCc0IsY0FGNkIsRUFHN0JXLFlBSDZCLENBQS9CO0FBTUEsY0FBSUMsU0FBUyxHQUFHaEQsQ0FBQyxDQUFDaUQsUUFBRixDQUFXaEIsSUFBSSxDQUFDWixRQUFoQixFQUEwQjtBQUN4QzZCLFlBQUFBLEtBQUssRUFBRSxTQURpQztBQUV4Q0MsWUFBQUEsTUFBTSxFQUFFLEVBRmdDO0FBR3hDQyxZQUFBQSxTQUFTLEVBQUUsWUFINkI7QUFJeENSLFlBQUFBLE9BQU8sRUFBRTtBQUorQixXQUExQixFQUtiQyxLQUxhLENBS1A1QyxHQUxPLENBQWhCO0FBTUErQyxVQUFBQSxTQUFTLENBQUMsaUJBQUQsQ0FBVCxHQUErQjlDLFlBQVksQ0FBQzRDLEVBQTVDO0FBQ0FFLFVBQUFBLFNBQVMsQ0FBQyxjQUFELENBQVQsR0FBNEIsV0FBNUI7QUFFQSxjQUFJSyxTQUFTLEdBQUdyRCxDQUFDLENBQUNpRCxRQUFGLENBQVdoQixJQUFJLENBQUNYLFFBQWhCLEVBQTBCO0FBQ3hDNEIsWUFBQUEsS0FBSyxFQUFFLFNBRGlDO0FBRXhDQyxZQUFBQSxNQUFNLEVBQUUsRUFGZ0M7QUFHeENDLFlBQUFBLFNBQVMsRUFBRTtBQUg2QixXQUExQixFQUliUCxLQUphLENBSVA1QyxHQUpPLENBQWhCO0FBS0FvRCxVQUFBQSxTQUFTLENBQUMsaUJBQUQsQ0FBVCxHQUErQm5ELFlBQVksQ0FBQzRDLEVBQTVDO0FBQ0FPLFVBQUFBLFNBQVMsQ0FBQyxjQUFELENBQVQsR0FBNEIsV0FBNUI7QUFDQUEsVUFBQUEsU0FBUyxDQUFDQyxZQUFWO0FBRUEsY0FBSUMsUUFBUSxHQUFHdkQsQ0FBQyxDQUFDd0QsaUJBQUYsQ0FBb0JSLFNBQVMsQ0FBQ3BCLFFBQTlCLEVBQXdDO0FBQ3JENkIsWUFBQUEsUUFBUSxFQUFFLENBQ1I7QUFDQTtBQUNFQyxjQUFBQSxNQUFNLEVBQUUsRUFEVjtBQUVFQyxjQUFBQSxNQUFNLEVBQUUsRUFGVjtBQUdFQyxjQUFBQSxNQUFNLEVBQUU1RCxDQUFDLENBQUM2RCxNQUFGLENBQVNDLFNBQVQsQ0FBbUI7QUFDekJDLGdCQUFBQSxTQUFTLEVBQUUsQ0FEYztBQUV6QkMsZ0JBQUFBLE9BQU8sRUFBRSxLQUZnQjtBQUd6QkMsZ0JBQUFBLFdBQVcsRUFBRTtBQUNYQyxrQkFBQUEsTUFBTSxFQUFFLElBREc7QUFFWGhCLGtCQUFBQSxLQUFLLEVBQUUscUJBRkk7QUFHWEMsa0JBQUFBLE1BQU0sRUFBRTtBQUhHO0FBSFksZUFBbkI7QUFIVixhQUZRO0FBRDJDLFdBQXhDLEVBaUJaTixLQWpCWSxDQWlCTjVDLEdBakJNLENBQWY7QUFrQkFzRCxVQUFBQSxRQUFRLENBQUMsY0FBRCxDQUFSLEdBQTJCLFdBQTNCO0FBRUEsY0FBSVksUUFBUSxHQUFHbkUsQ0FBQyxDQUFDaUQsUUFBRixDQUFXSSxTQUFTLENBQUN6QixRQUFyQixFQUErQjtBQUM1Q3NCLFlBQUFBLEtBQUssRUFBRSx5QkFEcUM7QUFFNUNDLFlBQUFBLE1BQU0sRUFBRTtBQUZvQyxXQUEvQixFQUdaTixLQUhZLENBR041QyxHQUhNLENBQWY7QUFJQWtFLFVBQUFBLFFBQVEsQ0FBQyxjQUFELENBQVIsR0FBMkIsV0FBM0I7QUFFQSxjQUFJQyxRQUFRLEdBQUdwRSxDQUFDLENBQUNpRCxRQUFGLENBQVdELFNBQVMsQ0FBQ3BCLFFBQXJCLEVBQStCO0FBQzVDc0IsWUFBQUEsS0FBSyxFQUFFLHFCQURxQztBQUU1Q0MsWUFBQUEsTUFBTSxFQUFFO0FBRm9DLFdBQS9CLEVBR1pOLEtBSFksQ0FHTjVDLEdBSE0sQ0FBZjtBQUlBbUUsVUFBQUEsUUFBUSxDQUFDLGNBQUQsQ0FBUixHQUEyQixXQUEzQjtBQUVBLGNBQUlOLFNBQVMsR0FBRzlELENBQUMsQ0FBQ3dELGlCQUFGLENBQW9CSCxTQUFwQixFQUErQjtBQUM3Q0ksWUFBQUEsUUFBUSxFQUFFLENBQ1I7QUFDQTtBQUNFQyxjQUFBQSxNQUFNLEVBQUUsQ0FEVjtBQUVFQyxjQUFBQSxNQUFNLEVBQUUsRUFGVjtBQUdFQyxjQUFBQSxNQUFNLEVBQUU1RCxDQUFDLENBQUM2RCxNQUFGLENBQVNDLFNBQVQsQ0FBbUI7QUFDekJDLGdCQUFBQSxTQUFTLEVBQUUsQ0FEYztBQUV6QkMsZ0JBQUFBLE9BQU8sRUFBRSxLQUZnQjtBQUd6QkMsZ0JBQUFBLFdBQVcsRUFBRTtBQUNYQyxrQkFBQUEsTUFBTSxFQUFFLElBREc7QUFFWGhCLGtCQUFBQSxLQUFLLEVBQUUscUJBRkk7QUFHWEMsa0JBQUFBLE1BQU0sRUFBRTtBQUhHO0FBSFksZUFBbkI7QUFIVixhQUZRO0FBRG1DLFdBQS9CLEVBaUJiTixLQWpCYSxDQWlCUDVDLEdBakJPLENBQWhCO0FBa0JBNkQsVUFBQUEsU0FBUyxDQUFDLGNBQUQsQ0FBVCxHQUE0QixXQUE1QjtBQUVBeEQsVUFBQUEsVUFBVSxDQUFDVSxJQUFYLENBQ0VxQyxTQURGLEVBRUVMLFNBRkYsRUFHRU8sUUFIRixFQUlFWSxRQUpGLEVBS0VMLFNBTEYsRUFNRU0sUUFORjtBQVFELFNBOUhELE1BOEhPLElBQ0xsRSxZQUFZLENBQUMrQixJQUFiLENBQWtCbkIsQ0FBbEIsTUFBeUJvQixTQUF6QixJQUNBaEMsWUFBWSxDQUFDK0IsSUFBYixDQUFrQm5CLENBQWxCLEVBQXFCcUIsZUFBckIsS0FBeUMsQ0FEekMsSUFFQWpDLFlBQVksQ0FBQytCLElBQWIsQ0FBa0JuQixDQUFsQixFQUFxQndCLGVBQXJCLEdBQXVDLENBRnZDLElBR0FuQyxpQkFBaUIsQ0FBQ1csQ0FBRCxDQUFqQixLQUF5Qm9CLFNBSnBCLEVBS0w7QUFDQSxjQUFJYyxVQUFTLEdBQUdoRCxDQUFDLENBQUNpRCxRQUFGLENBQVc5QyxpQkFBaUIsQ0FBQ1csQ0FBRCxDQUFqQixDQUFxQmMsUUFBaEMsRUFBMEM7QUFDeERzQixZQUFBQSxLQUFLLEVBQUUsU0FEaUQ7QUFFeERDLFlBQUFBLE1BQU0sRUFBRSxFQUZnRDtBQUd4REMsWUFBQUEsU0FBUyxFQUFFLFlBSDZDO0FBSXhEUixZQUFBQSxPQUFPLEVBQUU7QUFKK0MsV0FBMUMsRUFLYkMsS0FMYSxDQUtQNUMsR0FMTyxDQUFoQjs7QUFPQStDLFVBQUFBLFVBQVMsQ0FBQyxpQkFBRCxDQUFULEdBQStCOUMsWUFBWSxDQUFDNEMsRUFBNUM7QUFDQUUsVUFBQUEsVUFBUyxDQUFDLGNBQUQsQ0FBVCxHQUE0QixXQUE1QjtBQUVBTyxVQUFBQSxRQUFRLEdBQUd2RCxDQUFDLENBQUN3RCxpQkFBRixDQUFvQlIsVUFBUyxDQUFDcEIsUUFBOUIsRUFBd0M7QUFDakQ2QixZQUFBQSxRQUFRLEVBQUUsQ0FDUjtBQUNBO0FBQ0VDLGNBQUFBLE1BQU0sRUFBRSxFQURWO0FBRUVDLGNBQUFBLE1BQU0sRUFBRSxFQUZWO0FBR0VDLGNBQUFBLE1BQU0sRUFBRTVELENBQUMsQ0FBQzZELE1BQUYsQ0FBU0MsU0FBVCxDQUFtQjtBQUN6QkMsZ0JBQUFBLFNBQVMsRUFBRSxDQURjO0FBRXpCQyxnQkFBQUEsT0FBTyxFQUFFLEtBRmdCO0FBR3pCQyxnQkFBQUEsV0FBVyxFQUFFO0FBQ1hDLGtCQUFBQSxNQUFNLEVBQUUsSUFERztBQUVYaEIsa0JBQUFBLEtBQUssRUFBRSxxQkFGSTtBQUdYQyxrQkFBQUEsTUFBTSxFQUFFO0FBSEc7QUFIWSxlQUFuQjtBQUhWLGFBRlE7QUFEdUMsV0FBeEMsRUFpQlJOLEtBakJRLENBaUJGNUMsR0FqQkUsQ0FBWDtBQWtCQXNELFVBQUFBLFFBQVEsQ0FBQyxjQUFELENBQVIsR0FBMkIsV0FBM0I7QUFFQWEsVUFBQUEsUUFBUSxHQUFHcEUsQ0FBQyxDQUFDaUQsUUFBRixDQUFXRCxVQUFTLENBQUNwQixRQUFyQixFQUErQjtBQUN4Q3NCLFlBQUFBLEtBQUssRUFBRSxxQkFEaUM7QUFFeENDLFlBQUFBLE1BQU0sRUFBRTtBQUZnQyxXQUEvQixFQUdSTixLQUhRLENBR0Y1QyxHQUhFLENBQVg7QUFJQW1FLFVBQUFBLFFBQVEsQ0FBQyxjQUFELENBQVIsR0FBMkIsV0FBM0I7QUFFQTlELFVBQUFBLFVBQVUsQ0FBQ1UsSUFBWCxDQUFnQmdDLFVBQWhCLEVBQTJCTyxRQUEzQixFQUFxQ2EsUUFBckM7QUFDRDtBQUNGOztBQUVEL0QsTUFBQUEsUUFBUSxDQUFDLHFDQUF1QkwsQ0FBQyxDQUFDcUUsVUFBRixDQUFhL0QsVUFBYixDQUF2QixDQUFELENBQVI7QUFDRDtBQUNGLEdBbExEOztBQW9MQSx1Q0FDRUosWUFBWSxLQUFLLElBQWpCLEdBQXdCTixXQUFXLENBQUMwRSxZQUFwQyxHQUFtRCxDQURyRCxFQUVFcEUsWUFGRixFQUdFTCxVQUhGLEVBSUUsSUFKRixDQUlRO0FBSlI7QUFPQSx3QkFBVSxZQUFNO0FBQ2QsUUFBSUssWUFBWSxJQUFJQyxpQkFBaUIsQ0FBQ1ksTUFBbEIsS0FBNkIsQ0FBakQsRUFBb0RpQixvQkFBb0I7QUFDekUsR0FGRCxFQUVHLENBQUM5QixZQUFELEVBQWVDLGlCQUFmLENBRkg7QUFJQSxzQkFBTyx5Q0FBUDtBQUNELENBclJEOztBQXVSQSxJQUFNb0UsU0FBUyxHQUFHLHlCQUFROUUsZUFBUixDQUFsQjs7ZUFDZThFLFNBQVMsQ0FBQ3pFLG1CQUFELEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBiZWxvbmdzU2VnbWVudCwgaW50ZXJwb2xhdGVPbkxpbmUgfSBmcm9tICdsZWFmbGV0LWdlb21ldHJ5dXRpbCc7XG5pbXBvcnQgJ2xlYWZsZXQtcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNvbm5lY3QsIENvbm5lY3RlZFByb3BzLCB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB1c2VVcGRhdGVFdmVudEJvZHlUYWlsIGZyb20gJ3NyYy9ob29rcy91c2VVcGRhdGVFdmVudEJvZHlUYWlsJztcbmltcG9ydCB7IElBcHBTdGF0ZSB9IGZyb20gJ3NyYy9tb2RlbHMvSUFwcFN0YXRlJztcbmltcG9ydCB7IHNldEhvdmVyRXZlbnRJbmRpY2F0b3IgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcblxuZnVuY3Rpb24gbWFwU3RhdGVUb1Byb3BzKHN0YXRlOiBJQXBwU3RhdGUpIHtcbiAgY29uc3QgeyBldmVudHNfZGF0YSwgZ2xvYmFsX2RhdGEsIGVkZ2VzX2RhdGEgfSA9IHN0YXRlO1xuXG4gIHJldHVybiB7XG4gICAgZXZlbnRzX2RhdGEsXG4gICAgZ2xvYmFsX2RhdGEsXG4gICAgZWRnZXNfZGF0YSxcbiAgfTtcbn1cblxudHlwZSBJUHJvcHMgPSBDb25uZWN0ZWRQcm9wczx0eXBlb2YgY29ubmVjdG9yPiAmIHtcbiAgTDogYW55O1xuICBtYXA6IGFueTtcbiAgcGF0aHM6IGFueTtcbiAgaG92ZXJlZEV2ZW50OiBJRXZlbnQgfCBudWxsO1xufTtcblxuY29uc3QgRXZlbnRJbmRpY2F0b3JIb3ZlcjogUmVhY3QuRkM8SVByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IEwsIG1hcCwgZXZlbnRzX2RhdGEsIGVkZ2VzX2RhdGEsIGdsb2JhbF9kYXRhIH0gPSBwcm9wcztcbiAgY29uc3QgeyBob3ZlcmVkRXZlbnQsIGhvdmVyZWRFdmVudFBhdGhzLCBob3ZlcmVkRXZlbnRJbmRpY2F0b3IgfSA9XG4gICAgZXZlbnRzX2RhdGE7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgbGV0IGV2ZW50UGFydHM6IGFueVtdID0gW107XG5cbiAgY29uc3QgcmVtb3ZlRXhpc3RpbmdJbmRpY2F0b3IgPSAoKSA9PiB7XG4gICAgaWYgKGhvdmVyZWRFdmVudEluZGljYXRvcikge1xuICAgICAgaG92ZXJlZEV2ZW50SW5kaWNhdG9yLmVhY2hMYXllcigobGF5ZXI6IGFueSkgPT4ge1xuICAgICAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG1ha2VQYWlycyA9IChhcnJheTogW10pID0+IHtcbiAgICBsZXQgcGFpcnM6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGkgPCBhcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgIHBhaXJzLnB1c2goW2FycmF5W2ldLCBhcnJheVtpICsgMV1dKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGFpcnM7XG4gIH07XG5cbiAgY29uc3QgY2FsY3VsYXRlQm9keUFuZFRhaWwgPSAoc2VnbWVudDogYW55LCBib2R5U3RhcnQ6IGFueSwgYm9keUVuZDogYW55KSA9PiB7XG4gICAgbGV0IHRhaWxQYXRoOiBhbnlbXSA9IFtdO1xuICAgIGxldCBib2R5UGF0aDogYW55W10gPSBbXTtcbiAgICBsZXQgZm91bmRCb2R5U3RhcnQgPSBmYWxzZTtcbiAgICBsZXQgZXZlbnRCb2R5U3RhcnRNYXJrZXIgPSBib2R5U3RhcnQuX2xhdGxuZztcbiAgICBsZXQgZXZlbnRCb2R5RW5kTWFya2VyID0gYm9keUVuZC5fbGF0bG5nO1xuICAgIGxldCBzdWJTZWdtZW50cyA9IG1ha2VQYWlycyhzZWdtZW50Ll9sYXRsbmdzKTtcbiAgICBsZXQgc2hvdWxkQ29udGludWUgPSB0cnVlO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJTZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGZvdW5kQm9keVN0YXJ0T25DdXJyZW50U3ViU2VnbWVudCA9IGZhbHNlO1xuXG4gICAgICBpZiAoc2hvdWxkQ29udGludWUgJiYgIWZvdW5kQm9keVN0YXJ0KSB7XG4gICAgICAgIC8vIGlmIGJvZHlTdGFydE1hcmtlciBleGlzdCBvbiBzdWJTZWdtZW50XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGJlbG9uZ3NTZWdtZW50KFxuICAgICAgICAgICAgZXZlbnRCb2R5U3RhcnRNYXJrZXIsXG4gICAgICAgICAgICBzdWJTZWdtZW50c1tpXVswXSxcbiAgICAgICAgICAgIHN1YlNlZ21lbnRzW2ldWzFdLFxuICAgICAgICAgICAgMC4wMDAwMDAxLFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGFpbFBhdGgucHVzaChbc3ViU2VnbWVudHNbaV1bMF0sIGV2ZW50Qm9keVN0YXJ0TWFya2VyXSk7XG5cbiAgICAgICAgICBmb3VuZEJvZHlTdGFydCA9IHRydWU7XG4gICAgICAgICAgZm91bmRCb2R5U3RhcnRPbkN1cnJlbnRTdWJTZWdtZW50ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YWlsUGF0aC5wdXNoKFtzdWJTZWdtZW50c1tpXVswXSwgc3ViU2VnbWVudHNbaV1bMV1dKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkQ29udGludWUgJiYgZm91bmRCb2R5U3RhcnQpIHtcbiAgICAgICAgbGV0IGJlZ2lubmluZ09mQm9keSA9IGZvdW5kQm9keVN0YXJ0T25DdXJyZW50U3ViU2VnbWVudFxuICAgICAgICAgID8gZXZlbnRCb2R5U3RhcnRNYXJrZXJcbiAgICAgICAgICA6IHN1YlNlZ21lbnRzW2ldWzBdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBiZWxvbmdzU2VnbWVudChcbiAgICAgICAgICAgIGV2ZW50Qm9keUVuZE1hcmtlcixcbiAgICAgICAgICAgIHN1YlNlZ21lbnRzW2ldWzBdLFxuICAgICAgICAgICAgc3ViU2VnbWVudHNbaV1bMV0sXG4gICAgICAgICAgICAwLjAwMDAwMDEsXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICBib2R5UGF0aC5wdXNoKFtiZWdpbm5pbmdPZkJvZHksIGV2ZW50Qm9keUVuZE1hcmtlcl0pO1xuICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYm9keVBhdGgucHVzaChbYmVnaW5uaW5nT2ZCb2R5LCBzdWJTZWdtZW50c1tpXVsxXV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhaWxQYXRoOiB0YWlsUGF0aCxcbiAgICAgIGJvZHlQYXRoOiBib2R5UGF0aCxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckV2ZW50SW5kaWNhdG9yID0gKCkgPT4ge1xuICAgIGlmIChob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50LnBhdGgubGVuZ3RoID49IDEpIHtcbiAgICAgIHJlbW92ZUV4aXN0aW5nSW5kaWNhdG9yKCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhvdmVyZWRFdmVudC5wYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBob3ZlcmVkRXZlbnQucGF0aFtpXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgaG92ZXJlZEV2ZW50LnBhdGhbaV0uZXZlbnRfYm9keV9wYXJ0IDw9IDEwMCAmJlxuICAgICAgICAgIGhvdmVyZWRFdmVudC5wYXRoW2ldLmV2ZW50X2JvZHlfcGFydCA+IDAgJiZcbiAgICAgICAgICBob3ZlcmVkRXZlbnRQYXRoc1tpXSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGxldCBldmVudEJvZHlTdGFydCA9IEwubWFya2VyKFxuICAgICAgICAgICAgaW50ZXJwb2xhdGVPbkxpbmUoXG4gICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgICAgaG92ZXJlZEV2ZW50UGF0aHNbaV0uX2xhdGxuZ3MsXG4gICAgICAgICAgICAgIGhvdmVyZWRFdmVudC5wYXRoW2ldLmV2ZW50X3RhaWxfcGFydCAvIDEwMCxcbiAgICAgICAgICAgICkubGF0TG5nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBMLmRpdkljb24oe1xuICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFswLCAwXSxcbiAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKS5hZGRUbyhtYXApO1xuICAgICAgICAgIGV2ZW50Qm9keVN0YXJ0WydrYW5kb19vYmplY3RfaWQnXSA9IGhvdmVyZWRFdmVudC5pZDtcbiAgICAgICAgICBldmVudEJvZHlTdGFydFsna2FuZG9fb2JqZWN0J10gPSAnRXZlbnRCb2R5U3RhcnQnO1xuXG4gICAgICAgICAgbGV0IGV2ZW50Qm9keUVuZCA9IEwubWFya2VyKFxuICAgICAgICAgICAgaW50ZXJwb2xhdGVPbkxpbmUoXG4gICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgICAgaG92ZXJlZEV2ZW50UGF0aHNbaV0uX2xhdGxuZ3MsXG4gICAgICAgICAgICAgIChob3ZlcmVkRXZlbnQucGF0aFtpXS5ldmVudF9ib2R5X3BhcnQgK1xuICAgICAgICAgICAgICAgIGhvdmVyZWRFdmVudC5wYXRoW2ldLmV2ZW50X3RhaWxfcGFydCkgL1xuICAgICAgICAgICAgICAgIDEwMCxcbiAgICAgICAgICAgICkubGF0TG5nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBMLmRpdkljb24oe1xuICAgICAgICAgICAgICAgIGljb25BbmNob3I6IFswLCAwXSxcbiAgICAgICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKS5hZGRUbyhtYXApO1xuICAgICAgICAgIGV2ZW50Qm9keUVuZFsna2FuZG9fb2JqZWN0X2lkJ10gPSBob3ZlcmVkRXZlbnQuaWQ7XG4gICAgICAgICAgZXZlbnRCb2R5RW5kWydrYW5kb19vYmplY3QnXSA9ICdFdmVudEJvZHlFbmQnO1xuXG4gICAgICAgICAgbGV0IHBhdGggPSBjYWxjdWxhdGVCb2R5QW5kVGFpbChcbiAgICAgICAgICAgIGhvdmVyZWRFdmVudFBhdGhzW2ldLFxuICAgICAgICAgICAgZXZlbnRCb2R5U3RhcnQsXG4gICAgICAgICAgICBldmVudEJvZHlFbmQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGxldCBldmVudFRhaWwgPSBMLnBvbHlsaW5lKHBhdGgudGFpbFBhdGgsIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2Y1MGI1NicsXG4gICAgICAgICAgICB3ZWlnaHQ6IDEyLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZXZlbnQtdGFpbCcsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjMsXG4gICAgICAgICAgfSkuYWRkVG8obWFwKTtcbiAgICAgICAgICBldmVudFRhaWxbJ2thbmRvX29iamVjdF9pZCddID0gaG92ZXJlZEV2ZW50LmlkO1xuICAgICAgICAgIGV2ZW50VGFpbFsna2FuZG9fb2JqZWN0J10gPSAnRXZlbnRUYWlsJztcblxuICAgICAgICAgIGxldCBldmVudEJvZHkgPSBMLnBvbHlsaW5lKHBhdGguYm9keVBhdGgsIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2Y1MGI1NicsXG4gICAgICAgICAgICB3ZWlnaHQ6IDEyLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZXZlbnQtYm9keScsXG4gICAgICAgICAgfSkuYWRkVG8obWFwKTtcbiAgICAgICAgICBldmVudEJvZHlbJ2thbmRvX29iamVjdF9pZCddID0gaG92ZXJlZEV2ZW50LmlkO1xuICAgICAgICAgIGV2ZW50Qm9keVsna2FuZG9fb2JqZWN0J10gPSAnRXZlbnRCb2R5JztcbiAgICAgICAgICBldmVudEJvZHkuYnJpbmdUb0Zyb250KCk7XG5cbiAgICAgICAgICB2YXIgdGFpbERhc2ggPSBMLnBvbHlsaW5lRGVjb3JhdG9yKGV2ZW50VGFpbC5fbGF0bG5ncywge1xuICAgICAgICAgICAgcGF0dGVybnM6IFtcbiAgICAgICAgICAgICAgLy8gZGVmaW5lcyBhIHBhdHRlcm4gb2YgMTBweC13aWRlIGRhc2hlcywgcmVwZWF0ZWQgZXZlcnkgMjBweCBvbiB0aGUgbGluZVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxNSxcbiAgICAgICAgICAgICAgICByZXBlYXQ6IDI1LFxuICAgICAgICAgICAgICAgIHN5bWJvbDogTC5TeW1ib2wuYXJyb3dIZWFkKHtcbiAgICAgICAgICAgICAgICAgIHBpeGVsU2l6ZTogMyxcbiAgICAgICAgICAgICAgICAgIHBvbHlnb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgcGF0aE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMSknLFxuICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KS5hZGRUbyhtYXApO1xuICAgICAgICAgIHRhaWxEYXNoWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuXG4gICAgICAgICAgdmFyIGJvZHlMaW5lID0gTC5wb2x5bGluZShldmVudEJvZHkuX2xhdGxuZ3MsIHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAuNiknLFxuICAgICAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICAgIH0pLmFkZFRvKG1hcCk7XG4gICAgICAgICAgYm9keUxpbmVbJ2thbmRvX29iamVjdCddID0gJ0RlY29yYXRvcic7XG5cbiAgICAgICAgICB2YXIgdGFpbExpbmUgPSBMLnBvbHlsaW5lKGV2ZW50VGFpbC5fbGF0bG5ncywge1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUpJyxcbiAgICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICB9KS5hZGRUbyhtYXApO1xuICAgICAgICAgIHRhaWxMaW5lWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuXG4gICAgICAgICAgdmFyIGFycm93SGVhZCA9IEwucG9seWxpbmVEZWNvcmF0b3IoZXZlbnRCb2R5LCB7XG4gICAgICAgICAgICBwYXR0ZXJuczogW1xuICAgICAgICAgICAgICAvLyBkZWZpbmVzIGEgcGF0dGVybiBvZiAxMHB4LXdpZGUgZGFzaGVzLCByZXBlYXRlZCBldmVyeSAyMHB4IG9uIHRoZSBsaW5lXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IDUsXG4gICAgICAgICAgICAgICAgcmVwZWF0OiAyNSxcbiAgICAgICAgICAgICAgICBzeW1ib2w6IEwuU3ltYm9sLmFycm93SGVhZCh7XG4gICAgICAgICAgICAgICAgICBwaXhlbFNpemU6IDMsXG4gICAgICAgICAgICAgICAgICBwb2x5Z29uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHBhdGhPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwyNTUsMjU1LDEpJyxcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSkuYWRkVG8obWFwKTtcbiAgICAgICAgICBhcnJvd0hlYWRbJ2thbmRvX29iamVjdCddID0gJ0RlY29yYXRvcic7XG5cbiAgICAgICAgICBldmVudFBhcnRzLnB1c2goXG4gICAgICAgICAgICBldmVudEJvZHksXG4gICAgICAgICAgICBldmVudFRhaWwsXG4gICAgICAgICAgICB0YWlsRGFzaCxcbiAgICAgICAgICAgIGJvZHlMaW5lLFxuICAgICAgICAgICAgYXJyb3dIZWFkLFxuICAgICAgICAgICAgdGFpbExpbmUsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBob3ZlcmVkRXZlbnQucGF0aFtpXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgaG92ZXJlZEV2ZW50LnBhdGhbaV0uZXZlbnRfYm9keV9wYXJ0ID09PSAwICYmXG4gICAgICAgICAgaG92ZXJlZEV2ZW50LnBhdGhbaV0uZXZlbnRfdGFpbF9wYXJ0ID4gMCAmJlxuICAgICAgICAgIGhvdmVyZWRFdmVudFBhdGhzW2ldICE9PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGV0IGV2ZW50VGFpbCA9IEwucG9seWxpbmUoaG92ZXJlZEV2ZW50UGF0aHNbaV0uX2xhdGxuZ3MsIHtcbiAgICAgICAgICAgIGNvbG9yOiAnI2Y1MGI1NicsXG4gICAgICAgICAgICB3ZWlnaHQ6IDEyLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiAnZXZlbnQtdGFpbCcsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjMsXG4gICAgICAgICAgfSkuYWRkVG8obWFwKTtcblxuICAgICAgICAgIGV2ZW50VGFpbFsna2FuZG9fb2JqZWN0X2lkJ10gPSBob3ZlcmVkRXZlbnQuaWQ7XG4gICAgICAgICAgZXZlbnRUYWlsWydrYW5kb19vYmplY3QnXSA9ICdFdmVudFRhaWwnO1xuXG4gICAgICAgICAgdGFpbERhc2ggPSBMLnBvbHlsaW5lRGVjb3JhdG9yKGV2ZW50VGFpbC5fbGF0bG5ncywge1xuICAgICAgICAgICAgcGF0dGVybnM6IFtcbiAgICAgICAgICAgICAgLy8gZGVmaW5lcyBhIHBhdHRlcm4gb2YgMTBweC13aWRlIGRhc2hlcywgcmVwZWF0ZWQgZXZlcnkgMjBweCBvbiB0aGUgbGluZVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAxNSxcbiAgICAgICAgICAgICAgICByZXBlYXQ6IDI1LFxuICAgICAgICAgICAgICAgIHN5bWJvbDogTC5TeW1ib2wuYXJyb3dIZWFkKHtcbiAgICAgICAgICAgICAgICAgIHBpeGVsU2l6ZTogMyxcbiAgICAgICAgICAgICAgICAgIHBvbHlnb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgcGF0aE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMSknLFxuICAgICAgICAgICAgICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KS5hZGRUbyhtYXApO1xuICAgICAgICAgIHRhaWxEYXNoWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuXG4gICAgICAgICAgdGFpbExpbmUgPSBMLnBvbHlsaW5lKGV2ZW50VGFpbC5fbGF0bG5ncywge1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUpJyxcbiAgICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICB9KS5hZGRUbyhtYXApO1xuICAgICAgICAgIHRhaWxMaW5lWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuXG4gICAgICAgICAgZXZlbnRQYXJ0cy5wdXNoKGV2ZW50VGFpbCwgdGFpbERhc2gsIHRhaWxMaW5lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkaXNwYXRjaChzZXRIb3ZlckV2ZW50SW5kaWNhdG9yKEwubGF5ZXJHcm91cChldmVudFBhcnRzKSkpO1xuICAgIH1cbiAgfTtcblxuICB1c2VVcGRhdGVFdmVudEJvZHlUYWlsKFxuICAgIGhvdmVyZWRFdmVudCAhPT0gbnVsbCA/IGdsb2JhbF9kYXRhLmN1cnJlbnRfdGltZSA6IDAsXG4gICAgaG92ZXJlZEV2ZW50LFxuICAgIGVkZ2VzX2RhdGEsXG4gICAgdHJ1ZSwgLy9pc0hvdmVyXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaG92ZXJlZEV2ZW50ICYmIGhvdmVyZWRFdmVudFBhdGhzLmxlbmd0aCAhPT0gMCkgcmVuZGVyRXZlbnRJbmRpY2F0b3IoKTtcbiAgfSwgW2hvdmVyZWRFdmVudCwgaG92ZXJlZEV2ZW50UGF0aHNdKTtcblxuICByZXR1cm4gPGRpdj48L2Rpdj47XG59O1xuXG5jb25zdCBjb25uZWN0b3IgPSBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcyk7XG5leHBvcnQgZGVmYXVsdCBjb25uZWN0b3IoRXZlbnRJbmRpY2F0b3JIb3Zlcik7XG4iXX0=
|
|
@@ -25,12 +25,18 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
25
25
|
var EventPath = function EventPath(_ref) {
|
|
26
26
|
var event = _ref.event,
|
|
27
27
|
global_data = _ref.global_data,
|
|
28
|
-
_ref$
|
|
29
|
-
|
|
28
|
+
_ref$focusedEvent = _ref.focusedEvent,
|
|
29
|
+
focusedEvent = _ref$focusedEvent === void 0 ? null : _ref$focusedEvent,
|
|
30
|
+
_ref$focusedEventPath = _ref.focusedEventPaths,
|
|
31
|
+
focusedEventPaths = _ref$focusedEventPath === void 0 ? [] : _ref$focusedEventPath,
|
|
32
|
+
_ref$hoveredEvent = _ref.hoveredEvent,
|
|
33
|
+
hoveredEvent = _ref$hoveredEvent === void 0 ? null : _ref$hoveredEvent,
|
|
34
|
+
_ref$hoveredEventPath = _ref.hoveredEventPaths,
|
|
35
|
+
hoveredEventPaths = _ref$hoveredEventPath === void 0 ? [] : _ref$hoveredEventPath;
|
|
30
36
|
var map = global_data.map;
|
|
31
37
|
var dispatch = (0, _reactRedux.useDispatch)();
|
|
32
38
|
|
|
33
|
-
var drawPolyline = function drawPolyline(event, layerLatlngs,
|
|
39
|
+
var drawPolyline = function drawPolyline(event, layerLatlngs, Paths, isHover) {
|
|
34
40
|
var eventPath = _leaflet.default.polyline(layerLatlngs, {
|
|
35
41
|
color: 'rgba(0,0,0,0)',
|
|
36
42
|
weight: 10,
|
|
@@ -38,48 +44,63 @@ var EventPath = function EventPath(_ref) {
|
|
|
38
44
|
stroke: true
|
|
39
45
|
}).addTo(map);
|
|
40
46
|
|
|
41
|
-
|
|
47
|
+
Paths.push(eventPath);
|
|
42
48
|
eventPath['kando_object_id'] = event.id;
|
|
43
49
|
eventPath['kando_object'] = 'EventPath';
|
|
44
50
|
|
|
45
|
-
if (
|
|
46
|
-
dispatch((0, _actions.setHoveredEventPaths)(
|
|
51
|
+
if (isHover) {
|
|
52
|
+
dispatch((0, _actions.setHoveredEventPaths)(Paths));
|
|
47
53
|
} else {
|
|
48
|
-
dispatch((0, _actions.setFocusedEventPaths)(
|
|
54
|
+
dispatch((0, _actions.setFocusedEventPaths)(Paths));
|
|
49
55
|
}
|
|
50
56
|
};
|
|
51
57
|
|
|
52
58
|
var renderEventPath = function renderEventPath(event, isHover) {
|
|
53
59
|
if (map !== undefined) {
|
|
54
|
-
var
|
|
60
|
+
var Paths = [];
|
|
55
61
|
var layers = map._layers;
|
|
56
62
|
event.path.forEach(function (path) {
|
|
57
63
|
for (var property in layers) {
|
|
58
64
|
if (layers[property].kando_object_id !== undefined && layers[property].kando_object_id === path.edge_id && layers[property].kando_object === 'Edge') {
|
|
59
65
|
var layerLatlngs = layers[property].getLatLngs();
|
|
60
|
-
drawPolyline(event, layerLatlngs,
|
|
66
|
+
drawPolyline(event, layerLatlngs, Paths, isHover);
|
|
61
67
|
}
|
|
62
68
|
}
|
|
63
69
|
});
|
|
64
70
|
|
|
65
|
-
if (!isHover &&
|
|
66
|
-
map.fitBounds(_leaflet.default.featureGroup(
|
|
71
|
+
if (!isHover && focusedEventPaths.length === 0 && Paths.length > 0) {
|
|
72
|
+
map.fitBounds(_leaflet.default.featureGroup(Paths).getBounds().pad(0.1));
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
};
|
|
70
76
|
|
|
71
77
|
(0, _react.useEffect)(function () {
|
|
72
78
|
// Cleanup existing paths if necessary
|
|
73
|
-
if (
|
|
74
|
-
|
|
79
|
+
if (focusedEventPaths !== null) {
|
|
80
|
+
focusedEventPaths.forEach(function (path) {
|
|
75
81
|
map.removeLayer(path);
|
|
76
82
|
});
|
|
77
|
-
renderEventPath(event, event.hovered);
|
|
78
83
|
}
|
|
79
|
-
|
|
84
|
+
|
|
85
|
+
if (event.path !== null && focusedEvent !== null) {
|
|
86
|
+
renderEventPath(event, false);
|
|
87
|
+
}
|
|
88
|
+
}, [focusedEvent]);
|
|
89
|
+
(0, _react.useEffect)(function () {
|
|
90
|
+
// Cleanup existing paths if necessary
|
|
91
|
+
if (hoveredEventPaths) {
|
|
92
|
+
hoveredEventPaths.forEach(function (path) {
|
|
93
|
+
map.removeLayer(path);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (event.path !== null && hoveredEvent !== null) {
|
|
98
|
+
renderEventPath(event, true);
|
|
99
|
+
}
|
|
100
|
+
}, [hoveredEvent]);
|
|
80
101
|
return /*#__PURE__*/_react.default.createElement("div", null);
|
|
81
102
|
};
|
|
82
103
|
|
|
83
104
|
var _default = EventPath;
|
|
84
105
|
exports.default = _default;
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvRXZlbnRQYXRoLnRzeCJdLCJuYW1lcyI6WyJFdmVudFBhdGgiLCJldmVudCIsImdsb2JhbF9kYXRhIiwiZm9jdXNlZEV2ZW50IiwiZm9jdXNlZEV2ZW50UGF0aHMiLCJob3ZlcmVkRXZlbnQiLCJob3ZlcmVkRXZlbnRQYXRocyIsIm1hcCIsImRpc3BhdGNoIiwiZHJhd1BvbHlsaW5lIiwibGF5ZXJMYXRsbmdzIiwiUGF0aHMiLCJpc0hvdmVyIiwiZXZlbnRQYXRoIiwiTCIsInBvbHlsaW5lIiwiY29sb3IiLCJ3ZWlnaHQiLCJjbGFzc05hbWUiLCJzdHJva2UiLCJhZGRUbyIsInB1c2giLCJpZCIsInJlbmRlckV2ZW50UGF0aCIsInVuZGVmaW5lZCIsImxheWVycyIsIl9sYXllcnMiLCJwYXRoIiwiZm9yRWFjaCIsInByb3BlcnR5Iiwia2FuZG9fb2JqZWN0X2lkIiwiZWRnZV9pZCIsImthbmRvX29iamVjdCIsImdldExhdExuZ3MiLCJsZW5ndGgiLCJmaXRCb3VuZHMiLCJmZWF0dXJlR3JvdXAiLCJnZXRCb3VuZHMiLCJwYWQiLCJyZW1vdmVMYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBSkE7QUFvQkEsSUFBTUEsU0FBMkIsR0FBRyxTQUE5QkEsU0FBOEIsT0FROUI7QUFBQSxNQVBKQyxLQU9JLFFBUEpBLEtBT0k7QUFBQSxNQU5KQyxXQU1JLFFBTkpBLFdBTUk7QUFBQSwrQkFMSkMsWUFLSTtBQUFBLE1BTEpBLFlBS0ksa0NBTFcsSUFLWDtBQUFBLG1DQUpKQyxpQkFJSTtBQUFBLE1BSkpBLGlCQUlJLHNDQUpnQixFQUloQjtBQUFBLCtCQUZKQyxZQUVJO0FBQUEsTUFGSkEsWUFFSSxrQ0FGVyxJQUVYO0FBQUEsbUNBREpDLGlCQUNJO0FBQUEsTUFESkEsaUJBQ0ksc0NBRGdCLEVBQ2hCO0FBQ0osTUFBUUMsR0FBUixHQUFnQkws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WUFBTTtBQUNkO0FBQ0EsUUFBSUcsaUJBQUosRUFBdUI7QUFDckJBLE1BQUFBLGlCQUFpQixDQUFDc0IsT0FBbEIsQ0FBMEIsVUFBQ0QsSUFBRCxFQUFVO0FBQ2xDcEIsUUFBQUEsR0FBRyxDQUFDZ0MsV0FBSixDQUFnQlosSUFBaEI7QUFDRCxPQUZEO0FBR0Q7O0FBRUQsUUFBSTFCLEtBQUssQ0FBQzBCLElBQU4sS0FBZSxJQUFmLElBQXVCdEIsWUFBWSxLQUFLLElBQTVDLEVBQWtEO0FBQ2hEa0IsTUFBQUEsZUFBZSxDQUFDdEIsS0FBRCxFQUFRLElBQVIsQ0FBZjtBQUNEO0FBQ0YsR0FYRCxFQVdHLENBQUNJLFlBQUQsQ0FYSDtBQWFBLHNCQUFPLHlDQUFQO0FBQ0QsQ0F6RkQ7O2VBMkZlTCxTIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge1xuICBzZXRGb2N1c2VkRXZlbnRQYXRocyxcbiAgc2V0SG92ZXJlZEV2ZW50UGF0aHMsXG59IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvYWN0aW9ucyc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcblxudHlwZSBJUHJvcHMgPSB7XG4gIGV2ZW50OiBJRXZlbnQ7XG4gIGdsb2JhbF9kYXRhOiBJR2xvYmFsU3RhdGU7XG4gIGZvY3VzZWRFdmVudD86IElFdmVudDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50O1xuICBmb2N1c2VkRXZlbnRQYXRocz86IGFueVtdO1xuICBob3ZlcmVkRXZlbnRQYXRocz86IGFueVtdO1xufTtcblxuY29uc3QgRXZlbnRQYXRoOiBSZWFjdC5GQzxJUHJvcHM+ID0gKHtcbiAgZXZlbnQsXG4gIGdsb2JhbF9kYXRhLFxuICBmb2N1c2VkRXZlbnQgPSBudWxsLFxuICBmb2N1c2VkRXZlbnRQYXRocyA9IFtdLFxuXG4gIGhvdmVyZWRFdmVudCA9IG51bGwsXG4gIGhvdmVyZWRFdmVudFBhdGhzID0gW10sXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgZHJhd1BvbHlsaW5lID0gKFxuICAgIGV2ZW50OiBJRXZlbnQsXG4gICAgbGF5ZXJMYXRsbmdzOiBhbnksXG4gICAgUGF0aHM6IGFueSxcbiAgICBpc0hvdmVyOiBib29sZWFuLFxuICApID0+IHtcbiAgICBsZXQgZXZlbnRQYXRoID0gTC5wb2x5bGluZShsYXllckxhdGxuZ3MsIHtcbiAgICAgIGNvbG9yOiAncmdiYSgwLDAsMCwwKScsXG4gICAgICB3ZWlnaHQ6IDEwLFxuICAgICAgY2xhc3NOYW1lOiAnZXZlbnQtcGF0aCcsXG4gICAgICBzdHJva2U6IHRydWUsXG4gICAgfSkuYWRkVG8obWFwKTtcblxuICAgIFBhdGhzLnB1c2goZXZlbnRQYXRoKTtcblxuICAgIGV2ZW50UGF0aFsna2FuZG9fb2JqZWN0X2lkJ10gPSBldmVudC5pZDtcbiAgICBldmVudFBhdGhbJ2thbmRvX29iamVjdCddID0gJ0V2ZW50UGF0aCc7XG4gICAgaWYgKGlzSG92ZXIpIHtcbiAgICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFdmVudFBhdGhzKFBhdGhzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKHNldEZvY3VzZWRFdmVudFBhdGhzKFBhdGhzKSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlbmRlckV2ZW50UGF0aCA9IChldmVudDogSUV2ZW50LCBpc0hvdmVyOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG1hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgUGF0aHM6IGFueVtdID0gW107XG4gICAgICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG5cbiAgICAgIGV2ZW50LnBhdGguZm9yRWFjaCgocGF0aDogYW55KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3RfaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3RfaWQgPT09IHBhdGguZWRnZV9pZCAmJlxuICAgICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdFZGdlJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgbGV0IGxheWVyTGF0bG5ncyA9IGxheWVyc1twcm9wZXJ0eV0uZ2V0TGF0TG5ncygpO1xuXG4gICAgICAgICAgICBkcmF3UG9seWxpbmUoZXZlbnQsIGxheWVyTGF0bG5ncywgUGF0aHMsIGlzSG92ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICghaXNIb3ZlciAmJiBmb2N1c2VkRXZlbnRQYXRocy5sZW5ndGggPT09IDAgJiYgUGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICBtYXAuZml0Qm91bmRzKEwuZmVhdHVyZUdyb3VwKFBhdGhzKS5nZXRCb3VuZHMoKS5wYWQoMC4xKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQ2xlYW51cCBleGlzdGluZyBwYXRocyBpZiBuZWNlc3NhcnlcbiAgICBpZiAoZm9jdXNlZEV2ZW50UGF0aHMgIT09IG51bGwpIHtcbiAgICAgIGZvY3VzZWRFdmVudFBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgbWFwLnJlbW92ZUxheWVyKHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnBhdGggIT09IG51bGwgJiYgZm9jdXNlZEV2ZW50ICE9PSBudWxsKSB7XG4gICAgICByZW5kZXJFdmVudFBhdGgoZXZlbnQsIGZhbHNlKTtcbiAgICB9XG4gIH0sIFtmb2N1c2VkRXZlbnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIENsZWFudXAgZXhpc3RpbmcgcGF0aHMgaWYgbmVjZXNzYXJ5XG4gICAgaWYgKGhvdmVyZWRFdmVudFBhdGhzKSB7XG4gICAgICBob3ZlcmVkRXZlbnRQYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICAgIG1hcC5yZW1vdmVMYXllcihwYXRoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChldmVudC5wYXRoICE9PSBudWxsICYmIGhvdmVyZWRFdmVudCAhPT0gbnVsbCkge1xuICAgICAgcmVuZGVyRXZlbnRQYXRoKGV2ZW50LCB0cnVlKTtcbiAgICB9XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICByZXR1cm4gPGRpdj48L2Rpdj47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudFBhdGg7XG4iXX0=
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _leaflet = _interopRequireDefault(require("leaflet"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _reactRedux = require("react-redux");
|
|
17
|
+
|
|
18
|
+
var _actions = require("store/events/actions");
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
var EventPath = function EventPath(_ref) {
|
|
26
|
+
var event = _ref.event,
|
|
27
|
+
global_data = _ref.global_data,
|
|
28
|
+
_ref$hoveredEvent = _ref.hoveredEvent,
|
|
29
|
+
hoveredEvent = _ref$hoveredEvent === void 0 ? null : _ref$hoveredEvent,
|
|
30
|
+
_ref$hoveredEventPath = _ref.hoveredEventPaths,
|
|
31
|
+
hoveredEventPaths = _ref$hoveredEventPath === void 0 ? [] : _ref$hoveredEventPath;
|
|
32
|
+
var map = global_data.map;
|
|
33
|
+
var dispatch = (0, _reactRedux.useDispatch)();
|
|
34
|
+
|
|
35
|
+
var drawPolyline = function drawPolyline(event, layerLatlngs, Paths, isHover) {
|
|
36
|
+
var eventPath = _leaflet.default.polyline(layerLatlngs, {
|
|
37
|
+
color: 'rgba(0,0,0,0)',
|
|
38
|
+
weight: 10,
|
|
39
|
+
className: 'event-path',
|
|
40
|
+
stroke: true
|
|
41
|
+
}).addTo(map);
|
|
42
|
+
|
|
43
|
+
Paths.push(eventPath);
|
|
44
|
+
eventPath['kando_object_id'] = event.id;
|
|
45
|
+
eventPath['kando_object'] = 'EventPath';
|
|
46
|
+
dispatch((0, _actions.setHoveredEventPaths)(Paths));
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var renderEventPath = function renderEventPath(event, isHover) {
|
|
50
|
+
if (map !== undefined) {
|
|
51
|
+
var Paths = [];
|
|
52
|
+
var layers = map._layers;
|
|
53
|
+
event.path.forEach(function (path) {
|
|
54
|
+
for (var property in layers) {
|
|
55
|
+
if (layers[property].kando_object_id !== undefined && layers[property].kando_object_id === path.edge_id && layers[property].kando_object === 'Edge') {
|
|
56
|
+
var layerLatlngs = layers[property].getLatLngs();
|
|
57
|
+
drawPolyline(event, layerLatlngs, Paths, isHover);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
(0, _react.useEffect)(function () {
|
|
65
|
+
// Cleanup existing paths if necessary
|
|
66
|
+
if (hoveredEventPaths !== null) {
|
|
67
|
+
hoveredEventPaths.forEach(function (path) {
|
|
68
|
+
map.removeLayer(path);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (event.path !== null && hoveredEvent !== null && hoveredEventPaths.length === 0) {
|
|
73
|
+
renderEventPath(event, true);
|
|
74
|
+
}
|
|
75
|
+
}, [hoveredEvent, hoveredEventPaths]);
|
|
76
|
+
return /*#__PURE__*/_react.default.createElement("div", null);
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
var _default = EventPath;
|
|
80
|
+
exports.default = _default;
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvRXZlbnRQYXRoSG92ZXIudHN4Il0sIm5hbWVzIjpbIkV2ZW50UGF0aCIsImV2ZW50IiwiZ2xvYmFsX2RhdGEiLCJob3ZlcmVkRXZlbnQiLCJob3ZlcmVkRXZlbnRQYXRocyIsIm1hcCIsImRpc3BhdGNoIiwiZHJhd1BvbHlsaW5lIiwibGF5ZXJMYXRsbmdzIiwiUGF0aHMiLCJpc0hvdmVyIiwiZXZlbnRQYXRoIiwiTCIsInBvbHlsaW5lIiwiY29sb3IiLCJ3ZWlnaHQiLCJjbGFzc05hbWUiLCJzdHJva2UiLCJhZGRUbyIsInB1c2giLCJpZCIsInJlbmRlckV2ZW50UGF0aCIsInVuZGVmaW5lZCIsImxheWVycyIsIl9sYXllcnMiLCJwYXRoIiwiZm9yRWFjaCIsInByb3BlcnR5Iiwia2FuZG9fb2JqZWN0X2lkIiwiZWRnZV9pZCIsImthbmRvX29iamVjdCIsImdldExhdExuZ3MiLCJyZW1vdmVMYXllciIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBSkE7QUFlQSxJQUFNQSxTQUEyQixHQUFHLFNBQTlCQSxTQUE4QixPQU05QjtBQUFBLE1BTEpDLEtBS0ksUUFMSkEsS0FLSTtBQUFBLE1BSkpDLFdBSUksUUFKSkEsV0FJSTtBQUFBLCtCQUZKQyxZQUVJO0FBQUEsTUFGSkEsWUFFSSxrQ0FGVyxJQUVYO0FBQUEsbUNBREpDLGlCQUNJO0FBQUEsTUFESkEsaUJBQ0ksc0NBRGdCLEVBQ2hCO0FBQ0osTUFBUUMsR0FBUixHQUFnQkgsV0FBaEIsQ0FBUUcsR0FBUjtBQUVBLE1BQU1DLFFBQVEsR0FBRyw4QkFBakI7O0FBRUEsTUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FDbkJOLEtBRG1CLEVBRW5CTyxZQUZtQixFQUduQkMsS0FIbUIsRUFJbkJDLE9BSm1CLEVBS2hCO0FBQ0gsUUFBSUMsU0FBUyxHQUFHQyxpQkFBRUMsUUFBRixDQUFXTCxZQUFYLEVBQXlCO0FBQ3ZDTSxNQUFBQSxLQUFLLEVBQUUsZUFEZ0M7QUFFdkNDLE1BQUFBLE1BQU0sRUFBRSxFQUYrQjtBQUd2Q0MsTUFBQUEsU0FBUyxFQUFFLFlBSDRCO0FBSXZDQyxNQUFBQSxNQUFNLEVBQUU7QUFKK0IsS0FBekIsRUFLYkMsS0FMYSxDQUtQYixHQUxPLENBQWhCOztBQU9BSSxJQUFBQSxLQUFLLENBQUNVLElBQU4sQ0FBV1IsU0FBWDtBQUVBQSxJQUFBQSxTQUFTLENBQUMsaUJBQUQsQ0FBVCxHQUErQlYsS0FBSyxDQUFDbUIsRUFBckM7QUFDQVQsSUFBQUEsU0FBUyxDQUFDLGNBQUQsQ0FBVCxHQUE0QixXQUE1QjtBQUNBTCxJQUFBQSxRQUFRLENBQUMsbUNBQXFCRyxLQUFyQixDQUFELENBQVI7QUFDRCxHQWxCRDs7QUFvQkEsTUFBTVksZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDcEIsS0FBRCxFQUFnQlMsT0FBaEIsRUFBcUM7QUFDM0QsUUFBSUwsR0FBRyxLQUFLaUIsU0FBWixFQUF1QjtBQUNyQixVQUFJYixLQUFZLEdBQUcsRUFBbkI7QUFDQSxVQUFJYyxNQUFNLEdBQUdsQixHQUFHLENBQUNtQixPQUFqQjtBQUVBdkIsTUFBQUEsS0FBSyxDQUFDd0IsSUFBTixDQUFXQyxPQUFYLENBQW1CLFVBQUNELElBQUQsRUFBZTtBQUNoQyxhQUFLLElBQU1FLFFBQVgsSUFBdUJKLE1BQXZCLEVBQStCO0FBQzdCLGNBQ0VBLE1BQU0sQ0FBQ0ksUUFBRCxDQUFOLENBQWlCQyxlQUFqQixLQUFxQ04sU0FBckMsSUFDQUMsTUFBTSxDQUFDSSxRQUFELENBQU4sQ0FBaUJDLGVBQWpCLEtBQXFDSCxJQUFJLENBQUNJLE9BRDFDLElBRUFOLE1BQU0sQ0FBQ0ksUUFBRCxDQUFOLENBQWlCRyxZQUFqQixLQUFrQyxNQUhwQyxFQUlFO0FBQ0EsZ0JBQUl0QixZQUFZLEdBQUdlLE1BQU0sQ0FBQ0ksUUFBRCxDQUFOLENBQWlCSSxVQUFqQixFQUFuQjtBQUVBeEIsWUFBQUEsWUFBWSxDQUFDTixLQUFELEVBQVFPLFlBQVIsRUFBc0JDLEtBQXRCLEVBQTZCQyxPQUE3QixDQUFaO0FBQ0Q7QUFDRjtBQUNGLE9BWkQ7QUFhRDtBQUNGLEdBbkJEOztBQXFCQSx3QkFBVSxZQUFNO0FBQ2Q7QUFDQSxRQUFJTixpQkFBaUIsS0FBSyxJQUExQixFQUFnQztBQUM5QkEsTUFBQUEsaUJBQWlCLENBQUNzQixPQUFsQixDQUEwQixVQUFDRCxJQUFELEVBQVU7QUFDbENwQixRQUFBQSxHQUFHLENBQUMyQixXQUFKLENBQWdCUCxJQUFoQjtBQUNELE9BRkQ7QUFHRDs7QUFFRCxRQUNFeEIsS0FBSyxDQUFDd0IsSUFBTixLQUFlLElBQWYsSUFDQXRCLFlBQVksS0FBSyxJQURqQixJQUVBQyxpQkFBaUIsQ0FBQzZCLE1BQWxCLEtBQTZCLENBSC9CLEVBSUU7QUFDQVosTUFBQUEsZUFBZSxDQUFDcEIsS0FBRCxFQUFRLElBQVIsQ0FBZjtBQUNEO0FBQ0YsR0FmRCxFQWVHLENBQUNFLFlBQUQsRUFBZUMsaUJBQWYsQ0FmSDtBQWlCQSxzQkFBTyx5Q0FBUDtBQUNELENBdEVEOztlQXdFZUosUyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgc2V0SG92ZXJlZEV2ZW50UGF0aHMgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCB7IElHbG9iYWxTdGF0ZSB9IGZyb20gJ3NyYy9zdG9yZS9nbG9iYWwvbW9kZWxzL0lHbG9iYWxTdGF0ZSc7XG5cbnR5cGUgSVByb3BzID0ge1xuICBldmVudDogSUV2ZW50O1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBob3ZlcmVkRXZlbnQ/OiBJRXZlbnQ7XG4gIGhvdmVyZWRFdmVudFBhdGhzPzogYW55W107XG59O1xuXG5jb25zdCBFdmVudFBhdGg6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICBldmVudCxcbiAgZ2xvYmFsX2RhdGEsXG5cbiAgaG92ZXJlZEV2ZW50ID0gbnVsbCxcbiAgaG92ZXJlZEV2ZW50UGF0aHMgPSBbXSxcbn0pID0+IHtcbiAgY29uc3QgeyBtYXAgfSA9IGdsb2JhbF9kYXRhO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICBjb25zdCBkcmF3UG9seWxpbmUgPSAoXG4gICAgZXZlbnQ6IElFdmVudCxcbiAgICBsYXllckxhdGxuZ3M6IGFueSxcbiAgICBQYXRoczogYW55LFxuICAgIGlzSG92ZXI6IGJvb2xlYW4sXG4gICkgPT4ge1xuICAgIGxldCBldmVudFBhdGggPSBMLnBvbHlsaW5lKGxheWVyTGF0bG5ncywge1xuICAgICAgY29sb3I6ICdyZ2JhKDAsMCwwLDApJyxcbiAgICAgIHdlaWdodDogMTAsXG4gICAgICBjbGFzc05hbWU6ICdldmVudC1wYXRoJyxcbiAgICAgIHN0cm9rZTogdHJ1ZSxcbiAgICB9KS5hZGRUbyhtYXApO1xuXG4gICAgUGF0aHMucHVzaChldmVudFBhdGgpO1xuXG4gICAgZXZlbnRQYXRoWydrYW5kb19vYmplY3RfaWQnXSA9IGV2ZW50LmlkO1xuICAgIGV2ZW50UGF0aFsna2FuZG9fb2JqZWN0J10gPSAnRXZlbnRQYXRoJztcbiAgICBkaXNwYXRjaChzZXRIb3ZlcmVkRXZlbnRQYXRocyhQYXRocykpO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckV2ZW50UGF0aCA9IChldmVudDogSUV2ZW50LCBpc0hvdmVyOiBib29sZWFuKSA9PiB7XG4gICAgaWYgKG1hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgUGF0aHM6IGFueVtdID0gW107XG4gICAgICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG5cbiAgICAgIGV2ZW50LnBhdGguZm9yRWFjaCgocGF0aDogYW55KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3RfaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3RfaWQgPT09IHBhdGguZWRnZV9pZCAmJlxuICAgICAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdFZGdlJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgbGV0IGxheWVyTGF0bG5ncyA9IGxheWVyc1twcm9wZXJ0eV0uZ2V0TGF0TG5ncygpO1xuXG4gICAgICAgICAgICBkcmF3UG9seWxpbmUoZXZlbnQsIGxheWVyTGF0bG5ncywgUGF0aHMsIGlzSG92ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQ2xlYW51cCBleGlzdGluZyBwYXRocyBpZiBuZWNlc3NhcnlcbiAgICBpZiAoaG92ZXJlZEV2ZW50UGF0aHMgIT09IG51bGwpIHtcbiAgICAgIGhvdmVyZWRFdmVudFBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgbWFwLnJlbW92ZUxheWVyKHBhdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZXZlbnQucGF0aCAhPT0gbnVsbCAmJlxuICAgICAgaG92ZXJlZEV2ZW50ICE9PSBudWxsICYmXG4gICAgICBob3ZlcmVkRXZlbnRQYXRocy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJlbmRlckV2ZW50UGF0aChldmVudCwgdHJ1ZSk7XG4gICAgfVxuICB9LCBbaG92ZXJlZEV2ZW50LCBob3ZlcmVkRXZlbnRQYXRoc10pO1xuXG4gIHJldHVybiA8ZGl2PjwvZGl2Pjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50UGF0aDtcbiJdfQ==
|