single-scripture-rcl 3.4.11 → 3.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/useScripture.js +32 -26
- package/package.json +2 -2
|
@@ -244,11 +244,11 @@ export function useScripture(_ref2) {
|
|
|
244
244
|
_fetchBook = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(fetchParams) {
|
|
245
245
|
var ignoreSha,
|
|
246
246
|
_fetchParams$referenc2,
|
|
247
|
-
_resourceState$resour,
|
|
248
247
|
_resource$project,
|
|
249
248
|
_resource$project2,
|
|
250
249
|
fetchLink,
|
|
251
|
-
|
|
250
|
+
_resourceState$resour,
|
|
251
|
+
fetchedShaMatchesIgnoreSha,
|
|
252
252
|
_resourceState$resour2,
|
|
253
253
|
_fetchCount,
|
|
254
254
|
_resource,
|
|
@@ -270,10 +270,16 @@ export function useScripture(_ref2) {
|
|
|
270
270
|
ignoreSha = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
|
|
271
271
|
_context.prev = 1;
|
|
272
272
|
fetchLink = "".concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, "/").concat(fetchParams === null || fetchParams === void 0 ? void 0 : (_fetchParams$referenc2 = fetchParams.reference) === null || _fetchParams$referenc2 === void 0 ? void 0 : _fetchParams$referenc2.projectId);
|
|
273
|
-
shaToBeIgnored = ignoreSha && ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
|
|
274
273
|
|
|
275
|
-
if (!
|
|
276
|
-
_context.next =
|
|
274
|
+
if (!ignoreSha) {
|
|
275
|
+
_context.next = 8;
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
fetchedShaMatchesIgnoreSha = ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
|
|
280
|
+
|
|
281
|
+
if (!(fetchLink === (resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !fetchedShaMatchesIgnoreSha)) {
|
|
282
|
+
_context.next = 8;
|
|
277
283
|
break;
|
|
278
284
|
}
|
|
279
285
|
|
|
@@ -281,7 +287,7 @@ export function useScripture(_ref2) {
|
|
|
281
287
|
console.log("useScripture.fetchBook() - Already fetching resourceLink ".concat(resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour2 = resourceState.resource) === null || _resourceState$resour2 === void 0 ? void 0 : _resourceState$resour2.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
|
|
282
288
|
return _context.abrupt("return");
|
|
283
289
|
|
|
284
|
-
case
|
|
290
|
+
case 8:
|
|
285
291
|
_fetchCount = fetchCount + 1;
|
|
286
292
|
console.log("useScripture.fetchBook() - FETCHING bible ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
|
|
287
293
|
setState({
|
|
@@ -293,18 +299,18 @@ export function useScripture(_ref2) {
|
|
|
293
299
|
}
|
|
294
300
|
}); // fetch manifest data
|
|
295
301
|
|
|
296
|
-
_context.next =
|
|
302
|
+
_context.next = 13;
|
|
297
303
|
return delay(100);
|
|
298
304
|
|
|
299
|
-
case
|
|
300
|
-
_context.next =
|
|
305
|
+
case 13:
|
|
306
|
+
_context.next = 15;
|
|
301
307
|
return core.resourceFromResourceLink(fetchParams);
|
|
302
308
|
|
|
303
|
-
case
|
|
309
|
+
case 15:
|
|
304
310
|
_resource = _context.sent;
|
|
305
311
|
|
|
306
312
|
if (!(!(_resource !== null && _resource !== void 0 && _resource.manifest) || !(_resource !== null && _resource !== void 0 && (_resource$project = _resource.project) !== null && _resource$project !== void 0 && _resource$project.file))) {
|
|
307
|
-
_context.next =
|
|
313
|
+
_context.next = 21;
|
|
308
314
|
break;
|
|
309
315
|
}
|
|
310
316
|
|
|
@@ -318,27 +324,27 @@ export function useScripture(_ref2) {
|
|
|
318
324
|
});
|
|
319
325
|
return _context.abrupt("return");
|
|
320
326
|
|
|
321
|
-
case
|
|
327
|
+
case 21:
|
|
322
328
|
console.log("useScripture.fetchBook() - LOADED bible manifest, fetching book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
|
|
323
|
-
_context.next =
|
|
329
|
+
_context.next = 24;
|
|
324
330
|
return delay(100);
|
|
325
331
|
|
|
326
|
-
case
|
|
327
|
-
_context.next =
|
|
332
|
+
case 24:
|
|
333
|
+
_context.next = 26;
|
|
328
334
|
return _resource === null || _resource === void 0 ? void 0 : (_resource$project2 = _resource.project) === null || _resource$project2 === void 0 ? void 0 : _resource$project2.file();
|
|
329
335
|
|
|
330
|
-
case
|
|
336
|
+
case 26:
|
|
331
337
|
response = _context.sent;
|
|
332
338
|
// parse book usfm
|
|
333
339
|
_bibleUsfm = response && core.getResponseData(response);
|
|
334
|
-
_context.next =
|
|
340
|
+
_context.next = 30;
|
|
335
341
|
return delay(100);
|
|
336
342
|
|
|
337
|
-
case
|
|
343
|
+
case 30:
|
|
338
344
|
_bookObjects3 = _bibleUsfm && usfmjs.toJSON(_bibleUsfm); // convert to bible objects
|
|
339
345
|
|
|
340
346
|
if (_bookObjects3) {
|
|
341
|
-
_context.next =
|
|
347
|
+
_context.next = 36;
|
|
342
348
|
break;
|
|
343
349
|
}
|
|
344
350
|
|
|
@@ -352,7 +358,7 @@ export function useScripture(_ref2) {
|
|
|
352
358
|
});
|
|
353
359
|
return _context.abrupt("return");
|
|
354
360
|
|
|
355
|
-
case
|
|
361
|
+
case 36:
|
|
356
362
|
_ref5 = (response === null || response === void 0 ? void 0 : response.data) || {}, name = _ref5.name, sha = _ref5.sha, url = _ref5.url;
|
|
357
363
|
console.log("useScripture.fetchBook() - LOADED bible book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
|
|
358
364
|
setState({
|
|
@@ -369,11 +375,11 @@ export function useScripture(_ref2) {
|
|
|
369
375
|
})
|
|
370
376
|
}
|
|
371
377
|
});
|
|
372
|
-
_context.next =
|
|
378
|
+
_context.next = 45;
|
|
373
379
|
break;
|
|
374
380
|
|
|
375
|
-
case
|
|
376
|
-
_context.prev =
|
|
381
|
+
case 41:
|
|
382
|
+
_context.prev = 41;
|
|
377
383
|
_context.t0 = _context["catch"](1);
|
|
378
384
|
console.error("useScripture.fetchBook() - hard error loading resource", fetchParams, _context.t0);
|
|
379
385
|
setState({
|
|
@@ -383,12 +389,12 @@ export function useScripture(_ref2) {
|
|
|
383
389
|
}
|
|
384
390
|
});
|
|
385
391
|
|
|
386
|
-
case
|
|
392
|
+
case 45:
|
|
387
393
|
case "end":
|
|
388
394
|
return _context.stop();
|
|
389
395
|
}
|
|
390
396
|
}
|
|
391
|
-
}, _callee, null, [[1,
|
|
397
|
+
}, _callee, null, [[1, 41]]);
|
|
392
398
|
}));
|
|
393
399
|
return _fetchBook.apply(this, arguments);
|
|
394
400
|
}
|
|
@@ -666,4 +672,4 @@ export function useScripture(_ref2) {
|
|
|
666
672
|
versesForRef: versesForRef
|
|
667
673
|
};
|
|
668
674
|
}
|
|
669
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJzaGFUb0JlSWdub3JlZCIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFBQSxNQUFNLEdBQUdD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QXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG4gICAgICBjb25zdCBzaGFUb0JlSWdub3JlZCA9IGlnbm9yZVNoYSAmJiBpZ25vcmVTaGEgPT09IHJlc291cmNlU3RhdGU/LnNoYSAvLyB3ZSB3aWxsIHJlbG9hZCBpZiBpZ25vcmVTaGEgZ2l2ZW4gYW5kIGl0IG1hdGNoZXMgY3VycmVudCBzaGFcblxuICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFzaGFUb0JlSWdub3JlZCkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIEFscmVhZHkgZmV0Y2hpbmcgcmVzb3VyY2VMaW5rICR7cmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBmZXRjaCBtYW5pZmVzdCBkYXRhXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBfcmVzb3VyY2UgPSBhd2FpdCBjb3JlLnJlc291cmNlRnJvbVJlc291cmNlTGluayhmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFfcmVzb3VyY2U/Lm1hbmlmZXN0IHx8ICFfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBfcmVzb3VyY2U/Lm1hbmlmZXN0ID8gJ3BhcnNpbmcgcmVzb3VyY2UgbWFuaWZlc3QnIDogJ2xvYWRpbmcgcmVzb3VyY2UgbWFuaWZlc3QnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBtYW5pZmVzdCwgZmV0Y2hpbmcgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKClcbiAgICAgIC8vIHBhcnNlIGJvb2sgdXNmbVxuICAgICAgY29uc3QgYmlibGVVc2ZtID0gcmVzcG9uc2UgJiYgY29yZS5nZXRSZXNwb25zZURhdGEocmVzcG9uc2UpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGJpYmxlVXNmbSAmJiB1c2ZtanMudG9KU09OKGJpYmxlVXNmbSkgLy8gY29udmVydCB0byBiaWJsZSBvYmplY3RzXG5cbiAgICAgIGlmICghYm9va09iamVjdHMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBiaWJsZVVzZm0gPyAnZmV0Y2hpbmcgYm9vayBvZiB0aGUgYmlibGUnIDogJ3BhcnNpbmcgYm9vayBvZiB0aGUgYmlibGUnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lLCBzaGEsIHVybCB9ID0gcmVzcG9uc2U/LmRhdGEgfHwge31cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICAgICAgICAuLi5fcmVzb3VyY2UsXG4gICAgICAgICAgICAgIGJpYmxlVXNmbSxcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChpc1NhbWVCb29rKSB7XG4gICAgICBjb25zdCBiaWJsZVVzZm1fID0gZmV0Y2hlZFJlc291cmNlcz8uYmlibGVVc2ZtXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGZldGNoZWRSZXNvdXJjZXM/LmJvb2tPYmplY3RzXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtvYmplY3R9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWYgLSBvcHRpb25hbCByZWZlcmVuY2UgdG8gZmV0Y2hcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwsIHJlZiA9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgaWdub3JlU2hhOiAke2lnbm9yZVNoYX1gIClcbiAgICBjb25zdCBfZmV0Y2hQYXJhbXMgPSB7IC4uLmZldGNoUGFyYW1zIH1cblxuICAgIGlmIChyZWYgJiYgZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBvd25lcixcbiAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgcmVmOiBfcmVmLFxuICAgICAgfSA9IHBhcnNlUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zLnJlc291cmNlTGluaylcblxuICAgICAgaWYgKHJlZiAhPT0gX3JlZikgeyAvLyBpZiByZWYgY2hhbmdlZCwgdXBkYXRlIHJlc291cmNlbGlua1xuICAgICAgICBjb25zdCBfcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgb2xkIHJlZiBpcyBkaWZmZXJlbnQgJHtfcmVmfSwgc3dpdGNoaW5nIHRvIGxvYWQgcmVmOiAke3JlZn0sIG5ldyByZXNvdXJjZUxpbms6ICR7X3Jlc291cmNlTGlua31gIClcbiAgICAgICAgX2ZldGNoUGFyYW1zLnJlc291cmNlTGluayA9IF9yZXNvdXJjZUxpbmtcbiAgICAgIH1cbiAgICB9XG4gICAgZmV0Y2hCb29rKF9mZXRjaFBhcmFtcywgaWdub3JlU2hhKVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCwgYmlibGVVc2ZtOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCAmJiBmZXRjaGVkQm9vaykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdfQ==
|
|
675
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFB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QUFhLEdBQUcsRUFBcEI7O0FBRUEsUUFBSSxDQUFDRCxlQUFMLEVBQXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG5cbiAgICAgIGlmIChpZ25vcmVTaGEpIHtcbiAgICAgICAgY29uc3QgZmV0Y2hlZFNoYU1hdGNoZXNJZ25vcmVTaGEgPSBpZ25vcmVTaGEgPT09IHJlc291cmNlU3RhdGU/LnNoYSAvLyB3ZSB3aWxsIHJlbG9hZCBpZiBpZ25vcmVTaGEgZ2l2ZW4gYW5kIGl0IG1hdGNoZXMgY3VycmVudCBzaGFcbiAgICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gQWxyZWFkeSBmZXRjaGluZyByZXNvdXJjZUxpbmsgJHtyZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBmZXRjaCBtYW5pZmVzdCBkYXRhXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBfcmVzb3VyY2UgPSBhd2FpdCBjb3JlLnJlc291cmNlRnJvbVJlc291cmNlTGluayhmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFfcmVzb3VyY2U/Lm1hbmlmZXN0IHx8ICFfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBfcmVzb3VyY2U/Lm1hbmlmZXN0ID8gJ3BhcnNpbmcgcmVzb3VyY2UgbWFuaWZlc3QnIDogJ2xvYWRpbmcgcmVzb3VyY2UgbWFuaWZlc3QnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBtYW5pZmVzdCwgZmV0Y2hpbmcgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKClcbiAgICAgIC8vIHBhcnNlIGJvb2sgdXNmbVxuICAgICAgY29uc3QgYmlibGVVc2ZtID0gcmVzcG9uc2UgJiYgY29yZS5nZXRSZXNwb25zZURhdGEocmVzcG9uc2UpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGJpYmxlVXNmbSAmJiB1c2ZtanMudG9KU09OKGJpYmxlVXNmbSkgLy8gY29udmVydCB0byBiaWJsZSBvYmplY3RzXG5cbiAgICAgIGlmICghYm9va09iamVjdHMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBiaWJsZVVzZm0gPyAnZmV0Y2hpbmcgYm9vayBvZiB0aGUgYmlibGUnIDogJ3BhcnNpbmcgYm9vayBvZiB0aGUgYmlibGUnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lLCBzaGEsIHVybCB9ID0gcmVzcG9uc2U/LmRhdGEgfHwge31cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICAgICAgICAuLi5fcmVzb3VyY2UsXG4gICAgICAgICAgICAgIGJpYmxlVXNmbSxcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChpc1NhbWVCb29rKSB7XG4gICAgICBjb25zdCBiaWJsZVVzZm1fID0gZmV0Y2hlZFJlc291cmNlcz8uYmlibGVVc2ZtXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGZldGNoZWRSZXNvdXJjZXM/LmJvb2tPYmplY3RzXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtvYmplY3R9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWYgLSBvcHRpb25hbCByZWZlcmVuY2UgdG8gZmV0Y2hcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwsIHJlZiA9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgaWdub3JlU2hhOiAke2lnbm9yZVNoYX1gIClcbiAgICBjb25zdCBfZmV0Y2hQYXJhbXMgPSB7IC4uLmZldGNoUGFyYW1zIH1cblxuICAgIGlmIChyZWYgJiYgZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBvd25lcixcbiAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgcmVmOiBfcmVmLFxuICAgICAgfSA9IHBhcnNlUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zLnJlc291cmNlTGluaylcblxuICAgICAgaWYgKHJlZiAhPT0gX3JlZikgeyAvLyBpZiByZWYgY2hhbmdlZCwgdXBkYXRlIHJlc291cmNlbGlua1xuICAgICAgICBjb25zdCBfcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgb2xkIHJlZiBpcyBkaWZmZXJlbnQgJHtfcmVmfSwgc3dpdGNoaW5nIHRvIGxvYWQgcmVmOiAke3JlZn0sIG5ldyByZXNvdXJjZUxpbms6ICR7X3Jlc291cmNlTGlua31gIClcbiAgICAgICAgX2ZldGNoUGFyYW1zLnJlc291cmNlTGluayA9IF9yZXNvdXJjZUxpbmtcbiAgICAgIH1cbiAgICB9XG4gICAgZmV0Y2hCb29rKF9mZXRjaFBhcmFtcywgaWdub3JlU2hhKVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCwgYmlibGVVc2ZtOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCAmJiBmZXRjaGVkQm9vaykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.4.
|
|
4
|
+
"version": "3.4.12",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
|
|
17
17
|
"build": "styleguidist build",
|
|
18
18
|
"prepublishOnly": "rm -fr ./dist && babel ./src --out-dir ./dist -s inline --extensions \".ts,.tsx,.js\"",
|
|
19
|
-
"pack-next": "yarn version --prerelease && yarn && yarn run prepublishOnly && yarn pack"
|
|
19
|
+
"pack-next": "yarn version --prerelease --no-git-tag-version && yarn && yarn run prepublishOnly && yarn pack"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"@material-ui/core": "4.11.0",
|