@rfprodz/client-d3-charts 1.3.1 → 1.3.2
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.
|
@@ -208,7 +208,10 @@ const onMouseOver = (self, d, g, config) => {
|
|
|
208
208
|
.style('font-size', '11px')
|
|
209
209
|
.attr('dx', () => (config.width - config.margin.left - config.margin.right) / tooltipShift)
|
|
210
210
|
.attr('dy', () => tooltipDy)
|
|
211
|
-
.text(() => `${d.value} (${new Date(d.timestamp).toUTCString()})`)
|
|
211
|
+
.text(() => `${d.value} (${new Date(d.timestamp).toUTCString()})`)
|
|
212
|
+
.transition()
|
|
213
|
+
.duration(config.transitionDuration)
|
|
214
|
+
.style('opacity', 1);
|
|
212
215
|
};
|
|
213
216
|
/**
|
|
214
217
|
* The mouse out event handler.
|
|
@@ -219,7 +222,11 @@ const onMouseOut = (self, config) => {
|
|
|
219
222
|
const duration = 400;
|
|
220
223
|
d3.select(self).attr('class', 'dot');
|
|
221
224
|
d3.select(self).transition().duration(duration).attr('r', config.dotRadius);
|
|
222
|
-
d3.selectAll('.chart-tooltip')
|
|
225
|
+
d3.selectAll('.chart-tooltip')
|
|
226
|
+
.transition()
|
|
227
|
+
.duration(config.transitionDuration / 2)
|
|
228
|
+
.style('opacity', 0)
|
|
229
|
+
.remove();
|
|
223
230
|
};
|
|
224
231
|
/**
|
|
225
232
|
* Draws the chart lines, dots, and sets the mouse pointer events.
|
|
@@ -303,4 +310,4 @@ export const drawLineChart = (container, data, options) => {
|
|
|
303
310
|
drawLinesDotsAndSetPointerEvents(g, x, y, config, data);
|
|
304
311
|
return config;
|
|
305
312
|
};
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvdXRpbC9saW5lLWNoYXJ0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FBb0I7SUFDeEYsVUFBVSxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ04sR0FBRyxFQUFFLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLEVBQUU7S0FDVDtJQUNELGtCQUFrQixFQUFFLEdBQUc7SUFDdkIsU0FBUyxFQUFFLEdBQUc7SUFDZCxVQUFVLEVBQUUsRUFBRTtJQUNkLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFO1FBQ0wsQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsRUFBRTtLQUNOO0lBQ0QsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixVQUFVLEVBQUUsU0FBUztJQUNyQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBcUMsRUFBRSxNQUF5QixFQUFFLEVBQUU7SUFDM0YsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO0lBRWxELEVBQUUsQ0FBQyxN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QUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUUsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFMUIsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFMUIsWUFBWSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV4QixnQ0FBZ0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFeEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuXG5pbXBvcnQgeyBJTGluZUNoYXJ0RGF0YU5vZGUsIElMaW5lQ2hhcnRPcHRpb25zLCBUTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbGluZS1jaGFydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2VuZXJhdGVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLnV0aWwnO1xuXG4vKipcbiAqIFRoZSBsaW5lIGNoYXJ0IGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRMaW5lQ2hhcnRDb25maWc6IElMaW5lQ2hhcnRPcHRpb25zID0gT2JqZWN0LmZyZWV6ZSg8SUxpbmVDaGFydE9wdGlvbnM+e1xuICBjaGFydFRpdGxlOiAnJyxcbiAgd2lkdGg6IDM1MCxcbiAgaGVpZ2h0OiAzNTAsXG4gIG1hcmdpbjoge1xuICAgIHRvcDogNzAsXG4gICAgcmlnaHQ6IDUwLFxuICAgIGJvdHRvbTogNTAsXG4gICAgbGVmdDogNTAsXG4gIH0sXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogNDAwLFxuICBkb3RSYWRpdXM6IDMuNSxcbiAgeEF4aXNUaXRsZTogJycsXG4gIHlBeGlzVGl0bGU6ICcnLFxuICB0aWNrczoge1xuICAgIHg6IDUsXG4gICAgeTogMTAsXG4gIH0sXG4gIGRpc3BsYXlBeGlzTGFiZWxzOiB0cnVlLFxuICBkYXRlRm9ybWF0OiAnZGVmYXVsdCcsXG4gIGxhYmVsVGV4dFdyYXBXaWR0aDogMjAsIC8vIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGFmdGVyIHdoaWNoIGEgbGFiZWwgbmVlZHMgdG8gYmUgZ2l2ZW4gYSBuZXcgbGluZVxuICBjb2xvcjogZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApLFxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgdGhlIGxpbmUgY2hhcnQuXG4gKiBAcGFyYW0gY29udGFpbmVyIHRoZSBjaGFydCBjb250YWluZXJcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIHRoZSBvYmplY3Qgd2l0aCB0aGUgc3ZnIGVsZW1lbnQgYW5kIHRoZSBnIGVsZW1lbnRcbiAqL1xuY29uc3QgY3JlYXRlQ29udGFpbmVyID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMpID0+IHtcbiAgY29uc3QgaWQgPSBjb250YWluZXIubmF0aXZlRWxlbWVudC5pZCA/PyAnbGluZS0wJztcblxuICBkMy5zZWxlY3QoYCMke2lkfWApLnNlbGVjdCgnc3ZnJykucmVtb3ZlKCk7XG4gIGNvbnN0IHN2ZyA9IGQzXG4gICAgLnNlbGVjdChgIyR7aWR9YClcbiAgICAuYXBwZW5kKCdzdmcnKVxuICAgIC5hdHRyKCd3aWR0aCcsIGNvbmZpZy53aWR0aCArIGNvbmZpZy5tYXJnaW4ubGVmdCArIGNvbmZpZy5tYXJnaW4ucmlnaHQpXG4gICAgLmF0dHIoJ2hlaWdodCcsIGNvbmZpZy5oZWlnaHQgKyBjb25maWcubWFyZ2luLnRvcCArIGNvbmZpZy5tYXJnaW4uYm90dG9tKVxuICAgIC5hdHRyKCdjbGFzcycsIGlkKTtcbiAgY29uc3QgZyA9IHN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7Y29uZmlnLm1hcmdpbi5sZWZ0fSwke2NvbmZpZy5tYXJnaW4udG9wIC8gMn0pYCk7XG5cbiAgcmV0dXJuIHsgc3ZnLCBnIH07XG59O1xuXG4vKipcbiAqIFdyYXBzIHRoZSBsaW5lIGNoYXJ0IGF4aXMgbGFiZWxzIHRleHQuXG4gKiBAcGFyYW0gc3ZnVGV4dCB0aGUgc3ZnIHRleHQgZWxlbWVudHNcbiAqIEBwYXJhbSB3aWR0aCB0aGUgY2hhcnQgYXhpcyBsYWJlbCB3aWR0aFxuICovXG5jb25zdCB3cmFwU3ZnVGV4dCA9IChzdmdUZXh0OiBkMy5TZWxlY3Rpb248ZDMuQmFzZVR5cGUsIHVua25vd24sIFNWR0dFbGVtZW50LCB1bmtub3duPiwgd2lkdGg6IG51bWJlcikgPT4ge1xuICBzdmdUZXh0LmVhY2goZnVuY3Rpb24gKHRoaXM6IGQzLkJhc2VUeXBlKSB7XG4gICAgY29uc3QgdGV4dCA9IGQzLnNlbGVjdDxkMy5CYXNlVHlwZSwgc3RyaW5nPih0aGlzKTtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQudGV4dCgpLnNwbGl0KC9cXHMrLykucmV2ZXJzZSgpO1xuICAgIGlmICh3b3Jkcy5sZW5ndGggPiAxKSB7XG4gICAgICBsZXQgbGluZTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGxldCBsaW5lTnVtYmVyID0gMDtcbiAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAxLjQ7XG4gICAgICBjb25zdCB5ID0gdGV4dC5hdHRyKCd5Jyk7XG4gICAgICBjb25zdCB4ID0gdGV4dC5hdHRyKCd4Jyk7XG4gICAgICBjb25zdCBkeSA9IHBhcnNlRmxvYXQodGV4dC5hdHRyKCdkeScpID8/IDApO1xuICAgICAgbGV0IHRzcGFuID0gdGV4dC50ZXh0KG51bGwpLmFwcGVuZCgndHNwYW4nKS5hdHRyKCd4JywgeCkuYXR0cigneScsIHkpLmF0dHIoJ2R5JywgYCR7ZHl9ZW1gKTsgLy8gYXhpcyBsYWJlbFxuXG4gICAgICBsZXQgd29yZCA9IHdvcmRzLnBvcCgpO1xuXG4gICAgICB3aGlsZSAodHlwZW9mIHdvcmQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxpbmUucHVzaCh3b3JkID8/ICcnKTtcbiAgICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oJyAnKSk7XG4gICAgICAgIGlmICgodHNwYW4ubm9kZSgpPy5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSA/PyAwKSA+IHdpZHRoKSB7XG4gICAgICAgICAgbGluZS5wb3AoKTtcbiAgICAgICAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcbiAgICAgICAgICBsaW5lID0gW3dvcmQgPz8gJyddO1xuICAgICAgICAgIGxpbmVOdW1iZXIgKz0gMTtcbiAgICAgICAgICB0c3BhbiA9IHRleHRcbiAgICAgICAgICAgIC5hcHBlbmQoJ3RzcGFuJylcbiAgICAgICAgICAgIC5hdHRyKCd4JywgMClcbiAgICAgICAgICAgIC5hdHRyKCd5JywgeSlcbiAgICAgICAgICAgIC5hdHRyKCdkeScsIGAke2xpbmVOdW1iZXIgKiBsaW5lSGVpZ2h0ICsgZHl9ZW1gKVxuICAgICAgICAgICAgLnRleHQod29yZCA/PyAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgd29yZCA9IHdvcmRzLnBvcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGxlZ2VuZC5cbiAqIEBwYXJhbSBnIHRoZSBzdmcgZyBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGNyZWF0ZUxlZ2VuZCA9IChnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPiwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBpZiAoY29uZmlnLmRpc3BsYXlBeGlzTGFiZWxzICYmIGNvbmZpZy54QXhpc1RpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7Y29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4uYm90dG9tfSlgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLmF0dHIoJ2R4JywgJzEuNWVtJylcbiAgICAgIC5hdHRyKCdkeScsICcxZW0nKVxuICAgICAgLnRleHQoYHggLSAke2NvbmZpZy54QXhpc1RpdGxlfWApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscyAmJiBjb25maWcueUF4aXNUaXRsZSAhPT0gJycpIHtcbiAgICBnLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke2NvbmZpZy5oZWlnaHQgKyBjb25maWcubWFyZ2luLmJvdHRvbX0pYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCdkeCcsICcxLjVlbScpXG4gICAgICAuYXR0cignZHknLCAnMi41ZW0nKVxuICAgICAgLnRleHQoYHkgLSAke2NvbmZpZy55QXhpc1RpdGxlfWApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5jaGFydFRpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsIDApYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCdkeCcsICcxLjVlbScpXG4gICAgICAuYXR0cignZHknLCAnLTJlbScpXG4gICAgICAudGV4dChjb25maWcuY2hhcnRUaXRsZSk7XG4gIH1cbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgeCBheGlzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB4IHRoZSB4IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlQXhpc1ggPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB4OiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHhMYWJlbHMgPSBnXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHtjb25maWcuaGVpZ2h0fSlgKVxuICAgIC5jYWxsKFxuICAgICAgZDNcbiAgICAgICAgLmF4aXNCb3R0b20oeClcbiAgICAgICAgLnRpY2tzKGNvbmZpZy50aWNrcy54KVxuICAgICAgICAudGlja0Zvcm1hdChkID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZC52YWx1ZU9mKCkpO1xuICAgICAgICAgIGNvbnN0IGZvcm1hdHRpbmdPZmZzZXQgPSAxMDtcbiAgICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgICBjb25zdCBkZCA9IGRheSA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7ZGF5fWAgOiBkYXk7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgICAgICAgIGNvbnN0IG1tID0gbW9udGggPCBmb3JtYXR0aW5nT2Zmc2V0ID8gYDAke21vbnRofWAgOiBtb250aDtcbiAgICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgY29uc3QgeXkgPSB5ZWFyLnNsaWNlKDIpO1xuICAgICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICAgICAgICAgIGNvbnN0IGhvdXIgPSBob3VycyA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7aG91cnN9YCA6IGhvdXJzO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICBjb25zdCBtaW51dGUgPSBtaW51dGVzIDwgZm9ybWF0dGluZ09mZnNldCA/IGAwJHttaW51dGVzfWAgOiBtaW51dGVzO1xuICAgICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gYCR7ZGR9LyR7bW19LyR7eXl9ICR7aG91cn06JHttaW51dGV9YDtcbiAgICAgICAgICBzd2l0Y2ggKGNvbmZpZy5kYXRlRm9ybWF0KSB7XG4gICAgICAgICAgICBjYXNlICdkZC9tbS95eXl5JzpcbiAgICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IGAke2RkfS8ke21tfS8ke3llYXJ9YDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkZC9tbS95eSc6XG4gICAgICAgICAgICAgIGZvcm1hdHRlZERhdGUgPSBgJHtkZH0vJHttbX0vJHt5eX1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21tL3l5eXknOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gYCR7bW19LyR7eWVhcn1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3l5eXknOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gYCR7eWVhcn1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRGF0ZTtcbiAgICAgICAgfSksXG4gICAgKVxuICAgIC5hcHBlbmQoJ3RleHQnKTtcblxuICBnLnNlbGVjdEFsbCgndGV4dCcpLmNhbGwod3JhcFN2Z1RleHQsIGNvbmZpZy5sYWJlbFRleHRXcmFwV2lkdGgpO1xuXG4gIGlmIChjb25maWcuZGlzcGxheUF4aXNMYWJlbHMpIHtcbiAgICB4TGFiZWxzLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtjb25maWcud2lkdGh9LCAwKWApLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpLmF0dHIoJ2R4JywgJzEuNWVtJykuYXR0cignZHknLCAnMC43ZW0nKS50ZXh0KCd4Jyk7XG4gIH1cbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgeSBheGlzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB5IHRoZSB5IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlQXhpc1kgPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB5OiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeUxhYmVscyA9IGdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuY2FsbChcbiAgICAgIGQzXG4gICAgICAgIC5heGlzTGVmdCh5KVxuICAgICAgICAudGlja3MoY29uZmlnLnRpY2tzLnkpXG4gICAgICAgIC50aWNrRm9ybWF0KGQgPT4gYCR7ZH1gKSxcbiAgICApXG4gICAgLmFwcGVuZCgndGV4dCcpO1xuXG4gIGlmIChjb25maWcuZGlzcGxheUF4aXNMYWJlbHMpIHtcbiAgICB5TGFiZWxzLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpLmF0dHIoJ2R5JywgJy0xLjVlbScpLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpLnRleHQoJ3knKTtcbiAgfVxufTtcblxuLyoqXG4gKiBUaGUgbW91c2Ugb3ZlciBldmVudCBoYW5kbGVyLlxuICogQHBhcmFtIHNlbGYgYW4gc3ZnIGNpcmNsZSBlbGVtZW50XG4gKiBAcGFyYW0gZCB0aGUgY2hhcnQgZGF0YSBub2RlXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBvbk1vdXNlT3ZlciA9IChcbiAgc2VsZjogU1ZHQ2lyY2xlRWxlbWVudCxcbiAgZDogSUxpbmVDaGFydERhdGFOb2RlLFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCBkdXJhdGlvbiA9IDQwMDtcbiAgZDMuc2VsZWN0KHNlbGYpXG4gICAgLnRyYW5zaXRpb24oKVxuICAgIC5kdXJhdGlvbihkdXJhdGlvbilcbiAgICAuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMgKiAyKTtcblxuICBjb25zdCB0b29sdGlwU2hpZnQgPSA0O1xuICBjb25zdCB0b29sdGlwRHkgPSAtMTA7XG4gIGcuYXBwZW5kKCd0ZXh0JylcbiAgICAuYXR0cignY2xhc3MnLCAnY2hhcnQtdG9vbHRpcCcpXG4gICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTFweCcpXG4gICAgLmF0dHIoJ2R4JywgKCkgPT4gKGNvbmZpZy53aWR0aCAtIGNvbmZpZy5tYXJnaW4ubGVmdCAtIGNvbmZpZy5tYXJnaW4ucmlnaHQpIC8gdG9vbHRpcFNoaWZ0KVxuICAgIC5hdHRyKCdkeScsICgpID0+IHRvb2x0aXBEeSlcbiAgICAudGV4dCgoKSA9PiBgJHtkLnZhbHVlfSAoJHtuZXcgRGF0ZShkLnRpbWVzdGFtcCkudG9VVENTdHJpbmcoKX0pYCk7XG59O1xuXG4vKipcbiAqIFRoZSBtb3VzZSBvdXQgZXZlbnQgaGFuZGxlci5cbiAqIEBwYXJhbSBzZWxmIGFuIHN2ZyBjaXJjbGUgZWxlbWVudFxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBvbk1vdXNlT3V0ID0gKHNlbGY6IFNWR0NpcmNsZUVsZW1lbnQsIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMpID0+IHtcbiAgY29uc3QgZHVyYXRpb24gPSA0MDA7XG4gIGQzLnNlbGVjdChzZWxmKS5hdHRyKCdjbGFzcycsICdkb3QnKTtcbiAgZDMuc2VsZWN0KHNlbGYpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihkdXJhdGlvbikuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMpO1xuXG4gIGQzLnNlbGVjdEFsbCgnLmNoYXJ0LXRvb2x0aXAnKS5yZW1vdmUoKTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIGNoYXJ0IGxpbmVzLCBkb3RzLCBhbmQgc2V0cyB0aGUgbW91c2UgcG9pbnRlciBldmVudHMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIHggdGhlIHggYXhpcyBzY2FsZVxuICogQHBhcmFtIHkgdGhlIHkgYXhpcyBzY2FsZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqL1xuY29uc3QgZHJhd0xpbmVzRG90c0FuZFNldFBvaW50ZXJFdmVudHMgPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICB4OiBkMy5TY2FsZVRpbWU8bnVtYmVyLCBudW1iZXI+LFxuICB5OiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMsXG4gIGRhdGE6IFRMaW5lQ2hhcnREYXRhW10sXG4pID0+IHtcbiAgY29uc3QgbGluZSA9IGQzXG4gICAgLmxpbmU8SUxpbmVDaGFydERhdGFOb2RlPigpXG4gICAgLngoZCA9PiB4KGQudGltZXN0YW1wKSlcbiAgICAueShkID0+IHkoZC52YWx1ZSkpXG4gICAgLmN1cnZlKGQzLmN1cnZlTW9ub3RvbmVYKTtcblxuICBjb25zdCBmbGF0RGF0YSA9IGRhdGEuZmxhdCgpO1xuXG4gIGZvciAobGV0IGMgPSAwLCBtYXhDID0gZGF0YS5sZW5ndGg7IGMgPCBtYXhDOyBjICs9IDEpIHtcbiAgICBjb25zdCBjaHVuayA9IGRhdGFbY107XG5cbiAgICBnLmFwcGVuZCgncGF0aCcpXG4gICAgICAuYXR0cignaWQnLCBgbGluZS0ke2N9YClcbiAgICAgIC5zdHlsZSgnZmlsbCcsICdub25lJylcbiAgICAgIC5zdHlsZSgnc3Ryb2tlJywgY29uZmlnLmNvbG9yKGMudG9TdHJpbmcoKSkpXG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcycHgnKVxuICAgICAgLmF0dHIoJ2QnLCBsaW5lKGNodW5rKSk7XG4gIH1cblxuICBnLnNlbGVjdEFsbCgnLmRvdCcpXG4gICAgLmRhdGEoZmxhdERhdGEpXG4gICAgLmVudGVyKClcbiAgICAuYXBwZW5kKCdjaXJjbGUnKVxuICAgIC5hdHRyKCdjbGFzcycsICdkb3QnKVxuICAgIC5zdHlsZSgncG9pbnRlci1ldmVudHMnLCAnYWxsJylcbiAgICAuc3R5bGUoJ2ZpbGwnLCAoZCwgaSkgPT4gY29uZmlnLmNvbG9yKGkudG9TdHJpbmcoKSkpXG4gICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAodGhpcywgZXZlbnQsIGQpIHtcbiAgICAgIHJldHVybiBvbk1vdXNlT3Zlcih0aGlzLCBkLCBnLCBjb25maWcpO1xuICAgIH0pXG4gICAgLm9uKCdtb3VzZW91dCcsIGZ1bmN0aW9uICh0aGlzKSB7XG4gICAgICByZXR1cm4gb25Nb3VzZU91dCh0aGlzLCBjb25maWcpO1xuICAgIH0pXG4gICAgLmF0dHIoJ2N4JywgZnVuY3Rpb24gKHRoaXMsIGQpIHtcbiAgICAgIHJldHVybiB4KGQudGltZXN0YW1wKTtcbiAgICB9KVxuICAgIC5hdHRyKCdjeScsIGZ1bmN0aW9uICh0aGlzLCBkKSB7XG4gICAgICByZXR1cm4geShkLnZhbHVlKTtcbiAgICB9KVxuICAgIC5hdHRyKCdyJywgMClcbiAgICAudHJhbnNpdGlvbigpXG4gICAgLmVhc2UoZDMuZWFzZUxpbmVhcilcbiAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbilcbiAgICAuZGVsYXkoKGQsIGkpID0+IHtcbiAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSA1MDtcbiAgICAgIHJldHVybiBpICogbXVsdGlwbGllcjtcbiAgICB9KVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyk7XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSBsaW5lIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gZGF0YSB0aGUgY2hhcnQgZGF0YVxuICogQHBhcmFtIG9wdGlvbnMgdGhlIGNoYXJ0IG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBkcmF3TGluZUNoYXJ0ID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGRhdGE6IFRMaW5lQ2hhcnREYXRhW10sIG9wdGlvbnM/OiBQYXJ0aWFsPElMaW5lQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zID0gZ2VuZXJhdGVDb25maWd1cmF0aW9uPElMaW5lQ2hhcnRPcHRpb25zPihkZWZhdWx0TGluZUNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgeyBnIH0gPSBjcmVhdGVDb250YWluZXIoY29udGFpbmVyLCBjb25maWcpO1xuXG4gIGNvbnN0IHJhbmdlID0gZGF0YS5yZWR1Y2UoXG4gICAgKGFjY3VtdWxhdG9yOiB7IG1pblRpbWU6IG51bWJlcjsgbWF4VGltZTogbnVtYmVyOyBtYXhWYWx1ZTogbnVtYmVyIH0sIGFycikgPT4ge1xuICAgICAgY29uc3QgdGltZXN0YW1wcyA9IGFyci5tYXAoaXRlbSA9PiBpdGVtLnRpbWVzdGFtcCk7XG4gICAgICBjb25zdCBtaW5JdGVtID0gTWF0aC5taW4oLi4udGltZXN0YW1wcyk7XG4gICAgICBjb25zdCBtYXhJdGVtID0gTWF0aC5tYXgoLi4udGltZXN0YW1wcyk7XG4gICAgICBjb25zdCBtaW5UaW1lID0gTWF0aC5taW4obWluSXRlbSwgYWNjdW11bGF0b3IubWluVGltZSk7XG4gICAgICBjb25zdCBtYXhUaW1lID0gTWF0aC5tYXgobWF4SXRlbSwgYWNjdW11bGF0b3IubWF4VGltZSk7XG5cbiAgICAgIGNvbnN0IHZhbHVlcyA9IGFyci5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKTtcbiAgICAgIGNvbnN0IG1heEl0ZW1WYWx1ZSA9IE1hdGgubWF4KC4uLnZhbHVlcyk7XG4gICAgICBjb25zdCBtYXhWYWx1ZSA9IE1hdGgubWF4KG1heEl0ZW1WYWx1ZSwgYWNjdW11bGF0b3IubWF4VmFsdWUpO1xuICAgICAgcmV0dXJuIHsgbWluVGltZSwgbWF4VGltZSwgbWF4VmFsdWUgfTtcbiAgICB9LFxuICAgIHsgbWluVGltZTogTnVtYmVyKEluZmluaXR5KSwgbWF4VGltZTogLUluZmluaXR5LCBtYXhWYWx1ZTogLUluZmluaXR5IH0sXG4gICk7XG5cbiAgY29uc3QgeCA9IGQzLnNjYWxlVGltZShbMCwgY29uZmlnLndpZHRoXSkuZG9tYWluKFtyYW5nZS5taW5UaW1lLCByYW5nZS5tYXhUaW1lXSk7XG4gIGNvbnN0IHkgPSBkMy5zY2FsZUxpbmVhcihbY29uZmlnLmhlaWdodCwgMF0pLmRvbWFpbihbMCwgcmFuZ2UubWF4VmFsdWUgPz8gMV0pO1xuXG4gIGNyZWF0ZUF4aXNYKGcsIHgsIGNvbmZpZyk7XG5cbiAgY3JlYXRlQXhpc1koZywgeSwgY29uZmlnKTtcblxuICBjcmVhdGVMZWdlbmQoZywgY29uZmlnKTtcblxuICBkcmF3TGluZXNEb3RzQW5kU2V0UG9pbnRlckV2ZW50cyhnLCB4LCB5LCBjb25maWcsIGRhdGEpO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIl19
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZDMtY2hhcnRzL3NyYy9saWIvdXRpbC9saW5lLWNoYXJ0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFHekIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0IsTUFBTSxDQUFDLE1BQU0sQ0FBb0I7SUFDeEYsVUFBVSxFQUFFLEVBQUU7SUFDZCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsTUFBTSxFQUFFO1FBQ04sR0FBRyxFQUFFLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLEVBQUU7S0FDVDtJQUNELGtCQUFrQixFQUFFLEdBQUc7SUFDdkIsU0FBUyxFQUFFLEdBQUc7SUFDZCxVQUFVLEVBQUUsRUFBRTtJQUNkLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFO1FBQ0wsQ0FBQyxFQUFFLENBQUM7UUFDSixDQUFDLEVBQUUsRUFBRTtLQUNOO0lBQ0QsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixVQUFVLEVBQUUsU0FBUztJQUNyQixrQkFBa0IsRUFBRSxFQUFFO0lBQ3RCLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBcUMsRUFBRSxNQUF5QixFQUFFLEVBQUU7SUFDM0YsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO0lBRWxELEVBQUUsQ0FBQyxN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QzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUMsRUFDRCxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUN2RSxDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU5RSxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQixXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUxQixZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLGdDQUFnQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV4RCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmltcG9ydCB7IElMaW5lQ2hhcnREYXRhTm9kZSwgSUxpbmVDaGFydE9wdGlvbnMsIFRMaW5lQ2hhcnREYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9saW5lLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24udXRpbCc7XG5cbi8qKlxuICogVGhlIGxpbmUgY2hhcnQgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVDaGFydENvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKDxJTGluZUNoYXJ0T3B0aW9ucz57XG4gIGNoYXJ0VGl0bGU6ICcnLFxuICB3aWR0aDogMzUwLFxuICBoZWlnaHQ6IDM1MCxcbiAgbWFyZ2luOiB7XG4gICAgdG9wOiA3MCxcbiAgICByaWdodDogNTAsXG4gICAgYm90dG9tOiA1MCxcbiAgICBsZWZ0OiA1MCxcbiAgfSxcbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiA0MDAsXG4gIGRvdFJhZGl1czogMy41LFxuICB4QXhpc1RpdGxlOiAnJyxcbiAgeUF4aXNUaXRsZTogJycsXG4gIHRpY2tzOiB7XG4gICAgeDogNSxcbiAgICB5OiAxMCxcbiAgfSxcbiAgZGlzcGxheUF4aXNMYWJlbHM6IHRydWUsXG4gIGRhdGVGb3JtYXQ6ICdkZWZhdWx0JyxcbiAgbGFiZWxUZXh0V3JhcFdpZHRoOiAyMCwgLy8gdGhlIG51bWJlciBvZiBwaXhlbHMgYWZ0ZXIgd2hpY2ggYSBsYWJlbCBuZWVkcyB0byBiZSBnaXZlbiBhIG5ldyBsaW5lXG4gIGNvbG9yOiBkMy5zY2FsZU9yZGluYWwoZDMuc2NoZW1lQ2F0ZWdvcnkxMCksXG59KTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIGZvciB0aGUgbGluZSBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgdGhlIG9iamVjdCB3aXRoIHRoZSBzdmcgZWxlbWVudCBhbmQgdGhlIGcgZWxlbWVudFxuICovXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdsaW5lLTAnO1xuXG4gIGQzLnNlbGVjdChgIyR7aWR9YCkuc2VsZWN0KCdzdmcnKS5yZW1vdmUoKTtcbiAgY29uc3Qgc3ZnID0gZDNcbiAgICAuc2VsZWN0KGAjJHtpZH1gKVxuICAgIC5hcHBlbmQoJ3N2ZycpXG4gICAgLmF0dHIoJ3dpZHRoJywgY29uZmlnLndpZHRoICsgY29uZmlnLm1hcmdpbi5sZWZ0ICsgY29uZmlnLm1hcmdpbi5yaWdodClcbiAgICAuYXR0cignaGVpZ2h0JywgY29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4udG9wICsgY29uZmlnLm1hcmdpbi5ib3R0b20pXG4gICAgLmF0dHIoJ2NsYXNzJywgaWQpO1xuICBjb25zdCBnID0gc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLm1hcmdpbi50b3AgLyAyfSlgKTtcblxuICByZXR1cm4geyBzdmcsIGcgfTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIGxpbmUgY2hhcnQgYXhpcyBsYWJlbHMgdGV4dC5cbiAqIEBwYXJhbSBzdmdUZXh0IHRoZSBzdmcgdGV4dCBlbGVtZW50c1xuICogQHBhcmFtIHdpZHRoIHRoZSBjaGFydCBheGlzIGxhYmVsIHdpZHRoXG4gKi9cbmNvbnN0IHdyYXBTdmdUZXh0ID0gKHN2Z1RleHQ6IGQzLlNlbGVjdGlvbjxkMy5CYXNlVHlwZSwgdW5rbm93biwgU1ZHR0VsZW1lbnQsIHVua25vd24+LCB3aWR0aDogbnVtYmVyKSA9PiB7XG4gIHN2Z1RleHQuZWFjaChmdW5jdGlvbiAodGhpczogZDMuQmFzZVR5cGUpIHtcbiAgICBjb25zdCB0ZXh0ID0gZDMuc2VsZWN0PGQzLkJhc2VUeXBlLCBzdHJpbmc+KHRoaXMpO1xuICAgIGNvbnN0IHdvcmRzID0gdGV4dC50ZXh0KCkuc3BsaXQoL1xccysvKS5yZXZlcnNlKCk7XG4gICAgaWYgKHdvcmRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGxldCBsaW5lOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgbGV0IGxpbmVOdW1iZXIgPSAwO1xuICAgICAgY29uc3QgbGluZUhlaWdodCA9IDEuNDtcbiAgICAgIGNvbnN0IHkgPSB0ZXh0LmF0dHIoJ3knKTtcbiAgICAgIGNvbnN0IHggPSB0ZXh0LmF0dHIoJ3gnKTtcbiAgICAgIGNvbnN0IGR5ID0gcGFyc2VGbG9hdCh0ZXh0LmF0dHIoJ2R5JykgPz8gMCk7XG4gICAgICBsZXQgdHNwYW4gPSB0ZXh0LnRleHQobnVsbCkuYXBwZW5kKCd0c3BhbicpLmF0dHIoJ3gnLCB4KS5hdHRyKCd5JywgeSkuYXR0cignZHknLCBgJHtkeX1lbWApOyAvLyBheGlzIGxhYmVsXG5cbiAgICAgIGxldCB3b3JkID0gd29yZHMucG9wKCk7XG5cbiAgICAgIHdoaWxlICh0eXBlb2Ygd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbGluZS5wdXNoKHdvcmQgPz8gJycpO1xuICAgICAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcbiAgICAgICAgaWYgKCh0c3Bhbi5ub2RlKCk/LmdldENvbXB1dGVkVGV4dExlbmd0aCgpID8/IDApID4gd2lkdGgpIHtcbiAgICAgICAgICBsaW5lLnBvcCgpO1xuICAgICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICAgIGxpbmUgPSBbd29yZCA/PyAnJ107XG4gICAgICAgICAgbGluZU51bWJlciArPSAxO1xuICAgICAgICAgIHRzcGFuID0gdGV4dFxuICAgICAgICAgICAgLmFwcGVuZCgndHNwYW4nKVxuICAgICAgICAgICAgLmF0dHIoJ3gnLCAwKVxuICAgICAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAgICAgLmF0dHIoJ2R5JywgYCR7bGluZU51bWJlciAqIGxpbmVIZWlnaHQgKyBkeX1lbWApXG4gICAgICAgICAgICAudGV4dCh3b3JkID8/ICcnKTtcbiAgICAgICAgfVxuICAgICAgICB3b3JkID0gd29yZHMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgbGVnZW5kLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlTGVnZW5kID0gKGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LCBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zKSA9PiB7XG4gIGlmIChjb25maWcuZGlzcGxheUF4aXNMYWJlbHMgJiYgY29uZmlnLnhBeGlzVGl0bGUgIT09ICcnKSB7XG4gICAgZy5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgJHtjb25maWcuaGVpZ2h0ICsgY29uZmlnLm1hcmdpbi5ib3R0b219KWApXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAgIC5zdHlsZSgnZm9udC1zaXplJywgJzEycHgnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpXG4gICAgICAuYXR0cignZHgnLCAnMS41ZW0nKVxuICAgICAgLmF0dHIoJ2R5JywgJzFlbScpXG4gICAgICAudGV4dChgeCAtICR7Y29uZmlnLnhBeGlzVGl0bGV9YCk7XG4gIH1cblxuICBpZiAoY29uZmlnLmRpc3BsYXlBeGlzTGFiZWxzICYmIGNvbmZpZy55QXhpc1RpdGxlICE9PSAnJykge1xuICAgIGcuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKDAsICR7Y29uZmlnLmhlaWdodCArIGNvbmZpZy5tYXJnaW4uYm90dG9tfSlgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLmF0dHIoJ2R4JywgJzEuNWVtJylcbiAgICAgIC5hdHRyKCdkeScsICcyLjVlbScpXG4gICAgICAudGV4dChgeSAtICR7Y29uZmlnLnlBeGlzVGl0bGV9YCk7XG4gIH1cblxuICBpZiAoY29uZmlnLmNoYXJ0VGl0bGUgIT09ICcnKSB7XG4gICAgZy5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoMCwgMClgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLmF0dHIoJ2R4JywgJzEuNWVtJylcbiAgICAgIC5hdHRyKCdkeScsICctMmVtJylcbiAgICAgIC50ZXh0KGNvbmZpZy5jaGFydFRpdGxlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB4IGF4aXMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIHggdGhlIHggYXhpcyBzY2FsZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBjcmVhdGVBeGlzWCA9IChcbiAgZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sXG4gIHg6IGQzLlNjYWxlVGltZTxudW1iZXIsIG51bWJlcj4sXG4gIGNvbmZpZzogSUxpbmVDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeExhYmVscyA9IGdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgwLCAke2NvbmZpZy5oZWlnaHR9KWApXG4gICAgLmNhbGwoXG4gICAgICBkM1xuICAgICAgICAuYXhpc0JvdHRvbSh4KVxuICAgICAgICAudGlja3MoY29uZmlnLnRpY2tzLngpXG4gICAgICAgIC50aWNrRm9ybWF0KGQgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkLnZhbHVlT2YoKSk7XG4gICAgICAgICAgY29uc3QgZm9ybWF0dGluZ09mZnNldCA9IDEwO1xuICAgICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICAgIGNvbnN0IGRkID0gZGF5IDwgZm9ybWF0dGluZ09mZnNldCA/IGAwJHtkYXl9YCA6IGRheTtcbiAgICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgICAgICAgY29uc3QgbW0gPSBtb250aCA8IGZvcm1hdHRpbmdPZmZzZXQgPyBgMCR7bW9udGh9YCA6IG1vbnRoO1xuICAgICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcbiAgICAgICAgICBjb25zdCB5eSA9IHllYXIuc2xpY2UoMik7XG4gICAgICAgICAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgY29uc3QgaG91ciA9IGhvdXJzIDwgZm9ybWF0dGluZ09mZnNldCA/IGAwJHtob3Vyc31gIDogaG91cnM7XG4gICAgICAgICAgY29uc3QgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICAgIGNvbnN0IG1pbnV0ZSA9IG1pbnV0ZXMgPCBmb3JtYXR0aW5nT2Zmc2V0ID8gYDAke21pbnV0ZXN9YCA6IG1pbnV0ZXM7XG4gICAgICAgICAgbGV0IGZvcm1hdHRlZERhdGUgPSBgJHtkZH0vJHttbX0vJHt5eX0gJHtob3VyfToke21pbnV0ZX1gO1xuICAgICAgICAgIHN3aXRjaCAoY29uZmlnLmRhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RkL21tL3l5eXknOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWREYXRlID0gYCR7ZGR9LyR7bW19LyR7eWVhcn1gO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2RkL21tL3l5JzpcbiAgICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IGAke2RkfS8ke21tfS8ke3l5fWA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbW0veXl5eSc6XG4gICAgICAgICAgICAgIGZvcm1hdHRlZERhdGUgPSBgJHttbX0vJHt5ZWFyfWA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAneXl5eSc6XG4gICAgICAgICAgICAgIGZvcm1hdHRlZERhdGUgPSBgJHt5ZWFyfWA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xuICAgICAgICB9KSxcbiAgICApXG4gICAgLmFwcGVuZCgndGV4dCcpO1xuXG4gIGcuc2VsZWN0QWxsKCd0ZXh0JykuY2FsbCh3cmFwU3ZnVGV4dCwgY29uZmlnLmxhYmVsVGV4dFdyYXBXaWR0aCk7XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscykge1xuICAgIHhMYWJlbHMuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke2NvbmZpZy53aWR0aH0sIDApYCkuYXR0cignY2xhc3MnLCAnbGVnZW5kJykuYXR0cignZHgnLCAnMS41ZW0nKS5hdHRyKCdkeScsICcwLjdlbScpLnRleHQoJ3gnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB5IGF4aXMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIHkgdGhlIHkgYXhpcyBzY2FsZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBjcmVhdGVBeGlzWSA9IChcbiAgZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sXG4gIHk6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB5TGFiZWxzID0gZ1xuICAgIC5hcHBlbmQoJ2cnKVxuICAgIC5jYWxsKFxuICAgICAgZDNcbiAgICAgICAgLmF4aXNMZWZ0KHkpXG4gICAgICAgIC50aWNrcyhjb25maWcudGlja3MueSlcbiAgICAgICAgLnRpY2tGb3JtYXQoZCA9PiBgJHtkfWApLFxuICAgIClcbiAgICAuYXBwZW5kKCd0ZXh0Jyk7XG5cbiAgaWYgKGNvbmZpZy5kaXNwbGF5QXhpc0xhYmVscykge1xuICAgIHlMYWJlbHMuYXR0cignY2xhc3MnLCAnbGVnZW5kJykuYXR0cignZHknLCAnLTEuNWVtJykuYXR0cignY2xhc3MnLCAnbGVnZW5kJykudGV4dCgneScpO1xuICB9XG59O1xuXG4vKipcbiAqIFRoZSBtb3VzZSBvdmVyIGV2ZW50IGhhbmRsZXIuXG4gKiBAcGFyYW0gc2VsZiBhbiBzdmcgY2lyY2xlIGVsZW1lbnRcbiAqIEBwYXJhbSBkIHRoZSBjaGFydCBkYXRhIG5vZGVcbiAqIEBwYXJhbSBnIHRoZSBzdmcgZyBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IG9uTW91c2VPdmVyID0gKFxuICBzZWxmOiBTVkdDaXJjbGVFbGVtZW50LFxuICBkOiBJTGluZUNoYXJ0RGF0YU5vZGUsXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uID0gNDAwO1xuICBkMy5zZWxlY3Qoc2VsZilcbiAgICAudHJhbnNpdGlvbigpXG4gICAgLmR1cmF0aW9uKGR1cmF0aW9uKVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyAqIDIpO1xuXG4gIGNvbnN0IHRvb2x0aXBTaGlmdCA9IDQ7XG4gIGNvbnN0IHRvb2x0aXBEeSA9IC0xMDtcbiAgZy5hcHBlbmQoJ3RleHQnKVxuICAgIC5hdHRyKCdjbGFzcycsICdjaGFydC10b29sdGlwJylcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMXB4JylcbiAgICAuYXR0cignZHgnLCAoKSA9PiAoY29uZmlnLndpZHRoIC0gY29uZmlnLm1hcmdpbi5sZWZ0IC0gY29uZmlnLm1hcmdpbi5yaWdodCkgLyB0b29sdGlwU2hpZnQpXG4gICAgLmF0dHIoJ2R5JywgKCkgPT4gdG9vbHRpcER5KVxuICAgIC50ZXh0KCgpID0+IGAke2QudmFsdWV9ICgke25ldyBEYXRlKGQudGltZXN0YW1wKS50b1VUQ1N0cmluZygpfSlgKVxuICAgIC50cmFuc2l0aW9uKClcbiAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbilcbiAgICAuc3R5bGUoJ29wYWNpdHknLCAxKTtcbn07XG5cbi8qKlxuICogVGhlIG1vdXNlIG91dCBldmVudCBoYW5kbGVyLlxuICogQHBhcmFtIHNlbGYgYW4gc3ZnIGNpcmNsZSBlbGVtZW50XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IG9uTW91c2VPdXQgPSAoc2VsZjogU1ZHQ2lyY2xlRWxlbWVudCwgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBkdXJhdGlvbiA9IDQwMDtcbiAgZDMuc2VsZWN0KHNlbGYpLmF0dHIoJ2NsYXNzJywgJ2RvdCcpO1xuICBkMy5zZWxlY3Qoc2VsZikudHJhbnNpdGlvbigpLmR1cmF0aW9uKGR1cmF0aW9uKS5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyk7XG4gIGQzLnNlbGVjdEFsbCgnLmNoYXJ0LXRvb2x0aXAnKVxuICAgIC50cmFuc2l0aW9uKClcbiAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbiAvIDIpXG4gICAgLnN0eWxlKCdvcGFjaXR5JywgMClcbiAgICAucmVtb3ZlKCk7XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSBjaGFydCBsaW5lcywgZG90cywgYW5kIHNldHMgdGhlIG1vdXNlIHBvaW50ZXIgZXZlbnRzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSB4IHRoZSB4IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSB5IHRoZSB5IGF4aXMgc2NhbGVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKi9cbmNvbnN0IGRyYXdMaW5lc0RvdHNBbmRTZXRQb2ludGVyRXZlbnRzID0gKFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgeDogZDMuU2NhbGVUaW1lPG51bWJlciwgbnVtYmVyPixcbiAgeTogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+LFxuICBjb25maWc6IElMaW5lQ2hhcnRPcHRpb25zLFxuICBkYXRhOiBUTGluZUNoYXJ0RGF0YVtdLFxuKSA9PiB7XG4gIGNvbnN0IGxpbmUgPSBkM1xuICAgIC5saW5lPElMaW5lQ2hhcnREYXRhTm9kZT4oKVxuICAgIC54KGQgPT4geChkLnRpbWVzdGFtcCkpXG4gICAgLnkoZCA9PiB5KGQudmFsdWUpKVxuICAgIC5jdXJ2ZShkMy5jdXJ2ZU1vbm90b25lWCk7XG5cbiAgY29uc3QgZmxhdERhdGEgPSBkYXRhLmZsYXQoKTtcblxuICBmb3IgKGxldCBjID0gMCwgbWF4QyA9IGRhdGEubGVuZ3RoOyBjIDwgbWF4QzsgYyArPSAxKSB7XG4gICAgY29uc3QgY2h1bmsgPSBkYXRhW2NdO1xuXG4gICAgZy5hcHBlbmQoJ3BhdGgnKVxuICAgICAgLmF0dHIoJ2lkJywgYGxpbmUtJHtjfWApXG4gICAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsIGNvbmZpZy5jb2xvcihjLnRvU3RyaW5nKCkpKVxuICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMnB4JylcbiAgICAgIC5hdHRyKCdkJywgbGluZShjaHVuaykpO1xuICB9XG5cbiAgZy5zZWxlY3RBbGwoJy5kb3QnKVxuICAgIC5kYXRhKGZsYXREYXRhKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAuYXR0cignY2xhc3MnLCAnZG90JylcbiAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgJ2FsbCcpXG4gICAgLnN0eWxlKCdmaWxsJywgKGQsIGkpID0+IGNvbmZpZy5jb2xvcihpLnRvU3RyaW5nKCkpKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKHRoaXMsIGV2ZW50LCBkKSB7XG4gICAgICByZXR1cm4gb25Nb3VzZU92ZXIodGhpcywgZCwgZywgY29uZmlnKTtcbiAgICB9KVxuICAgIC5vbignbW91c2VvdXQnLCBmdW5jdGlvbiAodGhpcykge1xuICAgICAgcmV0dXJuIG9uTW91c2VPdXQodGhpcywgY29uZmlnKTtcbiAgICB9KVxuICAgIC5hdHRyKCdjeCcsIGZ1bmN0aW9uICh0aGlzLCBkKSB7XG4gICAgICByZXR1cm4geChkLnRpbWVzdGFtcCk7XG4gICAgfSlcbiAgICAuYXR0cignY3knLCBmdW5jdGlvbiAodGhpcywgZCkge1xuICAgICAgcmV0dXJuIHkoZC52YWx1ZSk7XG4gICAgfSlcbiAgICAuYXR0cigncicsIDApXG4gICAgLnRyYW5zaXRpb24oKVxuICAgIC5lYXNlKGQzLmVhc2VMaW5lYXIpXG4gICAgLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pXG4gICAgLmRlbGF5KChkLCBpKSA9PiB7XG4gICAgICBjb25zdCBtdWx0aXBsaWVyID0gNTA7XG4gICAgICByZXR1cm4gaSAqIG11bHRpcGxpZXI7XG4gICAgfSlcbiAgICAuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMpO1xufTtcblxuLyoqXG4gKiBEcmF3cyB0aGUgbGluZSBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqIEBwYXJhbSBvcHRpb25zIHRoZSBjaGFydCBvcHRpb25zXG4gKiBAcmV0dXJucyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgZHJhd0xpbmVDaGFydCA9IChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBkYXRhOiBUTGluZUNoYXJ0RGF0YVtdLCBvcHRpb25zPzogUGFydGlhbDxJTGluZUNoYXJ0T3B0aW9ucz4pID0+IHtcbiAgY29uc3QgY29uZmlnOiBJTGluZUNoYXJ0T3B0aW9ucyA9IGdlbmVyYXRlQ29uZmlndXJhdGlvbjxJTGluZUNoYXJ0T3B0aW9ucz4oZGVmYXVsdExpbmVDaGFydENvbmZpZywgb3B0aW9ucywge30pO1xuXG4gIGNvbnN0IHsgZyB9ID0gY3JlYXRlQ29udGFpbmVyKGNvbnRhaW5lciwgY29uZmlnKTtcblxuICBjb25zdCByYW5nZSA9IGRhdGEucmVkdWNlKFxuICAgIChhY2N1bXVsYXRvcjogeyBtaW5UaW1lOiBudW1iZXI7IG1heFRpbWU6IG51bWJlcjsgbWF4VmFsdWU6IG51bWJlciB9LCBhcnIpID0+IHtcbiAgICAgIGNvbnN0IHRpbWVzdGFtcHMgPSBhcnIubWFwKGl0ZW0gPT4gaXRlbS50aW1lc3RhbXApO1xuICAgICAgY29uc3QgbWluSXRlbSA9IE1hdGgubWluKC4uLnRpbWVzdGFtcHMpO1xuICAgICAgY29uc3QgbWF4SXRlbSA9IE1hdGgubWF4KC4uLnRpbWVzdGFtcHMpO1xuICAgICAgY29uc3QgbWluVGltZSA9IE1hdGgubWluKG1pbkl0ZW0sIGFjY3VtdWxhdG9yLm1pblRpbWUpO1xuICAgICAgY29uc3QgbWF4VGltZSA9IE1hdGgubWF4KG1heEl0ZW0sIGFjY3VtdWxhdG9yLm1heFRpbWUpO1xuXG4gICAgICBjb25zdCB2YWx1ZXMgPSBhcnIubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgICBjb25zdCBtYXhJdGVtVmFsdWUgPSBNYXRoLm1heCguLi52YWx1ZXMpO1xuICAgICAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heChtYXhJdGVtVmFsdWUsIGFjY3VtdWxhdG9yLm1heFZhbHVlKTtcbiAgICAgIHJldHVybiB7IG1pblRpbWUsIG1heFRpbWUsIG1heFZhbHVlIH07XG4gICAgfSxcbiAgICB7IG1pblRpbWU6IE51bWJlcihJbmZpbml0eSksIG1heFRpbWU6IC1JbmZpbml0eSwgbWF4VmFsdWU6IC1JbmZpbml0eSB9LFxuICApO1xuXG4gIGNvbnN0IHggPSBkMy5zY2FsZVRpbWUoWzAsIGNvbmZpZy53aWR0aF0pLmRvbWFpbihbcmFuZ2UubWluVGltZSwgcmFuZ2UubWF4VGltZV0pO1xuICBjb25zdCB5ID0gZDMuc2NhbGVMaW5lYXIoW2NvbmZpZy5oZWlnaHQsIDBdKS5kb21haW4oWzAsIHJhbmdlLm1heFZhbHVlID8/IDFdKTtcblxuICBjcmVhdGVBeGlzWChnLCB4LCBjb25maWcpO1xuXG4gIGNyZWF0ZUF4aXNZKGcsIHksIGNvbmZpZyk7XG5cbiAgY3JlYXRlTGVnZW5kKGcsIGNvbmZpZyk7XG5cbiAgZHJhd0xpbmVzRG90c0FuZFNldFBvaW50ZXJFdmVudHMoZywgeCwgeSwgY29uZmlnLCBkYXRhKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
|
|
@@ -53,7 +53,6 @@ export const drawPieChart = (container, data, options) => {
|
|
|
53
53
|
const pie = d3.pie().value(datum => datum.y);
|
|
54
54
|
const radius = Math.min(config.width, config.height) / 2;
|
|
55
55
|
const arc = d3.arc().innerRadius(config.innerRadius).outerRadius(radius);
|
|
56
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
57
56
|
const arcs = g
|
|
58
57
|
.selectAll('arc')
|
|
59
58
|
.data(pie(data))
|
|
@@ -62,13 +61,10 @@ export const drawPieChart = (container, data, options) => {
|
|
|
62
61
|
.attr('class', 'arc')
|
|
63
62
|
.on('mouseover', function (event, d) {
|
|
64
63
|
this.style.opacity = '0.8';
|
|
65
|
-
const modifier = 10;
|
|
66
|
-
const x = parseFloat(d3.select(this).attr('cx')) - modifier;
|
|
67
|
-
const y = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
68
64
|
const tooltipText = `${d.data.key}: ${d.data.y}`;
|
|
69
|
-
|
|
70
|
-
.attr('
|
|
71
|
-
.
|
|
65
|
+
g.append('text')
|
|
66
|
+
.attr('class', 'chart-tooltip')
|
|
67
|
+
.style('opacity', 0)
|
|
72
68
|
.attr('dx', -config.width / (2 * 2 * 2))
|
|
73
69
|
.attr('dy', config.height / 2 + config.margin.top)
|
|
74
70
|
.text(tooltipText)
|
|
@@ -78,7 +74,11 @@ export const drawPieChart = (container, data, options) => {
|
|
|
78
74
|
})
|
|
79
75
|
.on('mouseout', function (event, d) {
|
|
80
76
|
this.style.opacity = 'unset';
|
|
81
|
-
|
|
77
|
+
d3.selectAll('.chart-tooltip')
|
|
78
|
+
.transition()
|
|
79
|
+
.duration(config.transitionDuration / 2)
|
|
80
|
+
.style('opacity', 0)
|
|
81
|
+
.remove();
|
|
82
82
|
});
|
|
83
83
|
arcs
|
|
84
84
|
.append('path')
|
|
@@ -101,4 +101,4 @@ export const drawPieChart = (container, data, options) => {
|
|
|
101
101
|
}
|
|
102
102
|
return config;
|
|
103
103
|
};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWNoYXJ0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi91dGlsL3BpZS1jaGFydC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBR3pCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXFCLE1BQU0sQ0FBQyxNQUFNLENBQW1CO0lBQ3JGLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRTtRQUNOLEdBQUcsRUFBRSxFQUFFO1FBQ1AsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxFQUFFO0tBQ1Q7SUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNkLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBcUMsRUFBRSxNQUF3QixFQUFFLEVBQUU7SUFDMUYsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDO0lBRWpELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1NB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QUN4QyxXQUFXLENBQUMsTUFBTSxDQUFDO2FBQ25CLFdBQVcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUk7YUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDO2FBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7YUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7YUFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7YUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ3pELEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO2FBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmltcG9ydCB7IElQaWVDaGFydERhdGFOb2RlLCBJUGllQ2hhcnRPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9waWUtY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdlbmVyYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbi51dGlsJztcblxuLyoqXG4gKiBUaGUgcGllIGNoYXJ0IGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRQaWVDaGFydENvbmZpZzogSVBpZUNoYXJ0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoPElQaWVDaGFydE9wdGlvbnM+e1xuICBjaGFydFRpdGxlOiAnJyxcbiAgd2lkdGg6IDYwMCxcbiAgaGVpZ2h0OiA2MDAsXG4gIG1hcmdpbjoge1xuICAgIHRvcDogMjAsXG4gICAgcmlnaHQ6IDIwLFxuICAgIGJvdHRvbTogMjAsXG4gICAgbGVmdDogMjAsXG4gIH0sXG4gIGlubmVyUmFkaXVzOiAwLCAvLyBpbmNyZWFzZSBpbm5lciByYWRpdXMgdG8gcmVuZGVyIGEgZG9udXQgY2hhcnRcbiAgc2hvd0xhYmVsczogdHJ1ZSxcbiAgbGFiZWxSYWRpdXNNb2RpZmllcjogNTAsXG4gIGxhYmVsVGV4dFdyYXBXaWR0aDogNjAsXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogMTAwMCxcbiAgY29sb3I6IGQzLnNjYWxlT3JkaW5hbChkMy5zY2hlbWVDYXRlZ29yeTEwKSxcbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIHRoZSBwaWUgY2hhcnQuXG4gKiBAcGFyYW0gY29udGFpbmVyIHRoZSBjaGFydCBjb250YWluZXJcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIHRoZSBvYmplY3Qgd2l0aCB0aGUgc3ZnIGVsZW1lbnQgYW5kIHRoZSBnIGVsZW1lbnRcbiAqL1xuY29uc3QgY3JlYXRlQ29udGFpbmVyID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGNvbmZpZzogSVBpZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdwaWUtMCc7XG5cbiAgZDMuc2VsZWN0KGAjJHtpZH1gKS5zZWxlY3QoJ3N2ZycpLnJlbW92ZSgpO1xuICBjb25zdCBzdmcgPSBkM1xuICAgIC5zZWxlY3QoYCMke2lkfWApXG4gICAgLmFwcGVuZCgnc3ZnJylcbiAgICAuYXR0cignd2lkdGgnLCBjb25maWcud2lkdGggKyBjb25maWcubWFyZ2luLmxlZnQgKyBjb25maWcubWFyZ2luLnJpZ2h0KVxuICAgIC5hdHRyKCdoZWlnaHQnLCBjb25maWcuaGVpZ2h0ICsgY29uZmlnLm1hcmdpbi50b3AgKyBjb25maWcubWFyZ2luLmJvdHRvbSlcbiAgICAuYXR0cignY2xhc3MnLCBpZCk7XG4gIGNvbnN0IGcgPSBzdmdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke2NvbmZpZy53aWR0aCAvIDIgKyBjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLmhlaWdodCAvIDIgKyBjb25maWcubWFyZ2luLnRvcH0pYCk7XG5cbiAgcmV0dXJuIHsgc3ZnLCBnIH07XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSBwaWUgY2hhcnQuXG4gKiBAcGFyYW0gY29udGFpbmVyIHRoZSBjaGFydCBjb250YWluZXJcbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKiBAcGFyYW0gb3B0aW9ucyB0aGUgY2hhcnQgb3B0aW9uc1xuICogQHJldHVybnMgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRyYXdQaWVDaGFydCA9IChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBkYXRhOiBJUGllQ2hhcnREYXRhTm9kZVtdLCBvcHRpb25zPzogUGFydGlhbDxJUGllQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElQaWVDaGFydE9wdGlvbnMgPSBnZW5lcmF0ZUNvbmZpZ3VyYXRpb248SVBpZUNoYXJ0T3B0aW9ucz4oZGVmYXVsdFBpZUNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgeyBnIH0gPSBjcmVhdGVDb250YWluZXIoY29udGFpbmVyLCBjb25maWcpO1xuXG4gIGNvbnN0IHBpZSA9IGQzLnBpZTxJUGllQ2hhcnREYXRhTm9kZT4oKS52YWx1ZShkYXR1bSA9PiBkYXR1bS55KTtcblxuICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihjb25maWcud2lkdGgsIGNvbmZpZy5oZWlnaHQpIC8gMjtcblxuICBjb25zdCBhcmMgPSBkMy5hcmM8ZDMuUGllQXJjRGF0dW08SVBpZUNoYXJ0RGF0YU5vZGU+PigpLmlubmVyUmFkaXVzKGNvbmZpZy5pbm5lclJhZGl1cykub3V0ZXJSYWRpdXMocmFkaXVzKTtcblxuICBjb25zdCB0b29sdGlwID0gZy5hcHBlbmQoJ3RleHQnKS5hdHRyKCdjbGFzcycsICdjaGFydC10b29sdGlwJykuc3R5bGUoJ29wYWNpdHknLCAwKTtcblxuICBjb25zdCBhcmNzID0gZ1xuICAgIC5zZWxlY3RBbGwoJ2FyYycpXG4gICAgLmRhdGEocGllKGRhdGEpKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2FyYycpXG4gICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAodGhpcywgZXZlbnQ6IE1vdXNlRXZlbnQsIGQpIHtcbiAgICAgIHRoaXMuc3R5bGUub3BhY2l0eSA9ICcwLjgnO1xuXG4gICAgICBjb25zdCBtb2RpZmllciA9IDEwO1xuICAgICAgY29uc3QgeCA9IHBhcnNlRmxvYXQoZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ2N4JykpIC0gbW9kaWZpZXI7XG4gICAgICBjb25zdCB5ID0gcGFyc2VGbG9hdChkMy5zZWxlY3QodGhpcykuYXR0cignY3knKSkgLSBtb2RpZmllcjtcblxuICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSBgJHtkLmRhdGEua2V5fTogJHtkLmRhdGEueX1gO1xuXG4gICAgICB0b29sdGlwXG4gICAgICAgIC5hdHRyKCd4JywgeClcbiAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAuYXR0cignZHgnLCAtY29uZmlnLndpZHRoIC8gKDIgKiAyICogMikpXG4gICAgICAgIC5hdHRyKCdkeScsIGNvbmZpZy5oZWlnaHQgLyAyICsgY29uZmlnLm1hcmdpbi50b3ApXG4gICAgICAgIC50ZXh0KHRvb2x0aXBUZXh0KVxuICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgIC5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKVxuICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAxKTtcbiAgICB9KVxuICAgIC5vbignbW91c2VvdXQnLCBmdW5jdGlvbiAodGhpcywgZXZlbnQsIGQpIHtcbiAgICAgIHRoaXMuc3R5bGUub3BhY2l0eSA9ICd1bnNldCc7XG4gICAgICB0b29sdGlwLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKS5zdHlsZSgnb3BhY2l0eScsIDApO1xuICAgIH0pO1xuXG4gIGFyY3NcbiAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAuYXR0cignZmlsbCcsIChkLCBpKSA9PiBjb25maWcuY29sb3IoaS50b1N0cmluZygpKSlcbiAgICAuYXR0cignZCcsIGFyYyk7XG5cbiAgaWYgKGNvbmZpZy5zaG93TGFiZWxzKSB7XG4gICAgY29uc3QgbGFiZWwgPSBkM1xuICAgICAgLmFyYzxkMy5QaWVBcmNEYXR1bTxJUGllQ2hhcnREYXRhTm9kZT4+KClcbiAgICAgIC5pbm5lclJhZGl1cyhyYWRpdXMpXG4gICAgICAub3V0ZXJSYWRpdXMocmFkaXVzICsgY29uZmlnLmxhYmVsUmFkaXVzTW9kaWZpZXIpO1xuXG4gICAgY29uc3QgdGV4dER5ID0gNTtcbiAgICBhcmNzXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpXG4gICAgICAuYXR0cignZHknLCB0ZXh0RHkpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgZCA9PiBgdHJhbnNsYXRlKCR7bGFiZWwuY2VudHJvaWQoZCl9KWApXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC50ZXh0KGQgPT4gZC5kYXRhLnkpO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iXX0=
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWNoYXJ0LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1kMy1jaGFydHMvc3JjL2xpYi91dGlsL3BpZS1jaGFydC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBR3pCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXFCLE1BQU0sQ0FBQyxNQUFNLENBQW1CO0lBQ3JGLFVBQVUsRUFBRSxFQUFFO0lBQ2QsS0FBSyxFQUFFLEdBQUc7SUFDVixNQUFNLEVBQUUsR0FBRztJQUNYLE1BQU0sRUFBRTtRQUNOLEdBQUcsRUFBRSxFQUFFO1FBQ1AsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxFQUFFO0tBQ1Q7SUFDRCxXQUFXLEVBQUUsQ0FBQztJQUNkLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztDQUM1QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBcUMsRUFBRSxNQUF3QixFQUFFLEVBQUU7SUFDMUYsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksT0FBTyxDQUFDO0lBRWpELEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1NB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RUFBRSxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ3pELEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO2FBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5cbmltcG9ydCB7IElQaWVDaGFydERhdGFOb2RlLCBJUGllQ2hhcnRPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9waWUtY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdlbmVyYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbi51dGlsJztcblxuLyoqXG4gKiBUaGUgcGllIGNoYXJ0IGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRQaWVDaGFydENvbmZpZzogSVBpZUNoYXJ0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoPElQaWVDaGFydE9wdGlvbnM+e1xuICBjaGFydFRpdGxlOiAnJyxcbiAgd2lkdGg6IDYwMCxcbiAgaGVpZ2h0OiA2MDAsXG4gIG1hcmdpbjoge1xuICAgIHRvcDogMjAsXG4gICAgcmlnaHQ6IDIwLFxuICAgIGJvdHRvbTogMjAsXG4gICAgbGVmdDogMjAsXG4gIH0sXG4gIGlubmVyUmFkaXVzOiAwLCAvLyBpbmNyZWFzZSBpbm5lciByYWRpdXMgdG8gcmVuZGVyIGEgZG9udXQgY2hhcnRcbiAgc2hvd0xhYmVsczogdHJ1ZSxcbiAgbGFiZWxSYWRpdXNNb2RpZmllcjogNTAsXG4gIGxhYmVsVGV4dFdyYXBXaWR0aDogNjAsXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogMTAwMCxcbiAgY29sb3I6IGQzLnNjYWxlT3JkaW5hbChkMy5zY2hlbWVDYXRlZ29yeTEwKSxcbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIHRoZSBwaWUgY2hhcnQuXG4gKiBAcGFyYW0gY29udGFpbmVyIHRoZSBjaGFydCBjb250YWluZXJcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIHRoZSBvYmplY3Qgd2l0aCB0aGUgc3ZnIGVsZW1lbnQgYW5kIHRoZSBnIGVsZW1lbnRcbiAqL1xuY29uc3QgY3JlYXRlQ29udGFpbmVyID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGNvbmZpZzogSVBpZUNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdwaWUtMCc7XG5cbiAgZDMuc2VsZWN0KGAjJHtpZH1gKS5zZWxlY3QoJ3N2ZycpLnJlbW92ZSgpO1xuICBjb25zdCBzdmcgPSBkM1xuICAgIC5zZWxlY3QoYCMke2lkfWApXG4gICAgLmFwcGVuZCgnc3ZnJylcbiAgICAuYXR0cignd2lkdGgnLCBjb25maWcud2lkdGggKyBjb25maWcubWFyZ2luLmxlZnQgKyBjb25maWcubWFyZ2luLnJpZ2h0KVxuICAgIC5hdHRyKCdoZWlnaHQnLCBjb25maWcuaGVpZ2h0ICsgY29uZmlnLm1hcmdpbi50b3AgKyBjb25maWcubWFyZ2luLmJvdHRvbSlcbiAgICAuYXR0cignY2xhc3MnLCBpZCk7XG4gIGNvbnN0IGcgPSBzdmdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke2NvbmZpZy53aWR0aCAvIDIgKyBjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLmhlaWdodCAvIDIgKyBjb25maWcubWFyZ2luLnRvcH0pYCk7XG5cbiAgcmV0dXJuIHsgc3ZnLCBnIH07XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSBwaWUgY2hhcnQuXG4gKiBAcGFyYW0gY29udGFpbmVyIHRoZSBjaGFydCBjb250YWluZXJcbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKiBAcGFyYW0gb3B0aW9ucyB0aGUgY2hhcnQgb3B0aW9uc1xuICogQHJldHVybnMgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRyYXdQaWVDaGFydCA9IChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBkYXRhOiBJUGllQ2hhcnREYXRhTm9kZVtdLCBvcHRpb25zPzogUGFydGlhbDxJUGllQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElQaWVDaGFydE9wdGlvbnMgPSBnZW5lcmF0ZUNvbmZpZ3VyYXRpb248SVBpZUNoYXJ0T3B0aW9ucz4oZGVmYXVsdFBpZUNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgeyBnIH0gPSBjcmVhdGVDb250YWluZXIoY29udGFpbmVyLCBjb25maWcpO1xuXG4gIGNvbnN0IHBpZSA9IGQzLnBpZTxJUGllQ2hhcnREYXRhTm9kZT4oKS52YWx1ZShkYXR1bSA9PiBkYXR1bS55KTtcblxuICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihjb25maWcud2lkdGgsIGNvbmZpZy5oZWlnaHQpIC8gMjtcblxuICBjb25zdCBhcmMgPSBkMy5hcmM8ZDMuUGllQXJjRGF0dW08SVBpZUNoYXJ0RGF0YU5vZGU+PigpLmlubmVyUmFkaXVzKGNvbmZpZy5pbm5lclJhZGl1cykub3V0ZXJSYWRpdXMocmFkaXVzKTtcblxuICBjb25zdCBhcmNzID0gZ1xuICAgIC5zZWxlY3RBbGwoJ2FyYycpXG4gICAgLmRhdGEocGllKGRhdGEpKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnZycpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2FyYycpXG4gICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAodGhpcywgZXZlbnQ6IE1vdXNlRXZlbnQsIGQpIHtcbiAgICAgIHRoaXMuc3R5bGUub3BhY2l0eSA9ICcwLjgnO1xuXG4gICAgICBjb25zdCB0b29sdGlwVGV4dCA9IGAke2QuZGF0YS5rZXl9OiAke2QuZGF0YS55fWA7XG5cbiAgICAgIGcuYXBwZW5kKCd0ZXh0JylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ2NoYXJ0LXRvb2x0aXAnKVxuICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAwKVxuICAgICAgICAuYXR0cignZHgnLCAtY29uZmlnLndpZHRoIC8gKDIgKiAyICogMikpXG4gICAgICAgIC5hdHRyKCdkeScsIGNvbmZpZy5oZWlnaHQgLyAyICsgY29uZmlnLm1hcmdpbi50b3ApXG4gICAgICAgIC50ZXh0KHRvb2x0aXBUZXh0KVxuICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgIC5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKVxuICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAxKTtcbiAgICB9KVxuICAgIC5vbignbW91c2VvdXQnLCBmdW5jdGlvbiAodGhpcywgZXZlbnQsIGQpIHtcbiAgICAgIHRoaXMuc3R5bGUub3BhY2l0eSA9ICd1bnNldCc7XG4gICAgICBkMy5zZWxlY3RBbGwoJy5jaGFydC10b29sdGlwJylcbiAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbiAvIDIpXG4gICAgICAgIC5zdHlsZSgnb3BhY2l0eScsIDApXG4gICAgICAgIC5yZW1vdmUoKTtcbiAgICB9KTtcblxuICBhcmNzXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2ZpbGwnLCAoZCwgaSkgPT4gY29uZmlnLmNvbG9yKGkudG9TdHJpbmcoKSkpXG4gICAgLmF0dHIoJ2QnLCBhcmMpO1xuXG4gIGlmIChjb25maWcuc2hvd0xhYmVscykge1xuICAgIGNvbnN0IGxhYmVsID0gZDNcbiAgICAgIC5hcmM8ZDMuUGllQXJjRGF0dW08SVBpZUNoYXJ0RGF0YU5vZGU+PigpXG4gICAgICAuaW5uZXJSYWRpdXMocmFkaXVzKVxuICAgICAgLm91dGVyUmFkaXVzKHJhZGl1cyArIGNvbmZpZy5sYWJlbFJhZGl1c01vZGlmaWVyKTtcblxuICAgIGNvbnN0IHRleHREeSA9IDU7XG4gICAgYXJjc1xuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsICdtaWRkbGUnKVxuICAgICAgLmF0dHIoJ2R5JywgdGV4dER5KVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGQgPT4gYHRyYW5zbGF0ZSgke2xhYmVsLmNlbnRyb2lkKGQpfSlgKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAudGV4dChkID0+IGQuZGF0YS55KTtcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59O1xuIl19
|
|
@@ -237,8 +237,6 @@ const drawRadarChartBlobs = (radiusScale, angleSlice, g, data, config) => {
|
|
|
237
237
|
const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config) => {
|
|
238
238
|
// wrapper for the invisible circles on top
|
|
239
239
|
const blobCircleWrapper = g.selectAll('.radar-circle-wrapper').data(data).enter().append('g').attr('class', 'radar-circle-wrapper');
|
|
240
|
-
// set up the small tooltip for when you hover over a circle
|
|
241
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
242
240
|
// append a set of invisible circles on top for the mouseover pop-up
|
|
243
241
|
const blobCircleWrapperRadiusMultiplier = 1.5;
|
|
244
242
|
blobCircleWrapper
|
|
@@ -258,10 +256,22 @@ const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config)
|
|
|
258
256
|
const newY = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
259
257
|
const nodeData = event.target['__data__'];
|
|
260
258
|
const tooltipText = `${nodeData.value} ${nodeData.unit}`;
|
|
261
|
-
|
|
259
|
+
g.append('text')
|
|
260
|
+
.attr('class', 'chart-tooltip')
|
|
261
|
+
.style('opacity', 0)
|
|
262
|
+
.attr('x', newX)
|
|
263
|
+
.attr('y', newY)
|
|
264
|
+
.text(tooltipText)
|
|
265
|
+
.transition()
|
|
266
|
+
.duration(config.transitionDuration)
|
|
267
|
+
.style('opacity', 1);
|
|
262
268
|
})
|
|
263
269
|
.on('mouseout', () => {
|
|
264
|
-
|
|
270
|
+
d3.selectAll('.chart-tooltip')
|
|
271
|
+
.transition()
|
|
272
|
+
.duration(config.transitionDuration / 2)
|
|
273
|
+
.style('opacity', 0)
|
|
274
|
+
.remove();
|
|
265
275
|
});
|
|
266
276
|
};
|
|
267
277
|
/**
|
|
@@ -294,4 +304,4 @@ export const drawRadarChart = (container, data, options) => {
|
|
|
294
304
|
appendInvisibleTooltipCircles(g, data, radiusScale, angleSlice, config);
|
|
295
305
|
return config;
|
|
296
306
|
};
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkYXItY2hhcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL3V0aWwvcmFkYXItY2hhcnQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUd6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QixNQUFNLENBQUMsTUFBTSxDQUFxQjtJQUMzRixVQUFVLEVBQUUsRUFBRTtJQUNkLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUU7UUFDTixHQUFHLEVBQUUsRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsRUFBRTtLQUNUO0lBQ0QsTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxHQUFHO0lBQ2YsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsQ0FBQztJQUNaLGNBQWMsRUFBRSxHQUFHO0lBQ25CLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLEtBQUs7SUFDbkIsa0JBQWtCLEVBQUUsR0FBRztJQUN2QixLQUFLLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Q0FDNUMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQXFDLEVBQUUsTUFBMEIsRUFBRSxFQUFFO0lBQzVGLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLFNBQVMs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QUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV4QixtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFOUQsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcblxuaW1wb3J0IHsgSVJhZGFyQ2hhcnREYXRhTm9kZSwgSVJhZGFyQ2hhcnRPcHRpb25zLCBUUmFkYXJDaGFydERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JhZGFyLWNoYXJ0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24udXRpbCc7XG5cbi8qKlxuICogVGhlIHJhZGFyIGNoYXJ0IGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKDxJUmFkYXJDaGFydE9wdGlvbnM+e1xuICBjaGFydFRpdGxlOiAnJyxcbiAgd2lkdGg6IDM1MCxcbiAgaGVpZ2h0OiAzNTAsXG4gIG1hcmdpbjoge1xuICAgIHRvcDogNTAsXG4gICAgcmlnaHQ6IDUwLFxuICAgIGJvdHRvbTogNTAsXG4gICAgbGVmdDogNTAsXG4gIH0sXG4gIGxldmVsczogMywgLy8gaG93IG1hbnkgbGV2ZWxzIG9yIGlubmVyIGNpcmNsZXMgc2hvdWxkIHRoZXJlIGJlIGRyYXduXG4gIG1heFZhbHVlOiAwLCAvLyB3aGF0IGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBiaWdnZXN0IGNpcmNsZSB3aWxsIHJlcHJlc2VudFxuICBsaW5lRmFjdG9yOiAxLjEsIC8vIGhvdyBtdWNoIGZhcnRoZXIgdGhhbiB0aGUgcmFkaXVzIG9mIHRoZSBvdXRlciBjaXJjbGUgc2hvdWxkIHRoZSBsaW5lcyBiZSBzdHJldGNoZWRcbiAgbGFiZWxGYWN0b3I6IDEuMTUsIC8vIGhvdyBtdWNoIGZhcnRoZXIgdGhhbiB0aGUgcmFkaXVzIG9mIHRoZSBvdXRlciBjaXJjbGUgc2hvdWxkIHRoZSBsYWJlbHMgYmUgcGxhY2VkXG4gIGxhYmVsVGV4dFdyYXBXaWR0aDogNjAsIC8vIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGFmdGVyIHdoaWNoIGEgbGFiZWwgbmVlZHMgdG8gYmUgZ2l2ZW4gYSBuZXcgbGluZVxuICBvcGFjaXR5QXJlYTogMC4zNSwgLy8gdGhlIG9wYWNpdHkgb2YgdGhlIGFyZWEgb2YgdGhlIGJsb2JcbiAgZG90UmFkaXVzOiA0LCAvLyB0aGUgc2l6ZSBvZiB0aGUgY29sb3JlZCBjaXJjbGVzIG9mIGVhY2ggYmxvZ1xuICBvcGFjaXR5Q2lyY2xlczogMC4xLCAvLyB0aGUgb3BhY2l0eSBvZiB0aGUgY2lyY2xlcyBvZiBlYWNoIGJsb2JcbiAgc3Ryb2tlV2lkdGg6IDIsIC8vIHRoZSB3aWR0aCBvZiB0aGUgc3Ryb2tlIGFyb3VuZCBlYWNoIGJsb2JcbiAgcm91bmRTdHJva2VzOiBmYWxzZSwgLy8gaWYgdHJ1ZSB0aGUgYXJlYSBhbmQgc3Ryb2tlIHdpbGwgZm9sbG93IGEgcm91bmQgcGF0aCAoY2FyZGluYWwtY2xvc2VkKVxuICB0cmFuc2l0aW9uRHVyYXRpb246IDIwMCxcbiAgY29sb3I6IGQzLnNjYWxlT3JkaW5hbChkMy5zY2hlbWVDYXRlZ29yeTEwKSxcbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250YWluZXIgZm9yIHRoZSByYWRhciBjaGFydC5cbiAqIEBwYXJhbSBjb250YWluZXIgdGhlIGNoYXJ0IGNvbnRhaW5lclxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgdGhlIG9iamVjdCB3aXRoIHRoZSBzdmcgZWxlbWVudCBhbmQgdGhlIGcgZWxlbWVudFxuICovXG5jb25zdCBjcmVhdGVDb250YWluZXIgPSAoY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PiwgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMpID0+IHtcbiAgY29uc3QgaWQgPSBjb250YWluZXIubmF0aXZlRWxlbWVudC5pZCA/PyAncmFkYXItMCc7XG5cbiAgZDMuc2VsZWN0KGAjJHtpZH1gKS5zZWxlY3QoJ3N2ZycpLnJlbW92ZSgpO1xuICBjb25zdCBzdmcgPSBkM1xuICAgIC5zZWxlY3QoYCMke2lkfWApXG4gICAgLmFwcGVuZCgnc3ZnJylcbiAgICAuYXR0cignd2lkdGgnLCBjb25maWcud2lkdGggKyBjb25maWcubWFyZ2luLmxlZnQgKyBjb25maWcubWFyZ2luLnJpZ2h0KVxuICAgIC5hdHRyKCdoZWlnaHQnLCBjb25maWcuaGVpZ2h0ICsgY29uZmlnLm1hcmdpbi50b3AgKyBjb25maWcubWFyZ2luLmJvdHRvbSlcbiAgICAuYXR0cignY2xhc3MnLCBpZCk7XG4gIGNvbnN0IGcgPSBzdmdcbiAgICAuYXBwZW5kKCdnJylcbiAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke2NvbmZpZy53aWR0aCAvIDIgKyBjb25maWcubWFyZ2luLmxlZnR9LCR7Y29uZmlnLmhlaWdodCAvIDIgKyBjb25maWcubWFyZ2luLnRvcH0pYCk7XG5cbiAgcmV0dXJuIHsgc3ZnLCBnIH07XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSByYWRhciBjaGFydCBjaXJjdWxhciBncmlkLlxuICogQHBhcmFtIGF4aXNHcmlkIHRoZSBjaGFydCBheGlzIGdyaWRcbiAqIEBwYXJhbSByYWRpdXMgdGhlIGNoYXJ0IHJhZGl1cyB2YWx1ZVxuICogQHBhcmFtIG1heFZhbHVlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjaGFydCBheGlzXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGRyYXdDaXJjdWxhckdyaWQgPSAoXG4gIGF4aXNHcmlkOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgcmFkaXVzOiBudW1iZXIsXG4gIG1heFZhbHVlOiBudW1iZXIsXG4gIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIC8vIGJhY2tncm91bmQgY2lyY2xlc1xuICBheGlzR3JpZFxuICAgIC5zZWxlY3RBbGwoJy5sZXZlbHMnKVxuICAgIC5kYXRhKGQzLnJhbmdlKDEsIGNvbmZpZy5sZXZlbHMgKyAxKS5yZXZlcnNlKCkpXG4gICAgLmVudGVyKClcbiAgICAuYXBwZW5kKCdjaXJjbGUnKVxuICAgIC5hdHRyKCdjbGFzcycsICdncmlkLWNpcmNsZScpXG4gICAgLmF0dHIoJ3InLCAoZCwgaSkgPT4gKHJhZGl1cyAvIGNvbmZpZy5sZXZlbHMpICogZClcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnI0NEQ0RDRCcpXG4gICAgLnN0eWxlKCdzdHJva2UnLCAnI0NEQ0RDRCcpXG4gICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBjb25maWcub3BhY2l0eUNpcmNsZXMpXG4gICAgLnN0eWxlKCdmaWx0ZXInLCAndXJsKCNnbG93KScpO1xuICAvLyB0ZXh0IGluZGljYXRpbmcgYXQgd2hhdCAlIGVhY2ggbGV2ZWwgaXNcbiAgY29uc3QgYXhpc0dyaWRYID0gNDtcbiAgYXhpc0dyaWRcbiAgICAuc2VsZWN0QWxsKCcuYXhpcy1sYWJlbCcpXG4gICAgLmRhdGEoZDMucmFuZ2UoMSwgY29uZmlnLmxldmVscyArIDEpLnJldmVyc2UoKSlcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5hdHRyKCdjbGFzcycsICdheGlzLWxhYmVsJylcbiAgICAuYXR0cigneCcsIGF4aXNHcmlkWClcbiAgICAuYXR0cigneScsIGQgPT4gKC1kICogcmFkaXVzKSAvIGNvbmZpZy5sZXZlbHMpXG4gICAgLmF0dHIoJ2R5JywgJzAuNGVtJylcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMHB4JylcbiAgICAuYXR0cignZmlsbCcsICcjNzM3MzczJylcbiAgICAudGV4dCgoZCwgaSkgPT4gKG1heFZhbHVlICogZCkgLyBjb25maWcubGV2ZWxzKTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIGNoYXJ0IGF4aXMgbGFiZWxzIHRleHQuXG4gKiBAcGFyYW0gc3ZnVGV4dCB0aGUgc3ZnIHRleHQgZWxlbWVudHNcbiAqIEBwYXJhbSB3aWR0aCB0aGUgY2hhcnQgYXhpcyBsYWJlbCB3aWR0aFxuICovXG5jb25zdCB3cmFwU3ZnVGV4dCA9IChzdmdUZXh0OiBkMy5TZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIHN0cmluZywgU1ZHR0VsZW1lbnQsIHVua25vd24+LCB3aWR0aDogbnVtYmVyKSA9PiB7XG4gIHN2Z1RleHQuZWFjaChmdW5jdGlvbiAodGhpczogU1ZHVGV4dEVsZW1lbnQpIHtcbiAgICBjb25zdCB0ZXh0ID0gZDMuc2VsZWN0PFNWR0VsZW1lbnQsIHN0cmluZz4odGhpcyk7XG4gICAgY29uc3Qgd29yZHMgPSB0ZXh0LnRleHQoKS5zcGxpdCgvXFxzKy8pLnJldmVyc2UoKTtcbiAgICBpZiAod29yZHMubGVuZ3RoID4gMSkge1xuICAgICAgbGV0IGxpbmU6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgbGluZU51bWJlciA9IDA7XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gMS40O1xuICAgICAgY29uc3QgeSA9IHRleHQuYXR0cigneScpO1xuICAgICAgY29uc3QgeCA9IHRleHQuYXR0cigneCcpO1xuICAgICAgY29uc3QgZHkgPSBwYXJzZUZsb2F0KHRleHQuYXR0cignZHknKSA/PyAwKTtcbiAgICAgIGxldCB0c3BhbiA9IHRleHQudGV4dChudWxsKS5hcHBlbmQoJ3RzcGFuJykuYXR0cigneCcsIHgpLmF0dHIoJ3knLCB5KS5hdHRyKCdkeScsIGAke2R5fWVtYCk7XG5cbiAgICAgIGxldCB3b3JkID0gd29yZHMucG9wKCk7XG5cbiAgICAgIHdoaWxlICh0eXBlb2Ygd29yZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbGluZS5wdXNoKHdvcmQgPz8gJycpO1xuICAgICAgICB0c3Bhbi50ZXh0KGxpbmUuam9pbignICcpKTtcbiAgICAgICAgaWYgKCh0c3Bhbi5ub2RlKCk/LmdldENvbXB1dGVkVGV4dExlbmd0aCgpID8/IDApID4gd2lkdGgpIHtcbiAgICAgICAgICBsaW5lLnBvcCgpO1xuICAgICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICAgIGxpbmUgPSBbd29yZCA/PyAnJ107XG4gICAgICAgICAgbGluZU51bWJlciArPSAxO1xuICAgICAgICAgIHRzcGFuID0gdGV4dFxuICAgICAgICAgICAgLmFwcGVuZCgndHNwYW4nKVxuICAgICAgICAgICAgLmF0dHIoJ3gnLCB4KVxuICAgICAgICAgICAgLmF0dHIoJ3knLCB5KVxuICAgICAgICAgICAgLmF0dHIoJ2R5JywgYCR7bGluZU51bWJlciAqIGxpbmVIZWlnaHQgKyBkeX1lbWApXG4gICAgICAgICAgICAudGV4dCh3b3JkID8/ICcnKTtcbiAgICAgICAgfVxuICAgICAgICB3b3JkID0gd29yZHMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgbGVnZW5kLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgY3JlYXRlTGVnZW5kID0gKGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucykgPT4ge1xuICBpZiAoY29uZmlnLmNoYXJ0VGl0bGUgIT09ICcnKSB7XG4gICAgZy5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoLSR7Y29uZmlnLndpZHRoIC8gMiArIGNvbmZpZy5tYXJnaW4ubGVmdCAvIDJ9LCAtJHtjb25maWcuaGVpZ2h0IC8gMiArIGNvbmZpZy5tYXJnaW4udG9wIC8gMn0pYClcbiAgICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTJweCcpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAgIC50ZXh0KGNvbmZpZy5jaGFydFRpdGxlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEcmF3cyB0aGUgcmFkYXIgY2hhcnQgYXhpcy5cbiAqIEBwYXJhbSBheGlzR3JpZCB0aGUgY2hhcnQgYXhpcyBncmlkXG4gKiBAcGFyYW0gYXhpc05hbWVzIHRoZSBjaGFydCBheGlzIG5hbWVzXG4gKiBAcGFyYW0gcmFkaXVzU2NhbGUgdGhlIGNoYXJ0IHJhZGl1cyBzY2FsZVxuICogQHBhcmFtIG1heFZhbHVlIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjaGFydCBheGlzXG4gKiBAcGFyYW0gYW5nbGVTbGljZSB0aGUgY2hhcnQgYW5nbGUgc2xpY2UgdmFsdWVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgZHJhd0F4aXMgPSAoXG4gIGF4aXNHcmlkOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgYXhpc05hbWVzOiBzdHJpbmdbXSxcbiAgcmFkaXVzU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgbWF4VmFsdWU6IG51bWJlcixcbiAgYW5nbGVTbGljZTogbnVtYmVyLFxuICBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICAvLyBjcmVhdGUgdGhlIHN0cmFpZ2h0IGxpbmVzIHJhZGlhdGluZyBvdXR3YXJkIGZyb20gdGhlIGNlbnRlclxuICBjb25zdCBheGlzID0gYXhpc0dyaWQuc2VsZWN0QWxsKCcuYXhpcycpLmRhdGEoYXhpc05hbWVzKS5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2F4aXMnKTtcbiAgLy8gYXBwZW5kIHRoZSBsaW5lc1xuICBheGlzXG4gICAgLmFwcGVuZCgnbGluZScpXG4gICAgLmF0dHIoJ3gxJywgMClcbiAgICAuYXR0cigneTEnLCAwKVxuICAgIC5hdHRyKCd4MicsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5saW5lRmFjdG9yKSAqIE1hdGguY29zKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5hdHRyKCd5MicsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5saW5lRmFjdG9yKSAqIE1hdGguc2luKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5hdHRyKCdjbGFzcycsICdsaW5lJylcbiAgICAuc3R5bGUoJ3N0cm9rZScsICd3aGl0ZScpXG4gICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCAnMnB4Jyk7XG4gIC8vIGFwcGVuZCB0aGUgbGFiZWxzIGF0IGVhY2ggYXhpc1xuICBheGlzXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2xlZ2VuZCcpXG4gICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTFweCcpXG4gICAgLmF0dHIoJ3RleHQtYW5jaG9yJywgJ21pZGRsZScpXG4gICAgLmF0dHIoJ2R5JywgJzAuMzVlbScpXG4gICAgLmF0dHIoJ3gnLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUobWF4VmFsdWUgKiBjb25maWcubGFiZWxGYWN0b3IpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ3knLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUobWF4VmFsdWUgKiBjb25maWcubGFiZWxGYWN0b3IpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLnRleHQoZCA9PiBkKVxuICAgIC5jYWxsKHdyYXBTdmdUZXh0LCBjb25maWcubGFiZWxUZXh0V3JhcFdpZHRoKTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0IGJsb2JzLlxuICogQHBhcmFtIHJhZGl1c1NjYWxlIHRoZSBjaGFydCByYWRpdXMgc2NhbGVcbiAqIEBwYXJhbSBhbmdsZVNsaWNlIHRoZSBjaGFydCBhbmdsZSBzbGljZSB2YWx1ZVxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGRyYXdSYWRhckNoYXJ0QmxvYnMgPSAoXG4gIHJhZGl1c1NjYWxlOiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGFuZ2xlU2xpY2U6IG51bWJlcixcbiAgZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sXG4gIGRhdGE6IFRSYWRhckNoYXJ0RGF0YSxcbiAgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgLy8gdGhlIHJhZGlhbCBsaW5lIGZ1bmN0aW9uXG4gIGNvbnN0IHJhZGFyTGluZSA9IGQzXG4gICAgLmxpbmVSYWRpYWw8SVJhZGFyQ2hhcnREYXRhTm9kZT4oKVxuICAgIC5yYWRpdXMoZCA9PiByYWRpdXNTY2FsZShkLnZhbHVlKSlcbiAgICAuYW5nbGUoKGQsIGkpID0+IGkgKiBhbmdsZVNsaWNlKTtcbiAgLy8gY3JlYXRlIGEgd3JhcHBlciBmb3IgdGhlIGJsb2JzXG4gIGNvbnN0IGJsb2JXcmFwcGVyID0gZy5zZWxlY3RBbGwoJy5yYWRhci13cmFwcGVyJykuZGF0YShkYXRhKS5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLXdyYXBwZXInKTtcbiAgLy8gYXBwZW5kIHRoZSBiYWNrZ3JvdW5kc1xuICBibG9iV3JhcHBlclxuICAgIC5hcHBlbmQoJ3BhdGgnKVxuICAgIC5hdHRyKCdjbGFzcycsICdyYWRhci1hcmVhJylcbiAgICAuYXR0cignZCcsIChkLCBpKSA9PiByYWRhckxpbmUoZCkpXG4gICAgLnN0eWxlKCdmaWxsJywgKGQsIGkpID0+IGNvbmZpZy5jb2xvcihpLnRvU3RyaW5nKCkpKVxuICAgIC5zdHlsZSgnZmlsbC1vcGFjaXR5JywgY29uZmlnLm9wYWNpdHlBcmVhKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKGQsIGkpIHtcbiAgICAgIC8vIGRpbSBhbGwgYmxvYnNcbiAgICAgIGNvbnN0IHJhZGFyQXJlYUZpbGxPcGFjaXR5ID0gMC4xO1xuICAgICAgZDMuc2VsZWN0QWxsKCcucmFkYXItYXJlYScpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKS5zdHlsZSgnZmlsbC1vcGFjaXR5JywgcmFkYXJBcmVhRmlsbE9wYWNpdHkpO1xuICAgICAgLy8gYnJpbmcgYmFjayB0aGUgaG92ZXJlZCBvdmVyIGJsb2JcbiAgICAgIGNvbnN0IGZpbGxPcGFjaXR5ID0gMC43O1xuICAgICAgZDMuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKS5zdHlsZSgnZmlsbC1vcGFjaXR5JywgZmlsbE9wYWNpdHkpO1xuICAgIH0pXG4gICAgLm9uKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgIC8vIGJyaW5nIGJhY2sgYWxsIGJsb2JzXG4gICAgICBkMy5zZWxlY3RBbGwoJy5yYWRhci1hcmVhJykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBjb25maWcub3BhY2l0eUFyZWEpO1xuICAgIH0pO1xuICAvLyBjcmVhdGUgdGhlIG91dGxpbmVzXG4gIGJsb2JXcmFwcGVyXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLXN0cm9rZScpXG4gICAgLmF0dHIoJ2QnLCAoZCwgaSkgPT4gcmFkYXJMaW5lKGQpKVxuICAgIC5zdHlsZSgnc3Ryb2tlLXdpZHRoJywgYCR7Y29uZmlnLnN0cm9rZVdpZHRofXB4YClcbiAgICAuc3R5bGUoJ3N0cm9rZScsIChkLCBpKSA9PiBjb25maWcuY29sb3IoaS50b1N0cmluZygpKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgLnN0eWxlKCdmaWx0ZXInLCAndXJsKCNnbG93KScpO1xuICAvLyBhcHBlbmQgdGhlIGNpcmNsZXNcbiAgY29uc3QgYmxvYldyYXBwZXJGaWxsT3BhY2l0eSA9IDAuODtcbiAgYmxvYldyYXBwZXJcbiAgICAuc2VsZWN0QWxsKCcucmFkYXItY2lyY2xlJylcbiAgICAuZGF0YSgoZCwgaSkgPT4gZClcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWNpcmNsZScpXG4gICAgLmF0dHIoJ3InLCBjb25maWcuZG90UmFkaXVzKVxuICAgIC5hdHRyKCdjeCcsIChkLCBpKSA9PiByYWRpdXNTY2FsZShkLnZhbHVlKSAqIE1hdGguY29zKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5hdHRyKCdjeScsIChkLCBpKSA9PiByYWRpdXNTY2FsZShkLnZhbHVlKSAqIE1hdGguc2luKGFuZ2xlU2xpY2UgKiBpIC0gTWF0aC5QSSAvIDIpKVxuICAgIC5zdHlsZSgnZmlsbCcsIChkLCBpLCBqKSA9PiBjb25maWcuY29sb3Ioai50b1N0cmluZygpKSlcbiAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsIGJsb2JXcmFwcGVyRmlsbE9wYWNpdHkpO1xufTtcblxuLyoqXG4gKiBBcHBlbmRzIHRoZSBpbnZpc2libGUgdG9vbHRpcCBjaXJjbGVzLlxuICogQHBhcmFtIGcgdGhlIHN2ZyBnIGVsZW1lbnRcbiAqIEBwYXJhbSBkYXRhIHRoZSBjaGFydCBkYXRhXG4gKiBAcGFyYW0gcmFkaXVzU2NhbGUgdGhlIGNoYXJ0IHJhZGl1cyBzY2FsZVxuICogQHBhcmFtIGFuZ2xlU2xpY2UgdGhlIGNoYXJ0IGFuZ2xlIHNsaWNlIHZhbHVlXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGFwcGVuZEludmlzaWJsZVRvb2x0aXBDaXJjbGVzID0gKFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgZGF0YTogVFJhZGFyQ2hhcnREYXRhLFxuICByYWRpdXNTY2FsZTogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+LFxuICBhbmdsZVNsaWNlOiBudW1iZXIsXG4gIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIC8vIHdyYXBwZXIgZm9yIHRoZSBpbnZpc2libGUgY2lyY2xlcyBvbiB0b3BcbiAgY29uc3QgYmxvYkNpcmNsZVdyYXBwZXIgPSBnLnNlbGVjdEFsbCgnLnJhZGFyLWNpcmNsZS13cmFwcGVyJykuZGF0YShkYXRhKS5lbnRlcigpLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWNpcmNsZS13cmFwcGVyJyk7XG4gIC8vIHNldCB1cCB0aGUgc21hbGwgdG9vbHRpcCBmb3Igd2hlbiB5b3UgaG92ZXIgb3ZlciBhIGNpcmNsZVxuICBjb25zdCB0b29sdGlwID0gZy5hcHBlbmQoJ3RleHQnKS5hdHRyKCdjbGFzcycsICdjaGFydC10b29sdGlwJykuc3R5bGUoJ29wYWNpdHknLCAwKTtcbiAgLy8gYXBwZW5kIGEgc2V0IG9mIGludmlzaWJsZSBjaXJjbGVzIG9uIHRvcCBmb3IgdGhlIG1vdXNlb3ZlciBwb3AtdXBcbiAgY29uc3QgYmxvYkNpcmNsZVdyYXBwZXJSYWRpdXNNdWx0aXBsaWVyID0gMS41O1xuICBibG9iQ2lyY2xlV3JhcHBlclxuICAgIC5zZWxlY3RBbGw8U1ZHRWxlbWVudCwgSVJhZGFyQ2hhcnREYXRhTm9kZT4oJy5yYWRhci1pbnZpc2libGUtY2lyY2xlJylcbiAgICAuZGF0YSgoZCwgaSkgPT4gZClcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWludmlzaWJsZS1jaXJjbGUnKVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyAqIGJsb2JDaXJjbGVXcmFwcGVyUmFkaXVzTXVsdGlwbGllcilcbiAgICAuYXR0cignY3gnLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLmNvcyhhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuYXR0cignY3knLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLnNpbihhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdhbGwnKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKGV2ZW50OiBNb3VzZUV2ZW50LCBpKSB7XG4gICAgICBjb25zdCBtb2RpZmllciA9IDEwO1xuICAgICAgY29uc3QgbmV3WCA9IHBhcnNlRmxvYXQoZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ2N4JykpIC0gbW9kaWZpZXI7XG4gICAgICBjb25zdCBuZXdZID0gcGFyc2VGbG9hdChkMy5zZWxlY3QodGhpcykuYXR0cignY3knKSkgLSBtb2RpZmllcjtcblxuICAgICAgY29uc3Qgbm9kZURhdGEgPSAoZXZlbnQudGFyZ2V0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgSVJhZGFyQ2hhcnREYXRhTm9kZT4pWydfX2RhdGFfXyddO1xuICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSBgJHtub2RlRGF0YS52YWx1ZX0gJHtub2RlRGF0YS51bml0fWA7XG4gICAgICB0b29sdGlwLmF0dHIoJ3gnLCBuZXdYKS5hdHRyKCd5JywgbmV3WSkudGV4dCh0b29sdGlwVGV4dCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdvcGFjaXR5JywgMSk7XG4gICAgfSlcbiAgICAub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgdG9vbHRpcC50cmFuc2l0aW9uKCkuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbikuc3R5bGUoJ29wYWNpdHknLCAwKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gZGF0YSB0aGUgY2hhcnQgZGF0YVxuICogQHBhcmFtIG9wdGlvbnMgdGhlIGNoYXJ0IG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRyYXdSYWRhckNoYXJ0ID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGRhdGE6IFRSYWRhckNoYXJ0RGF0YSwgb3B0aW9ucz86IFBhcnRpYWw8SVJhZGFyQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyA9IGdlbmVyYXRlQ29uZmlndXJhdGlvbjxJUmFkYXJDaGFydE9wdGlvbnM+KGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heChjb25maWcubWF4VmFsdWUsIGQzLm1heChkYXRhLCBpID0+IGQzLm1heChpLm1hcChvID0+IG8udmFsdWUpKSkgPz8gMCk7XG4gIGNvbnN0IGF4aXNOYW1lcyA9IGRhdGFbMF0ubWFwKChpLCBqKSA9PiBpLmF4aXMpO1xuICBjb25zdCB0b3RhbEF4aXMgPSBheGlzTmFtZXMubGVuZ3RoO1xuICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihjb25maWcud2lkdGggLyAyIC0gY29uZmlnLm1hcmdpbi5sZWZ0IC8gMiwgY29uZmlnLmhlaWdodCAvIDIgLSBjb25maWcubWFyZ2luLnRvcCAvIDIpO1xuICBjb25zdCBhbmdsZVNsaWNlID0gKE1hdGguUEkgKiAyKSAvIHRvdGFsQXhpcztcbiAgY29uc3QgcmFkaXVzU2NhbGUgPSBkMy5zY2FsZUxpbmVhcihbMCwgcmFkaXVzXSkuZG9tYWluKFswLCBtYXhWYWx1ZV0pO1xuXG4gIGNvbnN0IHsgZyB9ID0gY3JlYXRlQ29udGFpbmVyKGNvbnRhaW5lciwgY29uZmlnKTtcblxuICAvLyBmaWx0ZXIgZm9yIHRoZSBvdXRzaWRlIGdsb3dcbiAgY29uc3QgZmlsdGVyID0gZy5hcHBlbmQoJ2RlZnMnKS5hcHBlbmQoJ2ZpbHRlcicpLmF0dHIoJ2lkJywgJ2dsb3cnKTtcbiAgZmlsdGVyLmFwcGVuZCgnZmVHYXVzc2lhbkJsdXInKS5hdHRyKCdzdGREZXZpYXRpb24nLCAnMi41JykuYXR0cigncmVzdWx0JywgJ2NvbG9yZWRCbHVyJyk7XG4gIGNvbnN0IGZlTWVyZ2UgPSBmaWx0ZXIuYXBwZW5kKCdmZU1lcmdlJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ2NvbG9yZWRCbHVyJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ1NvdXJjZUdyYXBoaWMnKTtcblxuICBjb25zdCBheGlzR3JpZCA9IGcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcy13cmFwcGVyJyk7XG5cbiAgZHJhd0NpcmN1bGFyR3JpZChheGlzR3JpZCwgcmFkaXVzLCBtYXhWYWx1ZSwgY29uZmlnKTtcblxuICBkcmF3QXhpcyhheGlzR3JpZCwgYXhpc05hbWVzLCByYWRpdXNTY2FsZSwgbWF4VmFsdWUsIGFuZ2xlU2xpY2UsIGNvbmZpZyk7XG5cbiAgY3JlYXRlTGVnZW5kKGcsIGNvbmZpZyk7XG5cbiAgZHJhd1JhZGFyQ2hhcnRCbG9icyhyYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgZywgZGF0YSwgY29uZmlnKTtcblxuICBhcHBlbmRJbnZpc2libGVUb29sdGlwQ2lyY2xlcyhnLCBkYXRhLCByYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgY29uZmlnKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkYXItY2hhcnQudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWQzLWNoYXJ0cy9zcmMvbGliL3V0aWwvcmFkYXItY2hhcnQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUd6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF1QixNQUFNLENBQUMsTUFBTSxDQUFxQjtJQUMzRixVQUFVLEVBQUUsRUFBRTtJQUNkLEtBQUssRUFBRSxHQUFHO0lBQ1YsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUU7UUFDTixHQUFHLEVBQUUsRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFO1FBQ1QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsRUFBRTtLQUNUO0lBQ0QsTUFBTSxFQUFFLENBQUM7SUFDVCxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxHQUFHO0lBQ2YsV0FBVyxFQUFFLElBQUk7SUFDakIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QixXQUFXLEVBQUUsSUFBSTtJQUNqQixTQUFTLEVBQUUsQ0FBQztJQUNaLGNBQWMsRUFBRSxHQUFHO0lBQ25CLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLEtBQUs7SUFDbkIsa0JBQWtCLEVBQUUsR0FBRztJQUN2QixLQUFLLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Q0FDNUMsQ0FBQyxDQUFDO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQXFDLEVBQUUsTUFBMEIsRUFBRSxFQUFFO0lBQzVGLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLFNBQVMs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QztJQUV6RSxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXhCLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU5RCw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFeEUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuXG5pbXBvcnQgeyBJUmFkYXJDaGFydERhdGFOb2RlLCBJUmFkYXJDaGFydE9wdGlvbnMsIFRSYWRhckNoYXJ0RGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmFkYXItY2hhcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdlbmVyYXRlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29uZmlndXJhdGlvbi51dGlsJztcblxuLyoqXG4gKiBUaGUgcmFkYXIgY2hhcnQgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdFJhZGFyQ2hhcnRDb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoPElSYWRhckNoYXJ0T3B0aW9ucz57XG4gIGNoYXJ0VGl0bGU6ICcnLFxuICB3aWR0aDogMzUwLFxuICBoZWlnaHQ6IDM1MCxcbiAgbWFyZ2luOiB7XG4gICAgdG9wOiA1MCxcbiAgICByaWdodDogNTAsXG4gICAgYm90dG9tOiA1MCxcbiAgICBsZWZ0OiA1MCxcbiAgfSxcbiAgbGV2ZWxzOiAzLCAvLyBob3cgbWFueSBsZXZlbHMgb3IgaW5uZXIgY2lyY2xlcyBzaG91bGQgdGhlcmUgYmUgZHJhd25cbiAgbWF4VmFsdWU6IDAsIC8vIHdoYXQgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIGJpZ2dlc3QgY2lyY2xlIHdpbGwgcmVwcmVzZW50XG4gIGxpbmVGYWN0b3I6IDEuMSwgLy8gaG93IG11Y2ggZmFydGhlciB0aGFuIHRoZSByYWRpdXMgb2YgdGhlIG91dGVyIGNpcmNsZSBzaG91bGQgdGhlIGxpbmVzIGJlIHN0cmV0Y2hlZFxuICBsYWJlbEZhY3RvcjogMS4xNSwgLy8gaG93IG11Y2ggZmFydGhlciB0aGFuIHRoZSByYWRpdXMgb2YgdGhlIG91dGVyIGNpcmNsZSBzaG91bGQgdGhlIGxhYmVscyBiZSBwbGFjZWRcbiAgbGFiZWxUZXh0V3JhcFdpZHRoOiA2MCwgLy8gdGhlIG51bWJlciBvZiBwaXhlbHMgYWZ0ZXIgd2hpY2ggYSBsYWJlbCBuZWVkcyB0byBiZSBnaXZlbiBhIG5ldyBsaW5lXG4gIG9wYWNpdHlBcmVhOiAwLjM1LCAvLyB0aGUgb3BhY2l0eSBvZiB0aGUgYXJlYSBvZiB0aGUgYmxvYlxuICBkb3RSYWRpdXM6IDQsIC8vIHRoZSBzaXplIG9mIHRoZSBjb2xvcmVkIGNpcmNsZXMgb2YgZWFjaCBibG9nXG4gIG9wYWNpdHlDaXJjbGVzOiAwLjEsIC8vIHRoZSBvcGFjaXR5IG9mIHRoZSBjaXJjbGVzIG9mIGVhY2ggYmxvYlxuICBzdHJva2VXaWR0aDogMiwgLy8gdGhlIHdpZHRoIG9mIHRoZSBzdHJva2UgYXJvdW5kIGVhY2ggYmxvYlxuICByb3VuZFN0cm9rZXM6IGZhbHNlLCAvLyBpZiB0cnVlIHRoZSBhcmVhIGFuZCBzdHJva2Ugd2lsbCBmb2xsb3cgYSByb3VuZCBwYXRoIChjYXJkaW5hbC1jbG9zZWQpXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogMjAwLFxuICBjb2xvcjogZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApLFxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbnRhaW5lciBmb3IgdGhlIHJhZGFyIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gY29uZmlnIHRoZSBjaGFydCBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyB0aGUgb2JqZWN0IHdpdGggdGhlIHN2ZyBlbGVtZW50IGFuZCB0aGUgZyBlbGVtZW50XG4gKi9cbmNvbnN0IGNyZWF0ZUNvbnRhaW5lciA9IChjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucykgPT4ge1xuICBjb25zdCBpZCA9IGNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmlkID8/ICdyYWRhci0wJztcblxuICBkMy5zZWxlY3QoYCMke2lkfWApLnNlbGVjdCgnc3ZnJykucmVtb3ZlKCk7XG4gIGNvbnN0IHN2ZyA9IGQzXG4gICAgLnNlbGVjdChgIyR7aWR9YClcbiAgICAuYXBwZW5kKCdzdmcnKVxuICAgIC5hdHRyKCd3aWR0aCcsIGNvbmZpZy53aWR0aCArIGNvbmZpZy5tYXJnaW4ubGVmdCArIGNvbmZpZy5tYXJnaW4ucmlnaHQpXG4gICAgLmF0dHIoJ2hlaWdodCcsIGNvbmZpZy5oZWlnaHQgKyBjb25maWcubWFyZ2luLnRvcCArIGNvbmZpZy5tYXJnaW4uYm90dG9tKVxuICAgIC5hdHRyKCdjbGFzcycsIGlkKTtcbiAgY29uc3QgZyA9IHN2Z1xuICAgIC5hcHBlbmQoJ2cnKVxuICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7Y29uZmlnLndpZHRoIC8gMiArIGNvbmZpZy5tYXJnaW4ubGVmdH0sJHtjb25maWcuaGVpZ2h0IC8gMiArIGNvbmZpZy5tYXJnaW4udG9wfSlgKTtcblxuICByZXR1cm4geyBzdmcsIGcgfTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0IGNpcmN1bGFyIGdyaWQuXG4gKiBAcGFyYW0gYXhpc0dyaWQgdGhlIGNoYXJ0IGF4aXMgZ3JpZFxuICogQHBhcmFtIHJhZGl1cyB0aGUgY2hhcnQgcmFkaXVzIHZhbHVlXG4gKiBAcGFyYW0gbWF4VmFsdWUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNoYXJ0IGF4aXNcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgZHJhd0NpcmN1bGFyR3JpZCA9IChcbiAgYXhpc0dyaWQ6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICByYWRpdXM6IG51bWJlcixcbiAgbWF4VmFsdWU6IG51bWJlcixcbiAgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgLy8gYmFja2dyb3VuZCBjaXJjbGVzXG4gIGF4aXNHcmlkXG4gICAgLnNlbGVjdEFsbCgnLmxldmVscycpXG4gICAgLmRhdGEoZDMucmFuZ2UoMSwgY29uZmlnLmxldmVscyArIDEpLnJldmVyc2UoKSlcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2dyaWQtY2lyY2xlJylcbiAgICAuYXR0cigncicsIChkLCBpKSA9PiAocmFkaXVzIC8gY29uZmlnLmxldmVscykgKiBkKVxuICAgIC5zdHlsZSgnZmlsbCcsICcjQ0RDRENEJylcbiAgICAuc3R5bGUoJ3N0cm9rZScsICcjQ0RDRENEJylcbiAgICAuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsIGNvbmZpZy5vcGFjaXR5Q2lyY2xlcylcbiAgICAuc3R5bGUoJ2ZpbHRlcicsICd1cmwoI2dsb3cpJyk7XG4gIC8vIHRleHQgaW5kaWNhdGluZyBhdCB3aGF0ICUgZWFjaCBsZXZlbCBpc1xuICBjb25zdCBheGlzR3JpZFggPSA0O1xuICBheGlzR3JpZFxuICAgIC5zZWxlY3RBbGwoJy5heGlzLWxhYmVsJylcbiAgICAuZGF0YShkMy5yYW5nZSgxLCBjb25maWcubGV2ZWxzICsgMSkucmV2ZXJzZSgpKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgndGV4dCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2F4aXMtbGFiZWwnKVxuICAgIC5hdHRyKCd4JywgYXhpc0dyaWRYKVxuICAgIC5hdHRyKCd5JywgZCA9PiAoLWQgKiByYWRpdXMpIC8gY29uZmlnLmxldmVscylcbiAgICAuYXR0cignZHknLCAnMC40ZW0nKVxuICAgIC5zdHlsZSgnZm9udC1zaXplJywgJzEwcHgnKVxuICAgIC5hdHRyKCdmaWxsJywgJyM3MzczNzMnKVxuICAgIC50ZXh0KChkLCBpKSA9PiAobWF4VmFsdWUgKiBkKSAvIGNvbmZpZy5sZXZlbHMpO1xufTtcblxuLyoqXG4gKiBXcmFwcyB0aGUgY2hhcnQgYXhpcyBsYWJlbHMgdGV4dC5cbiAqIEBwYXJhbSBzdmdUZXh0IHRoZSBzdmcgdGV4dCBlbGVtZW50c1xuICogQHBhcmFtIHdpZHRoIHRoZSBjaGFydCBheGlzIGxhYmVsIHdpZHRoXG4gKi9cbmNvbnN0IHdyYXBTdmdUZXh0ID0gKHN2Z1RleHQ6IGQzLlNlbGVjdGlvbjxTVkdUZXh0RWxlbWVudCwgc3RyaW5nLCBTVkdHRWxlbWVudCwgdW5rbm93bj4sIHdpZHRoOiBudW1iZXIpID0+IHtcbiAgc3ZnVGV4dC5lYWNoKGZ1bmN0aW9uICh0aGlzOiBTVkdUZXh0RWxlbWVudCkge1xuICAgIGNvbnN0IHRleHQgPSBkMy5zZWxlY3Q8U1ZHRWxlbWVudCwgc3RyaW5nPih0aGlzKTtcbiAgICBjb25zdCB3b3JkcyA9IHRleHQudGV4dCgpLnNwbGl0KC9cXHMrLykucmV2ZXJzZSgpO1xuICAgIGlmICh3b3Jkcy5sZW5ndGggPiAxKSB7XG4gICAgICBsZXQgbGluZTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGxldCBsaW5lTnVtYmVyID0gMDtcbiAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSAxLjQ7XG4gICAgICBjb25zdCB5ID0gdGV4dC5hdHRyKCd5Jyk7XG4gICAgICBjb25zdCB4ID0gdGV4dC5hdHRyKCd4Jyk7XG4gICAgICBjb25zdCBkeSA9IHBhcnNlRmxvYXQodGV4dC5hdHRyKCdkeScpID8/IDApO1xuICAgICAgbGV0IHRzcGFuID0gdGV4dC50ZXh0KG51bGwpLmFwcGVuZCgndHNwYW4nKS5hdHRyKCd4JywgeCkuYXR0cigneScsIHkpLmF0dHIoJ2R5JywgYCR7ZHl9ZW1gKTtcblxuICAgICAgbGV0IHdvcmQgPSB3b3Jkcy5wb3AoKTtcblxuICAgICAgd2hpbGUgKHR5cGVvZiB3b3JkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsaW5lLnB1c2god29yZCA/PyAnJyk7XG4gICAgICAgIHRzcGFuLnRleHQobGluZS5qb2luKCcgJykpO1xuICAgICAgICBpZiAoKHRzcGFuLm5vZGUoKT8uZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkgPz8gMCkgPiB3aWR0aCkge1xuICAgICAgICAgIGxpbmUucG9wKCk7XG4gICAgICAgICAgdHNwYW4udGV4dChsaW5lLmpvaW4oJyAnKSk7XG4gICAgICAgICAgbGluZSA9IFt3b3JkID8/ICcnXTtcbiAgICAgICAgICBsaW5lTnVtYmVyICs9IDE7XG4gICAgICAgICAgdHNwYW4gPSB0ZXh0XG4gICAgICAgICAgICAuYXBwZW5kKCd0c3BhbicpXG4gICAgICAgICAgICAuYXR0cigneCcsIHgpXG4gICAgICAgICAgICAuYXR0cigneScsIHkpXG4gICAgICAgICAgICAuYXR0cignZHknLCBgJHtsaW5lTnVtYmVyICogbGluZUhlaWdodCArIGR5fWVtYClcbiAgICAgICAgICAgIC50ZXh0KHdvcmQgPz8gJycpO1xuICAgICAgICB9XG4gICAgICAgIHdvcmQgPSB3b3Jkcy5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBsZWdlbmQuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBjcmVhdGVMZWdlbmQgPSAoZzogZDMuU2VsZWN0aW9uPFNWR0dFbGVtZW50LCB1bmtub3duLCBIVE1MRWxlbWVudCwgdW5rbm93bj4sIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zKSA9PiB7XG4gIGlmIChjb25maWcuY2hhcnRUaXRsZSAhPT0gJycpIHtcbiAgICBnLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgtJHtjb25maWcud2lkdGggLyAyICsgY29uZmlnLm1hcmdpbi5sZWZ0IC8gMn0sIC0ke2NvbmZpZy5oZWlnaHQgLyAyICsgY29uZmlnLm1hcmdpbi50b3AgLyAyfSlgKVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMnB4JylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsZWdlbmQnKVxuICAgICAgLnRleHQoY29uZmlnLmNoYXJ0VGl0bGUpO1xuICB9XG59O1xuXG4vKipcbiAqIERyYXdzIHRoZSByYWRhciBjaGFydCBheGlzLlxuICogQHBhcmFtIGF4aXNHcmlkIHRoZSBjaGFydCBheGlzIGdyaWRcbiAqIEBwYXJhbSBheGlzTmFtZXMgdGhlIGNoYXJ0IGF4aXMgbmFtZXNcbiAqIEBwYXJhbSByYWRpdXNTY2FsZSB0aGUgY2hhcnQgcmFkaXVzIHNjYWxlXG4gKiBAcGFyYW0gbWF4VmFsdWUgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNoYXJ0IGF4aXNcbiAqIEBwYXJhbSBhbmdsZVNsaWNlIHRoZSBjaGFydCBhbmdsZSBzbGljZSB2YWx1ZVxuICogQHBhcmFtIGNvbmZpZyB0aGUgY2hhcnQgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBkcmF3QXhpcyA9IChcbiAgYXhpc0dyaWQ6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICBheGlzTmFtZXM6IHN0cmluZ1tdLFxuICByYWRpdXNTY2FsZTogZDMuU2NhbGVMaW5lYXI8bnVtYmVyLCBudW1iZXI+LFxuICBtYXhWYWx1ZTogbnVtYmVyLFxuICBhbmdsZVNsaWNlOiBudW1iZXIsXG4gIGNvbmZpZzogSVJhZGFyQ2hhcnRPcHRpb25zLFxuKSA9PiB7XG4gIC8vIGNyZWF0ZSB0aGUgc3RyYWlnaHQgbGluZXMgcmFkaWF0aW5nIG91dHdhcmQgZnJvbSB0aGUgY2VudGVyXG4gIGNvbnN0IGF4aXMgPSBheGlzR3JpZC5zZWxlY3RBbGwoJy5heGlzJykuZGF0YShheGlzTmFtZXMpLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcycpO1xuICAvLyBhcHBlbmQgdGhlIGxpbmVzXG4gIGF4aXNcbiAgICAuYXBwZW5kKCdsaW5lJylcbiAgICAuYXR0cigneDEnLCAwKVxuICAgIC5hdHRyKCd5MScsIDApXG4gICAgLmF0dHIoJ3gyJywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKG1heFZhbHVlICogY29uZmlnLmxpbmVGYWN0b3IpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ3kyJywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKG1heFZhbHVlICogY29uZmlnLmxpbmVGYWN0b3IpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ2xpbmUnKVxuICAgIC5zdHlsZSgnc3Ryb2tlJywgJ3doaXRlJylcbiAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsICcycHgnKTtcbiAgLy8gYXBwZW5kIHRoZSBsYWJlbHMgYXQgZWFjaCBheGlzXG4gIGF4aXNcbiAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAuYXR0cignY2xhc3MnLCAnbGVnZW5kJylcbiAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMXB4JylcbiAgICAuYXR0cigndGV4dC1hbmNob3InLCAnbWlkZGxlJylcbiAgICAuYXR0cignZHknLCAnMC4zNWVtJylcbiAgICAuYXR0cigneCcsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5sYWJlbEZhY3RvcikgKiBNYXRoLmNvcyhhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuYXR0cigneScsIChkLCBpKSA9PiByYWRpdXNTY2FsZShtYXhWYWx1ZSAqIGNvbmZpZy5sYWJlbEZhY3RvcikgKiBNYXRoLnNpbihhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAudGV4dChkID0+IGQpXG4gICAgLmNhbGwod3JhcFN2Z1RleHQsIGNvbmZpZy5sYWJlbFRleHRXcmFwV2lkdGgpO1xufTtcblxuLyoqXG4gKiBEcmF3cyB0aGUgcmFkYXIgY2hhcnQgYmxvYnMuXG4gKiBAcGFyYW0gcmFkaXVzU2NhbGUgdGhlIGNoYXJ0IHJhZGl1cyBzY2FsZVxuICogQHBhcmFtIGFuZ2xlU2xpY2UgdGhlIGNoYXJ0IGFuZ2xlIHNsaWNlIHZhbHVlXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgZHJhd1JhZGFyQ2hhcnRCbG9icyA9IChcbiAgcmFkaXVzU2NhbGU6IGQzLlNjYWxlTGluZWFyPG51bWJlciwgbnVtYmVyPixcbiAgYW5nbGVTbGljZTogbnVtYmVyLFxuICBnOiBkMy5TZWxlY3Rpb248U1ZHR0VsZW1lbnQsIHVua25vd24sIEhUTUxFbGVtZW50LCB1bmtub3duPixcbiAgZGF0YTogVFJhZGFyQ2hhcnREYXRhLFxuICBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyxcbikgPT4ge1xuICAvLyB0aGUgcmFkaWFsIGxpbmUgZnVuY3Rpb25cbiAgY29uc3QgcmFkYXJMaW5lID0gZDNcbiAgICAubGluZVJhZGlhbDxJUmFkYXJDaGFydERhdGFOb2RlPigpXG4gICAgLnJhZGl1cyhkID0+IHJhZGl1c1NjYWxlKGQudmFsdWUpKVxuICAgIC5hbmdsZSgoZCwgaSkgPT4gaSAqIGFuZ2xlU2xpY2UpO1xuICAvLyBjcmVhdGUgYSB3cmFwcGVyIGZvciB0aGUgYmxvYnNcbiAgY29uc3QgYmxvYldyYXBwZXIgPSBnLnNlbGVjdEFsbCgnLnJhZGFyLXdyYXBwZXInKS5kYXRhKGRhdGEpLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAncmFkYXItd3JhcHBlcicpO1xuICAvLyBhcHBlbmQgdGhlIGJhY2tncm91bmRzXG4gIGJsb2JXcmFwcGVyXG4gICAgLmFwcGVuZCgncGF0aCcpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWFyZWEnKVxuICAgIC5hdHRyKCdkJywgKGQsIGkpID0+IHJhZGFyTGluZShkKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAoZCwgaSkgPT4gY29uZmlnLmNvbG9yKGkudG9TdHJpbmcoKSkpXG4gICAgLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBjb25maWcub3BhY2l0eUFyZWEpXG4gICAgLm9uKCdtb3VzZW92ZXInLCBmdW5jdGlvbiAoZCwgaSkge1xuICAgICAgLy8gZGltIGFsbCBibG9ic1xuICAgICAgY29uc3QgcmFkYXJBcmVhRmlsbE9wYWNpdHkgPSAwLjE7XG4gICAgICBkMy5zZWxlY3RBbGwoJy5yYWRhci1hcmVhJykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdmaWxsLW9wYWNpdHknLCByYWRhckFyZWFGaWxsT3BhY2l0eSk7XG4gICAgICAvLyBicmluZyBiYWNrIHRoZSBob3ZlcmVkIG92ZXIgYmxvYlxuICAgICAgY29uc3QgZmlsbE9wYWNpdHkgPSAwLjc7XG4gICAgICBkMy5zZWxlY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGNvbmZpZy50cmFuc2l0aW9uRHVyYXRpb24pLnN0eWxlKCdmaWxsLW9wYWNpdHknLCBmaWxsT3BhY2l0eSk7XG4gICAgfSlcbiAgICAub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgLy8gYnJpbmcgYmFjayBhbGwgYmxvYnNcbiAgICAgIGQzLnNlbGVjdEFsbCgnLnJhZGFyLWFyZWEnKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbikuc3R5bGUoJ2ZpbGwtb3BhY2l0eScsIGNvbmZpZy5vcGFjaXR5QXJlYSk7XG4gICAgfSk7XG4gIC8vIGNyZWF0ZSB0aGUgb3V0bGluZXNcbiAgYmxvYldyYXBwZXJcbiAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAuYXR0cignY2xhc3MnLCAncmFkYXItc3Ryb2tlJylcbiAgICAuYXR0cignZCcsIChkLCBpKSA9PiByYWRhckxpbmUoZCkpXG4gICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCBgJHtjb25maWcuc3Ryb2tlV2lkdGh9cHhgKVxuICAgIC5zdHlsZSgnc3Ryb2tlJywgKGQsIGkpID0+IGNvbmZpZy5jb2xvcihpLnRvU3RyaW5nKCkpKVxuICAgIC5zdHlsZSgnZmlsbCcsICdub25lJylcbiAgICAuc3R5bGUoJ2ZpbHRlcicsICd1cmwoI2dsb3cpJyk7XG4gIC8vIGFwcGVuZCB0aGUgY2lyY2xlc1xuICBjb25zdCBibG9iV3JhcHBlckZpbGxPcGFjaXR5ID0gMC44O1xuICBibG9iV3JhcHBlclxuICAgIC5zZWxlY3RBbGwoJy5yYWRhci1jaXJjbGUnKVxuICAgIC5kYXRhKChkLCBpKSA9PiBkKVxuICAgIC5lbnRlcigpXG4gICAgLmFwcGVuZCgnY2lyY2xlJylcbiAgICAuYXR0cignY2xhc3MnLCAncmFkYXItY2lyY2xlJylcbiAgICAuYXR0cigncicsIGNvbmZpZy5kb3RSYWRpdXMpXG4gICAgLmF0dHIoJ2N4JywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKGQudmFsdWUpICogTWF0aC5jb3MoYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLmF0dHIoJ2N5JywgKGQsIGkpID0+IHJhZGl1c1NjYWxlKGQudmFsdWUpICogTWF0aC5zaW4oYW5nbGVTbGljZSAqIGkgLSBNYXRoLlBJIC8gMikpXG4gICAgLnN0eWxlKCdmaWxsJywgKGQsIGksIGopID0+IGNvbmZpZy5jb2xvcihqLnRvU3RyaW5nKCkpKVxuICAgIC5zdHlsZSgnZmlsbC1vcGFjaXR5JywgYmxvYldyYXBwZXJGaWxsT3BhY2l0eSk7XG59O1xuXG4vKipcbiAqIEFwcGVuZHMgdGhlIGludmlzaWJsZSB0b29sdGlwIGNpcmNsZXMuXG4gKiBAcGFyYW0gZyB0aGUgc3ZnIGcgZWxlbWVudFxuICogQHBhcmFtIGRhdGEgdGhlIGNoYXJ0IGRhdGFcbiAqIEBwYXJhbSByYWRpdXNTY2FsZSB0aGUgY2hhcnQgcmFkaXVzIHNjYWxlXG4gKiBAcGFyYW0gYW5nbGVTbGljZSB0aGUgY2hhcnQgYW5nbGUgc2xpY2UgdmFsdWVcbiAqIEBwYXJhbSBjb25maWcgdGhlIGNoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuY29uc3QgYXBwZW5kSW52aXNpYmxlVG9vbHRpcENpcmNsZXMgPSAoXG4gIGc6IGQzLlNlbGVjdGlvbjxTVkdHRWxlbWVudCwgdW5rbm93biwgSFRNTEVsZW1lbnQsIHVua25vd24+LFxuICBkYXRhOiBUUmFkYXJDaGFydERhdGEsXG4gIHJhZGl1c1NjYWxlOiBkMy5TY2FsZUxpbmVhcjxudW1iZXIsIG51bWJlcj4sXG4gIGFuZ2xlU2xpY2U6IG51bWJlcixcbiAgY29uZmlnOiBJUmFkYXJDaGFydE9wdGlvbnMsXG4pID0+IHtcbiAgLy8gd3JhcHBlciBmb3IgdGhlIGludmlzaWJsZSBjaXJjbGVzIG9uIHRvcFxuICBjb25zdCBibG9iQ2lyY2xlV3JhcHBlciA9IGcuc2VsZWN0QWxsKCcucmFkYXItY2lyY2xlLXdyYXBwZXInKS5kYXRhKGRhdGEpLmVudGVyKCkuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAncmFkYXItY2lyY2xlLXdyYXBwZXInKTtcbiAgLy8gYXBwZW5kIGEgc2V0IG9mIGludmlzaWJsZSBjaXJjbGVzIG9uIHRvcCBmb3IgdGhlIG1vdXNlb3ZlciBwb3AtdXBcbiAgY29uc3QgYmxvYkNpcmNsZVdyYXBwZXJSYWRpdXNNdWx0aXBsaWVyID0gMS41O1xuICBibG9iQ2lyY2xlV3JhcHBlclxuICAgIC5zZWxlY3RBbGw8U1ZHRWxlbWVudCwgSVJhZGFyQ2hhcnREYXRhTm9kZT4oJy5yYWRhci1pbnZpc2libGUtY2lyY2xlJylcbiAgICAuZGF0YSgoZCwgaSkgPT4gZClcbiAgICAuZW50ZXIoKVxuICAgIC5hcHBlbmQoJ2NpcmNsZScpXG4gICAgLmF0dHIoJ2NsYXNzJywgJ3JhZGFyLWludmlzaWJsZS1jaXJjbGUnKVxuICAgIC5hdHRyKCdyJywgY29uZmlnLmRvdFJhZGl1cyAqIGJsb2JDaXJjbGVXcmFwcGVyUmFkaXVzTXVsdGlwbGllcilcbiAgICAuYXR0cignY3gnLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLmNvcyhhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuYXR0cignY3knLCAoZCwgaSkgPT4gcmFkaXVzU2NhbGUoZC52YWx1ZSkgKiBNYXRoLnNpbihhbmdsZVNsaWNlICogaSAtIE1hdGguUEkgLyAyKSlcbiAgICAuc3R5bGUoJ2ZpbGwnLCAnbm9uZScpXG4gICAgLnN0eWxlKCdwb2ludGVyLWV2ZW50cycsICdhbGwnKVxuICAgIC5vbignbW91c2VvdmVyJywgZnVuY3Rpb24gKGV2ZW50OiBNb3VzZUV2ZW50LCBpKSB7XG4gICAgICBjb25zdCBtb2RpZmllciA9IDEwO1xuICAgICAgY29uc3QgbmV3WCA9IHBhcnNlRmxvYXQoZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ2N4JykpIC0gbW9kaWZpZXI7XG4gICAgICBjb25zdCBuZXdZID0gcGFyc2VGbG9hdChkMy5zZWxlY3QodGhpcykuYXR0cignY3knKSkgLSBtb2RpZmllcjtcblxuICAgICAgY29uc3Qgbm9kZURhdGEgPSAoZXZlbnQudGFyZ2V0IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgSVJhZGFyQ2hhcnREYXRhTm9kZT4pWydfX2RhdGFfXyddO1xuICAgICAgY29uc3QgdG9vbHRpcFRleHQgPSBgJHtub2RlRGF0YS52YWx1ZX0gJHtub2RlRGF0YS51bml0fWA7XG4gICAgICBnLmFwcGVuZCgndGV4dCcpXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICdjaGFydC10b29sdGlwJylcbiAgICAgICAgLnN0eWxlKCdvcGFjaXR5JywgMClcbiAgICAgICAgLmF0dHIoJ3gnLCBuZXdYKVxuICAgICAgICAuYXR0cigneScsIG5ld1kpXG4gICAgICAgIC50ZXh0KHRvb2x0aXBUZXh0KVxuICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgIC5kdXJhdGlvbihjb25maWcudHJhbnNpdGlvbkR1cmF0aW9uKVxuICAgICAgICAuc3R5bGUoJ29wYWNpdHknLCAxKTtcbiAgICB9KVxuICAgIC5vbignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgICBkMy5zZWxlY3RBbGwoJy5jaGFydC10b29sdGlwJylcbiAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAuZHVyYXRpb24oY29uZmlnLnRyYW5zaXRpb25EdXJhdGlvbiAvIDIpXG4gICAgICAgIC5zdHlsZSgnb3BhY2l0eScsIDApXG4gICAgICAgIC5yZW1vdmUoKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRHJhd3MgdGhlIHJhZGFyIGNoYXJ0LlxuICogQHBhcmFtIGNvbnRhaW5lciB0aGUgY2hhcnQgY29udGFpbmVyXG4gKiBAcGFyYW0gZGF0YSB0aGUgY2hhcnQgZGF0YVxuICogQHBhcmFtIG9wdGlvbnMgdGhlIGNoYXJ0IG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBoYXJ0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGRyYXdSYWRhckNoYXJ0ID0gKGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sIGRhdGE6IFRSYWRhckNoYXJ0RGF0YSwgb3B0aW9ucz86IFBhcnRpYWw8SVJhZGFyQ2hhcnRPcHRpb25zPikgPT4ge1xuICBjb25zdCBjb25maWc6IElSYWRhckNoYXJ0T3B0aW9ucyA9IGdlbmVyYXRlQ29uZmlndXJhdGlvbjxJUmFkYXJDaGFydE9wdGlvbnM+KGRlZmF1bHRSYWRhckNoYXJ0Q29uZmlnLCBvcHRpb25zLCB7fSk7XG5cbiAgY29uc3QgbWF4VmFsdWUgPSBNYXRoLm1heChjb25maWcubWF4VmFsdWUsIGQzLm1heChkYXRhLCBpID0+IGQzLm1heChpLm1hcChvID0+IG8udmFsdWUpKSkgPz8gMCk7XG4gIGNvbnN0IGF4aXNOYW1lcyA9IGRhdGFbMF0ubWFwKChpLCBqKSA9PiBpLmF4aXMpO1xuICBjb25zdCB0b3RhbEF4aXMgPSBheGlzTmFtZXMubGVuZ3RoO1xuICBjb25zdCByYWRpdXMgPSBNYXRoLm1pbihjb25maWcud2lkdGggLyAyIC0gY29uZmlnLm1hcmdpbi5sZWZ0IC8gMiwgY29uZmlnLmhlaWdodCAvIDIgLSBjb25maWcubWFyZ2luLnRvcCAvIDIpO1xuICBjb25zdCBhbmdsZVNsaWNlID0gKE1hdGguUEkgKiAyKSAvIHRvdGFsQXhpcztcbiAgY29uc3QgcmFkaXVzU2NhbGUgPSBkMy5zY2FsZUxpbmVhcihbMCwgcmFkaXVzXSkuZG9tYWluKFswLCBtYXhWYWx1ZV0pO1xuXG4gIGNvbnN0IHsgZyB9ID0gY3JlYXRlQ29udGFpbmVyKGNvbnRhaW5lciwgY29uZmlnKTtcblxuICAvLyBmaWx0ZXIgZm9yIHRoZSBvdXRzaWRlIGdsb3dcbiAgY29uc3QgZmlsdGVyID0gZy5hcHBlbmQoJ2RlZnMnKS5hcHBlbmQoJ2ZpbHRlcicpLmF0dHIoJ2lkJywgJ2dsb3cnKTtcbiAgZmlsdGVyLmFwcGVuZCgnZmVHYXVzc2lhbkJsdXInKS5hdHRyKCdzdGREZXZpYXRpb24nLCAnMi41JykuYXR0cigncmVzdWx0JywgJ2NvbG9yZWRCbHVyJyk7XG4gIGNvbnN0IGZlTWVyZ2UgPSBmaWx0ZXIuYXBwZW5kKCdmZU1lcmdlJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ2NvbG9yZWRCbHVyJyk7XG4gIGZlTWVyZ2UuYXBwZW5kKCdmZU1lcmdlTm9kZScpLmF0dHIoJ2luJywgJ1NvdXJjZUdyYXBoaWMnKTtcblxuICBjb25zdCBheGlzR3JpZCA9IGcuYXBwZW5kKCdnJykuYXR0cignY2xhc3MnLCAnYXhpcy13cmFwcGVyJyk7XG5cbiAgZHJhd0NpcmN1bGFyR3JpZChheGlzR3JpZCwgcmFkaXVzLCBtYXhWYWx1ZSwgY29uZmlnKTtcblxuICBkcmF3QXhpcyhheGlzR3JpZCwgYXhpc05hbWVzLCByYWRpdXNTY2FsZSwgbWF4VmFsdWUsIGFuZ2xlU2xpY2UsIGNvbmZpZyk7XG5cbiAgY3JlYXRlTGVnZW5kKGcsIGNvbmZpZyk7XG5cbiAgZHJhd1JhZGFyQ2hhcnRCbG9icyhyYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgZywgZGF0YSwgY29uZmlnKTtcblxuICBhcHBlbmRJbnZpc2libGVUb29sdGlwQ2lyY2xlcyhnLCBkYXRhLCByYWRpdXNTY2FsZSwgYW5nbGVTbGljZSwgY29uZmlnKTtcblxuICByZXR1cm4gY29uZmlnO1xufTtcbiJdfQ==
|
|
@@ -754,7 +754,10 @@ const onMouseOver = (self, d, g, config) => {
|
|
|
754
754
|
.style('font-size', '11px')
|
|
755
755
|
.attr('dx', () => (config.width - config.margin.left - config.margin.right) / tooltipShift)
|
|
756
756
|
.attr('dy', () => tooltipDy)
|
|
757
|
-
.text(() => `${d.value} (${new Date(d.timestamp).toUTCString()})`)
|
|
757
|
+
.text(() => `${d.value} (${new Date(d.timestamp).toUTCString()})`)
|
|
758
|
+
.transition()
|
|
759
|
+
.duration(config.transitionDuration)
|
|
760
|
+
.style('opacity', 1);
|
|
758
761
|
};
|
|
759
762
|
/**
|
|
760
763
|
* The mouse out event handler.
|
|
@@ -765,7 +768,11 @@ const onMouseOut = (self, config) => {
|
|
|
765
768
|
const duration = 400;
|
|
766
769
|
d3.select(self).attr('class', 'dot');
|
|
767
770
|
d3.select(self).transition().duration(duration).attr('r', config.dotRadius);
|
|
768
|
-
d3.selectAll('.chart-tooltip')
|
|
771
|
+
d3.selectAll('.chart-tooltip')
|
|
772
|
+
.transition()
|
|
773
|
+
.duration(config.transitionDuration / 2)
|
|
774
|
+
.style('opacity', 0)
|
|
775
|
+
.remove();
|
|
769
776
|
};
|
|
770
777
|
/**
|
|
771
778
|
* Draws the chart lines, dots, and sets the mouse pointer events.
|
|
@@ -903,7 +910,6 @@ const drawPieChart = (container, data, options) => {
|
|
|
903
910
|
const pie = d3.pie().value(datum => datum.y);
|
|
904
911
|
const radius = Math.min(config.width, config.height) / 2;
|
|
905
912
|
const arc = d3.arc().innerRadius(config.innerRadius).outerRadius(radius);
|
|
906
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
907
913
|
const arcs = g
|
|
908
914
|
.selectAll('arc')
|
|
909
915
|
.data(pie(data))
|
|
@@ -912,13 +918,10 @@ const drawPieChart = (container, data, options) => {
|
|
|
912
918
|
.attr('class', 'arc')
|
|
913
919
|
.on('mouseover', function (event, d) {
|
|
914
920
|
this.style.opacity = '0.8';
|
|
915
|
-
const modifier = 10;
|
|
916
|
-
const x = parseFloat(d3.select(this).attr('cx')) - modifier;
|
|
917
|
-
const y = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
918
921
|
const tooltipText = `${d.data.key}: ${d.data.y}`;
|
|
919
|
-
|
|
920
|
-
.attr('
|
|
921
|
-
.
|
|
922
|
+
g.append('text')
|
|
923
|
+
.attr('class', 'chart-tooltip')
|
|
924
|
+
.style('opacity', 0)
|
|
922
925
|
.attr('dx', -config.width / (2 * 2 * 2))
|
|
923
926
|
.attr('dy', config.height / 2 + config.margin.top)
|
|
924
927
|
.text(tooltipText)
|
|
@@ -928,7 +931,11 @@ const drawPieChart = (container, data, options) => {
|
|
|
928
931
|
})
|
|
929
932
|
.on('mouseout', function (event, d) {
|
|
930
933
|
this.style.opacity = 'unset';
|
|
931
|
-
|
|
934
|
+
d3.selectAll('.chart-tooltip')
|
|
935
|
+
.transition()
|
|
936
|
+
.duration(config.transitionDuration / 2)
|
|
937
|
+
.style('opacity', 0)
|
|
938
|
+
.remove();
|
|
932
939
|
});
|
|
933
940
|
arcs
|
|
934
941
|
.append('path')
|
|
@@ -1189,8 +1196,6 @@ const drawRadarChartBlobs = (radiusScale, angleSlice, g, data, config) => {
|
|
|
1189
1196
|
const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config) => {
|
|
1190
1197
|
// wrapper for the invisible circles on top
|
|
1191
1198
|
const blobCircleWrapper = g.selectAll('.radar-circle-wrapper').data(data).enter().append('g').attr('class', 'radar-circle-wrapper');
|
|
1192
|
-
// set up the small tooltip for when you hover over a circle
|
|
1193
|
-
const tooltip = g.append('text').attr('class', 'chart-tooltip').style('opacity', 0);
|
|
1194
1199
|
// append a set of invisible circles on top for the mouseover pop-up
|
|
1195
1200
|
const blobCircleWrapperRadiusMultiplier = 1.5;
|
|
1196
1201
|
blobCircleWrapper
|
|
@@ -1210,10 +1215,22 @@ const appendInvisibleTooltipCircles = (g, data, radiusScale, angleSlice, config)
|
|
|
1210
1215
|
const newY = parseFloat(d3.select(this).attr('cy')) - modifier;
|
|
1211
1216
|
const nodeData = event.target['__data__'];
|
|
1212
1217
|
const tooltipText = `${nodeData.value} ${nodeData.unit}`;
|
|
1213
|
-
|
|
1218
|
+
g.append('text')
|
|
1219
|
+
.attr('class', 'chart-tooltip')
|
|
1220
|
+
.style('opacity', 0)
|
|
1221
|
+
.attr('x', newX)
|
|
1222
|
+
.attr('y', newY)
|
|
1223
|
+
.text(tooltipText)
|
|
1224
|
+
.transition()
|
|
1225
|
+
.duration(config.transitionDuration)
|
|
1226
|
+
.style('opacity', 1);
|
|
1214
1227
|
})
|
|
1215
1228
|
.on('mouseout', () => {
|
|
1216
|
-
|
|
1229
|
+
d3.selectAll('.chart-tooltip')
|
|
1230
|
+
.transition()
|
|
1231
|
+
.duration(config.transitionDuration / 2)
|
|
1232
|
+
.style('opacity', 0)
|
|
1233
|
+
.remove();
|
|
1217
1234
|
});
|
|
1218
1235
|
};
|
|
1219
1236
|
/**
|