@speleotica/frcsdata 4.0.2 → 4.0.3
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.
|
@@ -83,6 +83,31 @@ function parseLrud(s, unit) {
|
|
|
83
83
|
const value = parseFloat(s);
|
|
84
84
|
return !Number.isFinite(value) || value < 0 ? null : new _unitized.UnitizedNumber(value, unit);
|
|
85
85
|
}
|
|
86
|
+
function parseFromStationLruds(line, distanceUnit) {
|
|
87
|
+
const fromStr = line.substring(0, 5);
|
|
88
|
+
if (!/^\s*\S+$/.test(fromStr)) return undefined;
|
|
89
|
+
const gap = line.substring(5, 40);
|
|
90
|
+
if (gap.trim()) return undefined;
|
|
91
|
+
const lrudStr = line.substring(40, 52);
|
|
92
|
+
if (!/\d/.test(lrudStr)) return undefined;
|
|
93
|
+
const lStr = line.substring(40, 43);
|
|
94
|
+
const rStr = line.substring(43, 46);
|
|
95
|
+
const uStr = line.substring(46, 49);
|
|
96
|
+
const dStr = line.substring(49, 52);
|
|
97
|
+
if (!isValidOptFloat(lStr) || !isValidOptFloat(rStr) || !isValidOptFloat(uStr) || !isValidOptFloat(dStr)) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const up = parseLrud(uStr, distanceUnit);
|
|
101
|
+
const down = parseLrud(dStr, distanceUnit);
|
|
102
|
+
const left = parseLrud(lStr, distanceUnit);
|
|
103
|
+
const right = parseLrud(rStr, distanceUnit);
|
|
104
|
+
return [fromStr.trim(), {
|
|
105
|
+
left,
|
|
106
|
+
right,
|
|
107
|
+
up,
|
|
108
|
+
down
|
|
109
|
+
}];
|
|
110
|
+
}
|
|
86
111
|
|
|
87
112
|
/**
|
|
88
113
|
* Parses a raw cdata.fr survey file. These look like so:
|
|
@@ -147,6 +172,20 @@ lines) {
|
|
|
147
172
|
let trip = null;
|
|
148
173
|
let inBlockComment = false;
|
|
149
174
|
let section;
|
|
175
|
+
const commentFromStationLruds = new Map();
|
|
176
|
+
function addCommentLine(comment) {
|
|
177
|
+
if (trip) {
|
|
178
|
+
const distanceUnit = trip.header.distanceUnit;
|
|
179
|
+
const parsedFromStationLruds = parseFromStationLruds(comment, distanceUnit);
|
|
180
|
+
if (parsedFromStationLruds) {
|
|
181
|
+
commentFromStationLruds.set(parsedFromStationLruds[0], parsedFromStationLruds[1]);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (commentLines) {
|
|
186
|
+
commentLines.push(comment);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
150
189
|
function getComment() {
|
|
151
190
|
if (!commentLines) return null;
|
|
152
191
|
const comment = commentLines.join('\n').trim();
|
|
@@ -215,12 +254,12 @@ lines) {
|
|
|
215
254
|
}
|
|
216
255
|
} else if (line.charAt(0) === '*') {
|
|
217
256
|
inBlockComment = !inBlockComment;
|
|
218
|
-
if (inBlockComment) commentLines = [];else
|
|
219
|
-
const part = line.substring(1)
|
|
220
|
-
if (part
|
|
257
|
+
if (inBlockComment) commentLines = [];else {
|
|
258
|
+
const part = line.substring(1);
|
|
259
|
+
if (part) addCommentLine(part);
|
|
221
260
|
}
|
|
222
261
|
} else if (inBlockComment) {
|
|
223
|
-
|
|
262
|
+
addCommentLine(line);
|
|
224
263
|
} else if (lineNumber === tripCommentEndLine + 1) {
|
|
225
264
|
// FT CC DD
|
|
226
265
|
// 01234567
|
|
@@ -268,7 +307,6 @@ lines) {
|
|
|
268
307
|
};
|
|
269
308
|
trips.push(trip);
|
|
270
309
|
} else if (trip) {
|
|
271
|
-
var _exec;
|
|
272
310
|
const {
|
|
273
311
|
shots,
|
|
274
312
|
header: {
|
|
@@ -289,6 +327,7 @@ lines) {
|
|
|
289
327
|
// from station name
|
|
290
328
|
if (!/\S/.test(line.substring(5, 10))) continue;
|
|
291
329
|
const fromStr = validate(5, 10, 'from station', isValidStation);
|
|
330
|
+
const from = fromStr.trim();
|
|
292
331
|
|
|
293
332
|
// Sadly I have found negative LRUD values in Chip's format and apparently
|
|
294
333
|
// his program doesn't fail on them, so I have to accept them here
|
|
@@ -307,7 +346,7 @@ lines) {
|
|
|
307
346
|
const toStr = line.substring(0, 5);
|
|
308
347
|
if (!toStr.trim()) {
|
|
309
348
|
const shot = {
|
|
310
|
-
from
|
|
349
|
+
from,
|
|
311
350
|
to: null,
|
|
312
351
|
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
313
352
|
distance: new _unitized.UnitizedNumber(0, distanceUnit),
|
|
@@ -330,43 +369,22 @@ lines) {
|
|
|
330
369
|
if (!isValidStation(toStr)) {
|
|
331
370
|
error('Invalid station name', 0, 5);
|
|
332
371
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
right,
|
|
340
|
-
up,
|
|
341
|
-
down
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
let comment = getComment();
|
|
345
|
-
let fromLrudComment = comment;
|
|
346
|
-
const commentFromStr = comment ? (_exec = /^\S{1,5}/.exec(comment)) === null || _exec === void 0 ? void 0 : _exec[0] : null;
|
|
347
|
-
if (commentFromStr) {
|
|
348
|
-
const fromStr = commentFromStr;
|
|
349
|
-
fromLrudComment = ' '.repeat(5 - fromStr.length) + fromLrudComment;
|
|
350
|
-
const gap = fromLrudComment.substring(5, 40);
|
|
351
|
-
const lrudStr = fromLrudComment.substring(40, 52);
|
|
352
|
-
const lStr = fromLrudComment.substring(40, 43);
|
|
353
|
-
const rStr = fromLrudComment.substring(43, 46);
|
|
354
|
-
const uStr = fromLrudComment.substring(46, 49);
|
|
355
|
-
const dStr = fromLrudComment.substring(49, 52);
|
|
356
|
-
if (/^\s*\S+$/.test(fromStr) && !gap.trim() && isValidOptFloat(lStr) && isValidOptFloat(rStr) && isValidOptFloat(uStr) && isValidOptFloat(dStr) && /\d/.test(lrudStr)) {
|
|
357
|
-
const up = parseLrud(uStr, distanceUnit);
|
|
358
|
-
const down = parseLrud(dStr, distanceUnit);
|
|
359
|
-
const left = parseLrud(lStr, distanceUnit);
|
|
360
|
-
const right = parseLrud(rStr, distanceUnit);
|
|
372
|
+
let fromLruds = commentFromStationLruds.get(from);
|
|
373
|
+
if (fromLruds) {
|
|
374
|
+
commentFromStationLruds.delete(from);
|
|
375
|
+
} else {
|
|
376
|
+
const fromLrudMatch = new RegExp(`^\\s+${fromStr.trim().replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}((\\s+(\\d+(\\.\\d*)?|\\.\\d+)){4})`).exec(line.substring(52));
|
|
377
|
+
if (fromLrudMatch) {
|
|
378
|
+
const [left, right, up, down] = fromLrudMatch[1].trim().split(/\s+/g).map(s => parseLrud(s, distanceUnit));
|
|
361
379
|
fromLruds = {
|
|
362
380
|
left,
|
|
363
381
|
right,
|
|
364
382
|
up,
|
|
365
383
|
down
|
|
366
384
|
};
|
|
367
|
-
comment = null;
|
|
368
385
|
}
|
|
369
386
|
}
|
|
387
|
+
const comment = getComment();
|
|
370
388
|
|
|
371
389
|
// azimuth and inclination
|
|
372
390
|
const azmFsStr = validate(19, 25, 'azimuth', isValidOptUFloat);
|
|
@@ -451,7 +469,7 @@ lines) {
|
|
|
451
469
|
frontsightInclination = _unitized.Unitize.degrees(0);
|
|
452
470
|
}
|
|
453
471
|
const shot = {
|
|
454
|
-
from
|
|
472
|
+
from,
|
|
455
473
|
to: toStr.trim(),
|
|
456
474
|
kind,
|
|
457
475
|
distance,
|
|
@@ -482,4 +500,4 @@ lines) {
|
|
|
482
500
|
errors
|
|
483
501
|
};
|
|
484
502
|
}
|
|
485
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGFyc2VTZWdtZW50IiwicmVxdWlyZSIsIl91bml0aXplZCIsIl9GcmNzU2hvdCIsInBhcnNlTnVtYmVyIiwicyIsInVuaXQiLCJ2YWx1ZSIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlVuaXRpemVkTnVtYmVyIiwicGFyc2VBemltdXRoIiwicGFyc2VkIiwiZ2V0IiwiQW5nbGUiLCJkZWdyZWVzIiwiVW5pdGl6ZSIsInBhcnNlS2luZCIsImtpbmQiLCJGcmNzU2hvdEtpbmQiLCJIb3Jpem9udGFsIiwiRGlhZ29uYWwiLCJOb3JtYWwiLCJwYXJzZUxlbmd0aFVuaXQiLCJMZW5ndGgiLCJpbmNoZXMiLCJmZWV0IiwibWV0ZXJzIiwicGFyc2VBbmdsZVVuaXQiLCJncmFkaWFucyIsIm1pbHNOQVRPIiwiaXNWYWxpZFN0YXRpb24iLCJ0ZXN0IiwiaXNWYWxpZFVJbnQiLCJpc1ZhbGlkRmxvYXQiLCJpc1ZhbGlkT3B0RmxvYXQiLCJpc1ZhbGlkT3B0VUZsb2F0IiwiaXNWYWxpZFVGbG9hdCIsImlzVmFsaWRPcHRJbmNsaW5hdGlvbiIsInBhcnNlTHJ1ZCIsIk51bWJlciIsImlzRmluaXRlIiwicGFyc2VGcmNzU3VydmV5RmlsZSIsImZpbGUiLCJsaW5lcyIsImNhdmUiLCJsb2NhdGlvbiIsInRyaXBzIiwiZXJyb3JzIiwidHJpcE5hbWUiLCJ0cmlwVGVhbSIsInRyaXBEYXRlIiwiaW5UcmlwQ29tbWVudCIsInRyaXBDb21tZW50U3RhcnRMaW5lIiwidHJpcENvbW1lbnRFbmRMaW5lIiwidHJpcENvbW1lbnQiLCJjb21tZW50TGluZXMiLCJ0cmlwIiwiaW5CbG9ja0NvbW1lbnQiLCJzZWN0aW9uIiwiZ2V0Q29tbWVudCIsImNvbW1lbnQiLCJqb2luIiwidHJpbSIsImxpbmVOdW1iZXIiLCJsaW5lIiwiZXJyb3JlZCIsInRoaXNMaW5lTnVtYmVyIiwiZXJyb3IiLCJtZXNzYWdlIiwic3RhcnRDb2x1bW4iLCJlbmRDb2x1bW4iLCJwdXNoIiwiU2VnbWVudFBhcnNlRXJyb3IiLCJTZWdtZW50Iiwic291cmNlIiwic3RhcnRMaW5lIiwic3RhcnRDb2wiLCJzdWJzdHJpbmciLCJ2YWxpZGF0ZSIsImZpZWxkTmFtZSIsInZhbGlkYXRvciIsImZpZWxkIiwibWF0Y2giLCJleGVjIiwiY2hhckF0IiwidW5kZWZpbmVkIiwiayIsInRlYW0iLCJtb250aCIsInBhcnNlSW50IiwiZGF5IiwieWVhciIsIkRhdGUiLCJzcGxpdCIsImluZGV4T2YiLCJwYXJ0IiwiZGlzdGFuY2VVbml0Iiwic2xpY2UiLCJhemltdXRoVW5pdCIsImluY2xpbmF0aW9uVW5pdCIsImJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQiLCJiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZCIsImhhc0JhY2tzaWdodEF6aW11dGgiLCJoYXNCYWNrc2lnaHRJbmNsaW5hdGlvbiIsImhlYWRlciIsIm5hbWUiLCJkYXRlIiwic2hvdHMiLCJfZXhlYyIsImZyb21TdHIiLCJsU3RyIiwiclN0ciIsInVTdHIiLCJkU3RyIiwidXAiLCJkb3duIiwibGVmdCIsInJpZ2h0IiwidG9TdHIiLCJzaG90IiwiZnJvbSIsInRvIiwiZGlzdGFuY2UiLCJmcm9udHNpZ2h0QXppbXV0aCIsImJhY2tzaWdodEF6aW11dGgiLCJmcm9udHNpZ2h0SW5jbGluYXRpb24iLCJiYWNrc2lnaHRJbmNsaW5hdGlvbiIsImZyb21McnVkcyIsImV4Y2x1ZGVEaXN0YW5jZSIsImZyb21McnVkTWF0Y2giLCJSZWdFeHAiLCJyZXBsYWNlIiwibWFwIiwiZnJvbUxydWRDb21tZW50IiwiY29tbWVudEZyb21TdHIiLCJyZXBlYXQiLCJsZW5ndGgiLCJnYXAiLCJscnVkU3RyIiwiYXptRnNTdHIiLCJhem1Cc1N0ciIsImluY0ZzU3RyIiwiaW5jQnNTdHIiLCJob3Jpem9udGFsRGlzdGFuY2UiLCJ2ZXJ0aWNhbERpc3RhbmNlIiwiaXNTcGxheSIsImZlZXRTdHIiLCJpbmNoZXNTdHIiLCJpbnZhbGlkIiwiYWRkIiwiaCIsInYiLCJNYXRoIiwic3FydCIsImF0YW4yIiwiZCIsImFzaW4iLCJ0b0xydWRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3BhcnNlRnJjc1N1cnZleUZpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnJjc1N1cnZleUZpbGUgfSBmcm9tICcuL0ZyY3NTdXJ2ZXlGaWxlJ1xuaW1wb3J0IHsgRnJjc1RyaXAgfSBmcm9tICcuL0ZyY3NUcmlwJ1xuaW1wb3J0IHsgU2VnbWVudCwgU2VnbWVudFBhcnNlRXJyb3IgfSBmcm9tICdwYXJzZS1zZWdtZW50J1xuaW1wb3J0IHtcbiAgQW5nbGUsXG4gIExlbmd0aCxcbiAgVW5pdCxcbiAgVW5pdGl6ZWROdW1iZXIsXG4gIFVuaXRUeXBlLFxuICBVbml0aXplLFxufSBmcm9tICdAc3BlbGVvdGljYS91bml0aXplZCdcbmltcG9ydCB7IEZyY3NTaG90LCBGcmNzU2hvdEtpbmQgfSBmcm9tICcuL0ZyY3NTaG90J1xuXG5mdW5jdGlvbiBwYXJzZU51bWJlcjxUIGV4dGVuZHMgVW5pdFR5cGU8VD4+KFxuICBzOiBzdHJpbmcsXG4gIHVuaXQ6IFVuaXQ8VD5cbik6IFVuaXRpemVkTnVtYmVyPFQ+IHwgbnVsbCB7XG4gIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChzKVxuICBpZiAoaXNOYU4odmFsdWUpKSByZXR1cm4gbnVsbFxuICByZXR1cm4gbmV3IFVuaXRpemVkTnVtYmVyKHZhbHVlLCB1bml0KVxufVxuXG5mdW5jdGlvbiBwYXJzZUF6aW11dGgoXG4gIHM6IHN0cmluZyxcbiAgdW5pdDogVW5pdDxBbmdsZT5cbik6IFVuaXRpemVkTnVtYmVyPEFuZ2xlPiB8IG51bGwge1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZU51bWJlcihzLCB1bml0KVxuICByZXR1cm4gcGFyc2VkPy5nZXQoQW5nbGUuZGVncmVlcykgPT09IDM2MCA/IFVuaXRpemUuZGVncmVlcygwKSA6IHBhcnNlZFxufVxuXG5mdW5jdGlvbiBwYXJzZUtpbmQoa2luZDogc3RyaW5nKTogRnJjc1Nob3RLaW5kIHtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSAnSCc6XG4gICAgICByZXR1cm4gRnJjc1Nob3RLaW5kLkhvcml6b250YWxcbiAgICBjYXNlICdEJzpcbiAgICAgIHJldHVybiBGcmNzU2hvdEtpbmQuRGlhZ29uYWxcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIEZyY3NTaG90S2luZC5Ob3JtYWxcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUxlbmd0aFVuaXQodW5pdDogc3RyaW5nKTogVW5pdDxMZW5ndGg+IHwgbnVsbCB7XG4gIHN3aXRjaCAodW5pdCkge1xuICAgIGNhc2UgJ0ZJJzpcbiAgICAgIHJldHVybiBMZW5ndGguaW5jaGVzXG4gICAgY2FzZSAnRkYnOlxuICAgIGNhc2UgJ0ZUJzpcbiAgICAgIHJldHVybiBMZW5ndGguZmVldFxuICAgIGNhc2UgJ01UJzpcbiAgICBjYXNlICdNICc6XG4gICAgICByZXR1cm4gTGVuZ3RoLm1ldGVyc1xuICB9XG4gIHJldHVybiBudWxsXG59XG5mdW5jdGlvbiBwYXJzZUFuZ2xlVW5pdCh1bml0OiBzdHJpbmcpOiBVbml0PEFuZ2xlPiB8IG51bGwge1xuICBzd2l0Y2ggKHVuaXQpIHtcbiAgICBjYXNlICdEJzpcbiAgICAgIHJldHVybiBBbmdsZS5kZWdyZWVzXG4gICAgY2FzZSAnRyc6XG4gICAgICByZXR1cm4gQW5nbGUuZ3JhZGlhbnNcbiAgICBjYXNlICdNJzpcbiAgICAgIHJldHVybiBBbmdsZS5taWxzTkFUT1xuICB9XG4gIHJldHVybiBudWxsXG59XG5cbi8vIGRldGVybWluZXMgaWYgYSBjZWxsIGNvbnRhaW5zIGEgdmFsaWQgc3RhdGlvbiBuYW1lLlxuZnVuY3Rpb24gaXNWYWxpZFN0YXRpb24oczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxccypcXFMrXFxzKiQvLnRlc3Qocylcbn1cbi8vIGRldGVybWluZXMgaWYgYSBjZWxsIGNvbnRhaW5zIGEgdmFsaWQgdW5zaWduZWQgaW50ZWdlci5cbmZ1bmN0aW9uIGlzVmFsaWRVSW50KHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL15cXHMqWzAtOV0rXFxzKiQvLnRlc3Qocylcbn1cbi8vIGRldGVybWluZXMgaWYgYSBjZWxsIGNvbnRhaW5zIGEgdmFsaWQgZmxvYXQuXG5mdW5jdGlvbiBpc1ZhbGlkRmxvYXQoczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxccypbLStdPyhbMC05XSsoXFwuWzAtOV0qKT98XFwuWzAtOV0rKVxccyokLy50ZXN0KHMpXG59XG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIHVuc2lnbmVkIGZsb2F0IG9yIHdoaXRlc3BhY2UuXG5mdW5jdGlvbiBpc1ZhbGlkT3B0RmxvYXQoczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxccypbLStdP1swLTldKihcXC5bMC05XSopP1xccyokLy50ZXN0KHMpXG59XG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIHVuc2lnbmVkIGZsb2F0IG9yIHdoaXRlc3BhY2UuXG5mdW5jdGlvbiBpc1ZhbGlkT3B0VUZsb2F0KHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL15cXHMqWzAtOV0qKFxcLlswLTldKik/XFxzKiQvLnRlc3Qocylcbn1cbi8vIGRldGVybWluZXMgaWYgYSBjZWxsIGNvbnRhaW5zIGEgdmFsaWQgdW5zaWduZWQgZmxvYXQuXG5mdW5jdGlvbiBpc1ZhbGlkVUZsb2F0KHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL15cXHMqKFswLTldKyhcXC5bMC05XSopP3xcXC5bMC05XSspXFxzKiQvLnRlc3Qocylcbn1cbi8vIGRldGVybWluZXMgaWYgYSBjZWxsIGNvbnRhaW5zIGEgdmFsaWQgaW5jbGluYXRpb24gb3Igd2hpdGVzcGFjZS5cbmZ1bmN0aW9uIGlzVmFsaWRPcHRJbmNsaW5hdGlvbihzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eXFxzKlstK10/WzAtOV0qKFxcLlswLTldKik/XFxzKiQvLnRlc3Qocylcbn1cbmZ1bmN0aW9uIHBhcnNlTHJ1ZDxUIGV4dGVuZHMgVW5pdFR5cGU8VD4+KFxuICBzOiBzdHJpbmcsXG4gIHVuaXQ6IFVuaXQ8TGVuZ3RoPlxuKTogVW5pdGl6ZWROdW1iZXI8TGVuZ3RoPiB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQocylcbiAgcmV0dXJuICFOdW1iZXIuaXNGaW5pdGUodmFsdWUpIHx8IHZhbHVlIDwgMFxuICAgID8gbnVsbFxuICAgIDogbmV3IFVuaXRpemVkTnVtYmVyKHZhbHVlLCB1bml0KVxufVxuXG4vKipcbiAqIFBhcnNlcyBhIHJhdyBjZGF0YS5mciBzdXJ2ZXkgZmlsZS4gIFRoZXNlIGxvb2sgbGlrZSBzbzpcbiAqXG48cHJlPiAgICAgIEZpc2hlciBSaWRnZSBDYXZlIFN5c3RlbSwgSGFydCBDby4sIEtZXG5FTlRSQU5DRSBEUk9QUywgSk9FJ1MgXCJJIExPVkUgTVkgV0lGRSBUUkFWRVJTRVwiLCBUUklDS1kgVFJBVkVSU0VcblBFVEVSIFFVSUNLLCBLRUlUSCBPUlRJWiAgIC0gIDItMTUtODFcblRoaXMgRmlsZSBoYXMgQ3J1bXBzIHRlc3QgY29ubmVjdGVkLiAgMTEvMjAvMTJcbiAqXG5GVCBDICBERCAgICBBXG4gICAgICBBRTIwICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAxICAzICAwICAyXG4qICAgICAgJUZTXG4qICAgICBBRTIwICAgICAwICAgICAgICAwICAgICAgICAwICAgICAgICBCdWctY2FuJ3QgcHV0IGJlZm9yZSBzbyBwdXQgYWZ0ZXItc28gY2FuJ3QgbWFrZSAyIGZpeGVkIDEwLzI4LzEyXG4gQUUxOSBBRTIwICAgOS4zICAgIDYwLjAgIDYwLjAtMzYuMCAgICAgICAyIDEyICAwIDIwXG4gQUUxOCBBRTE5ICAyNC41ICAgICAwLjAgICAwLjAtOTAuMCAgICAgICA2IDEwIDI1ICAwXG4gQUUxNyBBRTE4ICAgOC4wICAgMzUwLjUgMzUwLjUgMTcuMCAgICAgICAzICA1ICAwICAwXG4gQUUxNiBBRTE3ICAgNi43ICAgICAwLjAgICAwLjAtOTAuMCAgICAgICAzICA1ICA2ICAxXG4gQUUxNSBBRTE2ICAxMi42ICAgIDcwLjUgIDcxLjAtMTguMCAgICAgICA0ICAwICAyICAxXG4gQUUxNCBBRTE1ICAxMC4wICAgIDIxLjUgIDIwLjAgIDYuMCAgICAgICA1ICA1ICAwICAzXG4gQUUxMyBBRTE0ICAyNi44ICAgMjg4LjAgMjg2LjAtNTAuMCAgICAgICAwICA3IDIwICA1XG4qXG4qU0hPUlQgQ0FOWU9OIEFUIFRIRSBCQVNFIE9GIFRIRSBTRUNPTkQgRFJPUFxuIEFFMTIgQUUxMyAgMjAuNyAgIDIzNi4wIDIzNi4wIDM0LjAgICAgICAgMyAgNSAgNCAgNFxuIEFFMTEgQUUxMiAgMTIuNCAgIDIxMC4wIDIxMC4wIDM1LjAgICAgICAgNyAgNCAgNSAgMVxuIEFFMTAgQUUxMyAgMjUuNyAgICA0MC4wICA0MC4wIC05LjAgICAgICAgMiAgMiAgMyAgNlxuKlxuKkFFMTAgQVQgSk9FJ1MgXCIgSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0UgXCJcbiAgQUU5IEFFMTAgIDE3LjggICAgMzIuNSAgMzEuMCAyMy4wICAgICAgIDQgIDUgMjAgMTVcbiAgQUUxICBBRTkgIDEzLjcgICAgODIuMCAgODIuMC0xMy4wXG4gICBBMSAgQUUxICAzNC4zICAgIDQ2LjAgIDQ4LjAtMTcuNVxuKlxuKlNVUlZFWSBUTyBET01FIE5FQVIgVEhFIEVOVFJBTkNFIERPTUUgKEFCT1ZFIFRIRSBTRUNPTkQgRFJPUClcbiAgQUQxIEFFMTUgICA4LjAgICAyMDAuMCAyMDAuMCAgMC4wICAgICAgIDMgIDEgIDEgIDFcbiAgQUQyICBBRDEgIDE3LjcgICAxNjEuMCAxNjEuMCAgNy4wICAgICAgIDEgIDQgMjUgIDFcbiAgQUQzICBBRDIgIDEwLjQgICAxODAuMCAxODAuMCA1MC4wICAgICAgIDQgIDEgMTUgIDVcbiAqXG5UUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZXG5EQU4gQ1JPV0wsIEtFSVRIIE9SVElaLCBDSElQIEhPUFBFUiwgUEVURVIgUVVJQ0ssIExBUlJZIEJFQU4gICAgMTQgRkVCIDE5ODFcbiAqXG5GSSBCICBERFxuICAgQTIgICBBMSAgNDggMTAgIDI5Mi4wIDExMC4wLTQyLjAgICAgICAgNSAxMCAzNSAgNVxuICAgQTMgICBBMiAgMTIgIDUgIDMzMy41IDE1My41IDM1LjAgICAgICAgMyAgMSAxNSAgNVxuICAgQTQgICBBMyAgIDQgIDIgICAgMC4wICAgMC4wIDkwLjAgICAgICAgMyAgMSAxMCAxMFxuLi4uPC9wcmU+XG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwYXJzZUZyY3NTdXJ2ZXlGaWxlKFxuICBmaWxlOiBhbnksIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBsaW5lczogQXN5bmNJdGVyYWJsZTxzdHJpbmc+XG4pOiBQcm9taXNlPEZyY3NTdXJ2ZXlGaWxlPiB7XG4gIGxldCBjYXZlOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgbG9jYXRpb246IHN0cmluZyB8IG51bGwgPSBudWxsXG4gIGNvbnN0IHRyaXBzOiBBcnJheTxGcmNzVHJpcD4gPSBbXVxuICBjb25zdCBlcnJvcnM6IEFycmF5PFNlZ21lbnRQYXJzZUVycm9yPiA9IFtdXG5cbiAgbGV0IHRyaXBOYW1lXG4gIGxldCB0cmlwVGVhbVxuICBsZXQgdHJpcERhdGVcbiAgbGV0IGluVHJpcENvbW1lbnQgPSB0cnVlXG4gIGxldCB0cmlwQ29tbWVudFN0YXJ0TGluZSA9IDFcbiAgbGV0IHRyaXBDb21tZW50RW5kTGluZSA9IC0xXG4gIGxldCB0cmlwQ29tbWVudDogQXJyYXk8c3RyaW5nPiA9IFtdXG4gIGxldCBjb21tZW50TGluZXM6IEFycmF5PHN0cmluZz4gfCBudWxsID0gbnVsbFxuICBsZXQgdHJpcDogRnJjc1RyaXAgfCBudWxsID0gbnVsbFxuICBsZXQgaW5CbG9ja0NvbW1lbnQgPSBmYWxzZVxuICBsZXQgc2VjdGlvblxuXG4gIGZ1bmN0aW9uIGdldENvbW1lbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFjb21tZW50TGluZXMpIHJldHVybiBudWxsXG4gICAgY29uc3QgY29tbWVudCA9IGNvbW1lbnRMaW5lcy5qb2luKCdcXG4nKS50cmltKClcbiAgICBjb21tZW50TGluZXMgPSBudWxsXG4gICAgcmV0dXJuIGNvbW1lbnQgfHwgbnVsbFxuICB9XG5cbiAgbGV0IGxpbmVOdW1iZXIgPSAwXG5cbiAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGV0IGVycm9yZWQgPSBmYWxzZVxuXG4gICAgY29uc3QgdGhpc0xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyXG5cbiAgICBjb25zdCBlcnJvciA9IChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgICBlbmRDb2x1bW46IG51bWJlclxuICAgICk6IHZvaWQgPT4ge1xuICAgICAgZXJyb3JlZCA9IHRydWVcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBuZXcgU2VnbWVudCh7XG4gICAgICAgICAgICB2YWx1ZTogbGluZSxcbiAgICAgICAgICAgIHNvdXJjZTogZmlsZSxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogdGhpc0xpbmVOdW1iZXIsXG4gICAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgICB9KS5zdWJzdHJpbmcoc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlID0gKFxuICAgICAgc3RhcnRDb2x1bW46IG51bWJlcixcbiAgICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuXG4gICAgKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkID0gbGluZS5zdWJzdHJpbmcoc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIGlmICghdmFsaWRhdG9yKGZpZWxkKSkge1xuICAgICAgICBlcnJvcihcbiAgICAgICAgICAoZmllbGQudHJpbSgpID8gJ0ludmFsaWQgJyA6ICdNaXNzaW5nICcpICsgZmllbGROYW1lLFxuICAgICAgICAgIHN0YXJ0Q29sdW1uLFxuICAgICAgICAgIGVuZENvbHVtblxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gZmllbGRcbiAgICB9XG5cbiAgICBsaW5lTnVtYmVyKytcblxuICAgIGlmIChsaW5lTnVtYmVyID09PSAxKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IC9eXFxzKihbXixdKykoLCguKikpPy8uZXhlYyhsaW5lKVxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNhdmUgPSBtYXRjaFsxXS50cmltKClcbiAgICAgICAgaWYgKG1hdGNoWzNdKSB7XG4gICAgICAgICAgbG9jYXRpb24gPSBtYXRjaFszXS50cmltKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsaW5lLmNoYXJBdCgwKSA9PT0gJyAnICYmIGxpbmUuY2hhckF0KDEpID09PSAnKicpIHtcbiAgICAgIGluVHJpcENvbW1lbnQgPSAhaW5UcmlwQ29tbWVudFxuICAgICAgaWYgKGluVHJpcENvbW1lbnQpIHtcbiAgICAgICAgc2VjdGlvbiA9IHVuZGVmaW5lZFxuICAgICAgICB0cmlwQ29tbWVudCA9IFtdXG4gICAgICAgIHRyaXBDb21tZW50U3RhcnRMaW5lID0gbGluZU51bWJlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpcENvbW1lbnRFbmRMaW5lID0gbGluZU51bWJlclxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5UcmlwQ29tbWVudCkge1xuICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHRyaXBDb21tZW50U3RhcnRMaW5lICsgMSkge1xuICAgICAgICB0cmlwTmFtZSA9IGxpbmUgJiYgbGluZS50cmltKClcbiAgICAgIH0gZWxzZSBpZiAobGluZU51bWJlciA9PT0gdHJpcENvbW1lbnRTdGFydExpbmUgKyAyKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gL14oLis/KVxccypbLS5dXFxzKihcXGQrKVxcLyhcXGQrKVxcLyhcXGQrKSQvLmV4ZWMoXG4gICAgICAgICAgbGluZSAmJiBsaW5lLnRyaW0oKVxuICAgICAgICApXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGxldCBrID0gMVxuICAgICAgICAgIGNvbnN0IHRlYW0gPSBtYXRjaFtrKytdXG4gICAgICAgICAgY29uc3QgbW9udGggPSBwYXJzZUludChtYXRjaFtrKytdKVxuICAgICAgICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KG1hdGNoW2srK10pXG4gICAgICAgICAgY29uc3QgeWVhciA9IHBhcnNlSW50KG1hdGNoW2srK10pXG4gICAgICAgICAgdHJpcERhdGUgPSBuZXcgRGF0ZSh5ZWFyIDwgNzAgPyB5ZWFyICsgMjAwMCA6IHllYXIsIG1vbnRoIC0gMSwgZGF5KVxuICAgICAgICAgIHRyaXBUZWFtID0gdGVhbS5zcGxpdChcbiAgICAgICAgICAgIHRlYW0uaW5kZXhPZignOycpID49IDAgPyAvXFxzKjtcXHMqL2cgOiAvXFxzKixcXHMqL2dcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGluZU51bWJlciA+IDEpIHtcbiAgICAgICAgdHJpcENvbW1lbnQucHVzaChsaW5lKVxuICAgICAgfVxuICAgICAgY29uc3QgbWF0Y2ggPSAvXlxcKlxcKlxcKihbXipdKVxcKlxcKlxcKi8uZXhlYyhsaW5lKVxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHNlY3Rpb24gPSBtYXRjaFsxXS50cmltKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxpbmUuY2hhckF0KDApID09PSAnKicpIHtcbiAgICAgIGluQmxvY2tDb21tZW50ID0gIWluQmxvY2tDb21tZW50XG4gICAgICBpZiAoaW5CbG9ja0NvbW1lbnQpIGNvbW1lbnRMaW5lcyA9IFtdXG4gICAgICBlbHNlIGlmIChjb21tZW50TGluZXMpIHtcbiAgICAgICAgY29uc3QgcGFydCA9IGxpbmUuc3Vic3RyaW5nKDEpLnRyaW0oKVxuICAgICAgICBpZiAocGFydCAmJiBjb21tZW50TGluZXMpIGNvbW1lbnRMaW5lcy5wdXNoKHBhcnQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpbkJsb2NrQ29tbWVudCkge1xuICAgICAgaWYgKGNvbW1lbnRMaW5lcykgY29tbWVudExpbmVzLnB1c2gobGluZSlcbiAgICB9IGVsc2UgaWYgKGxpbmVOdW1iZXIgPT09IHRyaXBDb21tZW50RW5kTGluZSArIDEpIHtcbiAgICAgIC8vIEZUIENDIEREXG4gICAgICAvLyAwMTIzNDU2N1xuICAgICAgbGV0IGRpc3RhbmNlVW5pdCA9IHBhcnNlTGVuZ3RoVW5pdChsaW5lLnNsaWNlKDAsIDIpKVxuICAgICAgaWYgKCFkaXN0YW5jZVVuaXQpIHtcbiAgICAgICAgZGlzdGFuY2VVbml0ID0gTGVuZ3RoLmZlZXRcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgZGlzdGFuY2UgdW5pdCcsIDAsIDIpXG4gICAgICB9XG4gICAgICBsZXQgYXppbXV0aFVuaXQgPSBwYXJzZUFuZ2xlVW5pdChsaW5lWzZdKVxuICAgICAgaWYgKCFhemltdXRoVW5pdCkge1xuICAgICAgICBhemltdXRoVW5pdCA9IEFuZ2xlLmRlZ3JlZXNcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgYXppbXV0aCB1bml0JywgNiwgNylcbiAgICAgIH1cbiAgICAgIGxldCBpbmNsaW5hdGlvblVuaXQgPSBwYXJzZUFuZ2xlVW5pdChsaW5lWzddKVxuICAgICAgaWYgKCFpbmNsaW5hdGlvblVuaXQpIHtcbiAgICAgICAgaW5jbGluYXRpb25Vbml0ID0gQW5nbGUuZGVncmVlc1xuICAgICAgICBlcnJvcignSW52YWxpZCBpbmNsaW5hdGlvbiB1bml0JywgNywgOClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQgPSBsaW5lWzNdID09PSAnQydcbiAgICAgIGNvbnN0IGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkID0gbGluZVs0XSA9PT0gJ0MnXG4gICAgICBjb25zdCBoYXNCYWNrc2lnaHRBemltdXRoID0gbGluZVszXSAhPT0gJyAnICYmIGxpbmVbM10gIT09ICctJ1xuICAgICAgY29uc3QgaGFzQmFja3NpZ2h0SW5jbGluYXRpb24gPSBsaW5lWzRdICE9PSAnICcgJiYgbGluZVs0XSAhPT0gJy0nXG5cbiAgICAgIGlmICghL1stQ0IgXS8udGVzdChsaW5lWzNdKSkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBiYWNrc2lnaHQgYXppbXV0aCB0eXBlJywgMywgNClcbiAgICAgIH1cbiAgICAgIGlmICghL1stQ0IgXS8udGVzdChsaW5lWzRdKSkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBiYWNrc2lnaHQgaW5jbGluYXRpb24gdHlwZScsIDQsIDUpXG4gICAgICB9XG5cbiAgICAgIHRyaXAgPSB7XG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgIG5hbWU6IHRyaXBOYW1lIHx8ICcnLFxuICAgICAgICAgIGNvbW1lbnQ6ICh0cmlwQ29tbWVudCAmJiB0cmlwQ29tbWVudC5qb2luKCdcXG4nKSkgfHwgbnVsbCxcbiAgICAgICAgICBzZWN0aW9uLFxuICAgICAgICAgIGRhdGU6IHRyaXBEYXRlLFxuICAgICAgICAgIHRlYW06IHRyaXBUZWFtLFxuICAgICAgICAgIGRpc3RhbmNlVW5pdCxcbiAgICAgICAgICBhemltdXRoVW5pdCxcbiAgICAgICAgICBpbmNsaW5hdGlvblVuaXQsXG4gICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZCxcbiAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZCxcbiAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoLFxuICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uLFxuICAgICAgICB9LFxuICAgICAgICBzaG90czogW10sXG4gICAgICB9XG4gICAgICB0cmlwcy5wdXNoKHRyaXApXG4gICAgfSBlbHNlIGlmICh0cmlwKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHNob3RzLFxuICAgICAgICBoZWFkZXI6IHsgYXppbXV0aFVuaXQsIGluY2xpbmF0aW9uVW5pdCB9LFxuICAgICAgfSA9IHRyaXBcbiAgICAgIGxldCB7IGRpc3RhbmNlVW5pdCB9ID0gdHJpcC5oZWFkZXJcblxuICAgICAgY29uc3QgaW5jaGVzID0gZGlzdGFuY2VVbml0ID09PSBMZW5ndGguaW5jaGVzXG4gICAgICBpZiAoaW5jaGVzKSBkaXN0YW5jZVVuaXQgPSBMZW5ndGguZmVldFxuXG4gICAgICAvLyByaWdvcm91c2x5IGNoZWNrIHRoZSB2YWx1ZXMgaW4gYWxsIHRoZSBjb2x1bW5zIHRvIG1ha2Ugc3VyZSB0aGlzXG4gICAgICAvLyBpcyByZWFsbHkgYSBzdXJ2ZXkgc2hvdCBsaW5lLCBqdXN0IGluIGNhc2UgYW55IHN0cmF5IGNvbW1lbnRzIGFyZVxuICAgICAgLy8gbm90IHByb3Blcmx5IGRlbGltaXRlZC5cblxuICAgICAgLy8gZnJvbSBzdGF0aW9uIG5hbWVcbiAgICAgIGlmICghL1xcUy8udGVzdChsaW5lLnN1YnN0cmluZyg1LCAxMCkpKSBjb250aW51ZVxuICAgICAgY29uc3QgZnJvbVN0ciA9IHZhbGlkYXRlKDUsIDEwLCAnZnJvbSBzdGF0aW9uJywgaXNWYWxpZFN0YXRpb24pXG5cbiAgICAgIC8vIFNhZGx5IEkgaGF2ZSBmb3VuZCBuZWdhdGl2ZSBMUlVEIHZhbHVlcyBpbiBDaGlwJ3MgZm9ybWF0IGFuZCBhcHBhcmVudGx5XG4gICAgICAvLyBoaXMgcHJvZ3JhbSBkb2Vzbid0IGZhaWwgb24gdGhlbSwgc28gSSBoYXZlIHRvIGFjY2VwdCB0aGVtIGhlcmVcbiAgICAgIC8vIGlzVmFsaWRPcHRGbG9hdCBpbnN0ZWFkIG9mIGlzVmFsaWRPcHRVRmxvYXRcbiAgICAgIGNvbnN0IGxTdHIgPSB2YWxpZGF0ZSg0MCwgNDMsICdsZWZ0JywgaXNWYWxpZE9wdEZsb2F0KVxuICAgICAgY29uc3QgclN0ciA9IHZhbGlkYXRlKDQzLCA0NiwgJ3JpZ2h0JywgaXNWYWxpZE9wdEZsb2F0KVxuICAgICAgY29uc3QgdVN0ciA9IHZhbGlkYXRlKDQ2LCA0OSwgJ3VwJywgaXNWYWxpZE9wdEZsb2F0KVxuICAgICAgY29uc3QgZFN0ciA9IHZhbGlkYXRlKDQ5LCA1MiwgJ2Rvd24nLCBpc1ZhbGlkT3B0RmxvYXQpXG5cbiAgICAgIGlmIChlcnJvcmVkKSBjb250aW51ZVxuXG4gICAgICBjb25zdCB1cCA9IHBhcnNlTHJ1ZCh1U3RyLCBkaXN0YW5jZVVuaXQpXG4gICAgICBjb25zdCBkb3duID0gcGFyc2VMcnVkKGRTdHIsIGRpc3RhbmNlVW5pdClcbiAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUxydWQobFN0ciwgZGlzdGFuY2VVbml0KVxuICAgICAgY29uc3QgcmlnaHQgPSBwYXJzZUxydWQoclN0ciwgZGlzdGFuY2VVbml0KVxuXG4gICAgICAvLyB0byBzdGF0aW9uIG5hbWVcbiAgICAgIGNvbnN0IHRvU3RyID0gbGluZS5zdWJzdHJpbmcoMCwgNSlcbiAgICAgIGlmICghdG9TdHIudHJpbSgpKSB7XG4gICAgICAgIGNvbnN0IHNob3Q6IEZyY3NTaG90ID0ge1xuICAgICAgICAgIGZyb206IGZyb21TdHIudHJpbSgpLFxuICAgICAgICAgIHRvOiBudWxsLFxuICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgZGlzdGFuY2U6IG5ldyBVbml0aXplZE51bWJlcigwLCBkaXN0YW5jZVVuaXQpLFxuICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBudWxsLFxuICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IG51bGwsXG4gICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgIGZyb21McnVkczoge1xuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgdXAsXG4gICAgICAgICAgICBkb3duLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiB0cnVlLFxuICAgICAgICAgIGNvbW1lbnQ6IGdldENvbW1lbnQoKSxcbiAgICAgICAgfVxuICAgICAgICBzaG90cy5wdXNoKHNob3QpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoIWlzVmFsaWRTdGF0aW9uKHRvU3RyKSkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBzdGF0aW9uIG5hbWUnLCAwLCA1KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmcm9tTHJ1ZE1hdGNoID0gbmV3IFJlZ0V4cChcbiAgICAgICAgYF5cXFxccyske2Zyb21TdHJcbiAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgICAvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csXG4gICAgICAgICAgICAnXFxcXCQmJ1xuICAgICAgICAgICl9KChcXFxccysoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKXs0fSlgXG4gICAgICApLmV4ZWMobGluZS5zdWJzdHJpbmcoNTIpKVxuICAgICAgbGV0IGZyb21McnVkc1xuICAgICAgaWYgKGZyb21McnVkTWF0Y2gpIHtcbiAgICAgICAgY29uc3QgW2xlZnQsIHJpZ2h0LCB1cCwgZG93bl0gPSBmcm9tTHJ1ZE1hdGNoWzFdXG4gICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgIC5zcGxpdCgvXFxzKy9nKVxuICAgICAgICAgIC5tYXAocyA9PiBwYXJzZUxydWQocywgZGlzdGFuY2VVbml0KSlcbiAgICAgICAgZnJvbUxydWRzID0geyBsZWZ0LCByaWdodCwgdXAsIGRvd24gfVxuICAgICAgfVxuXG4gICAgICBsZXQgY29tbWVudCA9IGdldENvbW1lbnQoKVxuICAgICAgbGV0IGZyb21McnVkQ29tbWVudCA9IGNvbW1lbnRcbiAgICAgIGNvbnN0IGNvbW1lbnRGcm9tU3RyID0gY29tbWVudCA/IC9eXFxTezEsNX0vLmV4ZWMoY29tbWVudCk/LlswXSA6IG51bGxcbiAgICAgIGlmIChjb21tZW50RnJvbVN0cikge1xuICAgICAgICBjb25zdCBmcm9tU3RyID0gY29tbWVudEZyb21TdHJcbiAgICAgICAgZnJvbUxydWRDb21tZW50ID0gJyAnLnJlcGVhdCg1IC0gZnJvbVN0ci5sZW5ndGgpICsgZnJvbUxydWRDb21tZW50XG4gICAgICAgIGNvbnN0IGdhcCA9IGZyb21McnVkQ29tbWVudC5zdWJzdHJpbmcoNSwgNDApXG4gICAgICAgIGNvbnN0IGxydWRTdHIgPSBmcm9tTHJ1ZENvbW1lbnQuc3Vic3RyaW5nKDQwLCA1MilcbiAgICAgICAgY29uc3QgbFN0ciA9IGZyb21McnVkQ29tbWVudC5zdWJzdHJpbmcoNDAsIDQzKVxuICAgICAgICBjb25zdCByU3RyID0gZnJvbUxydWRDb21tZW50LnN1YnN0cmluZyg0MywgNDYpXG4gICAgICAgIGNvbnN0IHVTdHIgPSBmcm9tTHJ1ZENvbW1lbnQuc3Vic3RyaW5nKDQ2LCA0OSlcbiAgICAgICAgY29uc3QgZFN0ciA9IGZyb21McnVkQ29tbWVudC5zdWJzdHJpbmcoNDksIDUyKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgL15cXHMqXFxTKyQvLnRlc3QoZnJvbVN0cikgJiZcbiAgICAgICAgICAhZ2FwLnRyaW0oKSAmJlxuICAgICAgICAgIGlzVmFsaWRPcHRGbG9hdChsU3RyKSAmJlxuICAgICAgICAgIGlzVmFsaWRPcHRGbG9hdChyU3RyKSAmJlxuICAgICAgICAgIGlzVmFsaWRPcHRGbG9hdCh1U3RyKSAmJlxuICAgICAgICAgIGlzVmFsaWRPcHRGbG9hdChkU3RyKSAmJlxuICAgICAgICAgIC9cXGQvLnRlc3QobHJ1ZFN0cilcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgdXAgPSBwYXJzZUxydWQodVN0ciwgZGlzdGFuY2VVbml0KVxuICAgICAgICAgIGNvbnN0IGRvd24gPSBwYXJzZUxydWQoZFN0ciwgZGlzdGFuY2VVbml0KVxuICAgICAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUxydWQobFN0ciwgZGlzdGFuY2VVbml0KVxuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gcGFyc2VMcnVkKHJTdHIsIGRpc3RhbmNlVW5pdClcbiAgICAgICAgICBmcm9tTHJ1ZHMgPSB7IGxlZnQsIHJpZ2h0LCB1cCwgZG93biB9XG4gICAgICAgICAgY29tbWVudCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBhemltdXRoIGFuZCBpbmNsaW5hdGlvblxuICAgICAgY29uc3QgYXptRnNTdHIgPSB2YWxpZGF0ZSgxOSwgMjUsICdhemltdXRoJywgaXNWYWxpZE9wdFVGbG9hdClcbiAgICAgIGNvbnN0IGF6bUJzU3RyID0gdmFsaWRhdGUoMjUsIDMwLCAnYXppbXV0aCcsIGlzVmFsaWRPcHRVRmxvYXQpXG4gICAgICBjb25zdCBpbmNGc1N0ciA9IGxpbmUuc3Vic3RyaW5nKDMwLCAzNSlcbiAgICAgIGNvbnN0IGluY0JzU3RyID0gbGluZS5zdWJzdHJpbmcoMzUsIDQwKVxuXG4gICAgICBpZiAoZXJyb3JlZCkgY29udGludWVcblxuICAgICAgbGV0IGtpbmQ6IEZyY3NTaG90S2luZFxuICAgICAgbGV0IGRpc3RhbmNlOiBVbml0aXplZE51bWJlcjxMZW5ndGg+XG4gICAgICBsZXQgaG9yaXpvbnRhbERpc3RhbmNlOiBVbml0aXplZE51bWJlcjxMZW5ndGg+IHwgdW5kZWZpbmVkXG4gICAgICBsZXQgdmVydGljYWxEaXN0YW5jZTogVW5pdGl6ZWROdW1iZXI8TGVuZ3RoPiB8IHVuZGVmaW5lZFxuICAgICAgbGV0IGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZWROdW1iZXI8QW5nbGU+IHwgbnVsbFxuICAgICAgbGV0IGJhY2tzaWdodEluY2xpbmF0aW9uOiBVbml0aXplZE51bWJlcjxBbmdsZT4gfCBudWxsXG4gICAgICBsZXQgZXhjbHVkZURpc3RhbmNlOiBib29sZWFuXG4gICAgICBsZXQgaXNTcGxheTogYm9vbGVhblxuXG4gICAgICAvLyBwYXJzZSBkaXN0YW5jZVxuICAgICAgaWYgKGluY2hlcykge1xuICAgICAgICBjb25zdCBmZWV0U3RyID0gbGluZS5zdWJzdHJpbmcoMTAsIDE0KVxuICAgICAgICBjb25zdCBpbmNoZXNTdHIgPSBsaW5lLnN1YnN0cmluZygxNCwgMTcpXG4gICAgICAgIC8vIGZlZXQgYW5kIGluY2hlcyBhcmUgbm90IGJvdGggb3B0aW9uYWxcbiAgICAgICAgaWYgKCFpc1ZhbGlkVUludChmZWV0U3RyKSAmJiAhaXNWYWxpZFVJbnQoaW5jaGVzU3RyKSkge1xuICAgICAgICAgIGNvbnN0IGludmFsaWQgPSBmZWV0U3RyLnRyaW0oKSB8fCBpbmNoZXNTdHIudHJpbSgpXG4gICAgICAgICAgZXJyb3IoaW52YWxpZCA/ICdJbnZhbGlkIGRpc3RhbmNlJyA6ICdNaXNzaW5nIGRpc3RhbmNlJywgMTAsIDE3KVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBzb21ldGltZXMgaW5jaGVzIGFyZSBvbWl0dGVkLCBoZW5jZSB0aGUgfHwgMC4uLkknbSBhc3N1bWluZyBpdCdzIHBvc3NpYmxlXG4gICAgICAgIC8vIGZvciBmZWV0IHRvIGJlIG9taXR0ZWQgYXMgd2VsbFxuICAgICAgICBkaXN0YW5jZSA9IFVuaXRpemUuaW5jaGVzKHBhcnNlRmxvYXQoaW5jaGVzU3RyKSB8fCAwKS5hZGQoXG4gICAgICAgICAgVW5pdGl6ZS5mZWV0KHBhcnNlRmxvYXQoZmVldFN0cikgfHwgMClcbiAgICAgICAgKVxuXG4gICAgICAgIGtpbmQgPSBwYXJzZUtpbmQobGluZVsxN10pXG4gICAgICAgIC8vIE5PVEUgdGhlcmUgYXJlIHR3byBjb2x1bW5zIGFyb3VuZCBoZXJlIHRoYXQgY2FuIGNvbnRhaW4gYSAqLlxuICAgICAgICAvLyBJIHRoaW5rIHRoZXkgbWlnaHQgcmVwcmVzZW50IGRpZmZlcmVudCB2YWx1ZXMsIGJ1dCB0aGlzaXMgY29uZnVzZWQgYnlcbiAgICAgICAgLy8gdGhlIGZhY3QgdGhhdCBmb3IgZnQvaW4gc2hvdHMsIGlmIHRoZXJlIGlzIGEgRCBvciBIIGZsYWcgaXQgb2NjdXBpZXMgdGhlXG4gICAgICAgIC8vIGZpcnN0IGNvbHVtbiB0aGF0IGNhbiBjb250YWluIGEgKiBmb3IgZGVjaW1hbCBmZWV0IHNob3RzXG4gICAgICAgIGV4Y2x1ZGVEaXN0YW5jZSA9IGxpbmVbMThdID09PSAnKicgfHwgbGluZVsxOF0gPT09ICdzJ1xuICAgICAgICBpc1NwbGF5ID0gbGluZVsxOF0gPT09ICdzJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVjaW1hbCBmZWV0IGFyZSBub3Qgb3B0aW9uYWxcbiAgICAgICAgY29uc3QgZmVldFN0ciA9IHZhbGlkYXRlKDEwLCAxNiwgJ2Rpc3RhbmNlJywgaXNWYWxpZFVGbG9hdClcbiAgICAgICAgZGlzdGFuY2UgPSBuZXcgVW5pdGl6ZWROdW1iZXIocGFyc2VGbG9hdChmZWV0U3RyKSwgZGlzdGFuY2VVbml0KVxuICAgICAgICBraW5kID0gcGFyc2VLaW5kKGxpbmVbMTZdKVxuICAgICAgICBleGNsdWRlRGlzdGFuY2UgPSBsaW5lWzE3XSA9PT0gJyonIHx8IGxpbmVbMTddID09PSAncydcbiAgICAgICAgaXNTcGxheSA9IGxpbmVbMTddID09PSAncydcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgIT09IEZyY3NTaG90S2luZC5Ob3JtYWwpIHtcbiAgICAgICAgdmFsaWRhdGUoMzAsIDM1LCAndmVydGljYWwtZGlzdGFuY2UnLCBpc1ZhbGlkRmxvYXQpXG4gICAgICB9XG5cbiAgICAgIC8vIGNvbnZlcnQgaG9yaXpvbnRhbCBhbmQgZGlhZ29uYWwgc2hvdHMgdG8gc3RhbmRhcmRcbiAgICAgIC8vIGluIHRoaXMgY2FzZSBpbmNGcyBpcyB0aGUgdmVydGljYWwgb2Zmc2V0IGJldHdlZW4gc3RhdGlvbnNcbiAgICAgIC8vIGZvcnR1bmF0ZWx5IGl0IGFwcGVhcnMgd2UgY2FuIGFsd2F5cyBjb3VudCBvbiBpbmNGcyBiZWluZyBzcGVjaWZpZWRcbiAgICAgIC8vIGFuZCBpbmNCcyBub3QgYmVpbmcgc3BlY2lmaWVkIGZvciB0aGVzZSB0eXBlcyBvZiBzaG90c1xuICAgICAgaWYgKGtpbmQgPT09IEZyY3NTaG90S2luZC5Ib3Jpem9udGFsKSB7XG4gICAgICAgIC8vIGRpc3RhbmNlIGlzIGhvcml6b250YWwgb2Zmc2V0IGFuZCBpbmNGc1N0ciBpcyB2ZXJ0aWNhbCBvZmZzZXRcbiAgICAgICAgaG9yaXpvbnRhbERpc3RhbmNlID0gZGlzdGFuY2VcbiAgICAgICAgY29uc3QgaCA9IGhvcml6b250YWxEaXN0YW5jZS5nZXQoZGlzdGFuY2VVbml0KVxuICAgICAgICBjb25zdCB2ID0gcGFyc2VGbG9hdChpbmNGc1N0cilcbiAgICAgICAgdmVydGljYWxEaXN0YW5jZSA9IG5ldyBVbml0aXplZE51bWJlcih2LCBkaXN0YW5jZVVuaXQpXG4gICAgICAgIGRpc3RhbmNlID0gbmV3IFVuaXRpemVkTnVtYmVyKE1hdGguc3FydChoICogaCArIHYgKiB2KSwgZGlzdGFuY2VVbml0KVxuICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb24gPSBBbmdsZS5hdGFuMihcbiAgICAgICAgICB2ZXJ0aWNhbERpc3RhbmNlLFxuICAgICAgICAgIGhvcml6b250YWxEaXN0YW5jZVxuICAgICAgICApXG4gICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uID0gbnVsbFxuICAgICAgfSBlbHNlIGlmIChraW5kID09PSBGcmNzU2hvdEtpbmQuRGlhZ29uYWwpIHtcbiAgICAgICAgLy8gZGlzdGFuY2UgaXMgYXMgdXN1YWwsIGJ1dCBpbmNGc1N0ciBpcyB2ZXJ0aWNhbCBvZmZzZXRcbiAgICAgICAgY29uc3QgZCA9IGRpc3RhbmNlLmdldChkaXN0YW5jZVVuaXQpXG4gICAgICAgIGNvbnN0IHYgPSBwYXJzZUZsb2F0KGluY0ZzU3RyKVxuICAgICAgICB2ZXJ0aWNhbERpc3RhbmNlID0gbmV3IFVuaXRpemVkTnVtYmVyKHYsIGRpc3RhbmNlVW5pdClcbiAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uID0gQW5nbGUuYXNpbih2IC8gZClcbiAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb24gPSBudWxsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBmcm9udHNpZ2h0IGluY2xpbmF0aW9uXG4gICAgICAgIHZhbGlkYXRlKDMwLCAzNSwgJ2luY2xpbmF0aW9uJywgaXNWYWxpZE9wdEluY2xpbmF0aW9uKVxuICAgICAgICAvLyBmcm9udHNpZ2h0IGluY2xpbmF0aW9uXG4gICAgICAgIHZhbGlkYXRlKDM1LCA0MCwgJ2luY2xpbmF0aW9uJywgaXNWYWxpZE9wdEluY2xpbmF0aW9uKVxuICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb24gPSBwYXJzZU51bWJlcihpbmNGc1N0ciwgaW5jbGluYXRpb25Vbml0KVxuICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbiA9IHBhcnNlTnVtYmVyKGluY0JzU3RyLCBpbmNsaW5hdGlvblVuaXQpXG4gICAgICB9XG4gICAgICBpZiAoZXJyb3JlZCkgY29udGludWVcblxuICAgICAgY29uc3QgZnJvbnRzaWdodEF6aW11dGggPSBwYXJzZUF6aW11dGgoYXptRnNTdHIsIGF6aW11dGhVbml0KVxuICAgICAgY29uc3QgYmFja3NpZ2h0QXppbXV0aCA9IHBhcnNlQXppbXV0aChhem1Cc1N0ciwgYXppbXV0aFVuaXQpXG5cbiAgICAgIGlmICghZnJvbnRzaWdodEluY2xpbmF0aW9uICYmICFiYWNrc2lnaHRJbmNsaW5hdGlvbikge1xuICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb24gPSBVbml0aXplLmRlZ3JlZXMoMClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2hvdDogRnJjc1Nob3QgPSB7XG4gICAgICAgIGZyb206IGZyb21TdHIudHJpbSgpLFxuICAgICAgICB0bzogdG9TdHIudHJpbSgpLFxuICAgICAgICBraW5kLFxuICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgZnJvbnRzaWdodEF6aW11dGgsXG4gICAgICAgIGJhY2tzaWdodEF6aW11dGgsXG4gICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbixcbiAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb24sXG4gICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICBsZWZ0LFxuICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgIHVwLFxuICAgICAgICAgIGRvd24sXG4gICAgICAgIH0sXG4gICAgICAgIGV4Y2x1ZGVEaXN0YW5jZSxcbiAgICAgICAgY29tbWVudCxcbiAgICAgIH1cbiAgICAgIGlmIChpc1NwbGF5KSBzaG90LmlzU3BsYXkgPSB0cnVlXG4gICAgICBpZiAoZnJvbUxydWRzKSBzaG90LmZyb21McnVkcyA9IGZyb21McnVkc1xuICAgICAgaWYgKGhvcml6b250YWxEaXN0YW5jZSkgc2hvdC5ob3Jpem9udGFsRGlzdGFuY2UgPSBob3Jpem9udGFsRGlzdGFuY2VcbiAgICAgIGlmICh2ZXJ0aWNhbERpc3RhbmNlKSBzaG90LnZlcnRpY2FsRGlzdGFuY2UgPSB2ZXJ0aWNhbERpc3RhbmNlXG4gICAgICBzaG90cy5wdXNoKHNob3QpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjYXZlLFxuICAgIGxvY2F0aW9uLFxuICAgIHRyaXBzLFxuICAgIGVycm9ycyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFRQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFFQSxTQUFTRyxXQUFXQSxDQUNsQkMsQ0FBUyxFQUNUQyxJQUFhLEVBQ2E7RUFDMUIsTUFBTUMsS0FBSyxHQUFHQyxVQUFVLENBQUNILENBQUMsQ0FBQztF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
|
|
503
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGFyc2VTZWdtZW50IiwicmVxdWlyZSIsIl91bml0aXplZCIsIl9GcmNzU2hvdCIsInBhcnNlTnVtYmVyIiwicyIsInVuaXQiLCJ2YWx1ZSIsInBhcnNlRmxvYXQiLCJpc05hTiIsIlVuaXRpemVkTnVtYmVyIiwicGFyc2VBemltdXRoIiwicGFyc2VkIiwiZ2V0IiwiQW5nbGUiLCJkZWdyZWVzIiwiVW5pdGl6ZSIsInBhcnNlS2luZCIsImtpbmQiLCJGcmNzU2hvdEtpbmQiLCJIb3Jpem9udGFsIiwiRGlhZ29uYWwiLCJOb3JtYWwiLCJwYXJzZUxlbmd0aFVuaXQiLCJMZW5ndGgiLCJpbmNoZXMiLCJmZWV0IiwibWV0ZXJzIiwicGFyc2VBbmdsZVVuaXQiLCJncmFkaWFucyIsIm1pbHNOQVRPIiwiaXNWYWxpZFN0YXRpb24iLCJ0ZXN0IiwiaXNWYWxpZFVJbnQiLCJpc1ZhbGlkRmxvYXQiLCJpc1ZhbGlkT3B0RmxvYXQiLCJpc1ZhbGlkT3B0VUZsb2F0IiwiaXNWYWxpZFVGbG9hdCIsImlzVmFsaWRPcHRJbmNsaW5hdGlvbiIsInBhcnNlTHJ1ZCIsIk51bWJlciIsImlzRmluaXRlIiwicGFyc2VGcm9tU3RhdGlvbkxydWRzIiwibGluZSIsImRpc3RhbmNlVW5pdCIsImZyb21TdHIiLCJzdWJzdHJpbmciLCJ1bmRlZmluZWQiLCJnYXAiLCJ0cmltIiwibHJ1ZFN0ciIsImxTdHIiLCJyU3RyIiwidVN0ciIsImRTdHIiLCJ1cCIsImRvd24iLCJsZWZ0IiwicmlnaHQiLCJwYXJzZUZyY3NTdXJ2ZXlGaWxlIiwiZmlsZSIsImxpbmVzIiwiY2F2ZSIsImxvY2F0aW9uIiwidHJpcHMiLCJlcnJvcnMiLCJ0cmlwTmFtZSIsInRyaXBUZWFtIiwidHJpcERhdGUiLCJpblRyaXBDb21tZW50IiwidHJpcENvbW1lbnRTdGFydExpbmUiLCJ0cmlwQ29tbWVudEVuZExpbmUiLCJ0cmlwQ29tbWVudCIsImNvbW1lbnRMaW5lcyIsInRyaXAiLCJpbkJsb2NrQ29tbWVudCIsInNlY3Rpb24iLCJjb21tZW50RnJvbVN0YXRpb25McnVkcyIsIk1hcCIsImFkZENvbW1lbnRMaW5lIiwiY29tbWVudCIsImhlYWRlciIsInBhcnNlZEZyb21TdGF0aW9uTHJ1ZHMiLCJzZXQiLCJwdXNoIiwiZ2V0Q29tbWVudCIsImpvaW4iLCJsaW5lTnVtYmVyIiwiZXJyb3JlZCIsInRoaXNMaW5lTnVtYmVyIiwiZXJyb3IiLCJtZXNzYWdlIiwic3RhcnRDb2x1bW4iLCJlbmRDb2x1bW4iLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJzb3VyY2UiLCJzdGFydExpbmUiLCJzdGFydENvbCIsInZhbGlkYXRlIiwiZmllbGROYW1lIiwidmFsaWRhdG9yIiwiZmllbGQiLCJtYXRjaCIsImV4ZWMiLCJjaGFyQXQiLCJrIiwidGVhbSIsIm1vbnRoIiwicGFyc2VJbnQiLCJkYXkiLCJ5ZWFyIiwiRGF0ZSIsInNwbGl0IiwiaW5kZXhPZiIsInBhcnQiLCJzbGljZSIsImF6aW11dGhVbml0IiwiaW5jbGluYXRpb25Vbml0IiwiYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZCIsImJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkIiwiaGFzQmFja3NpZ2h0QXppbXV0aCIsImhhc0JhY2tzaWdodEluY2xpbmF0aW9uIiwibmFtZSIsImRhdGUiLCJzaG90cyIsImZyb20iLCJ0b1N0ciIsInNob3QiLCJ0byIsImRpc3RhbmNlIiwiZnJvbnRzaWdodEF6aW11dGgiLCJiYWNrc2lnaHRBemltdXRoIiwiZnJvbnRzaWdodEluY2xpbmF0aW9uIiwiYmFja3NpZ2h0SW5jbGluYXRpb24iLCJmcm9tTHJ1ZHMiLCJleGNsdWRlRGlzdGFuY2UiLCJkZWxldGUiLCJmcm9tTHJ1ZE1hdGNoIiwiUmVnRXhwIiwicmVwbGFjZSIsIm1hcCIsImF6bUZzU3RyIiwiYXptQnNTdHIiLCJpbmNGc1N0ciIsImluY0JzU3RyIiwiaG9yaXpvbnRhbERpc3RhbmNlIiwidmVydGljYWxEaXN0YW5jZSIsImlzU3BsYXkiLCJmZWV0U3RyIiwiaW5jaGVzU3RyIiwiaW52YWxpZCIsImFkZCIsImgiLCJ2IiwiTWF0aCIsInNxcnQiLCJhdGFuMiIsImQiLCJhc2luIiwidG9McnVkcyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZyY3NTdXJ2ZXlGaWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyY3NTdXJ2ZXlGaWxlIH0gZnJvbSAnLi9GcmNzU3VydmV5RmlsZSdcbmltcG9ydCB7IEZyY3NUcmlwIH0gZnJvbSAnLi9GcmNzVHJpcCdcbmltcG9ydCB7IFNlZ21lbnQsIFNlZ21lbnRQYXJzZUVycm9yIH0gZnJvbSAncGFyc2Utc2VnbWVudCdcbmltcG9ydCB7XG4gIEFuZ2xlLFxuICBMZW5ndGgsXG4gIFVuaXQsXG4gIFVuaXRpemVkTnVtYmVyLFxuICBVbml0VHlwZSxcbiAgVW5pdGl6ZSxcbn0gZnJvbSAnQHNwZWxlb3RpY2EvdW5pdGl6ZWQnXG5pbXBvcnQgeyBGcmNzU2hvdCwgRnJjc1Nob3RLaW5kIH0gZnJvbSAnLi9GcmNzU2hvdCdcblxuZnVuY3Rpb24gcGFyc2VOdW1iZXI8VCBleHRlbmRzIFVuaXRUeXBlPFQ+PihcbiAgczogc3RyaW5nLFxuICB1bml0OiBVbml0PFQ+XG4pOiBVbml0aXplZE51bWJlcjxUPiB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQocylcbiAgaWYgKGlzTmFOKHZhbHVlKSkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIG5ldyBVbml0aXplZE51bWJlcih2YWx1ZSwgdW5pdClcbn1cblxuZnVuY3Rpb24gcGFyc2VBemltdXRoKFxuICBzOiBzdHJpbmcsXG4gIHVuaXQ6IFVuaXQ8QW5nbGU+XG4pOiBVbml0aXplZE51bWJlcjxBbmdsZT4gfCBudWxsIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VOdW1iZXIocywgdW5pdClcbiAgcmV0dXJuIHBhcnNlZD8uZ2V0KEFuZ2xlLmRlZ3JlZXMpID09PSAzNjAgPyBVbml0aXplLmRlZ3JlZXMoMCkgOiBwYXJzZWRcbn1cblxuZnVuY3Rpb24gcGFyc2VLaW5kKGtpbmQ6IHN0cmluZyk6IEZyY3NTaG90S2luZCB7XG4gIHN3aXRjaCAoa2luZCkge1xuICAgIGNhc2UgJ0gnOlxuICAgICAgcmV0dXJuIEZyY3NTaG90S2luZC5Ib3Jpem9udGFsXG4gICAgY2FzZSAnRCc6XG4gICAgICByZXR1cm4gRnJjc1Nob3RLaW5kLkRpYWdvbmFsXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBGcmNzU2hvdEtpbmQuTm9ybWFsXG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VMZW5ndGhVbml0KHVuaXQ6IHN0cmluZyk6IFVuaXQ8TGVuZ3RoPiB8IG51bGwge1xuICBzd2l0Y2ggKHVuaXQpIHtcbiAgICBjYXNlICdGSSc6XG4gICAgICByZXR1cm4gTGVuZ3RoLmluY2hlc1xuICAgIGNhc2UgJ0ZGJzpcbiAgICBjYXNlICdGVCc6XG4gICAgICByZXR1cm4gTGVuZ3RoLmZlZXRcbiAgICBjYXNlICdNVCc6XG4gICAgY2FzZSAnTSAnOlxuICAgICAgcmV0dXJuIExlbmd0aC5tZXRlcnNcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuZnVuY3Rpb24gcGFyc2VBbmdsZVVuaXQodW5pdDogc3RyaW5nKTogVW5pdDxBbmdsZT4gfCBudWxsIHtcbiAgc3dpdGNoICh1bml0KSB7XG4gICAgY2FzZSAnRCc6XG4gICAgICByZXR1cm4gQW5nbGUuZGVncmVlc1xuICAgIGNhc2UgJ0cnOlxuICAgICAgcmV0dXJuIEFuZ2xlLmdyYWRpYW5zXG4gICAgY2FzZSAnTSc6XG4gICAgICByZXR1cm4gQW5nbGUubWlsc05BVE9cbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIHN0YXRpb24gbmFtZS5cbmZ1bmN0aW9uIGlzVmFsaWRTdGF0aW9uKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL15cXHMqXFxTK1xccyokLy50ZXN0KHMpXG59XG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIHVuc2lnbmVkIGludGVnZXIuXG5mdW5jdGlvbiBpc1ZhbGlkVUludChzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eXFxzKlswLTldK1xccyokLy50ZXN0KHMpXG59XG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIGZsb2F0LlxuZnVuY3Rpb24gaXNWYWxpZEZsb2F0KHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL15cXHMqWy0rXT8oWzAtOV0rKFxcLlswLTldKik/fFxcLlswLTldKylcXHMqJC8udGVzdChzKVxufVxuLy8gZGV0ZXJtaW5lcyBpZiBhIGNlbGwgY29udGFpbnMgYSB2YWxpZCB1bnNpZ25lZCBmbG9hdCBvciB3aGl0ZXNwYWNlLlxuZnVuY3Rpb24gaXNWYWxpZE9wdEZsb2F0KHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gL15cXHMqWy0rXT9bMC05XSooXFwuWzAtOV0qKT9cXHMqJC8udGVzdChzKVxufVxuLy8gZGV0ZXJtaW5lcyBpZiBhIGNlbGwgY29udGFpbnMgYSB2YWxpZCB1bnNpZ25lZCBmbG9hdCBvciB3aGl0ZXNwYWNlLlxuZnVuY3Rpb24gaXNWYWxpZE9wdFVGbG9hdChzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eXFxzKlswLTldKihcXC5bMC05XSopP1xccyokLy50ZXN0KHMpXG59XG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIHVuc2lnbmVkIGZsb2F0LlxuZnVuY3Rpb24gaXNWYWxpZFVGbG9hdChzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eXFxzKihbMC05XSsoXFwuWzAtOV0qKT98XFwuWzAtOV0rKVxccyokLy50ZXN0KHMpXG59XG4vLyBkZXRlcm1pbmVzIGlmIGEgY2VsbCBjb250YWlucyBhIHZhbGlkIGluY2xpbmF0aW9uIG9yIHdoaXRlc3BhY2UuXG5mdW5jdGlvbiBpc1ZhbGlkT3B0SW5jbGluYXRpb24oczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlxccypbLStdP1swLTldKihcXC5bMC05XSopP1xccyokLy50ZXN0KHMpXG59XG5mdW5jdGlvbiBwYXJzZUxydWQ8VCBleHRlbmRzIFVuaXRUeXBlPFQ+PihcbiAgczogc3RyaW5nLFxuICB1bml0OiBVbml0PExlbmd0aD5cbik6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gfCBudWxsIHtcbiAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KHMpXG4gIHJldHVybiAhTnVtYmVyLmlzRmluaXRlKHZhbHVlKSB8fCB2YWx1ZSA8IDBcbiAgICA/IG51bGxcbiAgICA6IG5ldyBVbml0aXplZE51bWJlcih2YWx1ZSwgdW5pdClcbn1cblxuZnVuY3Rpb24gcGFyc2VGcm9tU3RhdGlvbkxydWRzKFxuICBsaW5lOiBzdHJpbmcsXG4gIGRpc3RhbmNlVW5pdDogVW5pdDxMZW5ndGg+XG4pOiBbc3RyaW5nLCBOb25OdWxsYWJsZTxGcmNzU2hvdFsnZnJvbUxydWRzJ10+XSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGZyb21TdHIgPSBsaW5lLnN1YnN0cmluZygwLCA1KVxuICBpZiAoIS9eXFxzKlxcUyskLy50ZXN0KGZyb21TdHIpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGdhcCA9IGxpbmUuc3Vic3RyaW5nKDUsIDQwKVxuICBpZiAoZ2FwLnRyaW0oKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBscnVkU3RyID0gbGluZS5zdWJzdHJpbmcoNDAsIDUyKVxuICBpZiAoIS9cXGQvLnRlc3QobHJ1ZFN0cikpIHJldHVybiB1bmRlZmluZWRcbiAgY29uc3QgbFN0ciA9IGxpbmUuc3Vic3RyaW5nKDQwLCA0MylcbiAgY29uc3QgclN0ciA9IGxpbmUuc3Vic3RyaW5nKDQzLCA0NilcbiAgY29uc3QgdVN0ciA9IGxpbmUuc3Vic3RyaW5nKDQ2LCA0OSlcbiAgY29uc3QgZFN0ciA9IGxpbmUuc3Vic3RyaW5nKDQ5LCA1MilcbiAgaWYgKFxuICAgICFpc1ZhbGlkT3B0RmxvYXQobFN0cikgfHxcbiAgICAhaXNWYWxpZE9wdEZsb2F0KHJTdHIpIHx8XG4gICAgIWlzVmFsaWRPcHRGbG9hdCh1U3RyKSB8fFxuICAgICFpc1ZhbGlkT3B0RmxvYXQoZFN0cilcbiAgKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGNvbnN0IHVwID0gcGFyc2VMcnVkKHVTdHIsIGRpc3RhbmNlVW5pdClcbiAgY29uc3QgZG93biA9IHBhcnNlTHJ1ZChkU3RyLCBkaXN0YW5jZVVuaXQpXG4gIGNvbnN0IGxlZnQgPSBwYXJzZUxydWQobFN0ciwgZGlzdGFuY2VVbml0KVxuICBjb25zdCByaWdodCA9IHBhcnNlTHJ1ZChyU3RyLCBkaXN0YW5jZVVuaXQpXG4gIHJldHVybiBbZnJvbVN0ci50cmltKCksIHsgbGVmdCwgcmlnaHQsIHVwLCBkb3duIH1dXG59XG5cbi8qKlxuICogUGFyc2VzIGEgcmF3IGNkYXRhLmZyIHN1cnZleSBmaWxlLiAgVGhlc2UgbG9vayBsaWtlIHNvOlxuICpcbjxwcmU+ICAgICAgRmlzaGVyIFJpZGdlIENhdmUgU3lzdGVtLCBIYXJ0IENvLiwgS1lcbkVOVFJBTkNFIERST1BTLCBKT0UnUyBcIkkgTE9WRSBNWSBXSUZFIFRSQVZFUlNFXCIsIFRSSUNLWSBUUkFWRVJTRVxuUEVURVIgUVVJQ0ssIEtFSVRIIE9SVElaICAgLSAgMi0xNS04MVxuVGhpcyBGaWxlIGhhcyBDcnVtcHMgdGVzdCBjb25uZWN0ZWQuICAxMS8yMC8xMlxuICpcbkZUIEMgIEREICAgIEFcbiAgICAgIEFFMjAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgIDMgIDAgIDJcbiogICAgICAlRlNcbiogICAgIEFFMjAgICAgIDAgICAgICAgIDAgICAgICAgIDAgICAgICAgIEJ1Zy1jYW4ndCBwdXQgYmVmb3JlIHNvIHB1dCBhZnRlci1zbyBjYW4ndCBtYWtlIDIgZml4ZWQgMTAvMjgvMTJcbiBBRTE5IEFFMjAgICA5LjMgICAgNjAuMCAgNjAuMC0zNi4wICAgICAgIDIgMTIgIDAgMjBcbiBBRTE4IEFFMTkgIDI0LjUgICAgIDAuMCAgIDAuMC05MC4wICAgICAgIDYgMTAgMjUgIDBcbiBBRTE3IEFFMTggICA4LjAgICAzNTAuNSAzNTAuNSAxNy4wICAgICAgIDMgIDUgIDAgIDBcbiBBRTE2IEFFMTcgICA2LjcgICAgIDAuMCAgIDAuMC05MC4wICAgICAgIDMgIDUgIDYgIDFcbiBBRTE1IEFFMTYgIDEyLjYgICAgNzAuNSAgNzEuMC0xOC4wICAgICAgIDQgIDAgIDIgIDFcbiBBRTE0IEFFMTUgIDEwLjAgICAgMjEuNSAgMjAuMCAgNi4wICAgICAgIDUgIDUgIDAgIDNcbiBBRTEzIEFFMTQgIDI2LjggICAyODguMCAyODYuMC01MC4wICAgICAgIDAgIDcgMjAgIDVcbipcbipTSE9SVCBDQU5ZT04gQVQgVEhFIEJBU0UgT0YgVEhFIFNFQ09ORCBEUk9QXG4gQUUxMiBBRTEzICAyMC43ICAgMjM2LjAgMjM2LjAgMzQuMCAgICAgICAzICA1ICA0ICA0XG4gQUUxMSBBRTEyICAxMi40ICAgMjEwLjAgMjEwLjAgMzUuMCAgICAgICA3ICA0ICA1ICAxXG4gQUUxMCBBRTEzICAyNS43ICAgIDQwLjAgIDQwLjAgLTkuMCAgICAgICAyICAyICAzICA2XG4qXG4qQUUxMCBBVCBKT0UnUyBcIiBJIExPVkUgTVkgV0lGRSBUUkFWRVJTRSBcIlxuICBBRTkgQUUxMCAgMTcuOCAgICAzMi41ICAzMS4wIDIzLjAgICAgICAgNCAgNSAyMCAxNVxuICBBRTEgIEFFOSAgMTMuNyAgICA4Mi4wICA4Mi4wLTEzLjBcbiAgIEExICBBRTEgIDM0LjMgICAgNDYuMCAgNDguMC0xNy41XG4qXG4qU1VSVkVZIFRPIERPTUUgTkVBUiBUSEUgRU5UUkFOQ0UgRE9NRSAoQUJPVkUgVEhFIFNFQ09ORCBEUk9QKVxuICBBRDEgQUUxNSAgIDguMCAgIDIwMC4wIDIwMC4wICAwLjAgICAgICAgMyAgMSAgMSAgMVxuICBBRDIgIEFEMSAgMTcuNyAgIDE2MS4wIDE2MS4wICA3LjAgICAgICAgMSAgNCAyNSAgMVxuICBBRDMgIEFEMiAgMTAuNCAgIDE4MC4wIDE4MC4wIDUwLjAgICAgICAgNCAgMSAxNSAgNVxuICpcblRSSUNLWSBUUkFWRVJTRSBBTkQgVEhFTiBGSVJTVCBTVVJWRVkgSU4gVVBQRVIgQ1JPV0xXQVlcbkRBTiBDUk9XTCwgS0VJVEggT1JUSVosIENISVAgSE9QUEVSLCBQRVRFUiBRVUlDSywgTEFSUlkgQkVBTiAgICAxNCBGRUIgMTk4MVxuICpcbkZJIEIgIEREXG4gICBBMiAgIEExICA0OCAxMCAgMjkyLjAgMTEwLjAtNDIuMCAgICAgICA1IDEwIDM1ICA1XG4gICBBMyAgIEEyICAxMiAgNSAgMzMzLjUgMTUzLjUgMzUuMCAgICAgICAzICAxIDE1ICA1XG4gICBBNCAgIEEzICAgNCAgMiAgICAwLjAgICAwLjAgOTAuMCAgICAgICAzICAxIDEwIDEwXG4uLi48L3ByZT5cbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlRnJjc1N1cnZleUZpbGUoXG4gIGZpbGU6IGFueSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIGxpbmVzOiBBc3luY0l0ZXJhYmxlPHN0cmluZz5cbik6IFByb21pc2U8RnJjc1N1cnZleUZpbGU+IHtcbiAgbGV0IGNhdmU6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gIGxldCBsb2NhdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgY29uc3QgdHJpcHM6IEFycmF5PEZyY3NUcmlwPiA9IFtdXG4gIGNvbnN0IGVycm9yczogQXJyYXk8U2VnbWVudFBhcnNlRXJyb3I+ID0gW11cblxuICBsZXQgdHJpcE5hbWVcbiAgbGV0IHRyaXBUZWFtXG4gIGxldCB0cmlwRGF0ZVxuICBsZXQgaW5UcmlwQ29tbWVudCA9IHRydWVcbiAgbGV0IHRyaXBDb21tZW50U3RhcnRMaW5lID0gMVxuICBsZXQgdHJpcENvbW1lbnRFbmRMaW5lID0gLTFcbiAgbGV0IHRyaXBDb21tZW50OiBBcnJheTxzdHJpbmc+ID0gW11cbiAgbGV0IGNvbW1lbnRMaW5lczogQXJyYXk8c3RyaW5nPiB8IG51bGwgPSBudWxsXG4gIGxldCB0cmlwOiBGcmNzVHJpcCB8IG51bGwgPSBudWxsXG4gIGxldCBpbkJsb2NrQ29tbWVudCA9IGZhbHNlXG4gIGxldCBzZWN0aW9uXG4gIGNvbnN0IGNvbW1lbnRGcm9tU3RhdGlvbkxydWRzOiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIE5vbk51bGxhYmxlPEZyY3NTaG90Wydmcm9tTHJ1ZHMnXT5cbiAgPiA9IG5ldyBNYXAoKVxuXG4gIGZ1bmN0aW9uIGFkZENvbW1lbnRMaW5lKGNvbW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0cmlwKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZVVuaXQgPSB0cmlwLmhlYWRlci5kaXN0YW5jZVVuaXRcbiAgICAgIGNvbnN0IHBhcnNlZEZyb21TdGF0aW9uTHJ1ZHMgPSBwYXJzZUZyb21TdGF0aW9uTHJ1ZHMoXG4gICAgICAgIGNvbW1lbnQsXG4gICAgICAgIGRpc3RhbmNlVW5pdFxuICAgICAgKVxuICAgICAgaWYgKHBhcnNlZEZyb21TdGF0aW9uTHJ1ZHMpIHtcbiAgICAgICAgY29tbWVudEZyb21TdGF0aW9uTHJ1ZHMuc2V0KFxuICAgICAgICAgIHBhcnNlZEZyb21TdGF0aW9uTHJ1ZHNbMF0sXG4gICAgICAgICAgcGFyc2VkRnJvbVN0YXRpb25McnVkc1sxXVxuICAgICAgICApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29tbWVudExpbmVzKSB7XG4gICAgICBjb21tZW50TGluZXMucHVzaChjb21tZW50KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldENvbW1lbnQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFjb21tZW50TGluZXMpIHJldHVybiBudWxsXG4gICAgY29uc3QgY29tbWVudCA9IGNvbW1lbnRMaW5lcy5qb2luKCdcXG4nKS50cmltKClcbiAgICBjb21tZW50TGluZXMgPSBudWxsXG4gICAgcmV0dXJuIGNvbW1lbnQgfHwgbnVsbFxuICB9XG5cbiAgbGV0IGxpbmVOdW1iZXIgPSAwXG5cbiAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGV0IGVycm9yZWQgPSBmYWxzZVxuXG4gICAgY29uc3QgdGhpc0xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyXG5cbiAgICBjb25zdCBlcnJvciA9IChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgICBlbmRDb2x1bW46IG51bWJlclxuICAgICk6IHZvaWQgPT4ge1xuICAgICAgZXJyb3JlZCA9IHRydWVcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICBuZXcgU2VnbWVudCh7XG4gICAgICAgICAgICB2YWx1ZTogbGluZSxcbiAgICAgICAgICAgIHNvdXJjZTogZmlsZSxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogdGhpc0xpbmVOdW1iZXIsXG4gICAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgICB9KS5zdWJzdHJpbmcoc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlID0gKFxuICAgICAgc3RhcnRDb2x1bW46IG51bWJlcixcbiAgICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgICB2YWxpZGF0b3I6ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuXG4gICAgKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkID0gbGluZS5zdWJzdHJpbmcoc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIGlmICghdmFsaWRhdG9yKGZpZWxkKSkge1xuICAgICAgICBlcnJvcihcbiAgICAgICAgICAoZmllbGQudHJpbSgpID8gJ0ludmFsaWQgJyA6ICdNaXNzaW5nICcpICsgZmllbGROYW1lLFxuICAgICAgICAgIHN0YXJ0Q29sdW1uLFxuICAgICAgICAgIGVuZENvbHVtblxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gZmllbGRcbiAgICB9XG5cbiAgICBsaW5lTnVtYmVyKytcblxuICAgIGlmIChsaW5lTnVtYmVyID09PSAxKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IC9eXFxzKihbXixdKykoLCguKikpPy8uZXhlYyhsaW5lKVxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNhdmUgPSBtYXRjaFsxXS50cmltKClcbiAgICAgICAgaWYgKG1hdGNoWzNdKSB7XG4gICAgICAgICAgbG9jYXRpb24gPSBtYXRjaFszXS50cmltKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsaW5lLmNoYXJBdCgwKSA9PT0gJyAnICYmIGxpbmUuY2hhckF0KDEpID09PSAnKicpIHtcbiAgICAgIGluVHJpcENvbW1lbnQgPSAhaW5UcmlwQ29tbWVudFxuICAgICAgaWYgKGluVHJpcENvbW1lbnQpIHtcbiAgICAgICAgc2VjdGlvbiA9IHVuZGVmaW5lZFxuICAgICAgICB0cmlwQ29tbWVudCA9IFtdXG4gICAgICAgIHRyaXBDb21tZW50U3RhcnRMaW5lID0gbGluZU51bWJlclxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpcENvbW1lbnRFbmRMaW5lID0gbGluZU51bWJlclxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5UcmlwQ29tbWVudCkge1xuICAgICAgaWYgKGxpbmVOdW1iZXIgPT09IHRyaXBDb21tZW50U3RhcnRMaW5lICsgMSkge1xuICAgICAgICB0cmlwTmFtZSA9IGxpbmUgJiYgbGluZS50cmltKClcbiAgICAgIH0gZWxzZSBpZiAobGluZU51bWJlciA9PT0gdHJpcENvbW1lbnRTdGFydExpbmUgKyAyKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gL14oLis/KVxccypbLS5dXFxzKihcXGQrKVxcLyhcXGQrKVxcLyhcXGQrKSQvLmV4ZWMoXG4gICAgICAgICAgbGluZSAmJiBsaW5lLnRyaW0oKVxuICAgICAgICApXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGxldCBrID0gMVxuICAgICAgICAgIGNvbnN0IHRlYW0gPSBtYXRjaFtrKytdXG4gICAgICAgICAgY29uc3QgbW9udGggPSBwYXJzZUludChtYXRjaFtrKytdKVxuICAgICAgICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KG1hdGNoW2srK10pXG4gICAgICAgICAgY29uc3QgeWVhciA9IHBhcnNlSW50KG1hdGNoW2srK10pXG4gICAgICAgICAgdHJpcERhdGUgPSBuZXcgRGF0ZSh5ZWFyIDwgNzAgPyB5ZWFyICsgMjAwMCA6IHllYXIsIG1vbnRoIC0gMSwgZGF5KVxuICAgICAgICAgIHRyaXBUZWFtID0gdGVhbS5zcGxpdChcbiAgICAgICAgICAgIHRlYW0uaW5kZXhPZignOycpID49IDAgPyAvXFxzKjtcXHMqL2cgOiAvXFxzKixcXHMqL2dcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobGluZU51bWJlciA+IDEpIHtcbiAgICAgICAgdHJpcENvbW1lbnQucHVzaChsaW5lKVxuICAgICAgfVxuICAgICAgY29uc3QgbWF0Y2ggPSAvXlxcKlxcKlxcKihbXipdKVxcKlxcKlxcKi8uZXhlYyhsaW5lKVxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIHNlY3Rpb24gPSBtYXRjaFsxXS50cmltKClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxpbmUuY2hhckF0KDApID09PSAnKicpIHtcbiAgICAgIGluQmxvY2tDb21tZW50ID0gIWluQmxvY2tDb21tZW50XG4gICAgICBpZiAoaW5CbG9ja0NvbW1lbnQpIGNvbW1lbnRMaW5lcyA9IFtdXG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFydCA9IGxpbmUuc3Vic3RyaW5nKDEpXG4gICAgICAgIGlmIChwYXJ0KSBhZGRDb21tZW50TGluZShwYXJ0KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5CbG9ja0NvbW1lbnQpIHtcbiAgICAgIGFkZENvbW1lbnRMaW5lKGxpbmUpXG4gICAgfSBlbHNlIGlmIChsaW5lTnVtYmVyID09PSB0cmlwQ29tbWVudEVuZExpbmUgKyAxKSB7XG4gICAgICAvLyBGVCBDQyBERFxuICAgICAgLy8gMDEyMzQ1NjdcbiAgICAgIGxldCBkaXN0YW5jZVVuaXQgPSBwYXJzZUxlbmd0aFVuaXQobGluZS5zbGljZSgwLCAyKSlcbiAgICAgIGlmICghZGlzdGFuY2VVbml0KSB7XG4gICAgICAgIGRpc3RhbmNlVW5pdCA9IExlbmd0aC5mZWV0XG4gICAgICAgIGVycm9yKCdJbnZhbGlkIGRpc3RhbmNlIHVuaXQnLCAwLCAyKVxuICAgICAgfVxuICAgICAgbGV0IGF6aW11dGhVbml0ID0gcGFyc2VBbmdsZVVuaXQobGluZVs2XSlcbiAgICAgIGlmICghYXppbXV0aFVuaXQpIHtcbiAgICAgICAgYXppbXV0aFVuaXQgPSBBbmdsZS5kZWdyZWVzXG4gICAgICAgIGVycm9yKCdJbnZhbGlkIGF6aW11dGggdW5pdCcsIDYsIDcpXG4gICAgICB9XG4gICAgICBsZXQgaW5jbGluYXRpb25Vbml0ID0gcGFyc2VBbmdsZVVuaXQobGluZVs3XSlcbiAgICAgIGlmICghaW5jbGluYXRpb25Vbml0KSB7XG4gICAgICAgIGluY2xpbmF0aW9uVW5pdCA9IEFuZ2xlLmRlZ3JlZXNcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgaW5jbGluYXRpb24gdW5pdCcsIDcsIDgpXG4gICAgICB9XG4gICAgICBjb25zdCBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkID0gbGluZVszXSA9PT0gJ0MnXG4gICAgICBjb25zdCBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZCA9IGxpbmVbNF0gPT09ICdDJ1xuICAgICAgY29uc3QgaGFzQmFja3NpZ2h0QXppbXV0aCA9IGxpbmVbM10gIT09ICcgJyAmJiBsaW5lWzNdICE9PSAnLSdcbiAgICAgIGNvbnN0IGhhc0JhY2tzaWdodEluY2xpbmF0aW9uID0gbGluZVs0XSAhPT0gJyAnICYmIGxpbmVbNF0gIT09ICctJ1xuXG4gICAgICBpZiAoIS9bLUNCIF0vLnRlc3QobGluZVszXSkpIHtcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgYmFja3NpZ2h0IGF6aW11dGggdHlwZScsIDMsIDQpXG4gICAgICB9XG4gICAgICBpZiAoIS9bLUNCIF0vLnRlc3QobGluZVs0XSkpIHtcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgYmFja3NpZ2h0IGluY2xpbmF0aW9uIHR5cGUnLCA0LCA1KVxuICAgICAgfVxuXG4gICAgICB0cmlwID0ge1xuICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICBuYW1lOiB0cmlwTmFtZSB8fCAnJyxcbiAgICAgICAgICBjb21tZW50OiAodHJpcENvbW1lbnQgJiYgdHJpcENvbW1lbnQuam9pbignXFxuJykpIHx8IG51bGwsXG4gICAgICAgICAgc2VjdGlvbixcbiAgICAgICAgICBkYXRlOiB0cmlwRGF0ZSxcbiAgICAgICAgICB0ZWFtOiB0cmlwVGVhbSxcbiAgICAgICAgICBkaXN0YW5jZVVuaXQsXG4gICAgICAgICAgYXppbXV0aFVuaXQsXG4gICAgICAgICAgaW5jbGluYXRpb25Vbml0LFxuICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQsXG4gICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQsXG4gICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aCxcbiAgICAgICAgICBoYXNCYWNrc2lnaHRJbmNsaW5hdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgc2hvdHM6IFtdLFxuICAgICAgfVxuICAgICAgdHJpcHMucHVzaCh0cmlwKVxuICAgIH0gZWxzZSBpZiAodHJpcCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBzaG90cyxcbiAgICAgICAgaGVhZGVyOiB7IGF6aW11dGhVbml0LCBpbmNsaW5hdGlvblVuaXQgfSxcbiAgICAgIH0gPSB0cmlwXG4gICAgICBsZXQgeyBkaXN0YW5jZVVuaXQgfSA9IHRyaXAuaGVhZGVyXG5cbiAgICAgIGNvbnN0IGluY2hlcyA9IGRpc3RhbmNlVW5pdCA9PT0gTGVuZ3RoLmluY2hlc1xuICAgICAgaWYgKGluY2hlcykgZGlzdGFuY2VVbml0ID0gTGVuZ3RoLmZlZXRcblxuICAgICAgLy8gcmlnb3JvdXNseSBjaGVjayB0aGUgdmFsdWVzIGluIGFsbCB0aGUgY29sdW1ucyB0byBtYWtlIHN1cmUgdGhpc1xuICAgICAgLy8gaXMgcmVhbGx5IGEgc3VydmV5IHNob3QgbGluZSwganVzdCBpbiBjYXNlIGFueSBzdHJheSBjb21tZW50cyBhcmVcbiAgICAgIC8vIG5vdCBwcm9wZXJseSBkZWxpbWl0ZWQuXG5cbiAgICAgIC8vIGZyb20gc3RhdGlvbiBuYW1lXG4gICAgICBpZiAoIS9cXFMvLnRlc3QobGluZS5zdWJzdHJpbmcoNSwgMTApKSkgY29udGludWVcbiAgICAgIGNvbnN0IGZyb21TdHIgPSB2YWxpZGF0ZSg1LCAxMCwgJ2Zyb20gc3RhdGlvbicsIGlzVmFsaWRTdGF0aW9uKVxuICAgICAgY29uc3QgZnJvbSA9IGZyb21TdHIudHJpbSgpXG5cbiAgICAgIC8vIFNhZGx5IEkgaGF2ZSBmb3VuZCBuZWdhdGl2ZSBMUlVEIHZhbHVlcyBpbiBDaGlwJ3MgZm9ybWF0IGFuZCBhcHBhcmVudGx5XG4gICAgICAvLyBoaXMgcHJvZ3JhbSBkb2Vzbid0IGZhaWwgb24gdGhlbSwgc28gSSBoYXZlIHRvIGFjY2VwdCB0aGVtIGhlcmVcbiAgICAgIC8vIGlzVmFsaWRPcHRGbG9hdCBpbnN0ZWFkIG9mIGlzVmFsaWRPcHRVRmxvYXRcbiAgICAgIGNvbnN0IGxTdHIgPSB2YWxpZGF0ZSg0MCwgNDMsICdsZWZ0JywgaXNWYWxpZE9wdEZsb2F0KVxuICAgICAgY29uc3QgclN0ciA9IHZhbGlkYXRlKDQzLCA0NiwgJ3JpZ2h0JywgaXNWYWxpZE9wdEZsb2F0KVxuICAgICAgY29uc3QgdVN0ciA9IHZhbGlkYXRlKDQ2LCA0OSwgJ3VwJywgaXNWYWxpZE9wdEZsb2F0KVxuICAgICAgY29uc3QgZFN0ciA9IHZhbGlkYXRlKDQ5LCA1MiwgJ2Rvd24nLCBpc1ZhbGlkT3B0RmxvYXQpXG5cbiAgICAgIGlmIChlcnJvcmVkKSBjb250aW51ZVxuXG4gICAgICBjb25zdCB1cCA9IHBhcnNlTHJ1ZCh1U3RyLCBkaXN0YW5jZVVuaXQpXG4gICAgICBjb25zdCBkb3duID0gcGFyc2VMcnVkKGRTdHIsIGRpc3RhbmNlVW5pdClcbiAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUxydWQobFN0ciwgZGlzdGFuY2VVbml0KVxuICAgICAgY29uc3QgcmlnaHQgPSBwYXJzZUxydWQoclN0ciwgZGlzdGFuY2VVbml0KVxuXG4gICAgICAvLyB0byBzdGF0aW9uIG5hbWVcbiAgICAgIGNvbnN0IHRvU3RyID0gbGluZS5zdWJzdHJpbmcoMCwgNSlcbiAgICAgIGlmICghdG9TdHIudHJpbSgpKSB7XG4gICAgICAgIGNvbnN0IHNob3Q6IEZyY3NTaG90ID0ge1xuICAgICAgICAgIGZyb20sXG4gICAgICAgICAgdG86IG51bGwsXG4gICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICBkaXN0YW5jZTogbmV3IFVuaXRpemVkTnVtYmVyKDAsIGRpc3RhbmNlVW5pdCksXG4gICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IG51bGwsXG4gICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogbnVsbCxcbiAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICBsZWZ0LFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICB1cCxcbiAgICAgICAgICAgIGRvd24sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IHRydWUsXG4gICAgICAgICAgY29tbWVudDogZ2V0Q29tbWVudCgpLFxuICAgICAgICB9XG4gICAgICAgIHNob3RzLnB1c2goc2hvdClcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmICghaXNWYWxpZFN0YXRpb24odG9TdHIpKSB7XG4gICAgICAgIGVycm9yKCdJbnZhbGlkIHN0YXRpb24gbmFtZScsIDAsIDUpXG4gICAgICB9XG5cbiAgICAgIGxldCBmcm9tTHJ1ZHMgPSBjb21tZW50RnJvbVN0YXRpb25McnVkcy5nZXQoZnJvbSlcbiAgICAgIGlmIChmcm9tTHJ1ZHMpIHtcbiAgICAgICAgY29tbWVudEZyb21TdGF0aW9uTHJ1ZHMuZGVsZXRlKGZyb20pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmcm9tTHJ1ZE1hdGNoID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgXlxcXFxzKyR7ZnJvbVN0clxuICAgICAgICAgICAgLnRyaW0oKVxuICAgICAgICAgICAgLnJlcGxhY2UoXG4gICAgICAgICAgICAgIC9bLiorP14ke30oKXxbXFxdXFxcXF0vZyxcbiAgICAgICAgICAgICAgJ1xcXFwkJidcbiAgICAgICAgICAgICl9KChcXFxccysoXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKXs0fSlgXG4gICAgICAgICkuZXhlYyhsaW5lLnN1YnN0cmluZyg1MikpXG4gICAgICAgIGlmIChmcm9tTHJ1ZE1hdGNoKSB7XG4gICAgICAgICAgY29uc3QgW2xlZnQsIHJpZ2h0LCB1cCwgZG93bl0gPSBmcm9tTHJ1ZE1hdGNoWzFdXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAuc3BsaXQoL1xccysvZylcbiAgICAgICAgICAgIC5tYXAocyA9PiBwYXJzZUxydWQocywgZGlzdGFuY2VVbml0KSlcbiAgICAgICAgICBmcm9tTHJ1ZHMgPSB7IGxlZnQsIHJpZ2h0LCB1cCwgZG93biB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29tbWVudCA9IGdldENvbW1lbnQoKVxuXG4gICAgICAvLyBhemltdXRoIGFuZCBpbmNsaW5hdGlvblxuICAgICAgY29uc3QgYXptRnNTdHIgPSB2YWxpZGF0ZSgxOSwgMjUsICdhemltdXRoJywgaXNWYWxpZE9wdFVGbG9hdClcbiAgICAgIGNvbnN0IGF6bUJzU3RyID0gdmFsaWRhdGUoMjUsIDMwLCAnYXppbXV0aCcsIGlzVmFsaWRPcHRVRmxvYXQpXG4gICAgICBjb25zdCBpbmNGc1N0ciA9IGxpbmUuc3Vic3RyaW5nKDMwLCAzNSlcbiAgICAgIGNvbnN0IGluY0JzU3RyID0gbGluZS5zdWJzdHJpbmcoMzUsIDQwKVxuXG4gICAgICBpZiAoZXJyb3JlZCkgY29udGludWVcblxuICAgICAgbGV0IGtpbmQ6IEZyY3NTaG90S2luZFxuICAgICAgbGV0IGRpc3RhbmNlOiBVbml0aXplZE51bWJlcjxMZW5ndGg+XG4gICAgICBsZXQgaG9yaXpvbnRhbERpc3RhbmNlOiBVbml0aXplZE51bWJlcjxMZW5ndGg+IHwgdW5kZWZpbmVkXG4gICAgICBsZXQgdmVydGljYWxEaXN0YW5jZTogVW5pdGl6ZWROdW1iZXI8TGVuZ3RoPiB8IHVuZGVmaW5lZFxuICAgICAgbGV0IGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZWROdW1iZXI8QW5nbGU+IHwgbnVsbFxuICAgICAgbGV0IGJhY2tzaWdodEluY2xpbmF0aW9uOiBVbml0aXplZE51bWJlcjxBbmdsZT4gfCBudWxsXG4gICAgICBsZXQgZXhjbHVkZURpc3RhbmNlOiBib29sZWFuXG4gICAgICBsZXQgaXNTcGxheTogYm9vbGVhblxuXG4gICAgICAvLyBwYXJzZSBkaXN0YW5jZVxuICAgICAgaWYgKGluY2hlcykge1xuICAgICAgICBjb25zdCBmZWV0U3RyID0gbGluZS5zdWJzdHJpbmcoMTAsIDE0KVxuICAgICAgICBjb25zdCBpbmNoZXNTdHIgPSBsaW5lLnN1YnN0cmluZygxNCwgMTcpXG4gICAgICAgIC8vIGZlZXQgYW5kIGluY2hlcyBhcmUgbm90IGJvdGggb3B0aW9uYWxcbiAgICAgICAgaWYgKCFpc1ZhbGlkVUludChmZWV0U3RyKSAmJiAhaXNWYWxpZFVJbnQoaW5jaGVzU3RyKSkge1xuICAgICAgICAgIGNvbnN0IGludmFsaWQgPSBmZWV0U3RyLnRyaW0oKSB8fCBpbmNoZXNTdHIudHJpbSgpXG4gICAgICAgICAgZXJyb3IoaW52YWxpZCA/ICdJbnZhbGlkIGRpc3RhbmNlJyA6ICdNaXNzaW5nIGRpc3RhbmNlJywgMTAsIDE3KVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyBzb21ldGltZXMgaW5jaGVzIGFyZSBvbWl0dGVkLCBoZW5jZSB0aGUgfHwgMC4uLkknbSBhc3N1bWluZyBpdCdzIHBvc3NpYmxlXG4gICAgICAgIC8vIGZvciBmZWV0IHRvIGJlIG9taXR0ZWQgYXMgd2VsbFxuICAgICAgICBkaXN0YW5jZSA9IFVuaXRpemUuaW5jaGVzKHBhcnNlRmxvYXQoaW5jaGVzU3RyKSB8fCAwKS5hZGQoXG4gICAgICAgICAgVW5pdGl6ZS5mZWV0KHBhcnNlRmxvYXQoZmVldFN0cikgfHwgMClcbiAgICAgICAgKVxuXG4gICAgICAgIGtpbmQgPSBwYXJzZUtpbmQobGluZVsxN10pXG4gICAgICAgIC8vIE5PVEUgdGhlcmUgYXJlIHR3byBjb2x1bW5zIGFyb3VuZCBoZXJlIHRoYXQgY2FuIGNvbnRhaW4gYSAqLlxuICAgICAgICAvLyBJIHRoaW5rIHRoZXkgbWlnaHQgcmVwcmVzZW50IGRpZmZlcmVudCB2YWx1ZXMsIGJ1dCB0aGlzaXMgY29uZnVzZWQgYnlcbiAgICAgICAgLy8gdGhlIGZhY3QgdGhhdCBmb3IgZnQvaW4gc2hvdHMsIGlmIHRoZXJlIGlzIGEgRCBvciBIIGZsYWcgaXQgb2NjdXBpZXMgdGhlXG4gICAgICAgIC8vIGZpcnN0IGNvbHVtbiB0aGF0IGNhbiBjb250YWluIGEgKiBmb3IgZGVjaW1hbCBmZWV0IHNob3RzXG4gICAgICAgIGV4Y2x1ZGVEaXN0YW5jZSA9IGxpbmVbMThdID09PSAnKicgfHwgbGluZVsxOF0gPT09ICdzJ1xuICAgICAgICBpc1NwbGF5ID0gbGluZVsxOF0gPT09ICdzJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVjaW1hbCBmZWV0IGFyZSBub3Qgb3B0aW9uYWxcbiAgICAgICAgY29uc3QgZmVldFN0ciA9IHZhbGlkYXRlKDEwLCAxNiwgJ2Rpc3RhbmNlJywgaXNWYWxpZFVGbG9hdClcbiAgICAgICAgZGlzdGFuY2UgPSBuZXcgVW5pdGl6ZWROdW1iZXIocGFyc2VGbG9hdChmZWV0U3RyKSwgZGlzdGFuY2VVbml0KVxuICAgICAgICBraW5kID0gcGFyc2VLaW5kKGxpbmVbMTZdKVxuICAgICAgICBleGNsdWRlRGlzdGFuY2UgPSBsaW5lWzE3XSA9PT0gJyonIHx8IGxpbmVbMTddID09PSAncydcbiAgICAgICAgaXNTcGxheSA9IGxpbmVbMTddID09PSAncydcbiAgICAgIH1cblxuICAgICAgaWYgKGtpbmQgIT09IEZyY3NTaG90S2luZC5Ob3JtYWwpIHtcbiAgICAgICAgdmFsaWRhdGUoMzAsIDM1LCAndmVydGljYWwtZGlzdGFuY2UnLCBpc1ZhbGlkRmxvYXQpXG4gICAgICB9XG5cbiAgICAgIC8vIGNvbnZlcnQgaG9yaXpvbnRhbCBhbmQgZGlhZ29uYWwgc2hvdHMgdG8gc3RhbmRhcmRcbiAgICAgIC8vIGluIHRoaXMgY2FzZSBpbmNGcyBpcyB0aGUgdmVydGljYWwgb2Zmc2V0IGJldHdlZW4gc3RhdGlvbnNcbiAgICAgIC8vIGZvcnR1bmF0ZWx5IGl0IGFwcGVhcnMgd2UgY2FuIGFsd2F5cyBjb3VudCBvbiBpbmNGcyBiZWluZyBzcGVjaWZpZWRcbiAgICAgIC8vIGFuZCBpbmNCcyBub3QgYmVpbmcgc3BlY2lmaWVkIGZvciB0aGVzZSB0eXBlcyBvZiBzaG90c1xuICAgICAgaWYgKGtpbmQgPT09IEZyY3NTaG90S2luZC5Ib3Jpem9udGFsKSB7XG4gICAgICAgIC8vIGRpc3RhbmNlIGlzIGhvcml6b250YWwgb2Zmc2V0IGFuZCBpbmNGc1N0ciBpcyB2ZXJ0aWNhbCBvZmZzZXRcbiAgICAgICAgaG9yaXpvbnRhbERpc3RhbmNlID0gZGlzdGFuY2VcbiAgICAgICAgY29uc3QgaCA9IGhvcml6b250YWxEaXN0YW5jZS5nZXQoZGlzdGFuY2VVbml0KVxuICAgICAgICBjb25zdCB2ID0gcGFyc2VGbG9hdChpbmNGc1N0cilcbiAgICAgICAgdmVydGljYWxEaXN0YW5jZSA9IG5ldyBVbml0aXplZE51bWJlcih2LCBkaXN0YW5jZVVuaXQpXG4gICAgICAgIGRpc3RhbmNlID0gbmV3IFVuaXRpemVkTnVtYmVyKE1hdGguc3FydChoICogaCArIHYgKiB2KSwgZGlzdGFuY2VVbml0KVxuICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb24gPSBBbmdsZS5hdGFuMihcbiAgICAgICAgICB2ZXJ0aWNhbERpc3RhbmNlLFxuICAgICAgICAgIGhvcml6b250YWxEaXN0YW5jZVxuICAgICAgICApXG4gICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uID0gbnVsbFxuICAgICAgfSBlbHNlIGlmIChraW5kID09PSBGcmNzU2hvdEtpbmQuRGlhZ29uYWwpIHtcbiAgICAgICAgLy8gZGlzdGFuY2UgaXMgYXMgdXN1YWwsIGJ1dCBpbmNGc1N0ciBpcyB2ZXJ0aWNhbCBvZmZzZXRcbiAgICAgICAgY29uc3QgZCA9IGRpc3RhbmNlLmdldChkaXN0YW5jZVVuaXQpXG4gICAgICAgIGNvbnN0IHYgPSBwYXJzZUZsb2F0KGluY0ZzU3RyKVxuICAgICAgICB2ZXJ0aWNhbERpc3RhbmNlID0gbmV3IFVuaXRpemVkTnVtYmVyKHYsIGRpc3RhbmNlVW5pdClcbiAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uID0gQW5nbGUuYXNpbih2IC8gZClcbiAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb24gPSBudWxsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBmcm9udHNpZ2h0IGluY2xpbmF0aW9uXG4gICAgICAgIHZhbGlkYXRlKDMwLCAzNSwgJ2luY2xpbmF0aW9uJywgaXNWYWxpZE9wdEluY2xpbmF0aW9uKVxuICAgICAgICAvLyBmcm9udHNpZ2h0IGluY2xpbmF0aW9uXG4gICAgICAgIHZhbGlkYXRlKDM1LCA0MCwgJ2luY2xpbmF0aW9uJywgaXNWYWxpZE9wdEluY2xpbmF0aW9uKVxuICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb24gPSBwYXJzZU51bWJlcihpbmNGc1N0ciwgaW5jbGluYXRpb25Vbml0KVxuICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbiA9IHBhcnNlTnVtYmVyKGluY0JzU3RyLCBpbmNsaW5hdGlvblVuaXQpXG4gICAgICB9XG4gICAgICBpZiAoZXJyb3JlZCkgY29udGludWVcblxuICAgICAgY29uc3QgZnJvbnRzaWdodEF6aW11dGggPSBwYXJzZUF6aW11dGgoYXptRnNTdHIsIGF6aW11dGhVbml0KVxuICAgICAgY29uc3QgYmFja3NpZ2h0QXppbXV0aCA9IHBhcnNlQXppbXV0aChhem1Cc1N0ciwgYXppbXV0aFVuaXQpXG5cbiAgICAgIGlmICghZnJvbnRzaWdodEluY2xpbmF0aW9uICYmICFiYWNrc2lnaHRJbmNsaW5hdGlvbikge1xuICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb24gPSBVbml0aXplLmRlZ3JlZXMoMClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2hvdDogRnJjc1Nob3QgPSB7XG4gICAgICAgIGZyb20sXG4gICAgICAgIHRvOiB0b1N0ci50cmltKCksXG4gICAgICAgIGtpbmQsXG4gICAgICAgIGRpc3RhbmNlLFxuICAgICAgICBmcm9udHNpZ2h0QXppbXV0aCxcbiAgICAgICAgYmFja3NpZ2h0QXppbXV0aCxcbiAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uLFxuICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbixcbiAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgdXAsXG4gICAgICAgICAgZG93bixcbiAgICAgICAgfSxcbiAgICAgICAgZXhjbHVkZURpc3RhbmNlLFxuICAgICAgICBjb21tZW50LFxuICAgICAgfVxuICAgICAgaWYgKGlzU3BsYXkpIHNob3QuaXNTcGxheSA9IHRydWVcbiAgICAgIGlmIChmcm9tTHJ1ZHMpIHNob3QuZnJvbUxydWRzID0gZnJvbUxydWRzXG4gICAgICBpZiAoaG9yaXpvbnRhbERpc3RhbmNlKSBzaG90Lmhvcml6b250YWxEaXN0YW5jZSA9IGhvcml6b250YWxEaXN0YW5jZVxuICAgICAgaWYgKHZlcnRpY2FsRGlzdGFuY2UpIHNob3QudmVydGljYWxEaXN0YW5jZSA9IHZlcnRpY2FsRGlzdGFuY2VcbiAgICAgIHNob3RzLnB1c2goc2hvdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNhdmUsXG4gICAgbG9jYXRpb24sXG4gICAgdHJpcHMsXG4gICAgZXJyb3JzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQVFBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUVBLFNBQVNHLFdBQVdBLENBQ2xCQyxDQUFTLEVBQ1RDLElBQWEsRUFDYTtFQUMxQixNQUFNQyxLQUFLLEdBQUdDLFVBQVUsQ0FBQ0gsQ0FBQyxDQUFDO0VBQzNCLElBQUlJLEtBQUssQ0FBQ0YsS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJO0VBQzdCLE9BQU8sSUFBSUcsd0JBQWMsQ0FBQ0gsS0FBSyxFQUFFRCxJQUFJLENBQUM7QUFDeEM7QUFFQSxTQUFTSyxZQUFZQSxDQUNuQk4sQ0FBUyxFQUNUQyxJQUFpQixFQUNhO0VBQzlCLE1BQU1NLE1BQU0sR0FBR1IsV0FBVyxDQUFDQyxDQUFDLEVBQUVDLElBQUksQ0FBQztFQUNuQyxPQUFPLENBQUFNLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFQyxHQUFHLENBQUNDLGVBQUssQ0FBQ0MsT0FBTyxDQUFDLE1BQUssR0FBRyxHQUFHQyxpQkFBTyxDQUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUdILE1BQU07QUFDekU7QUFFQSxT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
|
|
@@ -32,6 +32,8 @@ DAN CROWL, KEITH ORTIZ, CHIP HOPPER, PETER QUICK, LARRY BEAN 14 FEB 1981
|
|
|
32
32
|
FI B DD
|
|
33
33
|
*
|
|
34
34
|
* A1 2 7 3 4.5
|
|
35
|
+
*
|
|
36
|
+
* test comment after from station lrud
|
|
35
37
|
A2 A1 48 10 292.0 110.0-42.0 5 10 35 5
|
|
36
38
|
A3 A2 12 5 333.5 153.5 35.0 3 1 15 5
|
|
37
39
|
A4 A3 4 2 0.0 0.0 90.0 3 1 10 10
|
|
@@ -244,12 +246,12 @@ B30sp B30 13.7 s 360.0 360.0 40.0 2 4 6
|
|
|
244
246
|
frontsightInclination: _unitized.Unitize.degrees(-42),
|
|
245
247
|
backsightInclination: null,
|
|
246
248
|
excludeDistance: false,
|
|
247
|
-
comment:
|
|
249
|
+
comment: 'test comment after from station lrud',
|
|
248
250
|
fromLruds: {
|
|
249
|
-
left: _unitized.Unitize.
|
|
250
|
-
right: _unitized.Unitize.
|
|
251
|
-
up: _unitized.Unitize.
|
|
252
|
-
down: _unitized.Unitize.
|
|
251
|
+
left: _unitized.Unitize.inches(2),
|
|
252
|
+
right: _unitized.Unitize.inches(7),
|
|
253
|
+
up: _unitized.Unitize.inches(3),
|
|
254
|
+
down: _unitized.Unitize.inches(4.5)
|
|
253
255
|
},
|
|
254
256
|
toLruds: {
|
|
255
257
|
left: _unitized.Unitize.feet(5),
|
|
@@ -641,4 +643,4 @@ MT B- DD
|
|
|
641
643
|
});
|
|
642
644
|
});
|
|
643
645
|
});
|
|
644
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9jaGEiLCJyZXF1aXJlIiwiX2luZGV4IiwiX3VuaXRpemVkIiwiX2NoYWkiLCJfRnJjc1Nob3QiLCJfcGFyc2VTZWdtZW50IiwiZGF0YSIsImRlc2NyaWJlIiwiaXQiLCJwYXJzZWQiLCJwYXJzZUZyY3NTdXJ2ZXlGaWxlIiwiZXhwZWN0IiwidG8iLCJkZWVwIiwiZXF1YWwiLCJjYXZlIiwiZXJyb3JzIiwibG9jYXRpb24iLCJ0cmlwcyIsImhlYWRlciIsIm5hbWUiLCJjb21tZW50Iiwic2VjdGlvbiIsInVuZGVmaW5lZCIsImRhdGUiLCJ0ZWFtIiwiZGlzdGFuY2VVbml0IiwiTGVuZ3RoIiwiZmVldCIsImF6aW11dGhVbml0IiwiQW5nbGUiLCJkZWdyZWVzIiwiaW5jbGluYXRpb25Vbml0IiwiYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZCIsImJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkIiwiaGFzQmFja3NpZ2h0QXppbXV0aCIsImhhc0JhY2tzaWdodEluY2xpbmF0aW9uIiwic2hvdHMiLCJiYWNrc2lnaHRBemltdXRoIiwiYmFja3NpZ2h0SW5jbGluYXRpb24iLCJkaXN0YW5jZSIsIlVuaXRpemUiLCJleGNsdWRlRGlzdGFuY2UiLCJmcm9tIiwiZnJvbnRzaWdodEF6aW11dGgiLCJmcm9udHNpZ2h0SW5jbGluYXRpb24iLCJraW5kIiwiRnJjc1Nob3RLaW5kIiwiTm9ybWFsIiwiZnJvbUxydWRzIiwibGVmdCIsInJpZ2h0IiwidXAiLCJkb3duIiwidG9McnVkcyIsImluY2hlcyIsImlzU3BsYXkiLCJIb3Jpem9udGFsIiwiTWF0aCIsInNxcnQiLCJob3Jpem9udGFsRGlzdGFuY2UiLCJ2ZXJ0aWNhbERpc3RhbmNlIiwiYXRhbjIiLCJEaWFnb25hbCIsImFzaW4iLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJ2YWx1ZSIsInNvdXJjZSIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3Vic3RyaW5nIiwibWV0ZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZy9wYXJzZUZyY3NTdXJ2ZXlGaWxlLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0IH0gZnJvbSAnbW9jaGEnXG5pbXBvcnQgeyBwYXJzZUZyY3NTdXJ2ZXlGaWxlIH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCB7IExlbmd0aCwgQW5nbGUsIFVuaXRpemUgfSBmcm9tICdAc3BlbGVvdGljYS91bml0aXplZCdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBGcmNzU2hvdEtpbmQgfSBmcm9tICcuLi9GcmNzU2hvdCdcbmltcG9ydCB7IFNlZ21lbnRQYXJzZUVycm9yLCBTZWdtZW50IH0gZnJvbSAncGFyc2Utc2VnbWVudCdcblxuY29uc3QgZGF0YSA9IGAgICAgICBGaXNoZXIgUmlkZ2UgQ2F2ZSBTeXN0ZW0sIEhhcnQgQ28uLCBLWVxuRU5UUkFOQ0UgRFJPUFMsIEpPRSdTIFwiSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0VcIiwgVFJJQ0tZIFRSQVZFUlNFXG5QRVRFUiBRVUlDSywgS0VJVEggT1JUSVogICAtICAyLTE1LTgxXG5UaGlzIEZpbGUgaGFzIENydW1wcyB0ZXN0IGNvbm5lY3RlZC4gIDExLzIwLzEyXG4gKlxuRlQgQyAgREQgICAgQVxuICAgICAgQUUyMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgMyAgMCAgMlxuKiAgICAgICVGU1xuKiAgICAgQUUyMCAgICAgMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgQnVnLWNhbid0IHB1dCBiZWZvcmUgc28gcHV0IGFmdGVyLXNvIGNhbid0IG1ha2UgMiBmaXhlZCAxMC8yOC8xMlxuIEFFMTkgQUUyMCAgIDkuMyAgICA2MC4wICA2MC4wLTM2LjAgICAgICAgMiAxMiAgMCAyMFxuIEFFMTggQUUxOSAgMjQuNSAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgNiAxMCAyNSAgMFxuIEFFMTcgQUUxOCAgIDguMCAgIDM1MC41IDM1MC41IDE3LjAgICAgICAgMyAgNSAgMCAgMFxuIEFFMTYgQUUxNyAgIDYuNyAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgMyAgNSAgNiAgMVxuIEFFMTUgQUUxNiAgMTIuNiAgICA3MC41ICA3MS4wLTE4LjAgICAgICAgNCAgMCAgMiAgMVxuIEFFMTQgQUUxNSAgMTAuMCAgICAyMS41ICAyMC4wICA2LjAgICAgICAgNSAgNSAgMCAgM1xuIEFFMTMgQUUxNCAgMjYuOCAgIDI4OC4wIDI4Ni4wLTUwLjAgICAgICAgMCAgNyAyMCAgNVxuKlxuKlNIT1JUIENBTllPTiBBVCBUSEUgQkFTRSBPRiBUSEUgU0VDT05EIERST1BcbiBBRTEyIEFFMTMgIDIwLjcgICAyMzYuMCAyMzYuMCAzNC4wICAgICAgIDMgIDUgIDQgIDRcbiAqXG5UUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZXG5EQU4gQ1JPV0wsIEtFSVRIIE9SVElaLCBDSElQIEhPUFBFUiwgUEVURVIgUVVJQ0ssIExBUlJZIEJFQU4gICAgMTQgRkVCIDE5ODFcbiAqXG5GSSBCICBERFxuKlxuKiAgIEExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgIDcgMyA0LjVcbiAgIEEyICAgQTEgIDQ4IDEwICAyOTIuMCAxMTAuMC00Mi4wICAgICAgIDUgMTAgMzUgIDVcbiAgIEEzICAgQTIgIDEyICA1ICAzMzMuNSAxNTMuNSAzNS4wICAgICAgIDMgIDEgMTUgIDVcbiAgIEE0ICAgQTMgICA0ICAyICAgIDAuMCAgIDAuMCA5MC4wICAgICAgIDMgIDEgMTAgMTBcbiAqXG5ET1VHJ1MgREVNSVNFICg1MCBGVCBEUk9QKSwgQ0hSSVMgQ1JPU1MsIENSQVdMIEFCT1ZFIERST1BcblBFVEVSIFFVSUNLLCBDSFJJUyBHRVJBQ0UsIFBISUwgT0RFTiwgQ0hJUCBIT1BQRVIgLSAzLTYtODFcbiAqXG5GVCBDICBERFxuICBCMzEgIEIzMCAgMTMuNyAgIDM2MC4wIDM2MC4wIDQwLjAgICAgICAgMiAgNCAgNiAgICAgICBCMzAgOCAzIDUgMS4yXG5CMzBzcCAgQjMwICAxMy43IHMgMzYwLjAgMzYwLjAgNDAuMCAgICAgICAyICA0ICA2ICBcbmBcblxuZGVzY3JpYmUoJ3BhcnNlRnJjc1N1cnZleUZpbGUnLCAoKSA9PiB7XG4gIGl0KCdiYXNpYyB0ZXN0JywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY2F2ZTogJ0Zpc2hlciBSaWRnZSBDYXZlIFN5c3RlbScsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgbG9jYXRpb246ICdIYXJ0IENvLiwgS1knLFxuICAgICAgdHJpcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgbmFtZTpcbiAgICAgICAgICAgICAgJ0VOVFJBTkNFIERST1BTLCBKT0VcXCdTIFwiSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0VcIiwgVFJJQ0tZIFRSQVZFUlNFJyxcbiAgICAgICAgICAgIGNvbW1lbnQ6ICdUaGlzIEZpbGUgaGFzIENydW1wcyB0ZXN0IGNvbm5lY3RlZC4gIDExLzIwLzEyJyxcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmZlZXQsXG4gICAgICAgICAgICBhemltdXRoVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogbnVsbCxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogdHJ1ZSxcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMjAnLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogbnVsbCxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICB0bzogbnVsbCxcblxuICAgICAgICAgICAgICBmcm9tTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMSksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTIwJyxcbiAgICAgICAgICAgICAgdG86ICdBRTE5JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCg5LjMpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDYwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDYwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTM2KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6XG4gICAgICAgICAgICAgICAgXCJBRTIwICAgICAwICAgICAgICAwICAgICAgICAwICAgICAgICBCdWctY2FuJ3QgcHV0IGJlZm9yZSBzbyBwdXQgYWZ0ZXItc28gY2FuJ3QgbWFrZSAyIGZpeGVkIDEwLzI4LzEyXCIsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEyKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgyMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxOScsXG4gICAgICAgICAgICAgIHRvOiAnQUUxOCcsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMjQuNSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTkwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDI1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxOCcsXG4gICAgICAgICAgICAgIHRvOiAnQUUxNycsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoOCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzUwLjUpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzUwLjUpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygxNyksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE3JyxcbiAgICAgICAgICAgICAgdG86ICdBRTE2JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCg2LjcpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC05MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDYpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE2JyxcbiAgICAgICAgICAgICAgdG86ICdBRTE1JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgxMi42KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg3MC41KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDcxKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTE4KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCg0KSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMiksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMTUnLFxuICAgICAgICAgICAgICB0bzogJ0FFMTQnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMS41KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoNiksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE0JyxcbiAgICAgICAgICAgICAgdG86ICdBRTEzJyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgyNi44KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyODgpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjg2KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTUwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDcpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMjApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTEzJyxcbiAgICAgICAgICAgICAgdG86ICdBRTEyJyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgyMC43KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzYpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjM2KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMzQpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogJ1NIT1JUIENBTllPTiBBVCBUSEUgQkFTRSBPRiBUSEUgU0VDT05EIERST1AnLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCg0KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgbmFtZTogJ1RSSUNLWSBUUkFWRVJTRSBBTkQgVEhFTiBGSVJTVCBTVVJWRVkgSU4gVVBQRVIgQ1JPV0xXQVknLFxuICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmluY2hlcyxcbiAgICAgICAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0ExJyxcbiAgICAgICAgICAgICAgdG86ICdBMicsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmluY2hlcyg0OCAqIDEyICsgMTApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDI5MiksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygxMTApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygtNDIpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNC41KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDM1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQTInLFxuICAgICAgICAgICAgICB0bzogJ0EzJyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuaW5jaGVzKDEyICogMTIgKyA1KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygzMzMuNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygxNTMuNSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDM1KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMTUpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBMycsXG4gICAgICAgICAgICAgIHRvOiAnQTQnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5pbmNoZXMoNCAqIDEyICsgMiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoOTApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmZlZXQsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgbmFtZTogXCJET1VHJ1MgREVNSVNFICg1MCBGVCBEUk9QKSwgQ0hSSVMgQ1JPU1MsIENSQVdMIEFCT1ZFIERST1BcIixcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMTMuNyksXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGZyb206ICdCMzAnLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcyg0MCksXG4gICAgICAgICAgICAgIGtpbmQ6ICcgJyxcbiAgICAgICAgICAgICAgdG86ICdCMzEnLFxuICAgICAgICAgICAgICBmcm9tTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoOCksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDUpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxLjIpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICBkb3duOiBudWxsLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgxMy43KSxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiB0cnVlLFxuICAgICAgICAgICAgICBpc1NwbGF5OiB0cnVlLFxuICAgICAgICAgICAgICBmcm9tOiAnQjMwJyxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoNDApLFxuICAgICAgICAgICAgICBraW5kOiAnICcsXG4gICAgICAgICAgICAgIHRvOiAnQjMwc3AnLFxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICBkb3duOiBudWxsLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuICBpdCgnaG9yaXpvbnRhbCBzaG90cycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKlxuRlQgQyAgRERcbiAgRTIyICBFMjEgIDM2LjJIICAzMzguNSAzNDAuMCAgMS4wICAgICAgMTIgIDIgMTUgMTVcbmBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnRTIxJyxcbiAgICAgIHRvOiAnRTIyJyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ib3Jpem9udGFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldChNYXRoLnNxcnQoMzYuMiAqIDM2LjIgKyAxKSksXG4gICAgICBob3Jpem9udGFsRGlzdGFuY2U6IFVuaXRpemUuZmVldCgzNi4yKSxcbiAgICAgIHZlcnRpY2FsRGlzdGFuY2U6IFVuaXRpemUuZmVldCgxKSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzM4LjUpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDM0MCksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IEFuZ2xlLmF0YW4yKDEsIDM2LjIpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMTIpLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDE1KSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDE1KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2hvcml6b250YWwgZmVldCBhbmQgaW5jaGVzIHNob3RzJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqXG5GSSBDICBERFxuICBBMjcgIEEyNiAgMTYgIDlIIDM0NS4wIDE2My4wIC0xLjAgICAgICAgMCAgMyAgNSAgNFxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdBMjYnLFxuICAgICAgdG86ICdBMjcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLkhvcml6b250YWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KE1hdGguc3FydCgxNi43NSAqIDE2Ljc1ICsgMSkpLFxuICAgICAgaG9yaXpvbnRhbERpc3RhbmNlOiBVbml0aXplLmluY2hlcygxNiAqIDEyICsgOSksXG4gICAgICB2ZXJ0aWNhbERpc3RhbmNlOiBVbml0aXplLmZlZXQoLTEpLFxuICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygzNDUpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDE2MyksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IEFuZ2xlLmF0YW4yKC0xLCAxNi43NSksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICB0b0xydWRzOiB7XG4gICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgdXA6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgfSxcbiAgICB9KVxuICB9KVxuICBpdCgnZGlhZ29uYWwgc2hvdHMnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICpcbkZUIEMgIEREXG4gIEUzNyAgRTM2ICAzMS42RCAgMjMxLjAgMjMyLjAgIDIuMCAgICAgICAzIDEwIDIwIDMyXG5gXG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQudHJpcHNbMF0uc2hvdHNbMF0pLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZnJvbTogJ0UzNicsXG4gICAgICB0bzogJ0UzNycsXG4gICAgICBraW5kOiBGcmNzU2hvdEtpbmQuRGlhZ29uYWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDMxLjYpLFxuICAgICAgdmVydGljYWxEaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzEpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMiksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IEFuZ2xlLmFzaW4oMiAvIDMxLjYpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMTApLFxuICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDIwKSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDMyKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2ludmFsaWQgZGlzdGFuY2UgdW5pdCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKiBcbkZKIEMgIEREXG5gXG4gICAgZXhwZWN0KGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY2F2ZTogJ2JsYWgnLFxuICAgICAgZXJyb3JzOiBbXG4gICAgICAgIG5ldyBTZWdtZW50UGFyc2VFcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBkaXN0YW5jZSB1bml0JyxcbiAgICAgICAgICBuZXcgU2VnbWVudCh7XG4gICAgICAgICAgICB2YWx1ZTogJ0ZKIEMgIEREJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ2NkYXRhLmZyJyxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogNSxcbiAgICAgICAgICAgIHN0YXJ0Q29sOiAwLFxuICAgICAgICAgIH0pLnN1YnN0cmluZygwLCAyKVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICAgIGxvY2F0aW9uOiBudWxsLFxuICAgICAgdHJpcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgICAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLmZlZXQsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgbmFtZTogJ1RFU1QnLFxuICAgICAgICAgICAgc2VjdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGVhbTogdW5kZWZpbmVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuICBpdCgnbWV0ZXJzJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQ0MgRERcbiAgRTM3ICBFMzYgIDMxLjYgICAyMzEuMCAyMzIuMCAgMi4wICAzLjAgIDMgMTAgMjAgMzJcbmBcbiAgICBleHBlY3QoYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjYXZlOiAnYmxhaCcsXG4gICAgICBlcnJvcnM6IFtdLFxuICAgICAgbG9jYXRpb246IG51bGwsXG4gICAgICB0cmlwczogW1xuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVyOiB7XG4gICAgICAgICAgICBhemltdXRoVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5tZXRlcnMsXG4gICAgICAgICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IHRydWUsXG4gICAgICAgICAgICBpbmNsaW5hdGlvblVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBuYW1lOiAnVEVTVCcsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaG90czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnRTM2JyxcbiAgICAgICAgICAgICAgdG86ICdFMzcnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5tZXRlcnMoMzEuNiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDIpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDMpLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLm1ldGVycygzKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5tZXRlcnMoMTApLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLm1ldGVycygyMCksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5tZXRlcnMoMzIpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuICBpdCgnZXhjbHVkZSBsZW5ndGgnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBDQyBERFxuICBFMzcgIEUzNiAgMzEuNiAqIDIzMS4wIDIzMi4wICAyLjAgIDMuMCAgMyAxMCAyMCAzMlxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLm1ldGVycygzMS42KSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMiksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDMpLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiB0cnVlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLm1ldGVycygzKSxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUubWV0ZXJzKDEwKSxcbiAgICAgICAgdXA6IFVuaXRpemUubWV0ZXJzKDIwKSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5tZXRlcnMoMzIpLFxuICAgICAgfSxcbiAgICB9KVxuICB9KVxuICBpdCgnbmVnYXRpdmUgTFJVRCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKiBcbk1UIENDIEREXG4gIEUzNyAgRTM2ICAzMS42ICAgMjMxLjAgMjMyLjAgIDIuMCAgMy4wIC0zIDEwIDIwIDMyXG5gXG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQudHJpcHNbMF0uc2hvdHNbMF0pLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZnJvbTogJ0UzNicsXG4gICAgICB0bzogJ0UzNycsXG4gICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUubWV0ZXJzKDMxLjYpLFxuICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzEpLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMiksXG4gICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygyKSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMyksXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBudWxsLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5tZXRlcnMoMTApLFxuICAgICAgICB1cDogVW5pdGl6ZS5tZXRlcnMoMjApLFxuICAgICAgICBkb3duOiBVbml0aXplLm1ldGVycygzMiksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG4gIGl0KCctIGZvciBubyBiYWNrc2lnaHQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBCLSBERCBcbiAgYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLmhlYWRlcikudG8uZGVlcC5lcXVhbCh7XG4gICAgICBuYW1lOiAnVEVTVCcsXG4gICAgICBjb21tZW50OiBudWxsLFxuICAgICAgc2VjdGlvbjogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgdGVhbTogdW5kZWZpbmVkLFxuICAgICAgZGlzdGFuY2VVbml0OiBMZW5ndGgubWV0ZXJzLFxuICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICBpbmNsaW5hdGlvblVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgIGhhc0JhY2tzaWdodEF6aW11dGg6IHRydWUsXG4gICAgICBoYXNCYWNrc2lnaHRJbmNsaW5hdGlvbjogZmFsc2UsXG4gICAgfSlcbiAgfSlcbiAgaXQoJ21pc3NpbmcgYm90aCBmcm9udHNpZ2h0IGFuZCBiYWNrc2lnaHQgaW5jbGluYXRpb24nLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBCLSBERCBcbiAgRTM3ICBFMzYgIDMxLjYgICAyMzEuMCAyMzIuMCAgICAgICAgICAgLTMgMTAgMjAgMzJcbiAgYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLm1ldGVycygzMS42KSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICB0b0xydWRzOiB7XG4gICAgICAgIGxlZnQ6IG51bGwsXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLm1ldGVycygxMCksXG4gICAgICAgIHVwOiBVbml0aXplLm1ldGVycygyMCksXG4gICAgICAgIGRvd246IFVuaXRpemUubWV0ZXJzKDMyKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBRUEsTUFBTU0sSUFBSSxHQUFJO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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
|
|
646
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9jaGEiLCJyZXF1aXJlIiwiX2luZGV4IiwiX3VuaXRpemVkIiwiX2NoYWkiLCJfRnJjc1Nob3QiLCJfcGFyc2VTZWdtZW50IiwiZGF0YSIsImRlc2NyaWJlIiwiaXQiLCJwYXJzZWQiLCJwYXJzZUZyY3NTdXJ2ZXlGaWxlIiwiZXhwZWN0IiwidG8iLCJkZWVwIiwiZXF1YWwiLCJjYXZlIiwiZXJyb3JzIiwibG9jYXRpb24iLCJ0cmlwcyIsImhlYWRlciIsIm5hbWUiLCJjb21tZW50Iiwic2VjdGlvbiIsInVuZGVmaW5lZCIsImRhdGUiLCJ0ZWFtIiwiZGlzdGFuY2VVbml0IiwiTGVuZ3RoIiwiZmVldCIsImF6aW11dGhVbml0IiwiQW5nbGUiLCJkZWdyZWVzIiwiaW5jbGluYXRpb25Vbml0IiwiYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZCIsImJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkIiwiaGFzQmFja3NpZ2h0QXppbXV0aCIsImhhc0JhY2tzaWdodEluY2xpbmF0aW9uIiwic2hvdHMiLCJiYWNrc2lnaHRBemltdXRoIiwiYmFja3NpZ2h0SW5jbGluYXRpb24iLCJkaXN0YW5jZSIsIlVuaXRpemUiLCJleGNsdWRlRGlzdGFuY2UiLCJmcm9tIiwiZnJvbnRzaWdodEF6aW11dGgiLCJmcm9udHNpZ2h0SW5jbGluYXRpb24iLCJraW5kIiwiRnJjc1Nob3RLaW5kIiwiTm9ybWFsIiwiZnJvbUxydWRzIiwibGVmdCIsInJpZ2h0IiwidXAiLCJkb3duIiwidG9McnVkcyIsImluY2hlcyIsImlzU3BsYXkiLCJIb3Jpem9udGFsIiwiTWF0aCIsInNxcnQiLCJob3Jpem9udGFsRGlzdGFuY2UiLCJ2ZXJ0aWNhbERpc3RhbmNlIiwiYXRhbjIiLCJEaWFnb25hbCIsImFzaW4iLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJ2YWx1ZSIsInNvdXJjZSIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3Vic3RyaW5nIiwibWV0ZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZy9wYXJzZUZyY3NTdXJ2ZXlGaWxlLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0IH0gZnJvbSAnbW9jaGEnXG5pbXBvcnQgeyBwYXJzZUZyY3NTdXJ2ZXlGaWxlIH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCB7IExlbmd0aCwgQW5nbGUsIFVuaXRpemUgfSBmcm9tICdAc3BlbGVvdGljYS91bml0aXplZCdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBGcmNzU2hvdEtpbmQgfSBmcm9tICcuLi9GcmNzU2hvdCdcbmltcG9ydCB7IFNlZ21lbnRQYXJzZUVycm9yLCBTZWdtZW50IH0gZnJvbSAncGFyc2Utc2VnbWVudCdcblxuY29uc3QgZGF0YSA9IGAgICAgICBGaXNoZXIgUmlkZ2UgQ2F2ZSBTeXN0ZW0sIEhhcnQgQ28uLCBLWVxuRU5UUkFOQ0UgRFJPUFMsIEpPRSdTIFwiSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0VcIiwgVFJJQ0tZIFRSQVZFUlNFXG5QRVRFUiBRVUlDSywgS0VJVEggT1JUSVogICAtICAyLTE1LTgxXG5UaGlzIEZpbGUgaGFzIENydW1wcyB0ZXN0IGNvbm5lY3RlZC4gIDExLzIwLzEyXG4gKlxuRlQgQyAgREQgICAgQVxuICAgICAgQUUyMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgMyAgMCAgMlxuKiAgICAgICVGU1xuKiAgICAgQUUyMCAgICAgMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgQnVnLWNhbid0IHB1dCBiZWZvcmUgc28gcHV0IGFmdGVyLXNvIGNhbid0IG1ha2UgMiBmaXhlZCAxMC8yOC8xMlxuIEFFMTkgQUUyMCAgIDkuMyAgICA2MC4wICA2MC4wLTM2LjAgICAgICAgMiAxMiAgMCAyMFxuIEFFMTggQUUxOSAgMjQuNSAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgNiAxMCAyNSAgMFxuIEFFMTcgQUUxOCAgIDguMCAgIDM1MC41IDM1MC41IDE3LjAgICAgICAgMyAgNSAgMCAgMFxuIEFFMTYgQUUxNyAgIDYuNyAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgMyAgNSAgNiAgMVxuIEFFMTUgQUUxNiAgMTIuNiAgICA3MC41ICA3MS4wLTE4LjAgICAgICAgNCAgMCAgMiAgMVxuIEFFMTQgQUUxNSAgMTAuMCAgICAyMS41ICAyMC4wICA2LjAgICAgICAgNSAgNSAgMCAgM1xuIEFFMTMgQUUxNCAgMjYuOCAgIDI4OC4wIDI4Ni4wLTUwLjAgICAgICAgMCAgNyAyMCAgNVxuKlxuKlNIT1JUIENBTllPTiBBVCBUSEUgQkFTRSBPRiBUSEUgU0VDT05EIERST1BcbiBBRTEyIEFFMTMgIDIwLjcgICAyMzYuMCAyMzYuMCAzNC4wICAgICAgIDMgIDUgIDQgIDRcbiAqXG5UUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZXG5EQU4gQ1JPV0wsIEtFSVRIIE9SVElaLCBDSElQIEhPUFBFUiwgUEVURVIgUVVJQ0ssIExBUlJZIEJFQU4gICAgMTQgRkVCIDE5ODFcbiAqXG5GSSBCICBERFxuKlxuKiAgIEExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgIDcgMyA0LjVcbipcbiogdGVzdCBjb21tZW50IGFmdGVyIGZyb20gc3RhdGlvbiBscnVkXG4gICBBMiAgIEExICA0OCAxMCAgMjkyLjAgMTEwLjAtNDIuMCAgICAgICA1IDEwIDM1ICA1XG4gICBBMyAgIEEyICAxMiAgNSAgMzMzLjUgMTUzLjUgMzUuMCAgICAgICAzICAxIDE1ICA1XG4gICBBNCAgIEEzICAgNCAgMiAgICAwLjAgICAwLjAgOTAuMCAgICAgICAzICAxIDEwIDEwXG4gKlxuRE9VRydTIERFTUlTRSAoNTAgRlQgRFJPUCksIENIUklTIENST1NTLCBDUkFXTCBBQk9WRSBEUk9QXG5QRVRFUiBRVUlDSywgQ0hSSVMgR0VSQUNFLCBQSElMIE9ERU4sIENISVAgSE9QUEVSIC0gMy02LTgxXG4gKlxuRlQgQyAgRERcbiAgQjMxICBCMzAgIDEzLjcgICAzNjAuMCAzNjAuMCA0MC4wICAgICAgIDIgIDQgIDYgICAgICAgQjMwIDggMyA1IDEuMlxuQjMwc3AgIEIzMCAgMTMuNyBzIDM2MC4wIDM2MC4wIDQwLjAgICAgICAgMiAgNCAgNiAgXG5gXG5cbmRlc2NyaWJlKCdwYXJzZUZyY3NTdXJ2ZXlGaWxlJywgKCkgPT4ge1xuICBpdCgnYmFzaWMgdGVzdCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNhdmU6ICdGaXNoZXIgUmlkZ2UgQ2F2ZSBTeXN0ZW0nLFxuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIGxvY2F0aW9uOiAnSGFydCBDby4sIEtZJyxcbiAgICAgIHRyaXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICdFTlRSQU5DRSBEUk9QUywgSk9FXFwnUyBcIkkgTE9WRSBNWSBXSUZFIFRSQVZFUlNFXCIsIFRSSUNLWSBUUkFWRVJTRScsXG4gICAgICAgICAgICBjb21tZW50OiAnVGhpcyBGaWxlIGhhcyBDcnVtcHMgdGVzdCBjb25uZWN0ZWQuICAxMS8yMC8xMicsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5mZWV0LFxuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBpbmNsaW5hdGlvblVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IG51bGwsXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IHRydWUsXG4gICAgICAgICAgICAgIGZyb206ICdBRTIwJyxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IG51bGwsXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgdG86IG51bGwsXG5cbiAgICAgICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMiksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUyMCcsXG4gICAgICAgICAgICAgIHRvOiAnQUUxOScsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoOS4zKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg2MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg2MCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC0zNiksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OlxuICAgICAgICAgICAgICAgIFwiQUUyMCAgICAgMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgQnVnLWNhbid0IHB1dCBiZWZvcmUgc28gcHV0IGFmdGVyLXNvIGNhbid0IG1ha2UgMiBmaXhlZCAxMC8yOC8xMlwiLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxMiksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMjApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMTknLFxuICAgICAgICAgICAgICB0bzogJ0FFMTgnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDI0LjUpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC05MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgyNSksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMTgnLFxuICAgICAgICAgICAgICB0bzogJ0FFMTcnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDgpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDM1MC41KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDM1MC41KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMTcpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxNycsXG4gICAgICAgICAgICAgIHRvOiAnQUUxNicsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoNi43KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygtOTApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxNicsXG4gICAgICAgICAgICAgIHRvOiAnQUUxNScsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMTIuNiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoNzAuNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg3MSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC0xOCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE1JyxcbiAgICAgICAgICAgICAgdG86ICdBRTE0JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjEuNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDYpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDUpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxNCcsXG4gICAgICAgICAgICAgIHRvOiAnQUUxMycsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMjYuOCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjg4KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDI4NiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC01MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg3KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDIwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxMycsXG4gICAgICAgICAgICAgIHRvOiAnQUUxMicsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMjAuNyksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjM2KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzNiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDM0KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6ICdTSE9SVCBDQU5ZT04gQVQgVEhFIEJBU0UgT0YgVEhFIFNFQ09ORCBEUk9QJyxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg0KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIG5hbWU6ICdUUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZJyxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5pbmNoZXMsXG4gICAgICAgICAgICBhemltdXRoVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBMScsXG4gICAgICAgICAgICAgIHRvOiAnQTInLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5pbmNoZXMoNDggKiAxMiArIDEwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyOTIpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMTEwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTQyKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6ICd0ZXN0IGNvbW1lbnQgYWZ0ZXIgZnJvbSBzdGF0aW9uIGxydWQnLFxuICAgICAgICAgICAgICBmcm9tTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmluY2hlcygyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5pbmNoZXMoNyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuaW5jaGVzKDMpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuaW5jaGVzKDQuNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgzNSksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDUpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0EyJyxcbiAgICAgICAgICAgICAgdG86ICdBMycsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmluY2hlcygxMiAqIDEyICsgNSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzMzLjUpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMTUzLjUpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygzNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDE1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQTMnLFxuICAgICAgICAgICAgICB0bzogJ0E0JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuaW5jaGVzKDQgKiAxMiArIDIpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDkwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMTApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5mZWV0LFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIG5hbWU6IFwiRE9VRydTIERFTUlTRSAoNTAgRlQgRFJPUCksIENIUklTIENST1NTLCBDUkFXTCBBQk9WRSBEUk9QXCIsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaG90czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDEzLjcpLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBmcm9tOiAnQjMwJyxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoNDApLFxuICAgICAgICAgICAgICBraW5kOiAnICcsXG4gICAgICAgICAgICAgIHRvOiAnQjMxJyxcbiAgICAgICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDgpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMS4yKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoNiksXG4gICAgICAgICAgICAgICAgZG93bjogbnVsbCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMTMuNyksXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaXNTcGxheTogdHJ1ZSxcbiAgICAgICAgICAgICAgZnJvbTogJ0IzMCcsXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDQwKSxcbiAgICAgICAgICAgICAga2luZDogJyAnLFxuICAgICAgICAgICAgICB0bzogJ0IzMHNwJyxcbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoNiksXG4gICAgICAgICAgICAgICAgZG93bjogbnVsbCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2hvcml6b250YWwgc2hvdHMnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICpcbkZUIEMgIEREXG4gIEUyMiAgRTIxICAzNi4ySCAgMzM4LjUgMzQwLjAgIDEuMCAgICAgIDEyICAyIDE1IDE1XG5gXG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQudHJpcHNbMF0uc2hvdHNbMF0pLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZnJvbTogJ0UyMScsXG4gICAgICB0bzogJ0UyMicsXG4gICAgICBraW5kOiBGcmNzU2hvdEtpbmQuSG9yaXpvbnRhbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoTWF0aC5zcXJ0KDM2LjIgKiAzNi4yICsgMSkpLFxuICAgICAgaG9yaXpvbnRhbERpc3RhbmNlOiBVbml0aXplLmZlZXQoMzYuMiksXG4gICAgICB2ZXJ0aWNhbERpc3RhbmNlOiBVbml0aXplLmZlZXQoMSksXG4gICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDMzOC41KSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygzNDApLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBBbmdsZS5hdGFuMigxLCAzNi4yKSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDEyKSxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgdXA6IFVuaXRpemUuZmVldCgxNSksXG4gICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxNSksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG4gIGl0KCdob3Jpem9udGFsIGZlZXQgYW5kIGluY2hlcyBzaG90cycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKlxuRkkgQyAgRERcbiAgQTI3ICBBMjYgIDE2ICA5SCAzNDUuMCAxNjMuMCAtMS4wICAgICAgIDAgIDMgIDUgIDRcbmBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnQTI2JyxcbiAgICAgIHRvOiAnQTI3JyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ib3Jpem9udGFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldChNYXRoLnNxcnQoMTYuNzUgKiAxNi43NSArIDEpKSxcbiAgICAgIGhvcml6b250YWxEaXN0YW5jZTogVW5pdGl6ZS5pbmNoZXMoMTYgKiAxMiArIDkpLFxuICAgICAgdmVydGljYWxEaXN0YW5jZTogVW5pdGl6ZS5mZWV0KC0xKSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzQ1KSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygxNjMpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBBbmdsZS5hdGFuMigtMSwgMTYuNzUpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgIHVwOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgIGRvd246IFVuaXRpemUuZmVldCg0KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2RpYWdvbmFsIHNob3RzJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqXG5GVCBDICBERFxuICBFMzcgIEUzNiAgMzEuNkQgIDIzMS4wIDIzMi4wICAyLjAgICAgICAgMyAxMCAyMCAzMlxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLkRpYWdvbmFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgzMS42KSxcbiAgICAgIHZlcnRpY2FsRGlzdGFuY2U6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBBbmdsZS5hc2luKDIgLyAzMS42KSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgdXA6IFVuaXRpemUuZmVldCgyMCksXG4gICAgICAgIGRvd246IFVuaXRpemUuZmVldCgzMiksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG4gIGl0KCdpbnZhbGlkIGRpc3RhbmNlIHVuaXQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5GSiBDICBERFxuYFxuICAgIGV4cGVjdChhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNhdmU6ICdibGFoJyxcbiAgICAgIGVycm9yczogW1xuICAgICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgZGlzdGFuY2UgdW5pdCcsXG4gICAgICAgICAgbmV3IFNlZ21lbnQoe1xuICAgICAgICAgICAgdmFsdWU6ICdGSiBDICBERCcsXG4gICAgICAgICAgICBzb3VyY2U6ICdjZGF0YS5mcicsXG4gICAgICAgICAgICBzdGFydExpbmU6IDUsXG4gICAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgICB9KS5zdWJzdHJpbmcoMCwgMilcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgICBsb2NhdGlvbjogbnVsbCxcbiAgICAgIHRyaXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5mZWV0LFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIG5hbWU6ICdURVNUJyxcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ21ldGVycycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKiBcbk1UIENDIEREXG4gIEUzNyAgRTM2ICAzMS42ICAgMjMxLjAgMjMyLjAgIDIuMCAgMy4wICAzIDEwIDIwIDMyXG5gXG4gICAgZXhwZWN0KGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY2F2ZTogJ2JsYWgnLFxuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIGxvY2F0aW9uOiBudWxsLFxuICAgICAgdHJpcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBjb21tZW50OiBudWxsLFxuICAgICAgICAgICAgZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlzdGFuY2VVbml0OiBMZW5ndGgubWV0ZXJzLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgbmFtZTogJ1RFU1QnLFxuICAgICAgICAgICAgc2VjdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGVhbTogdW5kZWZpbmVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0UzNicsXG4gICAgICAgICAgICAgIHRvOiAnRTM3JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUubWV0ZXJzKDMxLjYpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygyKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygzKSxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5tZXRlcnMoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUubWV0ZXJzKDEwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5tZXRlcnMoMjApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUubWV0ZXJzKDMyKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2V4Y2x1ZGUgbGVuZ3RoJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQ0MgRERcbiAgRTM3ICBFMzYgIDMxLjYgKiAyMzEuMCAyMzIuMCAgMi4wICAzLjAgIDMgMTAgMjAgMzJcbmBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnRTM2JyxcbiAgICAgIHRvOiAnRTM3JyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5tZXRlcnMoMzEuNiksXG4gICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMSksXG4gICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMyKSxcbiAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDIpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygzKSxcbiAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogdHJ1ZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogVW5pdGl6ZS5tZXRlcnMoMyksXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLm1ldGVycygxMCksXG4gICAgICAgIHVwOiBVbml0aXplLm1ldGVycygyMCksXG4gICAgICAgIGRvd246IFVuaXRpemUubWV0ZXJzKDMyKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ25lZ2F0aXZlIExSVUQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBDQyBERFxuICBFMzcgIEUzNiAgMzEuNiAgIDIzMS4wIDIzMi4wICAyLjAgIDMuMCAtMyAxMCAyMCAzMlxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLm1ldGVycygzMS42KSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMiksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDMpLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogbnVsbCxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUubWV0ZXJzKDEwKSxcbiAgICAgICAgdXA6IFVuaXRpemUubWV0ZXJzKDIwKSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5tZXRlcnMoMzIpLFxuICAgICAgfSxcbiAgICB9KVxuICB9KVxuICBpdCgnLSBmb3Igbm8gYmFja3NpZ2h0JywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQi0gREQgXG4gIGBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5oZWFkZXIpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgbmFtZTogJ1RFU1QnLFxuICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLm1ldGVycyxcbiAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogZmFsc2UsXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogZmFsc2UsXG4gICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgIH0pXG4gIH0pXG4gIGl0KCdtaXNzaW5nIGJvdGggZnJvbnRzaWdodCBhbmQgYmFja3NpZ2h0IGluY2xpbmF0aW9uJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQi0gREQgXG4gIEUzNyAgRTM2ICAzMS42ICAgMjMxLjAgMjMyLjAgICAgICAgICAgIC0zIDEwIDIwIDMyXG4gIGBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnRTM2JyxcbiAgICAgIHRvOiAnRTM3JyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5tZXRlcnMoMzEuNiksXG4gICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMSksXG4gICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMyKSxcbiAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBudWxsLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5tZXRlcnMoMTApLFxuICAgICAgICB1cDogVW5pdGl6ZS5tZXRlcnMoMjApLFxuICAgICAgICBkb3duOiBVbml0aXplLm1ldGVycygzMiksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUVBLE1BQU1NLElBQUksR0FBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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
|
package/package.json
CHANGED
package/parseFrcsSurveyFile.js
CHANGED
|
@@ -89,6 +89,31 @@ function parseLrud(s, unit) {
|
|
|
89
89
|
var value = parseFloat(s);
|
|
90
90
|
return !Number.isFinite(value) || value < 0 ? null : new _unitized.UnitizedNumber(value, unit);
|
|
91
91
|
}
|
|
92
|
+
function parseFromStationLruds(line, distanceUnit) {
|
|
93
|
+
var fromStr = line.substring(0, 5);
|
|
94
|
+
if (!/^\s*\S+$/.test(fromStr)) return undefined;
|
|
95
|
+
var gap = line.substring(5, 40);
|
|
96
|
+
if (gap.trim()) return undefined;
|
|
97
|
+
var lrudStr = line.substring(40, 52);
|
|
98
|
+
if (!/\d/.test(lrudStr)) return undefined;
|
|
99
|
+
var lStr = line.substring(40, 43);
|
|
100
|
+
var rStr = line.substring(43, 46);
|
|
101
|
+
var uStr = line.substring(46, 49);
|
|
102
|
+
var dStr = line.substring(49, 52);
|
|
103
|
+
if (!isValidOptFloat(lStr) || !isValidOptFloat(rStr) || !isValidOptFloat(uStr) || !isValidOptFloat(dStr)) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
var up = parseLrud(uStr, distanceUnit);
|
|
107
|
+
var down = parseLrud(dStr, distanceUnit);
|
|
108
|
+
var left = parseLrud(lStr, distanceUnit);
|
|
109
|
+
var right = parseLrud(rStr, distanceUnit);
|
|
110
|
+
return [fromStr.trim(), {
|
|
111
|
+
left: left,
|
|
112
|
+
right: right,
|
|
113
|
+
up: up,
|
|
114
|
+
down: down
|
|
115
|
+
}];
|
|
116
|
+
}
|
|
92
117
|
|
|
93
118
|
/**
|
|
94
119
|
* Parses a raw cdata.fr survey file. These look like so:
|
|
@@ -142,7 +167,7 @@ function _parseFrcsSurveyFile() {
|
|
|
142
167
|
_parseFrcsSurveyFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file,
|
|
143
168
|
// eslint-disable-line @typescript-eslint/no-explicit-any
|
|
144
169
|
lines) {
|
|
145
|
-
var cave, location, trips, errors, tripName, tripTeam, tripDate, inTripComment, tripCommentStartLine, tripCommentEndLine, tripComment, commentLines, trip, inBlockComment, section, getComment, lineNumber, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret;
|
|
170
|
+
var cave, location, trips, errors, tripName, tripTeam, tripDate, inTripComment, tripCommentStartLine, tripCommentEndLine, tripComment, commentLines, trip, inBlockComment, section, commentFromStationLruds, addCommentLine, getComment, lineNumber, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret;
|
|
146
171
|
return _regenerator["default"].wrap(function _callee$(_context2) {
|
|
147
172
|
while (1) switch (_context2.prev = _context2.next) {
|
|
148
173
|
case 0:
|
|
@@ -152,6 +177,19 @@ function _parseFrcsSurveyFile() {
|
|
|
152
177
|
commentLines = null;
|
|
153
178
|
return comment || null;
|
|
154
179
|
};
|
|
180
|
+
addCommentLine = function _addCommentLine(comment) {
|
|
181
|
+
if (trip) {
|
|
182
|
+
var distanceUnit = trip.header.distanceUnit;
|
|
183
|
+
var parsedFromStationLruds = parseFromStationLruds(comment, distanceUnit);
|
|
184
|
+
if (parsedFromStationLruds) {
|
|
185
|
+
commentFromStationLruds.set(parsedFromStationLruds[0], parsedFromStationLruds[1]);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (commentLines) {
|
|
190
|
+
commentLines.push(comment);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
155
193
|
cave = null;
|
|
156
194
|
location = null;
|
|
157
195
|
trips = [];
|
|
@@ -163,12 +201,13 @@ function _parseFrcsSurveyFile() {
|
|
|
163
201
|
commentLines = null;
|
|
164
202
|
trip = null;
|
|
165
203
|
inBlockComment = false;
|
|
204
|
+
commentFromStationLruds = new Map();
|
|
166
205
|
lineNumber = 0;
|
|
167
206
|
_iteratorAbruptCompletion = false;
|
|
168
207
|
_didIteratorError = false;
|
|
169
|
-
_context2.prev =
|
|
208
|
+
_context2.prev = 17;
|
|
170
209
|
_loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
|
|
171
|
-
var line, errored, thisLineNumber, error, validate, match, _match, k, team, month, day, year, _match2, part, distanceUnit, azimuthUnit, inclinationUnit, backsightAzimuthCorrected, backsightInclinationCorrected, hasBacksightAzimuth, hasBacksightInclination,
|
|
210
|
+
var line, errored, thisLineNumber, error, validate, match, _match, k, team, month, day, year, _match2, part, distanceUnit, azimuthUnit, inclinationUnit, backsightAzimuthCorrected, backsightInclinationCorrected, hasBacksightAzimuth, hasBacksightInclination, _trip, shots, _trip$header, _azimuthUnit, _inclinationUnit, _distanceUnit, inches, fromStr, from, lStr, rStr, uStr, dStr, up, down, left, right, toStr, _shot, fromLruds, fromLrudMatch, _fromLrudMatch$1$trim, _fromLrudMatch$1$trim2, _left, _right, _up, _down, comment, azmFsStr, azmBsStr, incFsStr, incBsStr, kind, distance, horizontalDistance, verticalDistance, frontsightInclination, backsightInclination, excludeDistance, isSplay, feetStr, inchesStr, invalid, _feetStr, h, v, d, _v, frontsightAzimuth, backsightAzimuth, shot;
|
|
172
211
|
return _regenerator["default"].wrap(function _loop$(_context) {
|
|
173
212
|
while (1) switch (_context.prev = _context.next) {
|
|
174
213
|
case 0:
|
|
@@ -213,7 +252,7 @@ function _parseFrcsSurveyFile() {
|
|
|
213
252
|
} else {
|
|
214
253
|
tripCommentEndLine = lineNumber;
|
|
215
254
|
}
|
|
216
|
-
_context.next =
|
|
255
|
+
_context.next = 109;
|
|
217
256
|
break;
|
|
218
257
|
case 12:
|
|
219
258
|
if (!inTripComment) {
|
|
@@ -240,7 +279,7 @@ function _parseFrcsSurveyFile() {
|
|
|
240
279
|
if (_match2) {
|
|
241
280
|
section = _match2[1].trim();
|
|
242
281
|
}
|
|
243
|
-
_context.next =
|
|
282
|
+
_context.next = 109;
|
|
244
283
|
break;
|
|
245
284
|
case 18:
|
|
246
285
|
if (!(line.charAt(0) === '*')) {
|
|
@@ -248,19 +287,19 @@ function _parseFrcsSurveyFile() {
|
|
|
248
287
|
break;
|
|
249
288
|
}
|
|
250
289
|
inBlockComment = !inBlockComment;
|
|
251
|
-
if (inBlockComment) commentLines = [];else
|
|
252
|
-
part = line.substring(1)
|
|
253
|
-
if (part
|
|
290
|
+
if (inBlockComment) commentLines = [];else {
|
|
291
|
+
part = line.substring(1);
|
|
292
|
+
if (part) addCommentLine(part);
|
|
254
293
|
}
|
|
255
|
-
_context.next =
|
|
294
|
+
_context.next = 109;
|
|
256
295
|
break;
|
|
257
296
|
case 23:
|
|
258
297
|
if (!inBlockComment) {
|
|
259
298
|
_context.next = 27;
|
|
260
299
|
break;
|
|
261
300
|
}
|
|
262
|
-
|
|
263
|
-
_context.next =
|
|
301
|
+
addCommentLine(line);
|
|
302
|
+
_context.next = 109;
|
|
264
303
|
break;
|
|
265
304
|
case 27:
|
|
266
305
|
if (!(lineNumber === tripCommentEndLine + 1)) {
|
|
@@ -312,11 +351,11 @@ function _parseFrcsSurveyFile() {
|
|
|
312
351
|
shots: []
|
|
313
352
|
};
|
|
314
353
|
trips.push(trip);
|
|
315
|
-
_context.next =
|
|
354
|
+
_context.next = 109;
|
|
316
355
|
break;
|
|
317
356
|
case 44:
|
|
318
357
|
if (!trip) {
|
|
319
|
-
_context.next =
|
|
358
|
+
_context.next = 109;
|
|
320
359
|
break;
|
|
321
360
|
}
|
|
322
361
|
_trip = trip, shots = _trip.shots, _trip$header = _trip.header, _azimuthUnit = _trip$header.azimuthUnit, _inclinationUnit = _trip$header.inclinationUnit;
|
|
@@ -335,7 +374,8 @@ function _parseFrcsSurveyFile() {
|
|
|
335
374
|
}
|
|
336
375
|
return _context.abrupt("return", "continue");
|
|
337
376
|
case 51:
|
|
338
|
-
fromStr = validate(5, 10, 'from station', isValidStation);
|
|
377
|
+
fromStr = validate(5, 10, 'from station', isValidStation);
|
|
378
|
+
from = fromStr.trim(); // Sadly I have found negative LRUD values in Chip's format and apparently
|
|
339
379
|
// his program doesn't fail on them, so I have to accept them here
|
|
340
380
|
// isValidOptFloat instead of isValidOptUFloat
|
|
341
381
|
lStr = validate(40, 43, 'left', isValidOptFloat);
|
|
@@ -343,22 +383,22 @@ function _parseFrcsSurveyFile() {
|
|
|
343
383
|
uStr = validate(46, 49, 'up', isValidOptFloat);
|
|
344
384
|
dStr = validate(49, 52, 'down', isValidOptFloat);
|
|
345
385
|
if (!errored) {
|
|
346
|
-
_context.next =
|
|
386
|
+
_context.next = 59;
|
|
347
387
|
break;
|
|
348
388
|
}
|
|
349
389
|
return _context.abrupt("return", "continue");
|
|
350
|
-
case
|
|
390
|
+
case 59:
|
|
351
391
|
up = parseLrud(uStr, _distanceUnit);
|
|
352
392
|
down = parseLrud(dStr, _distanceUnit);
|
|
353
393
|
left = parseLrud(lStr, _distanceUnit);
|
|
354
394
|
right = parseLrud(rStr, _distanceUnit); // to station name
|
|
355
395
|
toStr = line.substring(0, 5);
|
|
356
396
|
if (toStr.trim()) {
|
|
357
|
-
_context.next =
|
|
397
|
+
_context.next = 68;
|
|
358
398
|
break;
|
|
359
399
|
}
|
|
360
400
|
_shot = {
|
|
361
|
-
from:
|
|
401
|
+
from: from,
|
|
362
402
|
to: null,
|
|
363
403
|
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
364
404
|
distance: new _unitized.UnitizedNumber(0, _distanceUnit),
|
|
@@ -377,74 +417,52 @@ function _parseFrcsSurveyFile() {
|
|
|
377
417
|
};
|
|
378
418
|
shots.push(_shot);
|
|
379
419
|
return _context.abrupt("return", "continue");
|
|
380
|
-
case
|
|
420
|
+
case 68:
|
|
381
421
|
if (!isValidStation(toStr)) {
|
|
382
422
|
error('Invalid station name', 0, 5);
|
|
383
423
|
}
|
|
384
|
-
|
|
385
|
-
if (
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
down: _down
|
|
394
|
-
};
|
|
395
|
-
}
|
|
396
|
-
comment = getComment();
|
|
397
|
-
fromLrudComment = comment;
|
|
398
|
-
commentFromStr = comment ? (_exec = /^\S{1,5}/.exec(comment)) === null || _exec === void 0 ? void 0 : _exec[0] : null;
|
|
399
|
-
if (commentFromStr) {
|
|
400
|
-
_fromStr = commentFromStr;
|
|
401
|
-
fromLrudComment = ' '.repeat(5 - _fromStr.length) + fromLrudComment;
|
|
402
|
-
gap = fromLrudComment.substring(5, 40);
|
|
403
|
-
lrudStr = fromLrudComment.substring(40, 52);
|
|
404
|
-
_lStr = fromLrudComment.substring(40, 43);
|
|
405
|
-
_rStr = fromLrudComment.substring(43, 46);
|
|
406
|
-
_uStr = fromLrudComment.substring(46, 49);
|
|
407
|
-
_dStr = fromLrudComment.substring(49, 52);
|
|
408
|
-
if (/^\s*\S+$/.test(_fromStr) && !gap.trim() && isValidOptFloat(_lStr) && isValidOptFloat(_rStr) && isValidOptFloat(_uStr) && isValidOptFloat(_dStr) && /\d/.test(lrudStr)) {
|
|
409
|
-
_up2 = parseLrud(_uStr, _distanceUnit);
|
|
410
|
-
_down2 = parseLrud(_dStr, _distanceUnit);
|
|
411
|
-
_left2 = parseLrud(_lStr, _distanceUnit);
|
|
412
|
-
_right2 = parseLrud(_rStr, _distanceUnit);
|
|
424
|
+
fromLruds = commentFromStationLruds.get(from);
|
|
425
|
+
if (fromLruds) {
|
|
426
|
+
commentFromStationLruds["delete"](from);
|
|
427
|
+
} else {
|
|
428
|
+
fromLrudMatch = new RegExp("^\\s+".concat(fromStr.trim().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "((\\s+(\\d+(\\.\\d*)?|\\.\\d+)){4})")).exec(line.substring(52));
|
|
429
|
+
if (fromLrudMatch) {
|
|
430
|
+
_fromLrudMatch$1$trim = fromLrudMatch[1].trim().split(/\s+/g).map(function (s) {
|
|
431
|
+
return parseLrud(s, _distanceUnit);
|
|
432
|
+
}), _fromLrudMatch$1$trim2 = (0, _slicedToArray2["default"])(_fromLrudMatch$1$trim, 4), _left = _fromLrudMatch$1$trim2[0], _right = _fromLrudMatch$1$trim2[1], _up = _fromLrudMatch$1$trim2[2], _down = _fromLrudMatch$1$trim2[3];
|
|
413
433
|
fromLruds = {
|
|
414
|
-
left:
|
|
415
|
-
right:
|
|
416
|
-
up:
|
|
417
|
-
down:
|
|
434
|
+
left: _left,
|
|
435
|
+
right: _right,
|
|
436
|
+
up: _up,
|
|
437
|
+
down: _down
|
|
418
438
|
};
|
|
419
|
-
comment = null;
|
|
420
439
|
}
|
|
421
440
|
}
|
|
422
|
-
|
|
423
|
-
// azimuth and inclination
|
|
441
|
+
comment = getComment(); // azimuth and inclination
|
|
424
442
|
azmFsStr = validate(19, 25, 'azimuth', isValidOptUFloat);
|
|
425
443
|
azmBsStr = validate(25, 30, 'azimuth', isValidOptUFloat);
|
|
426
444
|
incFsStr = line.substring(30, 35);
|
|
427
445
|
incBsStr = line.substring(35, 40);
|
|
428
446
|
if (!errored) {
|
|
429
|
-
_context.next =
|
|
447
|
+
_context.next = 78;
|
|
430
448
|
break;
|
|
431
449
|
}
|
|
432
450
|
return _context.abrupt("return", "continue");
|
|
433
|
-
case
|
|
451
|
+
case 78:
|
|
434
452
|
if (!inches) {
|
|
435
|
-
_context.next =
|
|
453
|
+
_context.next = 91;
|
|
436
454
|
break;
|
|
437
455
|
}
|
|
438
456
|
feetStr = line.substring(10, 14);
|
|
439
457
|
inchesStr = line.substring(14, 17); // feet and inches are not both optional
|
|
440
458
|
if (!(!isValidUInt(feetStr) && !isValidUInt(inchesStr))) {
|
|
441
|
-
_context.next =
|
|
459
|
+
_context.next = 85;
|
|
442
460
|
break;
|
|
443
461
|
}
|
|
444
462
|
invalid = feetStr.trim() || inchesStr.trim();
|
|
445
463
|
error(invalid ? 'Invalid distance' : 'Missing distance', 10, 17);
|
|
446
464
|
return _context.abrupt("return", "continue");
|
|
447
|
-
case
|
|
465
|
+
case 85:
|
|
448
466
|
// sometimes inches are omitted, hence the || 0...I'm assuming it's possible
|
|
449
467
|
// for feet to be omitted as well
|
|
450
468
|
distance = _unitized.Unitize.inches(parseFloat(inchesStr) || 0).add(_unitized.Unitize.feet(parseFloat(feetStr) || 0));
|
|
@@ -455,16 +473,16 @@ function _parseFrcsSurveyFile() {
|
|
|
455
473
|
// first column that can contain a * for decimal feet shots
|
|
456
474
|
excludeDistance = line[18] === '*' || line[18] === 's';
|
|
457
475
|
isSplay = line[18] === 's';
|
|
458
|
-
_context.next =
|
|
476
|
+
_context.next = 96;
|
|
459
477
|
break;
|
|
460
|
-
case
|
|
478
|
+
case 91:
|
|
461
479
|
// decimal feet are not optional
|
|
462
480
|
_feetStr = validate(10, 16, 'distance', isValidUFloat);
|
|
463
481
|
distance = new _unitized.UnitizedNumber(parseFloat(_feetStr), _distanceUnit);
|
|
464
482
|
kind = parseKind(line[16]);
|
|
465
483
|
excludeDistance = line[17] === '*' || line[17] === 's';
|
|
466
484
|
isSplay = line[17] === 's';
|
|
467
|
-
case
|
|
485
|
+
case 96:
|
|
468
486
|
if (kind !== _FrcsShot.FrcsShotKind.Normal) {
|
|
469
487
|
validate(30, 35, 'vertical-distance', isValidFloat);
|
|
470
488
|
}
|
|
@@ -498,18 +516,18 @@ function _parseFrcsSurveyFile() {
|
|
|
498
516
|
backsightInclination = parseNumber(incBsStr, _inclinationUnit);
|
|
499
517
|
}
|
|
500
518
|
if (!errored) {
|
|
501
|
-
_context.next =
|
|
519
|
+
_context.next = 100;
|
|
502
520
|
break;
|
|
503
521
|
}
|
|
504
522
|
return _context.abrupt("return", "continue");
|
|
505
|
-
case
|
|
523
|
+
case 100:
|
|
506
524
|
frontsightAzimuth = parseAzimuth(azmFsStr, _azimuthUnit);
|
|
507
525
|
backsightAzimuth = parseAzimuth(azmBsStr, _azimuthUnit);
|
|
508
526
|
if (!frontsightInclination && !backsightInclination) {
|
|
509
527
|
frontsightInclination = _unitized.Unitize.degrees(0);
|
|
510
528
|
}
|
|
511
529
|
shot = {
|
|
512
|
-
from:
|
|
530
|
+
from: from,
|
|
513
531
|
to: toStr.trim(),
|
|
514
532
|
kind: kind,
|
|
515
533
|
distance: distance,
|
|
@@ -531,73 +549,73 @@ function _parseFrcsSurveyFile() {
|
|
|
531
549
|
if (horizontalDistance) shot.horizontalDistance = horizontalDistance;
|
|
532
550
|
if (verticalDistance) shot.verticalDistance = verticalDistance;
|
|
533
551
|
shots.push(shot);
|
|
534
|
-
case
|
|
552
|
+
case 109:
|
|
535
553
|
case "end":
|
|
536
554
|
return _context.stop();
|
|
537
555
|
}
|
|
538
556
|
}, _loop);
|
|
539
557
|
});
|
|
540
558
|
_iterator = _asyncIterator(lines);
|
|
541
|
-
case 18:
|
|
542
|
-
_context2.next = 20;
|
|
543
|
-
return _iterator.next();
|
|
544
559
|
case 20:
|
|
560
|
+
_context2.next = 22;
|
|
561
|
+
return _iterator.next();
|
|
562
|
+
case 22:
|
|
545
563
|
if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
|
|
546
|
-
_context2.next =
|
|
564
|
+
_context2.next = 30;
|
|
547
565
|
break;
|
|
548
566
|
}
|
|
549
|
-
return _context2.delegateYield(_loop(), "t0",
|
|
550
|
-
case
|
|
567
|
+
return _context2.delegateYield(_loop(), "t0", 24);
|
|
568
|
+
case 24:
|
|
551
569
|
_ret = _context2.t0;
|
|
552
570
|
if (!(_ret === "continue")) {
|
|
553
|
-
_context2.next =
|
|
571
|
+
_context2.next = 27;
|
|
554
572
|
break;
|
|
555
573
|
}
|
|
556
|
-
return _context2.abrupt("continue",
|
|
557
|
-
case
|
|
574
|
+
return _context2.abrupt("continue", 27);
|
|
575
|
+
case 27:
|
|
558
576
|
_iteratorAbruptCompletion = false;
|
|
559
|
-
_context2.next =
|
|
560
|
-
break;
|
|
561
|
-
case 28:
|
|
562
|
-
_context2.next = 34;
|
|
577
|
+
_context2.next = 20;
|
|
563
578
|
break;
|
|
564
579
|
case 30:
|
|
565
|
-
_context2.
|
|
566
|
-
|
|
580
|
+
_context2.next = 36;
|
|
581
|
+
break;
|
|
582
|
+
case 32:
|
|
583
|
+
_context2.prev = 32;
|
|
584
|
+
_context2.t1 = _context2["catch"](17);
|
|
567
585
|
_didIteratorError = true;
|
|
568
586
|
_iteratorError = _context2.t1;
|
|
569
|
-
case
|
|
570
|
-
_context2.prev =
|
|
571
|
-
_context2.prev =
|
|
587
|
+
case 36:
|
|
588
|
+
_context2.prev = 36;
|
|
589
|
+
_context2.prev = 37;
|
|
572
590
|
if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
|
|
573
|
-
_context2.next =
|
|
591
|
+
_context2.next = 41;
|
|
574
592
|
break;
|
|
575
593
|
}
|
|
576
|
-
_context2.next =
|
|
594
|
+
_context2.next = 41;
|
|
577
595
|
return _iterator["return"]();
|
|
578
|
-
case
|
|
579
|
-
_context2.prev =
|
|
596
|
+
case 41:
|
|
597
|
+
_context2.prev = 41;
|
|
580
598
|
if (!_didIteratorError) {
|
|
581
|
-
_context2.next =
|
|
599
|
+
_context2.next = 44;
|
|
582
600
|
break;
|
|
583
601
|
}
|
|
584
602
|
throw _iteratorError;
|
|
585
|
-
case 42:
|
|
586
|
-
return _context2.finish(39);
|
|
587
|
-
case 43:
|
|
588
|
-
return _context2.finish(34);
|
|
589
603
|
case 44:
|
|
604
|
+
return _context2.finish(41);
|
|
605
|
+
case 45:
|
|
606
|
+
return _context2.finish(36);
|
|
607
|
+
case 46:
|
|
590
608
|
return _context2.abrupt("return", {
|
|
591
609
|
cave: cave,
|
|
592
610
|
location: location,
|
|
593
611
|
trips: trips,
|
|
594
612
|
errors: errors
|
|
595
613
|
});
|
|
596
|
-
case
|
|
614
|
+
case 47:
|
|
597
615
|
case "end":
|
|
598
616
|
return _context2.stop();
|
|
599
617
|
}
|
|
600
|
-
}, _callee, null, [[
|
|
618
|
+
}, _callee, null, [[17, 32, 36, 46], [37,, 41, 45]]);
|
|
601
619
|
}));
|
|
602
620
|
return _parseFrcsSurveyFile.apply(this, arguments);
|
|
603
621
|
}
|
|
@@ -9,7 +9,7 @@ var _unitized = require("@speleotica/unitized");
|
|
|
9
9
|
var _chai = require("chai");
|
|
10
10
|
var _FrcsShot = require("../FrcsShot");
|
|
11
11
|
var _parseSegment = require("parse-segment");
|
|
12
|
-
var data = " Fisher Ridge Cave System, Hart Co., KY\nENTRANCE DROPS, JOE'S \"I LOVE MY WIFE TRAVERSE\", TRICKY TRAVERSE\nPETER QUICK, KEITH ORTIZ - 2-15-81\nThis File has Crumps test connected. 11/20/12\n *\nFT C DD A\n AE20 0 1 3 0 2\n* %FS\n* AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12\n AE19 AE20 9.3 60.0 60.0-36.0 2 12 0 20\n AE18 AE19 24.5 0.0 0.0-90.0 6 10 25 0\n AE17 AE18 8.0 350.5 350.5 17.0 3 5 0 0\n AE16 AE17 6.7 0.0 0.0-90.0 3 5 6 1\n AE15 AE16 12.6 70.5 71.0-18.0 4 0 2 1\n AE14 AE15 10.0 21.5 20.0 6.0 5 5 0 3\n AE13 AE14 26.8 288.0 286.0-50.0 0 7 20 5\n*\n*SHORT CANYON AT THE BASE OF THE SECOND DROP\n AE12 AE13 20.7 236.0 236.0 34.0 3 5 4 4\n *\nTRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY\nDAN CROWL, KEITH ORTIZ, CHIP HOPPER, PETER QUICK, LARRY BEAN 14 FEB 1981\n *\nFI B DD\n*\n* A1 2 7 3 4.5\n A2 A1 48 10 292.0 110.0-42.0 5 10 35 5\n A3 A2 12 5 333.5 153.5 35.0 3 1 15 5\n A4 A3 4 2 0.0 0.0 90.0 3 1 10 10\n *\nDOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP\nPETER QUICK, CHRIS GERACE, PHIL ODEN, CHIP HOPPER - 3-6-81\n *\nFT C DD\n B31 B30 13.7 360.0 360.0 40.0 2 4 6 B30 8 3 5 1.2\nB30sp B30 13.7 s 360.0 360.0 40.0 2 4 6 \n";
|
|
12
|
+
var data = " Fisher Ridge Cave System, Hart Co., KY\nENTRANCE DROPS, JOE'S \"I LOVE MY WIFE TRAVERSE\", TRICKY TRAVERSE\nPETER QUICK, KEITH ORTIZ - 2-15-81\nThis File has Crumps test connected. 11/20/12\n *\nFT C DD A\n AE20 0 1 3 0 2\n* %FS\n* AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12\n AE19 AE20 9.3 60.0 60.0-36.0 2 12 0 20\n AE18 AE19 24.5 0.0 0.0-90.0 6 10 25 0\n AE17 AE18 8.0 350.5 350.5 17.0 3 5 0 0\n AE16 AE17 6.7 0.0 0.0-90.0 3 5 6 1\n AE15 AE16 12.6 70.5 71.0-18.0 4 0 2 1\n AE14 AE15 10.0 21.5 20.0 6.0 5 5 0 3\n AE13 AE14 26.8 288.0 286.0-50.0 0 7 20 5\n*\n*SHORT CANYON AT THE BASE OF THE SECOND DROP\n AE12 AE13 20.7 236.0 236.0 34.0 3 5 4 4\n *\nTRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY\nDAN CROWL, KEITH ORTIZ, CHIP HOPPER, PETER QUICK, LARRY BEAN 14 FEB 1981\n *\nFI B DD\n*\n* A1 2 7 3 4.5\n*\n* test comment after from station lrud\n A2 A1 48 10 292.0 110.0-42.0 5 10 35 5\n A3 A2 12 5 333.5 153.5 35.0 3 1 15 5\n A4 A3 4 2 0.0 0.0 90.0 3 1 10 10\n *\nDOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP\nPETER QUICK, CHRIS GERACE, PHIL ODEN, CHIP HOPPER - 3-6-81\n *\nFT C DD\n B31 B30 13.7 360.0 360.0 40.0 2 4 6 B30 8 3 5 1.2\nB30sp B30 13.7 s 360.0 360.0 40.0 2 4 6 \n";
|
|
13
13
|
(0, _mocha.describe)('parseFrcsSurveyFile', function () {
|
|
14
14
|
(0, _mocha.it)('basic test', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
15
15
|
var parsed;
|
|
@@ -218,12 +218,12 @@ var data = " Fisher Ridge Cave System, Hart Co., KY\nENTRANCE DROPS, JOE'S
|
|
|
218
218
|
frontsightInclination: _unitized.Unitize.degrees(-42),
|
|
219
219
|
backsightInclination: null,
|
|
220
220
|
excludeDistance: false,
|
|
221
|
-
comment:
|
|
221
|
+
comment: 'test comment after from station lrud',
|
|
222
222
|
fromLruds: {
|
|
223
|
-
left: _unitized.Unitize.
|
|
224
|
-
right: _unitized.Unitize.
|
|
225
|
-
up: _unitized.Unitize.
|
|
226
|
-
down: _unitized.Unitize.
|
|
223
|
+
left: _unitized.Unitize.inches(2),
|
|
224
|
+
right: _unitized.Unitize.inches(7),
|
|
225
|
+
up: _unitized.Unitize.inches(3),
|
|
226
|
+
down: _unitized.Unitize.inches(4.5)
|
|
227
227
|
},
|
|
228
228
|
toLruds: {
|
|
229
229
|
left: _unitized.Unitize.feet(5),
|