@merchi/product-form 1.19.21 → 1.19.22

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.
@@ -98,6 +98,54 @@ export function templatesForGroup(product, independentVariations, groupVariation
98
98
  var visible = visibleTemplatesForGroup(product, independentVariations, groupVariations);
99
99
  return visible.length ? visible : [blankTemplate(product)];
100
100
  }
101
+ function templateHasFile(template) {
102
+ var file = template === null || template === void 0 ? void 0 : template.file;
103
+ if (!file) return false;
104
+ return Boolean(file.id || file.downloadUrl || file.cachedDownloadUrl || file.viewUrl || file.cachedViewUrl);
105
+ }
106
+ function uniqueFileTemplates(templates) {
107
+ var seen = new Set();
108
+ var result = [];
109
+ var _iterator3 = _createForOfIteratorHelper(templates),
110
+ _step3;
111
+ try {
112
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
113
+ var template = _step3.value;
114
+ if (!templateHasFile(template)) continue;
115
+ var file = template.file || {};
116
+ var key = (template === null || template === void 0 ? void 0 : template.id) != null ? "id:".concat(template.id) : "file:".concat(file.id || file.downloadUrl || file.viewUrl);
117
+ if (seen.has(key)) continue;
118
+ seen.add(key);
119
+ result.push(template);
120
+ }
121
+ } catch (err) {
122
+ _iterator3.e(err);
123
+ } finally {
124
+ _iterator3.f();
125
+ }
126
+ return result;
127
+ }
128
+
129
+ /** Blank templates the customer can download for the options currently selected. */
130
+ export function downloadableDraftTemplates(product, formValues) {
131
+ var independent = (formValues === null || formValues === void 0 ? void 0 : formValues.variations) || [];
132
+ var groups = productHasVariationGroups(product) && Array.isArray(formValues === null || formValues === void 0 ? void 0 : formValues.variationsGroups) && formValues.variationsGroups.length ? formValues.variationsGroups : [{}];
133
+ var matched = [];
134
+ var _iterator4 = _createForOfIteratorHelper(groups),
135
+ _step4;
136
+ try {
137
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
138
+ var group = _step4.value;
139
+ matched.push.apply(matched, _toConsumableArray(visibleTemplatesForGroup(product, independent, (group === null || group === void 0 ? void 0 : group.variations) || [])));
140
+ }
141
+ } catch (err) {
142
+ _iterator4.e(err);
143
+ } finally {
144
+ _iterator4.f();
145
+ }
146
+ if (matched.length) return uniqueFileTemplates(matched);
147
+ return uniqueFileTemplates((product === null || product === void 0 ? void 0 : product.draftTemplates) || []);
148
+ }
101
149
  export function canvasKindForFieldType(fieldType) {
102
150
  switch (parseInt(String(fieldType), 10)) {
103
151
  case FieldType.TEXT_INPUT:
@@ -425,11 +473,11 @@ export function seedOrSyncCanvas(existing, template, variations) {
425
473
  return variation === null || variation === void 0 ? void 0 : variation.variationField;
426
474
  }).filter(Boolean);
427
475
  var usedRegions = {};
428
- var _iterator3 = _createForOfIteratorHelper(linked),
429
- _step3;
476
+ var _iterator5 = _createForOfIteratorHelper(linked),
477
+ _step5;
430
478
  try {
431
479
  var _loop = function _loop() {
432
- var variation = _step3.value;
480
+ var variation = _step5.value;
433
481
  var field = variation === null || variation === void 0 ? void 0 : variation.variationField;
434
482
  if (resolveArtworkRole(field, template, linkedFields) !== 'text_fill') return 1; // continue
435
483
  var index = objects.findIndex(function (obj) {
@@ -437,13 +485,13 @@ export function seedOrSyncCanvas(existing, template, variations) {
437
485
  });
438
486
  if (index >= 0) objects.splice(index, 1);
439
487
  };
440
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
488
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
441
489
  if (_loop()) continue;
442
490
  }
443
491
  } catch (err) {
444
- _iterator3.e(err);
492
+ _iterator5.e(err);
445
493
  } finally {
446
- _iterator3.f();
494
+ _iterator5.f();
447
495
  }
448
496
  var applyColourToText = function applyColourToText(targetFieldId, fill, colourFieldId) {
449
497
  if (!fill || targetFieldId == null) return false;
@@ -483,11 +531,11 @@ export function seedOrSyncCanvas(existing, template, variations) {
483
531
  if (kind === 'text') Object.assign(next, fitTextBox(next));
484
532
  if (kind === 'rect') objects.unshift(next);else objects.push(next);
485
533
  };
486
- var _iterator4 = _createForOfIteratorHelper(linked),
487
- _step4;
534
+ var _iterator6 = _createForOfIteratorHelper(linked),
535
+ _step6;
488
536
  try {
489
537
  var _loop2 = function _loop2() {
490
- var variation = _step4.value;
538
+ var variation = _step6.value;
491
539
  var field = variation === null || variation === void 0 ? void 0 : variation.variationField;
492
540
  var fieldId = field === null || field === void 0 ? void 0 : field.id;
493
541
  var content = variationCanvasContent(variation);
@@ -519,20 +567,20 @@ export function seedOrSyncCanvas(existing, template, variations) {
519
567
  placeObject(content.kind, role, field, fieldId, content);
520
568
  },
521
569
  _ret;
522
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
570
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
523
571
  _ret = _loop2();
524
572
  if (_ret === 0) continue;
525
573
  }
526
574
  } catch (err) {
527
- _iterator4.e(err);
575
+ _iterator6.e(err);
528
576
  } finally {
529
- _iterator4.f();
577
+ _iterator6.f();
530
578
  }
531
- var _iterator5 = _createForOfIteratorHelper(linked),
532
- _step5;
579
+ var _iterator7 = _createForOfIteratorHelper(linked),
580
+ _step7;
533
581
  try {
534
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
535
- var variation = _step5.value;
582
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
583
+ var variation = _step7.value;
536
584
  var field = variation === null || variation === void 0 ? void 0 : variation.variationField;
537
585
  var fieldId = field === null || field === void 0 ? void 0 : field.id;
538
586
  var content = variationCanvasContent(variation);
@@ -543,9 +591,9 @@ export function seedOrSyncCanvas(existing, template, variations) {
543
591
  applyColourToText(targetId, content.fill, fieldId);
544
592
  }
545
593
  } catch (err) {
546
- _iterator5.e(err);
594
+ _iterator7.e(err);
547
595
  } finally {
548
- _iterator5.f();
596
+ _iterator7.f();
549
597
  }
550
598
  return {
551
599
  width: width,
@@ -576,4 +624,4 @@ export function printAreaGuides(template) {
576
624
  return bboxToPixels(bbox, width, height);
577
625
  });
578
626
  }
579
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCTEFOS19URU1QTEFURV9JRCIsIkRFRkFVTFRfQVJUQk9BUkQiLCJGaWVsZFR5cGUiLCJERUZBVUxUX0RSQUZUX0ZPTlQiLCJjc3NGb250RmFtaWx5IiwicHJvZHVjdEhhc0dyb3VwcyIsInByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyIsInByb2R1Y3QiLCJBcnJheSIsImlzQXJyYXkiLCJkcmFmdFRlbXBsYXRlcyIsImxlbmd0aCIsInByb2R1Y3RBbGxvd3NDbGllbnREZXNpZ24iLCJCb29sZWFuIiwibmVlZHNEcmFmdGluZyIsImFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb24iLCJwcm9kdWN0SGFzVmFyaWF0aW9uR3JvdXBzIiwiZGVzaWduR3JvdXBDb3VudCIsImZvcm1WYWx1ZXMiLCJncm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwicGFyc2VTZWxlY3RlZE9wdGlvbklkcyIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwic3BsaXQiLCJtYXAiLCJzIiwicGFyc2VJbnQiLCJ0cmltIiwiZmlsdGVyIiwibiIsImlzTmFOIiwic2VsZWN0ZWRPcHRpb25JZHNGcm9tVmFyaWF0aW9ucyIsInZhcmlhdGlvbnMiLCJpZHMiLCJTZXQiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwiZG9uZSIsInZhcmlhdGlvbiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJpZCIsImFkZCIsImVyciIsImUiLCJmIiwiaXNUZW1wbGF0ZVZpc2libGUiLCJ0ZW1wbGF0ZSIsInNlbGVjdGVkT3B0aW9uSWRzIiwicmVxdWlyZWQiLCJzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zIiwiZXZlcnkiLCJvcHQiLCJoYXMiLCJ2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAiLCJpbmRlcGVuZGVudFZhcmlhdGlvbnMiLCJncm91cFZhcmlhdGlvbnMiLCJzZWxlY3RlZCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImJsYW5rVGVtcGxhdGUiLCJfcHJvZHVjdCRkcmFmdFRlbXBsYXQiLCJfcHJvZHVjdCRmZWF0dXJlSW1hZ2UiLCJfcHJvZHVjdCRkcmFmdFRlbXBsYXQyIiwiX3Byb2R1Y3QkZmVhdHVyZUltYWdlMiIsImZyb21Qcm9kdWN0IiwiTnVtYmVyIiwid2lkdGgiLCJmZWF0dXJlSW1hZ2UiLCJoZWlnaHQiLCJuYW1lIiwiZmlsZSIsImVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzIiwidGVtcGxhdGVzRm9yR3JvdXAiLCJ2aXNpYmxlIiwiY2FudmFzS2luZEZvckZpZWxkVHlwZSIsImZpZWxkVHlwZSIsIlRFWFRfSU5QVVQiLCJURVhUX0FSRUEiLCJOVU1CRVJfSU5QVVQiLCJTRUxFQ1QiLCJSQURJTyIsIkNIRUNLQk9YIiwiRklMRV9VUExPQUQiLCJJTUFHRV9TRUxFQ1QiLCJDT0xPVVJfUElDS0VSIiwiQ09MT1VSX1NFTEVDVCIsIkNPTE9VUl9FWFRSQUNUIiwib3B0aW9uQnlJZCIsIl92YXJpYXRpb24kdmFyaWF0aW9uRiIsImZyb21TZWxlY3RhYmxlIiwic2VsZWN0YWJsZU9wdGlvbnMiLCJmaW5kIiwib3B0aW9uIiwib3B0aW9uSWQiLCJ2YXJpYXRpb25GaWVsZCIsIm9wdGlvbnMiLCJ2YXJpYXRpb25DYW52YXNDb250ZW50IiwiZmllbGQiLCJraW5kIiwidHlwZSIsIm5hbWVzIiwiX29wdGlvbkJ5SWQiLCJ0ZXh0Iiwiam9pbiIsInZhcmlhdGlvbkZpbGVzIiwic3JjIiwidmlld1VybCIsImNhY2hlZFZpZXdVcmwiLCJsaW5rZWRGaWxlIiwiZmlsbCIsIm5vcm1hbGlzZUNzc0NvbG91ciIsInNlbGVjdGVkT3B0aW9ucyIsImNvbG91ciIsIkhFWF9DT0xPVVIiLCJDU1NfRlVOQ1RJT05fQ09MT1VSIiwiX2xlbiIsImFyZ3VtZW50cyIsImNhbmRpZGF0ZXMiLCJfa2V5IiwiX2kiLCJfY2FuZGlkYXRlcyIsInJhdyIsInRlc3QiLCJsaW5rZWRWYXJpYXRpb25zRm9yVGVtcGxhdGUiLCJsaW5rZWRJZHMiLCJzaXplIiwiX3ZhcmlhdGlvbiR2YXJpYXRpb25GMiIsInZhcmlhdGlvbnNGb3JHcm91cCIsImdyb3VwSW5kZXgiLCJfZm9ybVZhbHVlcyR2YXJpYXRpb24iLCJpbmRlcGVuZGVudCIsImdyb3VwIiwiaXNWYWxpZEJib3giLCJiYm94IiwiX2Jib3gkbWFwIiwiX2Jib3gkbWFwMiIsIl9zbGljZWRUb0FycmF5IiwieCIsInkiLCJ3IiwiaCIsInJlZ2lvbnNGb3JSb2xlIiwiY3VzdG9taXNhdGlvbk1hcCIsInJvbGUiLCJyZWdpb25zIiwicmVnaW9uIiwiYmJveFRvUGl4ZWxzIiwiX2Jib3giLCJmaWVsZEJpbmRpbmdzRnJvbSIsIl90ZW1wbGF0ZSRjdXN0b21pc2F0aSIsImZpZWxkQmluZGluZ3MiLCJpdGVtIiwiZmllbGRJZCIsImJpbmRpbmdGb3JGaWVsZCIsImJpbmRpbmdzIiwiZmllbGROYW1lIiwidG9Mb3dlckNhc2UiLCJpc0NvbG91cktpbmQiLCJpbmZlckFydHdvcmtSb2xlIiwibGlua2VkRmllbGRzIiwiaGFzVGV4dCIsInNvbWUiLCJyZXNvbHZlQXJ0d29ya1JvbGUiLCJpbmZlcnJlZCIsImJpbmRpbmciLCJpbmZlclRleHRUYXJnZXRGaWVsZElkIiwidGFyZ2V0RmllbGRJZCIsInRleHRGaWVsZCIsImZpdEluc2lkZSIsImJveCIsImNvbnRlbnRXaWR0aCIsImNvbnRlbnRIZWlnaHQiLCJsb2NrQXNwZWN0UmF0aW8iLCJfb2JqZWN0U3ByZWFkIiwic2NhbGUiLCJNYXRoIiwibWluIiwic2hvdWxkTG9ja0ltYWdlQXNwZWN0IiwiYXNwZWN0UmF0aW9Mb2NrIiwiaXNCYWNrZ3JvdW5kRmlsbCIsIm9iaiIsImlzRnVsbEFydGJvYXJkRmlsbCIsImFydFdpZHRoIiwiYXJ0SGVpZ2h0IiwibWVhc3VyZURyYWZ0VGV4dCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImxpbmVzIiwibWF4IiwiZG9jdW1lbnQiLCJjYW52YXMiLCJjcmVhdGVFbGVtZW50IiwiY3R4IiwiZ2V0Q29udGV4dCIsImZvbnQiLCJhcHBseSIsImxpbmUiLCJtZWFzdXJlVGV4dCIsImNlaWwiLCJmaXRUZXh0Qm94IiwibWVhc3VyZWQiLCJwcmV2VyIsInByZXZIIiwicGxhY2VtZW50Qm94ZXMiLCJib2R5IiwicHJpbnQiLCJwbGFjZWhvbGRlcnMiLCJkZWZhdWx0UGxhY2VtZW50IiwiaW5kZXgiLCJwYWQiLCJjcmVhdGVPYmplY3RJZCIsIkRhdGUiLCJub3ciLCJyYW5kb20iLCJ0b1N0cmluZyIsInNsaWNlIiwic2VlZE9yU3luY0NhbnZhcyIsImV4aXN0aW5nIiwib2JqZWN0cyIsImRldGFjaGVkIiwiZGV0YWNoZWRGaWVsZElkcyIsImxpbmtlZCIsInVzZWRSZWdpb25zIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9sb29wIiwiZmluZEluZGV4IiwibWVyY2hpRmllbGRJZCIsInNwbGljZSIsImFwcGx5Q29sb3VyVG9UZXh0IiwiY29sb3VyRmllbGRJZCIsInRleHRPYmoiLCJwbGFjZU9iamVjdCIsImNvbnRlbnQiLCJib3hlcyIsImtleSIsInJlZ2lvbkluZGV4IiwicGxhY2UiLCJuZXh0IiwiYXJ0d29ya1JvbGUiLCJsb2NrZWQiLCJyb3RhdGlvbiIsInNjYWxlWCIsInNjYWxlWSIsInJvdW5kIiwiT2JqZWN0IiwiYXNzaWduIiwidW5zaGlmdCIsInB1c2giLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwiX2xvb3AyIiwiZm91bmQiLCJfcmV0IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsInRhcmdldElkIiwiZnJvbSIsImRldGFjaEZpZWxkIiwic3RhdGUiLCJvYmplY3RJZCIsInRhcmdldCIsImluY2x1ZGVzIiwicHJpbnRBcmVhR3VpZGVzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RyYWZ0VGVtcGxhdGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJMQU5LX1RFTVBMQVRFX0lELFxuICBERUZBVUxUX0FSVEJPQVJELFxuICBEcmFmdEFydHdvcmtSb2xlLFxuICBEcmFmdENhbnZhc09iamVjdCxcbiAgRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICBEcmFmdENhbnZhc1N0YXRlLFxuICBEcmFmdEZpZWxkQmluZGluZyxcbiAgRmllbGRUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IERFRkFVTFRfRFJBRlRfRk9OVCwgY3NzRm9udEZhbWlseSB9IGZyb20gJy4vZHJhZnRGb250cyc7XG5pbXBvcnQgeyBwcm9kdWN0SGFzR3JvdXBzIH0gZnJvbSAnLi9wcm9kdWN0cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0SGFzRHJhZnRUZW1wbGF0ZXMocHJvZHVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHByb2R1Y3Q/LmRyYWZ0VGVtcGxhdGVzKSAmJiBwcm9kdWN0LmRyYWZ0VGVtcGxhdGVzLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QWxsb3dzQ2xpZW50RGVzaWduKHByb2R1Y3Q6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICBwcm9kdWN0Py5uZWVkc0RyYWZ0aW5nXG4gICAgJiYgcHJvZHVjdD8uYWxsb3dDbGllbnREcmFmdENvbnRyaWJ1dGlvblxuICAgICYmIHByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyhwcm9kdWN0KSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RIYXNWYXJpYXRpb25Hcm91cHMocHJvZHVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBwcm9kdWN0SGFzR3JvdXBzKHByb2R1Y3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVzaWduR3JvdXBDb3VudChwcm9kdWN0OiBhbnksIGZvcm1WYWx1ZXM6IGFueSk6IG51bWJlciB7XG4gIGlmICghcHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3Vwcyhwcm9kdWN0KSkgcmV0dXJuIDE7XG4gIGNvbnN0IGdyb3VwcyA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHM7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGdyb3VwcykgJiYgZ3JvdXBzLmxlbmd0aCA+IDAgPyBncm91cHMubGVuZ3RoIDogMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VsZWN0ZWRPcHRpb25JZHModmFsdWU6IGFueSk6IG51bWJlcltdIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gW107XG4gIHJldHVybiBTdHJpbmcodmFsdWUpXG4gICAgLnNwbGl0KCcsJylcbiAgICAubWFwKChzKSA9PiBwYXJzZUludChzLnRyaW0oKSwgMTApKVxuICAgIC5maWx0ZXIoKG4pID0+ICFpc05hTihuKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RlZE9wdGlvbklkc0Zyb21WYXJpYXRpb25zKHZhcmlhdGlvbnM6IGFueVtdKTogU2V0PG51bWJlcj4ge1xuICBjb25zdCBpZHMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgdmFyaWF0aW9ucyB8fCBbXSkge1xuICAgIGZvciAoY29uc3QgaWQgb2YgcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24/LnZhbHVlKSkge1xuICAgICAgaWRzLmFkZChpZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBpZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RlbXBsYXRlVmlzaWJsZShcbiAgdGVtcGxhdGU6IGFueSxcbiAgc2VsZWN0ZWRPcHRpb25JZHM6IFNldDxudW1iZXI+LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlcXVpcmVkID0gdGVtcGxhdGU/LnNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnM7XG4gIGlmICghQXJyYXkuaXNBcnJheShyZXF1aXJlZCkgfHwgcmVxdWlyZWQubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIHJlcXVpcmVkLmV2ZXJ5KChvcHQ6IGFueSkgPT4gb3B0Py5pZCAmJiBzZWxlY3RlZE9wdGlvbklkcy5oYXMob3B0LmlkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAoXG4gIHByb2R1Y3Q6IGFueSxcbiAgaW5kZXBlbmRlbnRWYXJpYXRpb25zOiBhbnlbXSxcbiAgZ3JvdXBWYXJpYXRpb25zOiBhbnlbXSxcbik6IGFueVtdIHtcbiAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZE9wdGlvbklkc0Zyb21WYXJpYXRpb25zKFtcbiAgICAuLi4oaW5kZXBlbmRlbnRWYXJpYXRpb25zIHx8IFtdKSxcbiAgICAuLi4oZ3JvdXBWYXJpYXRpb25zIHx8IFtdKSxcbiAgXSk7XG4gIHJldHVybiAocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXMgfHwgW10pLmZpbHRlcigodGVtcGxhdGU6IGFueSkgPT5cbiAgICBpc1RlbXBsYXRlVmlzaWJsZSh0ZW1wbGF0ZSwgc2VsZWN0ZWQpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibGFua1RlbXBsYXRlKHByb2R1Y3Q/OiBhbnkpIHtcbiAgY29uc3QgZnJvbVByb2R1Y3QgPSBOdW1iZXIocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXM/LlswXT8ud2lkdGgpXG4gICAgfHwgTnVtYmVyKHByb2R1Y3Q/LmZlYXR1cmVJbWFnZT8ud2lkdGgpXG4gICAgfHwgREVGQVVMVF9BUlRCT0FSRC53aWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gTnVtYmVyKHByb2R1Y3Q/LmRyYWZ0VGVtcGxhdGVzPy5bMF0/LmhlaWdodClcbiAgICB8fCBOdW1iZXIocHJvZHVjdD8uZmVhdHVyZUltYWdlPy5oZWlnaHQpXG4gICAgfHwgREVGQVVMVF9BUlRCT0FSRC5oZWlnaHQ7XG4gIHJldHVybiB7XG4gICAgaWQ6IEJMQU5LX1RFTVBMQVRFX0lELFxuICAgIG5hbWU6ICdBcnR3b3JrJyxcbiAgICB3aWR0aDogZnJvbVByb2R1Y3QsXG4gICAgaGVpZ2h0LFxuICAgIGZpbGU6IG51bGwsXG4gICAgZWRpdGVkQnlWYXJpYXRpb25GaWVsZHM6IFtdLFxuICAgIHNlbGVjdGVkQnlWYXJpYXRpb25GaWVsZE9wdGlvbnM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVzRm9yR3JvdXAoXG4gIHByb2R1Y3Q6IGFueSxcbiAgaW5kZXBlbmRlbnRWYXJpYXRpb25zOiBhbnlbXSxcbiAgZ3JvdXBWYXJpYXRpb25zOiBhbnlbXSxcbik6IGFueVtdIHtcbiAgY29uc3QgdmlzaWJsZSA9IHZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgICBwcm9kdWN0LFxuICAgIGluZGVwZW5kZW50VmFyaWF0aW9ucyxcbiAgICBncm91cFZhcmlhdGlvbnMsXG4gICk7XG4gIHJldHVybiB2aXNpYmxlLmxlbmd0aCA/IHZpc2libGUgOiBbYmxhbmtUZW1wbGF0ZShwcm9kdWN0KV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW52YXNLaW5kRm9yRmllbGRUeXBlKFxuICBmaWVsZFR5cGU6IGFueSxcbik6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSB8IG51bGwge1xuICBzd2l0Y2ggKHBhcnNlSW50KFN0cmluZyhmaWVsZFR5cGUpLCAxMCkpIHtcbiAgICBjYXNlIEZpZWxkVHlwZS5URVhUX0lOUFVUOlxuICAgIGNhc2UgRmllbGRUeXBlLlRFWFRfQVJFQTpcbiAgICBjYXNlIEZpZWxkVHlwZS5OVU1CRVJfSU5QVVQ6XG4gICAgY2FzZSBGaWVsZFR5cGUuU0VMRUNUOlxuICAgIGNhc2UgRmllbGRUeXBlLlJBRElPOlxuICAgIGNhc2UgRmllbGRUeXBlLkNIRUNLQk9YOlxuICAgICAgcmV0dXJuICd0ZXh0JztcbiAgICBjYXNlIEZpZWxkVHlwZS5GSUxFX1VQTE9BRDpcbiAgICBjYXNlIEZpZWxkVHlwZS5JTUFHRV9TRUxFQ1Q6XG4gICAgICByZXR1cm4gJ2ltYWdlJztcbiAgICBjYXNlIEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSOlxuICAgIGNhc2UgRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1Q6XG4gICAgY2FzZSBGaWVsZFR5cGUuQ09MT1VSX0VYVFJBQ1Q6XG4gICAgICByZXR1cm4gJ3JlY3QnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBvcHRpb25CeUlkKHZhcmlhdGlvbjogYW55LCBpZDogbnVtYmVyKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZnJvbVNlbGVjdGFibGUgPSAodmFyaWF0aW9uPy5zZWxlY3RhYmxlT3B0aW9ucyB8fCBbXSkuZmluZChcbiAgICAob3B0aW9uOiBhbnkpID0+IG9wdGlvbi5vcHRpb25JZCA9PT0gaWQgfHwgb3B0aW9uLmlkID09PSBpZFxuICApO1xuICBpZiAoZnJvbVNlbGVjdGFibGUpIHJldHVybiBmcm9tU2VsZWN0YWJsZTtcbiAgcmV0dXJuICh2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkPy5vcHRpb25zIHx8IFtdKS5maW5kKFxuICAgIChvcHRpb246IGFueSkgPT4gb3B0aW9uLmlkID09PSBpZCB8fCBvcHRpb24ub3B0aW9uSWQgPT09IGlkXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYXRpb25DYW52YXNDb250ZW50KHZhcmlhdGlvbjogYW55KToge1xuICBraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUgfCBudWxsO1xuICB0ZXh0Pzogc3RyaW5nO1xuICBzcmM/OiBzdHJpbmc7XG4gIGZpbGw/OiBzdHJpbmc7XG59IHtcbiAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkO1xuICBjb25zdCBraW5kID0gY2FudmFzS2luZEZvckZpZWxkVHlwZShmaWVsZD8uZmllbGRUeXBlKTtcbiAgaWYgKCFraW5kKSByZXR1cm4geyBraW5kOiBudWxsIH07XG5cbiAgY29uc3QgdHlwZSA9IHBhcnNlSW50KFN0cmluZyhmaWVsZC5maWVsZFR5cGUpLCAxMCk7XG5cbiAgaWYgKGtpbmQgPT09ICd0ZXh0Jykge1xuICAgIGlmIChcbiAgICAgIHR5cGUgPT09IEZpZWxkVHlwZS5TRUxFQ1RcbiAgICAgIHx8IHR5cGUgPT09IEZpZWxkVHlwZS5SQURJT1xuICAgICAgfHwgdHlwZSA9PT0gRmllbGRUeXBlLkNIRUNLQk9YXG4gICAgKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IHBhcnNlU2VsZWN0ZWRPcHRpb25JZHModmFyaWF0aW9uLnZhbHVlKVxuICAgICAgICAubWFwKChpZCkgPT4gb3B0aW9uQnlJZCh2YXJpYXRpb24sIGlkKT8udmFsdWUpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gICAgICByZXR1cm4geyBraW5kLCB0ZXh0OiBuYW1lcy5qb2luKCcsICcpIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBraW5kLFxuICAgICAgdGV4dDogdmFyaWF0aW9uPy52YWx1ZSAhPSBudWxsICYmIHZhcmlhdGlvbi52YWx1ZSAhPT0gJydcbiAgICAgICAgPyBTdHJpbmcodmFyaWF0aW9uLnZhbHVlKVxuICAgICAgICA6ICcnLFxuICAgIH07XG4gIH1cblxuICBpZiAoa2luZCA9PT0gJ2ltYWdlJykge1xuICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuRklMRV9VUExPQUQpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSAodmFyaWF0aW9uPy52YXJpYXRpb25GaWxlcyB8fCBbXSlbMF07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kLFxuICAgICAgICBzcmM6IGZpbGU/LnZpZXdVcmwgfHwgZmlsZT8uY2FjaGVkVmlld1VybCB8fCAnJyxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGlkcyA9IHBhcnNlU2VsZWN0ZWRPcHRpb25JZHModmFyaWF0aW9uLnZhbHVlKTtcbiAgICBjb25zdCBvcHRpb24gPSBpZHMubGVuZ3RoID8gb3B0aW9uQnlJZCh2YXJpYXRpb24sIGlkc1swXSkgOiBudWxsO1xuICAgIGNvbnN0IGZpbGUgPSBvcHRpb24/LmxpbmtlZEZpbGU7XG4gICAgcmV0dXJuIHsga2luZCwgc3JjOiBmaWxlPy52aWV3VXJsIHx8IGZpbGU/LmNhY2hlZFZpZXdVcmwgfHwgJycgfTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBGaWVsZFR5cGUuQ09MT1VSX1BJQ0tFUikge1xuICAgIHJldHVybiB7IGtpbmQsIGZpbGw6IG5vcm1hbGlzZUNzc0NvbG91cih2YXJpYXRpb24/LnZhbHVlKSB8fCAnIzAwMDAwMCcgfTtcbiAgfVxuICBjb25zdCBpZHMgPSBwYXJzZVNlbGVjdGVkT3B0aW9uSWRzKHZhcmlhdGlvbi52YWx1ZSk7XG4gIGNvbnN0IG9wdGlvbiA9IGlkcy5sZW5ndGggPyBvcHRpb25CeUlkKHZhcmlhdGlvbiwgaWRzWzBdKSA6IG51bGw7XG4gIGNvbnN0IHNlbGVjdGVkID0gKHZhcmlhdGlvbj8uc2VsZWN0ZWRPcHRpb25zIHx8IFtdKVswXTtcbiAgcmV0dXJuIHtcbiAgICBraW5kLFxuICAgIGZpbGw6IG5vcm1hbGlzZUNzc0NvbG91cihcbiAgICAgIG9wdGlvbj8uY29sb3VyLFxuICAgICAgc2VsZWN0ZWQ/LmNvbG91cixcbiAgICAgIG9wdGlvbj8udmFsdWUsXG4gICAgICBzZWxlY3RlZD8udmFsdWUsXG4gICAgICB2YXJpYXRpb24/LnZhbHVlLFxuICAgICksXG4gIH07XG59XG5cbmNvbnN0IEhFWF9DT0xPVVIgPSAvXiMoWzAtOWEtZl17M318WzAtOWEtZl17Nn18WzAtOWEtZl17OH0pJC9pO1xuY29uc3QgQ1NTX0ZVTkNUSU9OX0NPTE9VUiA9IC9eKHJnYmE/fGhzbGE/KVxcKC9pO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXNlQ3NzQ29sb3VyKC4uLmNhbmRpZGF0ZXM6IGFueVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSBjb250aW51ZTtcbiAgICBjb25zdCByYXcgPSBTdHJpbmcodmFsdWUpLnRyaW0oKTtcbiAgICBpZiAoIXJhdyB8fCAvXlxcZCskLy50ZXN0KHJhdykpIGNvbnRpbnVlO1xuICAgIGlmIChIRVhfQ09MT1VSLnRlc3QocmF3KSkge1xuICAgICAgaWYgKHJhdy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgcmV0dXJuIGAjJHtyYXdbMV19JHtyYXdbMV19JHtyYXdbMl19JHtyYXdbMl19JHtyYXdbM119JHtyYXdbM119YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByYXc7XG4gICAgfVxuICAgIGlmIChDU1NfRlVOQ1RJT05fQ09MT1VSLnRlc3QocmF3KSkgcmV0dXJuIHJhdztcbiAgICBpZiAoL15bYS16XVthLXpcXHMtXXsyLH0kL2kudGVzdChyYXcpKSByZXR1cm4gcmF3O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rZWRWYXJpYXRpb25zRm9yVGVtcGxhdGUoXG4gIHRlbXBsYXRlOiBhbnksXG4gIHZhcmlhdGlvbnM6IGFueVtdLFxuKTogYW55W10ge1xuICBjb25zdCBsaW5rZWRJZHMgPSBuZXcgU2V0KFxuICAgICh0ZW1wbGF0ZT8uZWRpdGVkQnlWYXJpYXRpb25GaWVsZHMgfHwgW10pXG4gICAgICAubWFwKChmaWVsZDogYW55KSA9PiBmaWVsZD8uaWQpXG4gICAgICAuZmlsdGVyKChpZDogYW55KSA9PiBpZCAhPSBudWxsKVxuICApO1xuICBpZiAoIWxpbmtlZElkcy5zaXplKSByZXR1cm4gW107XG4gIHJldHVybiAodmFyaWF0aW9ucyB8fCBbXSkuZmlsdGVyKCh2YXJpYXRpb24pID0+XG4gICAgbGlua2VkSWRzLmhhcyh2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkPy5pZClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhdGlvbnNGb3JHcm91cChcbiAgZm9ybVZhbHVlczogYW55LFxuICBncm91cEluZGV4OiBudW1iZXIsXG4pOiBhbnlbXSB7XG4gIGNvbnN0IGluZGVwZW5kZW50ID0gZm9ybVZhbHVlcz8udmFyaWF0aW9ucyB8fCBbXTtcbiAgY29uc3QgZ3JvdXAgPSBmb3JtVmFsdWVzPy52YXJpYXRpb25zR3JvdXBzPy5bZ3JvdXBJbmRleF0/LnZhcmlhdGlvbnMgfHwgW107XG4gIHJldHVybiBbLi4uaW5kZXBlbmRlbnQsIC4uLmdyb3VwXTtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZEJib3goYmJveDogYW55KTogYmJveCBpcyBudW1iZXJbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShiYm94KSB8fCBiYm94Lmxlbmd0aCAhPT0gNCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBbeCwgeSwgdywgaF0gPSBiYm94Lm1hcChOdW1iZXIpO1xuICByZXR1cm4gdyA+IDAgJiYgaCA+IDAgJiYgeCA+PSAwICYmIHggPD0gMSAmJiB5ID49IDAgJiYgeSA8PSAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaW9uc0ZvclJvbGUoY3VzdG9taXNhdGlvbk1hcDogYW55LCByb2xlOiBzdHJpbmcpOiBudW1iZXJbXVtdIHtcbiAgY29uc3QgcmVnaW9ucyA9IGN1c3RvbWlzYXRpb25NYXA/LnJlZ2lvbnM7XG4gIGlmICghQXJyYXkuaXNBcnJheShyZWdpb25zKSkgcmV0dXJuIFtdO1xuICByZXR1cm4gcmVnaW9uc1xuICAgIC5maWx0ZXIoKHJlZ2lvbjogYW55KSA9PiByZWdpb24/LnJvbGUgPT09IHJvbGUgJiYgaXNWYWxpZEJib3gocmVnaW9uLmJib3gpKVxuICAgIC5tYXAoKHJlZ2lvbjogYW55KSA9PiByZWdpb24uYmJveC5tYXAoTnVtYmVyKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYm94VG9QaXhlbHMoXG4gIGJib3g6IG51bWJlcltdLFxuICB3aWR0aDogbnVtYmVyLFxuICBoZWlnaHQ6IG51bWJlcixcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBbeCwgeSwgdywgaF0gPSBiYm94O1xuICByZXR1cm4ge1xuICAgIHg6IHggKiB3aWR0aCxcbiAgICB5OiB5ICogaGVpZ2h0LFxuICAgIHdpZHRoOiB3ICogd2lkdGgsXG4gICAgaGVpZ2h0OiBoICogaGVpZ2h0LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmllbGRCaW5kaW5nc0Zyb20odGVtcGxhdGU6IGFueSk6IERyYWZ0RmllbGRCaW5kaW5nW10ge1xuICBjb25zdCByYXcgPSB0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcD8uZmllbGRCaW5kaW5ncztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJhdykpIHJldHVybiBbXTtcbiAgcmV0dXJuIHJhdy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbSAmJiBpdGVtLmZpZWxkSWQgIT0gbnVsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kaW5nRm9yRmllbGQoXG4gIGJpbmRpbmdzOiBEcmFmdEZpZWxkQmluZGluZ1tdLFxuICBmaWVsZElkOiBhbnksXG4pOiBEcmFmdEZpZWxkQmluZGluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGlkID0gTnVtYmVyKGZpZWxkSWQpO1xuICByZXR1cm4gYmluZGluZ3MuZmluZCgoaXRlbSkgPT4gTnVtYmVyKGl0ZW0uZmllbGRJZCkgPT09IGlkKTtcbn1cblxuZnVuY3Rpb24gZmllbGROYW1lKGZpZWxkOiBhbnkpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nKGZpZWxkPy5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBpc0NvbG91cktpbmQoa2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlIHwgbnVsbCk6IGJvb2xlYW4ge1xuICByZXR1cm4ga2luZCA9PT0gJ3JlY3QnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mZXJBcnR3b3JrUm9sZShcbiAgZmllbGQ6IGFueSxcbiAgbGlua2VkRmllbGRzOiBhbnlbXSA9IFtdLFxuKTogRHJhZnRBcnR3b3JrUm9sZSB7XG4gIGNvbnN0IGtpbmQgPSBjYW52YXNLaW5kRm9yRmllbGRUeXBlKGZpZWxkPy5maWVsZFR5cGUpO1xuICBpZiAoa2luZCA9PT0gJ2ltYWdlJykgcmV0dXJuICdpbWFnZSc7XG4gIGlmIChraW5kID09PSAndGV4dCcpIHJldHVybiAndGV4dCc7XG4gIGlmICghaXNDb2xvdXJLaW5kKGtpbmQpKSByZXR1cm4gJ2F1dG8nO1xuICBjb25zdCBuYW1lID0gZmllbGROYW1lKGZpZWxkKTtcbiAgaWYgKC8odGV4dHxmb250fGxldHRlcnxjb3B5KS8udGVzdChuYW1lKSkgcmV0dXJuICd0ZXh0X2ZpbGwnO1xuICBpZiAoLyh3cmlzdHxiYW5kfGJhc2V8Ym9keXxncm91bmR8YmxhbmspLy50ZXN0KG5hbWUpKSByZXR1cm4gJ2JvZHlfY29sb3VyX2ZpbGwnO1xuICBjb25zdCBoYXNUZXh0ID0gbGlua2VkRmllbGRzLnNvbWUoXG4gICAgKGl0ZW0pID0+IGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoaXRlbT8uZmllbGRUeXBlKSA9PT0gJ3RleHQnXG4gICk7XG4gIHJldHVybiBoYXNUZXh0ID8gJ3RleHRfZmlsbCcgOiAnYm9keV9jb2xvdXJfZmlsbCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXJ0d29ya1JvbGUoXG4gIGZpZWxkOiBhbnksXG4gIHRlbXBsYXRlOiBhbnksXG4gIGxpbmtlZEZpZWxkczogYW55W10gPSBbXSxcbik6IERyYWZ0QXJ0d29ya1JvbGUge1xuICBjb25zdCBpbmZlcnJlZCA9IGluZmVyQXJ0d29ya1JvbGUoZmllbGQsIGxpbmtlZEZpZWxkcyk7XG4gIGlmIChpbmZlcnJlZCA9PT0gJ2JvZHlfY29sb3VyX2ZpbGwnKSByZXR1cm4gJ2JvZHlfY29sb3VyX2ZpbGwnO1xuICBjb25zdCBiaW5kaW5nID0gYmluZGluZ0ZvckZpZWxkKGZpZWxkQmluZGluZ3NGcm9tKHRlbXBsYXRlKSwgZmllbGQ/LmlkKTtcbiAgaWYgKGJpbmRpbmc/LnJvbGUgJiYgYmluZGluZy5yb2xlICE9PSAnYXV0bycpIHJldHVybiBiaW5kaW5nLnJvbGU7XG4gIHJldHVybiBpbmZlcnJlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluZmVyVGV4dFRhcmdldEZpZWxkSWQoXG4gIGZpZWxkOiBhbnksXG4gIHRlbXBsYXRlOiBhbnksXG4gIGxpbmtlZEZpZWxkczogYW55W10gPSBbXSxcbik6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nRm9yRmllbGQoZmllbGRCaW5kaW5nc0Zyb20odGVtcGxhdGUpLCBmaWVsZD8uaWQpO1xuICBpZiAoYmluZGluZz8udGFyZ2V0RmllbGRJZCAhPSBudWxsKSByZXR1cm4gTnVtYmVyKGJpbmRpbmcudGFyZ2V0RmllbGRJZCk7XG4gIGNvbnN0IHRleHRGaWVsZCA9IGxpbmtlZEZpZWxkcy5maW5kKFxuICAgIChpdGVtKSA9PiBjYW52YXNLaW5kRm9yRmllbGRUeXBlKGl0ZW0/LmZpZWxkVHlwZSkgPT09ICd0ZXh0JyAmJiBpdGVtPy5pZCAhPSBudWxsXG4gICk7XG4gIHJldHVybiB0ZXh0RmllbGQ/LmlkICE9IG51bGwgPyBOdW1iZXIodGV4dEZpZWxkLmlkKSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpdEluc2lkZShcbiAgYm94OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICBjb250ZW50V2lkdGg6IG51bWJlcixcbiAgY29udGVudEhlaWdodDogbnVtYmVyLFxuICBsb2NrQXNwZWN0UmF0aW8gPSB0cnVlLFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gIGlmIChcbiAgICAhbG9ja0FzcGVjdFJhdGlvXG4gICAgfHwgIShjb250ZW50V2lkdGggPiAwKVxuICAgIHx8ICEoY29udGVudEhlaWdodCA+IDApXG4gICAgfHwgIShib3gud2lkdGggPiAwKVxuICAgIHx8ICEoYm94LmhlaWdodCA+IDApXG4gICkge1xuICAgIHJldHVybiB7IC4uLmJveCB9O1xuICB9XG4gIGNvbnN0IHNjYWxlID0gTWF0aC5taW4oYm94LndpZHRoIC8gY29udGVudFdpZHRoLCBib3guaGVpZ2h0IC8gY29udGVudEhlaWdodCk7XG4gIGNvbnN0IHdpZHRoID0gY29udGVudFdpZHRoICogc2NhbGU7XG4gIGNvbnN0IGhlaWdodCA9IGNvbnRlbnRIZWlnaHQgKiBzY2FsZTtcbiAgcmV0dXJuIHtcbiAgICB4OiBib3gueCArIChib3gud2lkdGggLSB3aWR0aCkgLyAyLFxuICAgIHk6IGJveC55ICsgKGJveC5oZWlnaHQgLSBoZWlnaHQpIC8gMixcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRMb2NrSW1hZ2VBc3BlY3QoZmllbGQ6IGFueSwgdGVtcGxhdGU/OiBhbnkpOiBib29sZWFuIHtcbiAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdGb3JGaWVsZChmaWVsZEJpbmRpbmdzRnJvbSh0ZW1wbGF0ZSksIGZpZWxkPy5pZCk7XG4gIGlmICh0eXBlb2YgYmluZGluZz8ubG9ja0FzcGVjdFJhdGlvID09PSAnYm9vbGVhbicpIHJldHVybiBiaW5kaW5nLmxvY2tBc3BlY3RSYXRpbztcbiAgaWYgKHR5cGVvZiBmaWVsZD8uYXNwZWN0UmF0aW9Mb2NrID09PSAnYm9vbGVhbicpIHJldHVybiBmaWVsZC5hc3BlY3RSYXRpb0xvY2s7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCYWNrZ3JvdW5kRmlsbChvYmo6IHsgdHlwZT86IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBvYmo/LnR5cGUgPT09ICdyZWN0Jztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVsbEFydGJvYXJkRmlsbChcbiAgb2JqOiB7IHg/OiBudW1iZXI7IHk/OiBudW1iZXI7IHdpZHRoPzogbnVtYmVyOyBoZWlnaHQ/OiBudW1iZXIgfSxcbiAgYXJ0V2lkdGg6IG51bWJlcixcbiAgYXJ0SGVpZ2h0OiBudW1iZXIsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBOdW1iZXIob2JqLndpZHRoKSA+PSBhcnRXaWR0aCAqIDAuOVxuICAgICYmIE51bWJlcihvYmouaGVpZ2h0KSA+PSBhcnRIZWlnaHQgKiAwLjlcbiAgICAmJiBOdW1iZXIob2JqLngpIDw9IGFydFdpZHRoICogMC4wNVxuICAgICYmIE51bWJlcihvYmoueSkgPD0gYXJ0SGVpZ2h0ICogMC4wNVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVhc3VyZURyYWZ0VGV4dChcbiAgdGV4dDogc3RyaW5nLFxuICBmb250U2l6ZSA9IDQ4LFxuICBmb250RmFtaWx5Pzogc3RyaW5nLFxuKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgY29uc3QgbGluZXMgPSBTdHJpbmcodGV4dCB8fCAnVGV4dCcpLnNwbGl0KCdcXG4nKTtcbiAgY29uc3Qgc2l6ZSA9IE1hdGgubWF4KDEyLCBOdW1iZXIoZm9udFNpemUpIHx8IDQ4KTtcbiAgbGV0IHdpZHRoID0gMDtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguZm9udCA9IGAke3NpemV9cHggJHtjc3NGb250RmFtaWx5KGZvbnRGYW1pbHkpfWA7XG4gICAgICB3aWR0aCA9IE1hdGgubWF4KC4uLmxpbmVzLm1hcCgobGluZSkgPT4gY3R4Lm1lYXN1cmVUZXh0KGxpbmUgfHwgJyAnKS53aWR0aCksIDApO1xuICAgIH1cbiAgfVxuICBpZiAoISh3aWR0aCA+IDApKSB7XG4gICAgd2lkdGggPSBNYXRoLm1heCguLi5saW5lcy5tYXAoKGxpbmUpID0+IChsaW5lIHx8ICcgJykubGVuZ3RoKSwgMSkgKiBzaXplICogMC42MjtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoOiBNYXRoLmNlaWwod2lkdGggKyBzaXplICogMC4xNiksXG4gICAgaGVpZ2h0OiBNYXRoLmNlaWwoTWF0aC5tYXgoMSwgbGluZXMubGVuZ3RoKSAqIHNpemUgKiAxLjE1KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpdFRleHRCb3goXG4gIG9iajogUGljazxEcmFmdENhbnZhc09iamVjdCwgJ3gnIHwgJ3knIHwgJ3dpZHRoJyB8ICdoZWlnaHQnIHwgJ3RleHQnIHwgJ2ZvbnRTaXplJyB8ICdmb250RmFtaWx5Jz4sXG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgY29uc3QgbWVhc3VyZWQgPSBtZWFzdXJlRHJhZnRUZXh0KG9iai50ZXh0IHx8ICdUZXh0Jywgb2JqLmZvbnRTaXplLCBvYmouZm9udEZhbWlseSk7XG4gIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgoMjQsIG1lYXN1cmVkLndpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgoMjAsIG1lYXN1cmVkLmhlaWdodCk7XG4gIGNvbnN0IHByZXZXID0gTnVtYmVyKG9iai53aWR0aCkgPiAwID8gTnVtYmVyKG9iai53aWR0aCkgOiB3aWR0aDtcbiAgY29uc3QgcHJldkggPSBOdW1iZXIob2JqLmhlaWdodCkgPiAwID8gTnVtYmVyKG9iai5oZWlnaHQpIDogaGVpZ2h0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAoTnVtYmVyKG9iai54KSB8fCAwKSArIChwcmV2VyAtIHdpZHRoKSAvIDIsXG4gICAgeTogKE51bWJlcihvYmoueSkgfHwgMCkgKyAocHJldkggLSBoZWlnaHQpIC8gMixcbiAgfTtcbn1cblxuZnVuY3Rpb24gcGxhY2VtZW50Qm94ZXMoXG4gIHJvbGU6IERyYWZ0QXJ0d29ya1JvbGUsXG4gIGtpbmQ6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSxcbiAgdGVtcGxhdGU6IGFueSxcbik6IG51bWJlcltdW10ge1xuICBpZiAocm9sZSA9PT0gJ2JvZHlfY29sb3VyX2ZpbGwnIHx8IGtpbmQgPT09ICdyZWN0Jykge1xuICAgIGNvbnN0IGJvZHkgPSByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ2JvZHlfY29sb3VyX2ZpbGwnKTtcbiAgICBpZiAoYm9keS5sZW5ndGgpIHJldHVybiBib2R5O1xuICAgIGNvbnN0IHByaW50ID0gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICdwcmludF9hcmVhJyk7XG4gICAgaWYgKHByaW50Lmxlbmd0aCkgcmV0dXJuIHByaW50O1xuICAgIHJldHVybiBbWzAsIDAsIDEsIDFdXTtcbiAgfVxuICBpZiAoa2luZCA9PT0gJ3RleHQnKSB7XG4gICAgY29uc3QgcGxhY2Vob2xkZXJzID0gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICd0ZXh0X3BsYWNlaG9sZGVyJyk7XG4gICAgaWYgKHBsYWNlaG9sZGVycy5sZW5ndGgpIHJldHVybiBwbGFjZWhvbGRlcnM7XG4gICAgcmV0dXJuIHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAncHJpbnRfYXJlYScpO1xuICB9XG4gIHJldHVybiByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3ByaW50X2FyZWEnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRQbGFjZW1lbnQoXG4gIGtpbmQ6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSxcbiAgaW5kZXg6IG51bWJlcixcbiAgYXJ0V2lkdGg6IG51bWJlcixcbiAgYXJ0SGVpZ2h0OiBudW1iZXIsXG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgY29uc3QgcGFkID0gTWF0aC5tYXgoMjQsIGFydFdpZHRoICogMC4wNCk7XG4gIGlmIChraW5kID09PSAnaW1hZ2UnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGFydFdpZHRoICogMC4yLFxuICAgICAgeTogYXJ0SGVpZ2h0ICogMC4yLFxuICAgICAgd2lkdGg6IGFydFdpZHRoICogMC42LFxuICAgICAgaGVpZ2h0OiBhcnRIZWlnaHQgKiAwLjYsXG4gICAgfTtcbiAgfVxuICBpZiAoa2luZCA9PT0gJ3JlY3QnKSB7XG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCwgd2lkdGg6IGFydFdpZHRoLCBoZWlnaHQ6IGFydEhlaWdodCB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogcGFkLFxuICAgIHk6IHBhZCArIGluZGV4ICogTWF0aC5tYXgoNjQsIGFydEhlaWdodCAqIDAuMDgpLFxuICAgIHdpZHRoOiBhcnRXaWR0aCAtIHBhZCAqIDIsXG4gICAgaGVpZ2h0OiBNYXRoLm1heCg1NiwgYXJ0SGVpZ2h0ICogMC4wNyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPYmplY3RJZCgpOiBzdHJpbmcge1xuICByZXR1cm4gYG9iai0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlZWRPclN5bmNDYW52YXMoXG4gIGV4aXN0aW5nOiBEcmFmdENhbnZhc1N0YXRlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdGVtcGxhdGU6IGFueSxcbiAgdmFyaWF0aW9uczogYW55W10sXG4pOiBEcmFmdENhbnZhc1N0YXRlIHtcbiAgY29uc3Qgd2lkdGggPSBOdW1iZXIodGVtcGxhdGU/LndpZHRoKSB8fCBERUZBVUxUX0FSVEJPQVJELndpZHRoO1xuICBjb25zdCBoZWlnaHQgPSBOdW1iZXIodGVtcGxhdGU/LmhlaWdodCkgfHwgREVGQVVMVF9BUlRCT0FSRC5oZWlnaHQ7XG4gIGNvbnN0IG9iamVjdHM6IERyYWZ0Q2FudmFzT2JqZWN0W10gPSAoZXhpc3Rpbmc/Lm9iamVjdHMgfHwgW10pLm1hcCgob2JqKSA9PiAoXG4gICAgb2JqLnR5cGUgPT09ICd0ZXh0JyA/IHsgLi4ub2JqLCAuLi5maXRUZXh0Qm94KG9iaikgfSA6IHsgLi4ub2JqIH1cbiAgKSk7XG4gIGNvbnN0IGRldGFjaGVkID0gbmV3IFNldChleGlzdGluZz8uZGV0YWNoZWRGaWVsZElkcyB8fCBbXSk7XG4gIGNvbnN0IGxpbmtlZCA9IGxpbmtlZFZhcmlhdGlvbnNGb3JUZW1wbGF0ZSh0ZW1wbGF0ZSwgdmFyaWF0aW9ucyk7XG4gIGNvbnN0IGxpbmtlZEZpZWxkcyA9IGxpbmtlZC5tYXAoKHZhcmlhdGlvbikgPT4gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZCkuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCB1c2VkUmVnaW9uczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgdmFyaWF0aW9uIG9mIGxpbmtlZCkge1xuICAgIGNvbnN0IGZpZWxkID0gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZDtcbiAgICBpZiAocmVzb2x2ZUFydHdvcmtSb2xlKGZpZWxkLCB0ZW1wbGF0ZSwgbGlua2VkRmllbGRzKSAhPT0gJ3RleHRfZmlsbCcpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGluZGV4ID0gb2JqZWN0cy5maW5kSW5kZXgoXG4gICAgICAob2JqKSA9PiBvYmoubWVyY2hpRmllbGRJZCA9PT0gZmllbGQ/LmlkICYmIG9iai50eXBlID09PSAncmVjdCdcbiAgICApO1xuICAgIGlmIChpbmRleCA+PSAwKSBvYmplY3RzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBjb25zdCBhcHBseUNvbG91clRvVGV4dCA9ICh0YXJnZXRGaWVsZElkOiBudW1iZXIgfCB1bmRlZmluZWQsIGZpbGw/OiBzdHJpbmcsIGNvbG91ckZpZWxkSWQ/OiBudW1iZXIpID0+IHtcbiAgICBpZiAoIWZpbGwgfHwgdGFyZ2V0RmllbGRJZCA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgdGV4dE9iaiA9IG9iamVjdHMuZmluZCgob2JqKSA9PiBvYmoubWVyY2hpRmllbGRJZCA9PT0gdGFyZ2V0RmllbGRJZCAmJiBvYmoudHlwZSA9PT0gJ3RleHQnKTtcbiAgICBpZiAoIXRleHRPYmopIHJldHVybiBmYWxzZTtcbiAgICB0ZXh0T2JqLmZpbGwgPSBmaWxsO1xuICAgIHRleHRPYmouY29sb3VyRmllbGRJZCA9IGNvbG91ckZpZWxkSWQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgY29uc3QgcGxhY2VPYmplY3QgPSAoXG4gICAga2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICAgIHJvbGU6IERyYWZ0QXJ0d29ya1JvbGUsXG4gICAgZmllbGQ6IGFueSxcbiAgICBmaWVsZElkOiBudW1iZXIsXG4gICAgY29udGVudDogUmV0dXJuVHlwZTx0eXBlb2YgdmFyaWF0aW9uQ2FudmFzQ29udGVudD4sXG4gICkgPT4ge1xuICAgIGNvbnN0IGJveGVzID0gcGxhY2VtZW50Qm94ZXMocm9sZSwga2luZCwgdGVtcGxhdGUpO1xuICAgIGNvbnN0IGtleSA9IGAke3JvbGV9OiR7a2luZH1gO1xuICAgIGNvbnN0IHJlZ2lvbkluZGV4ID0gdXNlZFJlZ2lvbnNba2V5XSB8fCAwO1xuICAgIHVzZWRSZWdpb25zW2tleV0gPSByZWdpb25JbmRleCArIDE7XG4gICAgY29uc3QgYm94ID0gYm94ZXNbcmVnaW9uSW5kZXhdIHx8IGJveGVzWzBdO1xuICAgIGNvbnN0IHBsYWNlID0gYm94XG4gICAgICA/IGJib3hUb1BpeGVscyhib3gsIHdpZHRoLCBoZWlnaHQpXG4gICAgICA6IGRlZmF1bHRQbGFjZW1lbnQoa2luZCwgb2JqZWN0cy5sZW5ndGgsIHdpZHRoLCBoZWlnaHQpO1xuICAgIGNvbnN0IGxvY2tBc3BlY3RSYXRpbyA9IGtpbmQgPT09ICdpbWFnZScgPyBzaG91bGRMb2NrSW1hZ2VBc3BlY3QoZmllbGQsIHRlbXBsYXRlKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBuZXh0OiBEcmFmdENhbnZhc09iamVjdCA9IHtcbiAgICAgIGlkOiBjcmVhdGVPYmplY3RJZCgpLFxuICAgICAgdHlwZToga2luZCxcbiAgICAgIG1lcmNoaUZpZWxkSWQ6IGZpZWxkSWQsXG4gICAgICBhcnR3b3JrUm9sZTogcm9sZSxcbiAgICAgIGxvY2tlZDoga2luZCA9PT0gJ3JlY3QnLFxuICAgICAgcm90YXRpb246IDAsXG4gICAgICBzY2FsZVg6IDEsXG4gICAgICBzY2FsZVk6IDEsXG4gICAgICBsb2NrQXNwZWN0UmF0aW8sXG4gICAgICAuLi5wbGFjZSxcbiAgICAgIHRleHQ6IGNvbnRlbnQudGV4dCxcbiAgICAgIHNyYzogY29udGVudC5zcmMsXG4gICAgICBmaWxsOiBjb250ZW50LmZpbGwgfHwgKGtpbmQgPT09ICd0ZXh0JyA/ICcjMTExMTExJyA6IHVuZGVmaW5lZCksXG4gICAgICBmb250RmFtaWx5OiBraW5kID09PSAndGV4dCcgPyBERUZBVUxUX0RSQUZUX0ZPTlQgOiB1bmRlZmluZWQsXG4gICAgICBmb250U2l6ZTogTWF0aC5tYXgoMjgsIE1hdGgucm91bmQocGxhY2UuaGVpZ2h0ICogMC42MikpLFxuICAgIH07XG4gICAgaWYgKGtpbmQgPT09ICd0ZXh0JykgT2JqZWN0LmFzc2lnbihuZXh0LCBmaXRUZXh0Qm94KG5leHQpKTtcbiAgICBpZiAoa2luZCA9PT0gJ3JlY3QnKSBvYmplY3RzLnVuc2hpZnQobmV4dCk7XG4gICAgZWxzZSBvYmplY3RzLnB1c2gobmV4dCk7XG4gIH07XG5cbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgbGlua2VkKSB7XG4gICAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkO1xuICAgIGNvbnN0IGZpZWxkSWQgPSBmaWVsZD8uaWQ7XG4gICAgY29uc3QgY29udGVudCA9IHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQodmFyaWF0aW9uKTtcbiAgICBpZiAoIWNvbnRlbnQua2luZCB8fCBmaWVsZElkID09IG51bGwgfHwgZGV0YWNoZWQuaGFzKGZpZWxkSWQpKSBjb250aW51ZTtcbiAgICBjb25zdCByb2xlID0gcmVzb2x2ZUFydHdvcmtSb2xlKGZpZWxkLCB0ZW1wbGF0ZSwgbGlua2VkRmllbGRzKTtcbiAgICBpZiAocm9sZSA9PT0gJ3RleHRfZmlsbCcpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZm91bmQgPSBvYmplY3RzLmZpbmQoKG9iaikgPT4gb2JqLm1lcmNoaUZpZWxkSWQgPT09IGZpZWxkSWQpO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ3RleHQnICYmIGNvbnRlbnQudGV4dCAhPSBudWxsKSB7XG4gICAgICAgIGZvdW5kLnRleHQgPSBjb250ZW50LnRleHQ7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZm91bmQsIGZpdFRleHRCb3goZm91bmQpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb250ZW50LmtpbmQgPT09ICdpbWFnZScgJiYgY29udGVudC5zcmMpIGZvdW5kLnNyYyA9IGNvbnRlbnQuc3JjO1xuICAgICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ3JlY3QnICYmIGNvbnRlbnQuZmlsbCkgZm91bmQuZmlsbCA9IGNvbnRlbnQuZmlsbDtcbiAgICAgIGlmIChmb3VuZC50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICAgIGZvdW5kLmxvY2tBc3BlY3RSYXRpbyA9IHNob3VsZExvY2tJbWFnZUFzcGVjdChmaWVsZCwgdGVtcGxhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKGZvdW5kLnR5cGUgPT09ICdyZWN0Jykge1xuICAgICAgICBmb3VuZC5sb2NrZWQgPSB0cnVlO1xuICAgICAgICBmb3VuZC5hcnR3b3JrUm9sZSA9IHJvbGU7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudC5raW5kID09PSAndGV4dCcgJiYgIWNvbnRlbnQudGV4dCkgY29udGludWU7XG4gICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ2ltYWdlJyAmJiAhY29udGVudC5zcmMpIGNvbnRpbnVlO1xuICAgIGlmIChjb250ZW50LmtpbmQgPT09ICdyZWN0JyAmJiAhY29udGVudC5maWxsKSBjb250aW51ZTtcbiAgICBwbGFjZU9iamVjdChjb250ZW50LmtpbmQsIHJvbGUsIGZpZWxkLCBmaWVsZElkLCBjb250ZW50KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgdmFyaWF0aW9uIG9mIGxpbmtlZCkge1xuICAgIGNvbnN0IGZpZWxkID0gdmFyaWF0aW9uPy52YXJpYXRpb25GaWVsZDtcbiAgICBjb25zdCBmaWVsZElkID0gZmllbGQ/LmlkO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB2YXJpYXRpb25DYW52YXNDb250ZW50KHZhcmlhdGlvbik7XG4gICAgaWYgKGZpZWxkSWQgPT0gbnVsbCB8fCBkZXRhY2hlZC5oYXMoZmllbGRJZCkgfHwgIWNvbnRlbnQuZmlsbCkgY29udGludWU7XG4gICAgY29uc3Qgcm9sZSA9IHJlc29sdmVBcnR3b3JrUm9sZShmaWVsZCwgdGVtcGxhdGUsIGxpbmtlZEZpZWxkcyk7XG4gICAgaWYgKHJvbGUgIT09ICd0ZXh0X2ZpbGwnKSBjb250aW51ZTtcbiAgICBjb25zdCB0YXJnZXRJZCA9IGluZmVyVGV4dFRhcmdldEZpZWxkSWQoZmllbGQsIHRlbXBsYXRlLCBsaW5rZWRGaWVsZHMpO1xuICAgIGFwcGx5Q29sb3VyVG9UZXh0KHRhcmdldElkLCBjb250ZW50LmZpbGwsIGZpZWxkSWQpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgb2JqZWN0cyxcbiAgICBkZXRhY2hlZEZpZWxkSWRzOiBBcnJheS5mcm9tKGRldGFjaGVkKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaEZpZWxkKFxuICBzdGF0ZTogRHJhZnRDYW52YXNTdGF0ZSxcbiAgb2JqZWN0SWQ6IHN0cmluZyxcbik6IERyYWZ0Q2FudmFzU3RhdGUge1xuICBjb25zdCB0YXJnZXQgPSBzdGF0ZS5vYmplY3RzLmZpbmQoKG9iaikgPT4gb2JqLmlkID09PSBvYmplY3RJZCk7XG4gIGNvbnN0IGRldGFjaGVkRmllbGRJZHMgPSBbLi4uKHN0YXRlLmRldGFjaGVkRmllbGRJZHMgfHwgW10pXTtcbiAgaWYgKHRhcmdldD8ubWVyY2hpRmllbGRJZCAhPSBudWxsICYmICFkZXRhY2hlZEZpZWxkSWRzLmluY2x1ZGVzKHRhcmdldC5tZXJjaGlGaWVsZElkKSkge1xuICAgIGRldGFjaGVkRmllbGRJZHMucHVzaCh0YXJnZXQubWVyY2hpRmllbGRJZCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBvYmplY3RzOiBzdGF0ZS5vYmplY3RzLmZpbHRlcigob2JqKSA9PiBvYmouaWQgIT09IG9iamVjdElkKSxcbiAgICBkZXRhY2hlZEZpZWxkSWRzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRBcmVhR3VpZGVzKHRlbXBsYXRlOiBhbnkpOiBBcnJheTx7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn0+IHtcbiAgY29uc3Qgd2lkdGggPSBOdW1iZXIodGVtcGxhdGU/LndpZHRoKSB8fCBERUZBVUxUX0FSVEJPQVJELndpZHRoO1xuICBjb25zdCBoZWlnaHQgPSBOdW1iZXIodGVtcGxhdGU/LmhlaWdodCkgfHwgREVGQVVMVF9BUlRCT0FSRC5oZWlnaHQ7XG4gIHJldHVybiByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3ByaW50X2FyZWEnKS5tYXAoKGJib3gpID0+XG4gICAgYmJveFRvUGl4ZWxzKGJib3gsIHdpZHRoLCBoZWlnaHQpXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FDRUEsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFNaEJDLFNBQVMsUUFDSixTQUFTO0FBQ2hCLFNBQVNDLGtCQUFrQixFQUFFQyxhQUFhLFFBQVEsY0FBYztBQUNoRSxTQUFTQyxnQkFBZ0IsUUFBUSxZQUFZO0FBRTdDLE9BQU8sU0FBU0Msd0JBQXdCQSxDQUFDQyxPQUFZLEVBQVc7RUFDOUQsT0FBT0MsS0FBSyxDQUFDQyxPQUFPLENBQUNGLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFRyxjQUFjLENB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QUFRO0VBQ3ZDLENBQUM7QUFDSDtBQUVBLE9BQU8sU0FBU3VDLFdBQVdBLENBQ3pCQyxLQUF1QixFQUN2QkMsUUFBZ0IsRUFDRTtFQUNsQixJQUFNQyxNQUFNLEdBQUdGLEtBQUssQ0FBQ3pDLE9BQU8sQ0FBQy9ILElBQUksQ0FBQyxVQUFDeUYsR0FBRztJQUFBLE9BQUtBLEdBQUcsQ0FBQzVJLEVBQUUsS0FBSzROLFFBQVE7RUFBQSxFQUFDO0VBQy9ELElBQU14QyxnQkFBZ0IsR0FBQWxLLGtCQUFBLENBQVF5TSxLQUFLLENBQUN2QyxnQkFBZ0IsSUFBSSxFQUFFLENBQUU7RUFDNUQsSUFBSSxDQUFBeUMsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVsQyxhQUFhLEtBQUksSUFBSSxJQUFJLENBQUNQLGdCQUFnQixDQUFDMEMsUUFBUSxDQUFDRCxNQUFNLENBQUNsQyxhQUFhLENBQUMsRUFBRTtJQUNyRlAsZ0JBQWdCLENBQUM0QixJQUFJLENBQUNhLE1BQU0sQ0FBQ2xDLGFBQWEsQ0FBQztFQUM3QztFQUNBLE9BQUF0RCxhQUFBLENBQUFBLGFBQUEsS0FDS3NGLEtBQUs7SUFDUnpDLE9BQU8sRUFBRXlDLEtBQUssQ0FBQ3pDLE9BQU8sQ0FBQ2hNLE1BQU0sQ0FBQyxVQUFDMEosR0FBRztNQUFBLE9BQUtBLEdBQUcsQ0FBQzVJLEVBQUUsS0FBSzROLFFBQVE7SUFBQSxFQUFDO0lBQzNEeEMsZ0JBQWdCLEVBQWhCQTtFQUFnQjtBQUVwQjtBQUVBLE9BQU8sU0FBUzJDLGVBQWVBLENBQUN6TixRQUFhLEVBSzFDO0VBQ0QsSUFBTW9CLEtBQUssR0FBR0QsTUFBTSxDQUFDbkIsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVvQixLQUFLLENBQUMsSUFBSXJFLGdCQUFnQixDQUFDcUUsS0FBSztFQUMvRCxJQUFNRSxNQUFNLEdBQUdILE1BQU0sQ0FBQ25CLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFc0IsTUFBTSxDQUFDLElBQUl2RSxnQkFBZ0IsQ0FBQ3VFLE1BQU07RUFDbEUsT0FBT3lFLGNBQWMsQ0FBQy9GLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFZ0csZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUN4SCxHQUFHLENBQUMsVUFBQytHLElBQUk7SUFBQSxPQUN2RWEsWUFBWSxDQUFDYixJQUFJLEVBQUVuRSxLQUFLLEVBQUVFLE1BQU0sQ0FBQztFQUFBLENBQ25DLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
627
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCTEFOS19URU1QTEFURV9JRCIsIkRFRkFVTFRfQVJUQk9BUkQiLCJGaWVsZFR5cGUiLCJERUZBVUxUX0RSQUZUX0ZPTlQiLCJjc3NGb250RmFtaWx5IiwicHJvZHVjdEhhc0dyb3VwcyIsInByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyIsInByb2R1Y3QiLCJBcnJheSIsImlzQXJyYXkiLCJkcmFmdFRlbXBsYXRlcyIsImxlbmd0aCIsInByb2R1Y3RBbGxvd3NDbGllbnREZXNpZ24iLCJCb29sZWFuIiwibmVlZHNEcmFmdGluZyIsImFsbG93Q2xpZW50RHJhZnRDb250cmlidXRpb24iLCJwcm9kdWN0SGFzVmFyaWF0aW9uR3JvdXBzIiwiZGVzaWduR3JvdXBDb3VudCIsImZvcm1WYWx1ZXMiLCJncm91cHMiLCJ2YXJpYXRpb25zR3JvdXBzIiwicGFyc2VTZWxlY3RlZE9wdGlvbklkcyIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwic3BsaXQiLCJtYXAiLCJzIiwicGFyc2VJbnQiLCJ0cmltIiwiZmlsdGVyIiwibiIsImlzTmFOIiwic2VsZWN0ZWRPcHRpb25JZHNGcm9tVmFyaWF0aW9ucyIsInZhcmlhdGlvbnMiLCJpZHMiLCJTZXQiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwiZG9uZSIsInZhcmlhdGlvbiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJpZCIsImFkZCIsImVyciIsImUiLCJmIiwiaXNUZW1wbGF0ZVZpc2libGUiLCJ0ZW1wbGF0ZSIsInNlbGVjdGVkT3B0aW9uSWRzIiwicmVxdWlyZWQiLCJzZWxlY3RlZEJ5VmFyaWF0aW9uRmllbGRPcHRpb25zIiwiZXZlcnkiLCJvcHQiLCJoYXMiLCJ2aXNpYmxlVGVtcGxhdGVzRm9yR3JvdXAiLCJpbmRlcGVuZGVudFZhcmlhdGlvbnMiLCJncm91cFZhcmlhdGlvbnMiLCJzZWxlY3RlZCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsImJsYW5rVGVtcGxhdGUiLCJfcHJvZHVjdCRkcmFmdFRlbXBsYXQiLCJfcHJvZHVjdCRmZWF0dXJlSW1hZ2UiLCJfcHJvZHVjdCRkcmFmdFRlbXBsYXQyIiwiX3Byb2R1Y3QkZmVhdHVyZUltYWdlMiIsImZyb21Qcm9kdWN0IiwiTnVtYmVyIiwid2lkdGgiLCJmZWF0dXJlSW1hZ2UiLCJoZWlnaHQiLCJuYW1lIiwiZmlsZSIsImVkaXRlZEJ5VmFyaWF0aW9uRmllbGRzIiwidGVtcGxhdGVzRm9yR3JvdXAiLCJ2aXNpYmxlIiwidGVtcGxhdGVIYXNGaWxlIiwiZG93bmxvYWRVcmwiLCJjYWNoZWREb3dubG9hZFVybCIsInZpZXdVcmwiLCJjYWNoZWRWaWV3VXJsIiwidW5pcXVlRmlsZVRlbXBsYXRlcyIsInRlbXBsYXRlcyIsInNlZW4iLCJyZXN1bHQiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwia2V5IiwicHVzaCIsImRvd25sb2FkYWJsZURyYWZ0VGVtcGxhdGVzIiwiaW5kZXBlbmRlbnQiLCJtYXRjaGVkIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsImdyb3VwIiwiYXBwbHkiLCJjYW52YXNLaW5kRm9yRmllbGRUeXBlIiwiZmllbGRUeXBlIiwiVEVYVF9JTlBVVCIsIlRFWFRfQVJFQSIsIk5VTUJFUl9JTlBVVCIsIlNFTEVDVCIsIlJBRElPIiwiQ0hFQ0tCT1giLCJGSUxFX1VQTE9BRCIsIklNQUdFX1NFTEVDVCIsIkNPTE9VUl9QSUNLRVIiLCJDT0xPVVJfU0VMRUNUIiwiQ09MT1VSX0VYVFJBQ1QiLCJvcHRpb25CeUlkIiwiX3ZhcmlhdGlvbiR2YXJpYXRpb25GIiwiZnJvbVNlbGVjdGFibGUiLCJzZWxlY3RhYmxlT3B0aW9ucyIsImZpbmQiLCJvcHRpb24iLCJvcHRpb25JZCIsInZhcmlhdGlvbkZpZWxkIiwib3B0aW9ucyIsInZhcmlhdGlvbkNhbnZhc0NvbnRlbnQiLCJmaWVsZCIsImtpbmQiLCJ0eXBlIiwibmFtZXMiLCJfb3B0aW9uQnlJZCIsInRleHQiLCJqb2luIiwidmFyaWF0aW9uRmlsZXMiLCJzcmMiLCJsaW5rZWRGaWxlIiwiZmlsbCIsIm5vcm1hbGlzZUNzc0NvbG91ciIsInNlbGVjdGVkT3B0aW9ucyIsImNvbG91ciIsIkhFWF9DT0xPVVIiLCJDU1NfRlVOQ1RJT05fQ09MT1VSIiwiX2xlbiIsImFyZ3VtZW50cyIsImNhbmRpZGF0ZXMiLCJfa2V5IiwiX2kiLCJfY2FuZGlkYXRlcyIsInJhdyIsInRlc3QiLCJsaW5rZWRWYXJpYXRpb25zRm9yVGVtcGxhdGUiLCJsaW5rZWRJZHMiLCJzaXplIiwiX3ZhcmlhdGlvbiR2YXJpYXRpb25GMiIsInZhcmlhdGlvbnNGb3JHcm91cCIsImdyb3VwSW5kZXgiLCJfZm9ybVZhbHVlcyR2YXJpYXRpb24iLCJpc1ZhbGlkQmJveCIsImJib3giLCJfYmJveCRtYXAiLCJfYmJveCRtYXAyIiwiX3NsaWNlZFRvQXJyYXkiLCJ4IiwieSIsInciLCJoIiwicmVnaW9uc0ZvclJvbGUiLCJjdXN0b21pc2F0aW9uTWFwIiwicm9sZSIsInJlZ2lvbnMiLCJyZWdpb24iLCJiYm94VG9QaXhlbHMiLCJfYmJveCIsImZpZWxkQmluZGluZ3NGcm9tIiwiX3RlbXBsYXRlJGN1c3RvbWlzYXRpIiwiZmllbGRCaW5kaW5ncyIsIml0ZW0iLCJmaWVsZElkIiwiYmluZGluZ0ZvckZpZWxkIiwiYmluZGluZ3MiLCJmaWVsZE5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzQ29sb3VyS2luZCIsImluZmVyQXJ0d29ya1JvbGUiLCJsaW5rZWRGaWVsZHMiLCJoYXNUZXh0Iiwic29tZSIsInJlc29sdmVBcnR3b3JrUm9sZSIsImluZmVycmVkIiwiYmluZGluZyIsImluZmVyVGV4dFRhcmdldEZpZWxkSWQiLCJ0YXJnZXRGaWVsZElkIiwidGV4dEZpZWxkIiwiZml0SW5zaWRlIiwiYm94IiwiY29udGVudFdpZHRoIiwiY29udGVudEhlaWdodCIsImxvY2tBc3BlY3RSYXRpbyIsIl9vYmplY3RTcHJlYWQiLCJzY2FsZSIsIk1hdGgiLCJtaW4iLCJzaG91bGRMb2NrSW1hZ2VBc3BlY3QiLCJhc3BlY3RSYXRpb0xvY2siLCJpc0JhY2tncm91bmRGaWxsIiwib2JqIiwiaXNGdWxsQXJ0Ym9hcmRGaWxsIiwiYXJ0V2lkdGgiLCJhcnRIZWlnaHQiLCJtZWFzdXJlRHJhZnRUZXh0IiwiZm9udFNpemUiLCJmb250RmFtaWx5IiwibGluZXMiLCJtYXgiLCJkb2N1bWVudCIsImNhbnZhcyIsImNyZWF0ZUVsZW1lbnQiLCJjdHgiLCJnZXRDb250ZXh0IiwiZm9udCIsImxpbmUiLCJtZWFzdXJlVGV4dCIsImNlaWwiLCJmaXRUZXh0Qm94IiwibWVhc3VyZWQiLCJwcmV2VyIsInByZXZIIiwicGxhY2VtZW50Qm94ZXMiLCJib2R5IiwicHJpbnQiLCJwbGFjZWhvbGRlcnMiLCJkZWZhdWx0UGxhY2VtZW50IiwiaW5kZXgiLCJwYWQiLCJjcmVhdGVPYmplY3RJZCIsIkRhdGUiLCJub3ciLCJyYW5kb20iLCJ0b1N0cmluZyIsInNsaWNlIiwic2VlZE9yU3luY0NhbnZhcyIsImV4aXN0aW5nIiwib2JqZWN0cyIsImRldGFjaGVkIiwiZGV0YWNoZWRGaWVsZElkcyIsImxpbmtlZCIsInVzZWRSZWdpb25zIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9sb29wIiwiZmluZEluZGV4IiwibWVyY2hpRmllbGRJZCIsInNwbGljZSIsImFwcGx5Q29sb3VyVG9UZXh0IiwiY29sb3VyRmllbGRJZCIsInRleHRPYmoiLCJwbGFjZU9iamVjdCIsImNvbnRlbnQiLCJib3hlcyIsInJlZ2lvbkluZGV4IiwicGxhY2UiLCJuZXh0IiwiYXJ0d29ya1JvbGUiLCJsb2NrZWQiLCJyb3RhdGlvbiIsInNjYWxlWCIsInNjYWxlWSIsInJvdW5kIiwiT2JqZWN0IiwiYXNzaWduIiwidW5zaGlmdCIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJfbG9vcDIiLCJmb3VuZCIsIl9yZXQiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3IiwidGFyZ2V0SWQiLCJmcm9tIiwiZGV0YWNoRmllbGQiLCJzdGF0ZSIsIm9iamVjdElkIiwidGFyZ2V0IiwiaW5jbHVkZXMiLCJwcmludEFyZWFHdWlkZXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZHJhZnRUZW1wbGF0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQkxBTktfVEVNUExBVEVfSUQsXG4gIERFRkFVTFRfQVJUQk9BUkQsXG4gIERyYWZ0QXJ0d29ya1JvbGUsXG4gIERyYWZ0Q2FudmFzT2JqZWN0LFxuICBEcmFmdENhbnZhc09iamVjdFR5cGUsXG4gIERyYWZ0Q2FudmFzU3RhdGUsXG4gIERyYWZ0RmllbGRCaW5kaW5nLFxuICBGaWVsZFR5cGUsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9EUkFGVF9GT05ULCBjc3NGb250RmFtaWx5IH0gZnJvbSAnLi9kcmFmdEZvbnRzJztcbmltcG9ydCB7IHByb2R1Y3RIYXNHcm91cHMgfSBmcm9tICcuL3Byb2R1Y3RzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RIYXNEcmFmdFRlbXBsYXRlcyhwcm9kdWN0OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXMpICYmIHByb2R1Y3QuZHJhZnRUZW1wbGF0ZXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RBbGxvd3NDbGllbnREZXNpZ24ocHJvZHVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIHByb2R1Y3Q/Lm5lZWRzRHJhZnRpbmdcbiAgICAmJiBwcm9kdWN0Py5hbGxvd0NsaWVudERyYWZ0Q29udHJpYnV0aW9uXG4gICAgJiYgcHJvZHVjdEhhc0RyYWZ0VGVtcGxhdGVzKHByb2R1Y3QpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3Vwcyhwcm9kdWN0OiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHByb2R1Y3RIYXNHcm91cHMocHJvZHVjdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNpZ25Hcm91cENvdW50KHByb2R1Y3Q6IGFueSwgZm9ybVZhbHVlczogYW55KTogbnVtYmVyIHtcbiAgaWYgKCFwcm9kdWN0SGFzVmFyaWF0aW9uR3JvdXBzKHByb2R1Y3QpKSByZXR1cm4gMTtcbiAgY29uc3QgZ3JvdXBzID0gZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcztcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZ3JvdXBzKSAmJiBncm91cHMubGVuZ3RoID4gMCA/IGdyb3Vwcy5sZW5ndGggOiAxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YWx1ZTogYW55KTogbnVtYmVyW10ge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAuc3BsaXQoJywnKVxuICAgIC5tYXAoKHMpID0+IHBhcnNlSW50KHMudHJpbSgpLCAxMCkpXG4gICAgLmZpbHRlcigobikgPT4gIWlzTmFOKG4pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnModmFyaWF0aW9uczogYW55W10pOiBTZXQ8bnVtYmVyPiB7XG4gIGNvbnN0IGlkcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHZhcmlhdGlvbiBvZiB2YXJpYXRpb25zIHx8IFtdKSB7XG4gICAgZm9yIChjb25zdCBpZCBvZiBwYXJzZVNlbGVjdGVkT3B0aW9uSWRzKHZhcmlhdGlvbj8udmFsdWUpKSB7XG4gICAgICBpZHMuYWRkKGlkKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGlkcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVtcGxhdGVWaXNpYmxlKFxuICB0ZW1wbGF0ZTogYW55LFxuICBzZWxlY3RlZE9wdGlvbklkczogU2V0PG51bWJlcj4sXG4pOiBib29sZWFuIHtcbiAgY29uc3QgcmVxdWlyZWQgPSB0ZW1wbGF0ZT8uc2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJlcXVpcmVkKSB8fCByZXF1aXJlZC5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xuICByZXR1cm4gcmVxdWlyZWQuZXZlcnkoKG9wdDogYW55KSA9PiBvcHQ/LmlkICYmIHNlbGVjdGVkT3B0aW9uSWRzLmhhcyhvcHQuaWQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgcHJvZHVjdDogYW55LFxuICBpbmRlcGVuZGVudFZhcmlhdGlvbnM6IGFueVtdLFxuICBncm91cFZhcmlhdGlvbnM6IGFueVtdLFxuKTogYW55W10ge1xuICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkT3B0aW9uSWRzRnJvbVZhcmlhdGlvbnMoW1xuICAgIC4uLihpbmRlcGVuZGVudFZhcmlhdGlvbnMgfHwgW10pLFxuICAgIC4uLihncm91cFZhcmlhdGlvbnMgfHwgW10pLFxuICBdKTtcbiAgcmV0dXJuIChwcm9kdWN0Py5kcmFmdFRlbXBsYXRlcyB8fCBbXSkuZmlsdGVyKCh0ZW1wbGF0ZTogYW55KSA9PlxuICAgIGlzVGVtcGxhdGVWaXNpYmxlKHRlbXBsYXRlLCBzZWxlY3RlZClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsYW5rVGVtcGxhdGUocHJvZHVjdD86IGFueSkge1xuICBjb25zdCBmcm9tUHJvZHVjdCA9IE51bWJlcihwcm9kdWN0Py5kcmFmdFRlbXBsYXRlcz8uWzBdPy53aWR0aClcbiAgICB8fCBOdW1iZXIocHJvZHVjdD8uZmVhdHVyZUltYWdlPy53aWR0aClcbiAgICB8fCBERUZBVUxUX0FSVEJPQVJELndpZHRoO1xuICBjb25zdCBoZWlnaHQgPSBOdW1iZXIocHJvZHVjdD8uZHJhZnRUZW1wbGF0ZXM/LlswXT8uaGVpZ2h0KVxuICAgIHx8IE51bWJlcihwcm9kdWN0Py5mZWF0dXJlSW1hZ2U/LmhlaWdodClcbiAgICB8fCBERUZBVUxUX0FSVEJPQVJELmhlaWdodDtcbiAgcmV0dXJuIHtcbiAgICBpZDogQkxBTktfVEVNUExBVEVfSUQsXG4gICAgbmFtZTogJ0FydHdvcmsnLFxuICAgIHdpZHRoOiBmcm9tUHJvZHVjdCxcbiAgICBoZWlnaHQsXG4gICAgZmlsZTogbnVsbCxcbiAgICBlZGl0ZWRCeVZhcmlhdGlvbkZpZWxkczogW10sXG4gICAgc2VsZWN0ZWRCeVZhcmlhdGlvbkZpZWxkT3B0aW9uczogW10sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZXNGb3JHcm91cChcbiAgcHJvZHVjdDogYW55LFxuICBpbmRlcGVuZGVudFZhcmlhdGlvbnM6IGFueVtdLFxuICBncm91cFZhcmlhdGlvbnM6IGFueVtdLFxuKTogYW55W10ge1xuICBjb25zdCB2aXNpYmxlID0gdmlzaWJsZVRlbXBsYXRlc0Zvckdyb3VwKFxuICAgIHByb2R1Y3QsXG4gICAgaW5kZXBlbmRlbnRWYXJpYXRpb25zLFxuICAgIGdyb3VwVmFyaWF0aW9ucyxcbiAgKTtcbiAgcmV0dXJuIHZpc2libGUubGVuZ3RoID8gdmlzaWJsZSA6IFtibGFua1RlbXBsYXRlKHByb2R1Y3QpXTtcbn1cblxuZnVuY3Rpb24gdGVtcGxhdGVIYXNGaWxlKHRlbXBsYXRlOiBhbnkpOiBib29sZWFuIHtcbiAgY29uc3QgZmlsZSA9IHRlbXBsYXRlPy5maWxlO1xuICBpZiAoIWZpbGUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgZmlsZS5pZFxuICAgIHx8IGZpbGUuZG93bmxvYWRVcmxcbiAgICB8fCBmaWxlLmNhY2hlZERvd25sb2FkVXJsXG4gICAgfHwgZmlsZS52aWV3VXJsXG4gICAgfHwgZmlsZS5jYWNoZWRWaWV3VXJsLFxuICApO1xufVxuXG5mdW5jdGlvbiB1bmlxdWVGaWxlVGVtcGxhdGVzKHRlbXBsYXRlczogYW55W10pOiBhbnlbXSB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIHRlbXBsYXRlcykge1xuICAgIGlmICghdGVtcGxhdGVIYXNGaWxlKHRlbXBsYXRlKSkgY29udGludWU7XG4gICAgY29uc3QgZmlsZSA9IHRlbXBsYXRlLmZpbGUgfHwge307XG4gICAgY29uc3Qga2V5ID0gdGVtcGxhdGU/LmlkICE9IG51bGxcbiAgICAgID8gYGlkOiR7dGVtcGxhdGUuaWR9YFxuICAgICAgOiBgZmlsZToke2ZpbGUuaWQgfHwgZmlsZS5kb3dubG9hZFVybCB8fCBmaWxlLnZpZXdVcmx9YDtcbiAgICBpZiAoc2Vlbi5oYXMoa2V5KSkgY29udGludWU7XG4gICAgc2Vlbi5hZGQoa2V5KTtcbiAgICByZXN1bHQucHVzaCh0ZW1wbGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEJsYW5rIHRlbXBsYXRlcyB0aGUgY3VzdG9tZXIgY2FuIGRvd25sb2FkIGZvciB0aGUgb3B0aW9ucyBjdXJyZW50bHkgc2VsZWN0ZWQuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRhYmxlRHJhZnRUZW1wbGF0ZXMocHJvZHVjdDogYW55LCBmb3JtVmFsdWVzOiBhbnkpOiBhbnlbXSB7XG4gIGNvbnN0IGluZGVwZW5kZW50ID0gZm9ybVZhbHVlcz8udmFyaWF0aW9ucyB8fCBbXTtcbiAgY29uc3QgZ3JvdXBzID0gcHJvZHVjdEhhc1ZhcmlhdGlvbkdyb3Vwcyhwcm9kdWN0KVxuICAgICYmIEFycmF5LmlzQXJyYXkoZm9ybVZhbHVlcz8udmFyaWF0aW9uc0dyb3VwcylcbiAgICAmJiBmb3JtVmFsdWVzLnZhcmlhdGlvbnNHcm91cHMubGVuZ3RoXG4gICAgPyBmb3JtVmFsdWVzLnZhcmlhdGlvbnNHcm91cHNcbiAgICA6IFt7fV07XG4gIGNvbnN0IG1hdGNoZWQ6IGFueVtdID0gW107XG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgbWF0Y2hlZC5wdXNoKC4uLnZpc2libGVUZW1wbGF0ZXNGb3JHcm91cChcbiAgICAgIHByb2R1Y3QsXG4gICAgICBpbmRlcGVuZGVudCxcbiAgICAgIGdyb3VwPy52YXJpYXRpb25zIHx8IFtdLFxuICAgICkpO1xuICB9XG4gIGlmIChtYXRjaGVkLmxlbmd0aCkgcmV0dXJuIHVuaXF1ZUZpbGVUZW1wbGF0ZXMobWF0Y2hlZCk7XG4gIHJldHVybiB1bmlxdWVGaWxlVGVtcGxhdGVzKHByb2R1Y3Q/LmRyYWZ0VGVtcGxhdGVzIHx8IFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoXG4gIGZpZWxkVHlwZTogYW55LFxuKTogRHJhZnRDYW52YXNPYmplY3RUeXBlIHwgbnVsbCB7XG4gIHN3aXRjaCAocGFyc2VJbnQoU3RyaW5nKGZpZWxkVHlwZSksIDEwKSkge1xuICAgIGNhc2UgRmllbGRUeXBlLlRFWFRfSU5QVVQ6XG4gICAgY2FzZSBGaWVsZFR5cGUuVEVYVF9BUkVBOlxuICAgIGNhc2UgRmllbGRUeXBlLk5VTUJFUl9JTlBVVDpcbiAgICBjYXNlIEZpZWxkVHlwZS5TRUxFQ1Q6XG4gICAgY2FzZSBGaWVsZFR5cGUuUkFESU86XG4gICAgY2FzZSBGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICByZXR1cm4gJ3RleHQnO1xuICAgIGNhc2UgRmllbGRUeXBlLkZJTEVfVVBMT0FEOlxuICAgIGNhc2UgRmllbGRUeXBlLklNQUdFX1NFTEVDVDpcbiAgICAgIHJldHVybiAnaW1hZ2UnO1xuICAgIGNhc2UgRmllbGRUeXBlLkNPTE9VUl9QSUNLRVI6XG4gICAgY2FzZSBGaWVsZFR5cGUuQ09MT1VSX1NFTEVDVDpcbiAgICBjYXNlIEZpZWxkVHlwZS5DT0xPVVJfRVhUUkFDVDpcbiAgICAgIHJldHVybiAncmVjdCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9wdGlvbkJ5SWQodmFyaWF0aW9uOiBhbnksIGlkOiBudW1iZXIpOiBhbnkgfCB1bmRlZmluZWQge1xuICBjb25zdCBmcm9tU2VsZWN0YWJsZSA9ICh2YXJpYXRpb24/LnNlbGVjdGFibGVPcHRpb25zIHx8IFtdKS5maW5kKFxuICAgIChvcHRpb246IGFueSkgPT4gb3B0aW9uLm9wdGlvbklkID09PSBpZCB8fCBvcHRpb24uaWQgPT09IGlkXG4gICk7XG4gIGlmIChmcm9tU2VsZWN0YWJsZSkgcmV0dXJuIGZyb21TZWxlY3RhYmxlO1xuICByZXR1cm4gKHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ/Lm9wdGlvbnMgfHwgW10pLmZpbmQoXG4gICAgKG9wdGlvbjogYW55KSA9PiBvcHRpb24uaWQgPT09IGlkIHx8IG9wdGlvbi5vcHRpb25JZCA9PT0gaWRcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQodmFyaWF0aW9uOiBhbnkpOiB7XG4gIGtpbmQ6IERyYWZ0Q2FudmFzT2JqZWN0VHlwZSB8IG51bGw7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIHNyYz86IHN0cmluZztcbiAgZmlsbD86IHN0cmluZztcbn0ge1xuICBjb25zdCBmaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ7XG4gIGNvbnN0IGtpbmQgPSBjYW52YXNLaW5kRm9yRmllbGRUeXBlKGZpZWxkPy5maWVsZFR5cGUpO1xuICBpZiAoIWtpbmQpIHJldHVybiB7IGtpbmQ6IG51bGwgfTtcblxuICBjb25zdCB0eXBlID0gcGFyc2VJbnQoU3RyaW5nKGZpZWxkLmZpZWxkVHlwZSksIDEwKTtcblxuICBpZiAoa2luZCA9PT0gJ3RleHQnKSB7XG4gICAgaWYgKFxuICAgICAgdHlwZSA9PT0gRmllbGRUeXBlLlNFTEVDVFxuICAgICAgfHwgdHlwZSA9PT0gRmllbGRUeXBlLlJBRElPXG4gICAgICB8fCB0eXBlID09PSBGaWVsZFR5cGUuQ0hFQ0tCT1hcbiAgICApIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24udmFsdWUpXG4gICAgICAgIC5tYXAoKGlkKSA9PiBvcHRpb25CeUlkKHZhcmlhdGlvbiwgaWQpPy52YWx1ZSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICAgIHJldHVybiB7IGtpbmQsIHRleHQ6IG5hbWVzLmpvaW4oJywgJykgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQsXG4gICAgICB0ZXh0OiB2YXJpYXRpb24/LnZhbHVlICE9IG51bGwgJiYgdmFyaWF0aW9uLnZhbHVlICE9PSAnJ1xuICAgICAgICA/IFN0cmluZyh2YXJpYXRpb24udmFsdWUpXG4gICAgICAgIDogJycsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChraW5kID09PSAnaW1hZ2UnKSB7XG4gICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5GSUxFX1VQTE9BRCkge1xuICAgICAgY29uc3QgZmlsZSA9ICh2YXJpYXRpb24/LnZhcmlhdGlvbkZpbGVzIHx8IFtdKVswXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQsXG4gICAgICAgIHNyYzogZmlsZT8udmlld1VybCB8fCBmaWxlPy5jYWNoZWRWaWV3VXJsIHx8ICcnLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgaWRzID0gcGFyc2VTZWxlY3RlZE9wdGlvbklkcyh2YXJpYXRpb24udmFsdWUpO1xuICAgIGNvbnN0IG9wdGlvbiA9IGlkcy5sZW5ndGggPyBvcHRpb25CeUlkKHZhcmlhdGlvbiwgaWRzWzBdKSA6IG51bGw7XG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbj8ubGlua2VkRmlsZTtcbiAgICByZXR1cm4geyBraW5kLCBzcmM6IGZpbGU/LnZpZXdVcmwgfHwgZmlsZT8uY2FjaGVkVmlld1VybCB8fCAnJyB9O1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5DT0xPVVJfUElDS0VSKSB7XG4gICAgcmV0dXJuIHsga2luZCwgZmlsbDogbm9ybWFsaXNlQ3NzQ29sb3VyKHZhcmlhdGlvbj8udmFsdWUpIHx8ICcjMDAwMDAwJyB9O1xuICB9XG4gIGNvbnN0IGlkcyA9IHBhcnNlU2VsZWN0ZWRPcHRpb25JZHModmFyaWF0aW9uLnZhbHVlKTtcbiAgY29uc3Qgb3B0aW9uID0gaWRzLmxlbmd0aCA/IG9wdGlvbkJ5SWQodmFyaWF0aW9uLCBpZHNbMF0pIDogbnVsbDtcbiAgY29uc3Qgc2VsZWN0ZWQgPSAodmFyaWF0aW9uPy5zZWxlY3RlZE9wdGlvbnMgfHwgW10pWzBdO1xuICByZXR1cm4ge1xuICAgIGtpbmQsXG4gICAgZmlsbDogbm9ybWFsaXNlQ3NzQ29sb3VyKFxuICAgICAgb3B0aW9uPy5jb2xvdXIsXG4gICAgICBzZWxlY3RlZD8uY29sb3VyLFxuICAgICAgb3B0aW9uPy52YWx1ZSxcbiAgICAgIHNlbGVjdGVkPy52YWx1ZSxcbiAgICAgIHZhcmlhdGlvbj8udmFsdWUsXG4gICAgKSxcbiAgfTtcbn1cblxuY29uc3QgSEVYX0NPTE9VUiA9IC9eIyhbMC05YS1mXXszfXxbMC05YS1mXXs2fXxbMC05YS1mXXs4fSkkL2k7XG5jb25zdCBDU1NfRlVOQ1RJT05fQ09MT1VSID0gL14ocmdiYT98aHNsYT8pXFwoL2k7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpc2VDc3NDb2xvdXIoLi4uY2FuZGlkYXRlczogYW55W10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHJhdyA9IFN0cmluZyh2YWx1ZSkudHJpbSgpO1xuICAgIGlmICghcmF3IHx8IC9eXFxkKyQvLnRlc3QocmF3KSkgY29udGludWU7XG4gICAgaWYgKEhFWF9DT0xPVVIudGVzdChyYXcpKSB7XG4gICAgICBpZiAocmF3Lmxlbmd0aCA9PT0gNCkge1xuICAgICAgICByZXR1cm4gYCMke3Jhd1sxXX0ke3Jhd1sxXX0ke3Jhd1syXX0ke3Jhd1syXX0ke3Jhd1szXX0ke3Jhd1szXX1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJhdztcbiAgICB9XG4gICAgaWYgKENTU19GVU5DVElPTl9DT0xPVVIudGVzdChyYXcpKSByZXR1cm4gcmF3O1xuICAgIGlmICgvXlthLXpdW2Etelxccy1dezIsfSQvaS50ZXN0KHJhdykpIHJldHVybiByYXc7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtlZFZhcmlhdGlvbnNGb3JUZW1wbGF0ZShcbiAgdGVtcGxhdGU6IGFueSxcbiAgdmFyaWF0aW9uczogYW55W10sXG4pOiBhbnlbXSB7XG4gIGNvbnN0IGxpbmtlZElkcyA9IG5ldyBTZXQoXG4gICAgKHRlbXBsYXRlPy5lZGl0ZWRCeVZhcmlhdGlvbkZpZWxkcyB8fCBbXSlcbiAgICAgIC5tYXAoKGZpZWxkOiBhbnkpID0+IGZpZWxkPy5pZClcbiAgICAgIC5maWx0ZXIoKGlkOiBhbnkpID0+IGlkICE9IG51bGwpXG4gICk7XG4gIGlmICghbGlua2VkSWRzLnNpemUpIHJldHVybiBbXTtcbiAgcmV0dXJuICh2YXJpYXRpb25zIHx8IFtdKS5maWx0ZXIoKHZhcmlhdGlvbikgPT5cbiAgICBsaW5rZWRJZHMuaGFzKHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ/LmlkKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWF0aW9uc0Zvckdyb3VwKFxuICBmb3JtVmFsdWVzOiBhbnksXG4gIGdyb3VwSW5kZXg6IG51bWJlcixcbik6IGFueVtdIHtcbiAgY29uc3QgaW5kZXBlbmRlbnQgPSBmb3JtVmFsdWVzPy52YXJpYXRpb25zIHx8IFtdO1xuICBjb25zdCBncm91cCA9IGZvcm1WYWx1ZXM/LnZhcmlhdGlvbnNHcm91cHM/Lltncm91cEluZGV4XT8udmFyaWF0aW9ucyB8fCBbXTtcbiAgcmV0dXJuIFsuLi5pbmRlcGVuZGVudCwgLi4uZ3JvdXBdO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkQmJveChiYm94OiBhbnkpOiBiYm94IGlzIG51bWJlcltdIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGJib3gpIHx8IGJib3gubGVuZ3RoICE9PSA0KSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IFt4LCB5LCB3LCBoXSA9IGJib3gubWFwKE51bWJlcik7XG4gIHJldHVybiB3ID4gMCAmJiBoID4gMCAmJiB4ID49IDAgJiYgeCA8PSAxICYmIHkgPj0gMCAmJiB5IDw9IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpb25zRm9yUm9sZShjdXN0b21pc2F0aW9uTWFwOiBhbnksIHJvbGU6IHN0cmluZyk6IG51bWJlcltdW10ge1xuICBjb25zdCByZWdpb25zID0gY3VzdG9taXNhdGlvbk1hcD8ucmVnaW9ucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KHJlZ2lvbnMpKSByZXR1cm4gW107XG4gIHJldHVybiByZWdpb25zXG4gICAgLmZpbHRlcigocmVnaW9uOiBhbnkpID0+IHJlZ2lvbj8ucm9sZSA9PT0gcm9sZSAmJiBpc1ZhbGlkQmJveChyZWdpb24uYmJveCkpXG4gICAgLm1hcCgocmVnaW9uOiBhbnkpID0+IHJlZ2lvbi5iYm94Lm1hcChOdW1iZXIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJib3hUb1BpeGVscyhcbiAgYmJveDogbnVtYmVyW10sXG4gIHdpZHRoOiBudW1iZXIsXG4gIGhlaWdodDogbnVtYmVyLFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gIGNvbnN0IFt4LCB5LCB3LCBoXSA9IGJib3g7XG4gIHJldHVybiB7XG4gICAgeDogeCAqIHdpZHRoLFxuICAgIHk6IHkgKiBoZWlnaHQsXG4gICAgd2lkdGg6IHcgKiB3aWR0aCxcbiAgICBoZWlnaHQ6IGggKiBoZWlnaHQsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWVsZEJpbmRpbmdzRnJvbSh0ZW1wbGF0ZTogYW55KTogRHJhZnRGaWVsZEJpbmRpbmdbXSB7XG4gIGNvbnN0IHJhdyA9IHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwPy5maWVsZEJpbmRpbmdzO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3KSkgcmV0dXJuIFtdO1xuICByZXR1cm4gcmF3LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtICYmIGl0ZW0uZmllbGRJZCAhPSBudWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpbmRpbmdGb3JGaWVsZChcbiAgYmluZGluZ3M6IERyYWZ0RmllbGRCaW5kaW5nW10sXG4gIGZpZWxkSWQ6IGFueSxcbik6IERyYWZ0RmllbGRCaW5kaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgaWQgPSBOdW1iZXIoZmllbGRJZCk7XG4gIHJldHVybiBiaW5kaW5ncy5maW5kKChpdGVtKSA9PiBOdW1iZXIoaXRlbS5maWVsZElkKSA9PT0gaWQpO1xufVxuXG5mdW5jdGlvbiBmaWVsZE5hbWUoZmllbGQ6IGFueSk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmcoZmllbGQ/Lm5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIGlzQ29sb3VyS2luZChraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUgfCBudWxsKTogYm9vbGVhbiB7XG4gIHJldHVybiBraW5kID09PSAncmVjdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmZlckFydHdvcmtSb2xlKFxuICBmaWVsZDogYW55LFxuICBsaW5rZWRGaWVsZHM6IGFueVtdID0gW10sXG4pOiBEcmFmdEFydHdvcmtSb2xlIHtcbiAgY29uc3Qga2luZCA9IGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoZmllbGQ/LmZpZWxkVHlwZSk7XG4gIGlmIChraW5kID09PSAnaW1hZ2UnKSByZXR1cm4gJ2ltYWdlJztcbiAgaWYgKGtpbmQgPT09ICd0ZXh0JykgcmV0dXJuICd0ZXh0JztcbiAgaWYgKCFpc0NvbG91cktpbmQoa2luZCkpIHJldHVybiAnYXV0byc7XG4gIGNvbnN0IG5hbWUgPSBmaWVsZE5hbWUoZmllbGQpO1xuICBpZiAoLyh0ZXh0fGZvbnR8bGV0dGVyfGNvcHkpLy50ZXN0KG5hbWUpKSByZXR1cm4gJ3RleHRfZmlsbCc7XG4gIGlmICgvKHdyaXN0fGJhbmR8YmFzZXxib2R5fGdyb3VuZHxibGFuaykvLnRlc3QobmFtZSkpIHJldHVybiAnYm9keV9jb2xvdXJfZmlsbCc7XG4gIGNvbnN0IGhhc1RleHQgPSBsaW5rZWRGaWVsZHMuc29tZShcbiAgICAoaXRlbSkgPT4gY2FudmFzS2luZEZvckZpZWxkVHlwZShpdGVtPy5maWVsZFR5cGUpID09PSAndGV4dCdcbiAgKTtcbiAgcmV0dXJuIGhhc1RleHQgPyAndGV4dF9maWxsJyA6ICdib2R5X2NvbG91cl9maWxsJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBcnR3b3JrUm9sZShcbiAgZmllbGQ6IGFueSxcbiAgdGVtcGxhdGU6IGFueSxcbiAgbGlua2VkRmllbGRzOiBhbnlbXSA9IFtdLFxuKTogRHJhZnRBcnR3b3JrUm9sZSB7XG4gIGNvbnN0IGluZmVycmVkID0gaW5mZXJBcnR3b3JrUm9sZShmaWVsZCwgbGlua2VkRmllbGRzKTtcbiAgaWYgKGluZmVycmVkID09PSAnYm9keV9jb2xvdXJfZmlsbCcpIHJldHVybiAnYm9keV9jb2xvdXJfZmlsbCc7XG4gIGNvbnN0IGJpbmRpbmcgPSBiaW5kaW5nRm9yRmllbGQoZmllbGRCaW5kaW5nc0Zyb20odGVtcGxhdGUpLCBmaWVsZD8uaWQpO1xuICBpZiAoYmluZGluZz8ucm9sZSAmJiBiaW5kaW5nLnJvbGUgIT09ICdhdXRvJykgcmV0dXJuIGJpbmRpbmcucm9sZTtcbiAgcmV0dXJuIGluZmVycmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5mZXJUZXh0VGFyZ2V0RmllbGRJZChcbiAgZmllbGQ6IGFueSxcbiAgdGVtcGxhdGU6IGFueSxcbiAgbGlua2VkRmllbGRzOiBhbnlbXSA9IFtdLFxuKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYmluZGluZyA9IGJpbmRpbmdGb3JGaWVsZChmaWVsZEJpbmRpbmdzRnJvbSh0ZW1wbGF0ZSksIGZpZWxkPy5pZCk7XG4gIGlmIChiaW5kaW5nPy50YXJnZXRGaWVsZElkICE9IG51bGwpIHJldHVybiBOdW1iZXIoYmluZGluZy50YXJnZXRGaWVsZElkKTtcbiAgY29uc3QgdGV4dEZpZWxkID0gbGlua2VkRmllbGRzLmZpbmQoXG4gICAgKGl0ZW0pID0+IGNhbnZhc0tpbmRGb3JGaWVsZFR5cGUoaXRlbT8uZmllbGRUeXBlKSA9PT0gJ3RleHQnICYmIGl0ZW0/LmlkICE9IG51bGxcbiAgKTtcbiAgcmV0dXJuIHRleHRGaWVsZD8uaWQgIT0gbnVsbCA/IE51bWJlcih0ZXh0RmllbGQuaWQpIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0SW5zaWRlKFxuICBib3g6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gIGNvbnRlbnRXaWR0aDogbnVtYmVyLFxuICBjb250ZW50SGVpZ2h0OiBudW1iZXIsXG4gIGxvY2tBc3BlY3RSYXRpbyA9IHRydWUsXG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgaWYgKFxuICAgICFsb2NrQXNwZWN0UmF0aW9cbiAgICB8fCAhKGNvbnRlbnRXaWR0aCA+IDApXG4gICAgfHwgIShjb250ZW50SGVpZ2h0ID4gMClcbiAgICB8fCAhKGJveC53aWR0aCA+IDApXG4gICAgfHwgIShib3guaGVpZ2h0ID4gMClcbiAgKSB7XG4gICAgcmV0dXJuIHsgLi4uYm94IH07XG4gIH1cbiAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbihib3gud2lkdGggLyBjb250ZW50V2lkdGgsIGJveC5oZWlnaHQgLyBjb250ZW50SGVpZ2h0KTtcbiAgY29uc3Qgd2lkdGggPSBjb250ZW50V2lkdGggKiBzY2FsZTtcbiAgY29uc3QgaGVpZ2h0ID0gY29udGVudEhlaWdodCAqIHNjYWxlO1xuICByZXR1cm4ge1xuICAgIHg6IGJveC54ICsgKGJveC53aWR0aCAtIHdpZHRoKSAvIDIsXG4gICAgeTogYm94LnkgKyAoYm94LmhlaWdodCAtIGhlaWdodCkgLyAyLFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZExvY2tJbWFnZUFzcGVjdChmaWVsZDogYW55LCB0ZW1wbGF0ZT86IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBiaW5kaW5nID0gYmluZGluZ0ZvckZpZWxkKGZpZWxkQmluZGluZ3NGcm9tKHRlbXBsYXRlKSwgZmllbGQ/LmlkKTtcbiAgaWYgKHR5cGVvZiBiaW5kaW5nPy5sb2NrQXNwZWN0UmF0aW8gPT09ICdib29sZWFuJykgcmV0dXJuIGJpbmRpbmcubG9ja0FzcGVjdFJhdGlvO1xuICBpZiAodHlwZW9mIGZpZWxkPy5hc3BlY3RSYXRpb0xvY2sgPT09ICdib29sZWFuJykgcmV0dXJuIGZpZWxkLmFzcGVjdFJhdGlvTG9jaztcbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0JhY2tncm91bmRGaWxsKG9iajogeyB0eXBlPzogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIG9iaj8udHlwZSA9PT0gJ3JlY3QnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNGdWxsQXJ0Ym9hcmRGaWxsKFxuICBvYmo6IHsgeD86IG51bWJlcjsgeT86IG51bWJlcjsgd2lkdGg/OiBudW1iZXI7IGhlaWdodD86IG51bWJlciB9LFxuICBhcnRXaWR0aDogbnVtYmVyLFxuICBhcnRIZWlnaHQ6IG51bWJlcixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIE51bWJlcihvYmoud2lkdGgpID49IGFydFdpZHRoICogMC45XG4gICAgJiYgTnVtYmVyKG9iai5oZWlnaHQpID49IGFydEhlaWdodCAqIDAuOVxuICAgICYmIE51bWJlcihvYmoueCkgPD0gYXJ0V2lkdGggKiAwLjA1XG4gICAgJiYgTnVtYmVyKG9iai55KSA8PSBhcnRIZWlnaHQgKiAwLjA1XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWFzdXJlRHJhZnRUZXh0KFxuICB0ZXh0OiBzdHJpbmcsXG4gIGZvbnRTaXplID0gNDgsXG4gIGZvbnRGYW1pbHk/OiBzdHJpbmcsXG4pOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBsaW5lcyA9IFN0cmluZyh0ZXh0IHx8ICdUZXh0Jykuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBzaXplID0gTWF0aC5tYXgoMTIsIE51bWJlcihmb250U2l6ZSkgfHwgNDgpO1xuICBsZXQgd2lkdGggPSAwO1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5mb250ID0gYCR7c2l6ZX1weCAke2Nzc0ZvbnRGYW1pbHkoZm9udEZhbWlseSl9YDtcbiAgICAgIHdpZHRoID0gTWF0aC5tYXgoLi4ubGluZXMubWFwKChsaW5lKSA9PiBjdHgubWVhc3VyZVRleHQobGluZSB8fCAnICcpLndpZHRoKSwgMCk7XG4gICAgfVxuICB9XG4gIGlmICghKHdpZHRoID4gMCkpIHtcbiAgICB3aWR0aCA9IE1hdGgubWF4KC4uLmxpbmVzLm1hcCgobGluZSkgPT4gKGxpbmUgfHwgJyAnKS5sZW5ndGgpLCAxKSAqIHNpemUgKiAwLjYyO1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IE1hdGguY2VpbCh3aWR0aCArIHNpemUgKiAwLjE2KSxcbiAgICBoZWlnaHQ6IE1hdGguY2VpbChNYXRoLm1heCgxLCBsaW5lcy5sZW5ndGgpICogc2l6ZSAqIDEuMTUpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZml0VGV4dEJveChcbiAgb2JqOiBQaWNrPERyYWZ0Q2FudmFzT2JqZWN0LCAneCcgfCAneScgfCAnd2lkdGgnIHwgJ2hlaWdodCcgfCAndGV4dCcgfCAnZm9udFNpemUnIHwgJ2ZvbnRGYW1pbHknPixcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBtZWFzdXJlZCA9IG1lYXN1cmVEcmFmdFRleHQob2JqLnRleHQgfHwgJ1RleHQnLCBvYmouZm9udFNpemUsIG9iai5mb250RmFtaWx5KTtcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCgyNCwgbWVhc3VyZWQud2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBNYXRoLm1heCgyMCwgbWVhc3VyZWQuaGVpZ2h0KTtcbiAgY29uc3QgcHJldlcgPSBOdW1iZXIob2JqLndpZHRoKSA+IDAgPyBOdW1iZXIob2JqLndpZHRoKSA6IHdpZHRoO1xuICBjb25zdCBwcmV2SCA9IE51bWJlcihvYmouaGVpZ2h0KSA+IDAgPyBOdW1iZXIob2JqLmhlaWdodCkgOiBoZWlnaHQ7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHg6IChOdW1iZXIob2JqLngpIHx8IDApICsgKHByZXZXIC0gd2lkdGgpIC8gMixcbiAgICB5OiAoTnVtYmVyKG9iai55KSB8fCAwKSArIChwcmV2SCAtIGhlaWdodCkgLyAyLFxuICB9O1xufVxuXG5mdW5jdGlvbiBwbGFjZW1lbnRCb3hlcyhcbiAgcm9sZTogRHJhZnRBcnR3b3JrUm9sZSxcbiAga2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICB0ZW1wbGF0ZTogYW55LFxuKTogbnVtYmVyW11bXSB7XG4gIGlmIChyb2xlID09PSAnYm9keV9jb2xvdXJfZmlsbCcgfHwga2luZCA9PT0gJ3JlY3QnKSB7XG4gICAgY29uc3QgYm9keSA9IHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAnYm9keV9jb2xvdXJfZmlsbCcpO1xuICAgIGlmIChib2R5Lmxlbmd0aCkgcmV0dXJuIGJvZHk7XG4gICAgY29uc3QgcHJpbnQgPSByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3ByaW50X2FyZWEnKTtcbiAgICBpZiAocHJpbnQubGVuZ3RoKSByZXR1cm4gcHJpbnQ7XG4gICAgcmV0dXJuIFtbMCwgMCwgMSwgMV1dO1xuICB9XG4gIGlmIChraW5kID09PSAndGV4dCcpIHtcbiAgICBjb25zdCBwbGFjZWhvbGRlcnMgPSByZWdpb25zRm9yUm9sZSh0ZW1wbGF0ZT8uY3VzdG9taXNhdGlvbk1hcCwgJ3RleHRfcGxhY2Vob2xkZXInKTtcbiAgICBpZiAocGxhY2Vob2xkZXJzLmxlbmd0aCkgcmV0dXJuIHBsYWNlaG9sZGVycztcbiAgICByZXR1cm4gcmVnaW9uc0ZvclJvbGUodGVtcGxhdGU/LmN1c3RvbWlzYXRpb25NYXAsICdwcmludF9hcmVhJyk7XG4gIH1cbiAgcmV0dXJuIHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAncHJpbnRfYXJlYScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdFBsYWNlbWVudChcbiAga2luZDogRHJhZnRDYW52YXNPYmplY3RUeXBlLFxuICBpbmRleDogbnVtYmVyLFxuICBhcnRXaWR0aDogbnVtYmVyLFxuICBhcnRIZWlnaHQ6IG51bWJlcixcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICBjb25zdCBwYWQgPSBNYXRoLm1heCgyNCwgYXJ0V2lkdGggKiAwLjA0KTtcbiAgaWYgKGtpbmQgPT09ICdpbWFnZScpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogYXJ0V2lkdGggKiAwLjIsXG4gICAgICB5OiBhcnRIZWlnaHQgKiAwLjIsXG4gICAgICB3aWR0aDogYXJ0V2lkdGggKiAwLjYsXG4gICAgICBoZWlnaHQ6IGFydEhlaWdodCAqIDAuNixcbiAgICB9O1xuICB9XG4gIGlmIChraW5kID09PSAncmVjdCcpIHtcbiAgICByZXR1cm4geyB4OiAwLCB5OiAwLCB3aWR0aDogYXJ0V2lkdGgsIGhlaWdodDogYXJ0SGVpZ2h0IH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBwYWQsXG4gICAgeTogcGFkICsgaW5kZXggKiBNYXRoLm1heCg2NCwgYXJ0SGVpZ2h0ICogMC4wOCksXG4gICAgd2lkdGg6IGFydFdpZHRoIC0gcGFkICogMixcbiAgICBoZWlnaHQ6IE1hdGgubWF4KDU2LCBhcnRIZWlnaHQgKiAwLjA3KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9iamVjdElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBgb2JqLSR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VlZE9yU3luY0NhbnZhcyhcbiAgZXhpc3Rpbmc6IERyYWZ0Q2FudmFzU3RhdGUgfCBudWxsIHwgdW5kZWZpbmVkLFxuICB0ZW1wbGF0ZTogYW55LFxuICB2YXJpYXRpb25zOiBhbnlbXSxcbik6IERyYWZ0Q2FudmFzU3RhdGUge1xuICBjb25zdCB3aWR0aCA9IE51bWJlcih0ZW1wbGF0ZT8ud2lkdGgpIHx8IERFRkFVTFRfQVJUQk9BUkQud2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IE51bWJlcih0ZW1wbGF0ZT8uaGVpZ2h0KSB8fCBERUZBVUxUX0FSVEJPQVJELmhlaWdodDtcbiAgY29uc3Qgb2JqZWN0czogRHJhZnRDYW52YXNPYmplY3RbXSA9IChleGlzdGluZz8ub2JqZWN0cyB8fCBbXSkubWFwKChvYmopID0+IChcbiAgICBvYmoudHlwZSA9PT0gJ3RleHQnID8geyAuLi5vYmosIC4uLmZpdFRleHRCb3gob2JqKSB9IDogeyAuLi5vYmogfVxuICApKTtcbiAgY29uc3QgZGV0YWNoZWQgPSBuZXcgU2V0KGV4aXN0aW5nPy5kZXRhY2hlZEZpZWxkSWRzIHx8IFtdKTtcbiAgY29uc3QgbGlua2VkID0gbGlua2VkVmFyaWF0aW9uc0ZvclRlbXBsYXRlKHRlbXBsYXRlLCB2YXJpYXRpb25zKTtcbiAgY29uc3QgbGlua2VkRmllbGRzID0gbGlua2VkLm1hcCgodmFyaWF0aW9uKSA9PiB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkKS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHVzZWRSZWdpb25zOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgbGlua2VkKSB7XG4gICAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkO1xuICAgIGlmIChyZXNvbHZlQXJ0d29ya1JvbGUoZmllbGQsIHRlbXBsYXRlLCBsaW5rZWRGaWVsZHMpICE9PSAndGV4dF9maWxsJykgY29udGludWU7XG4gICAgY29uc3QgaW5kZXggPSBvYmplY3RzLmZpbmRJbmRleChcbiAgICAgIChvYmopID0+IG9iai5tZXJjaGlGaWVsZElkID09PSBmaWVsZD8uaWQgJiYgb2JqLnR5cGUgPT09ICdyZWN0J1xuICAgICk7XG4gICAgaWYgKGluZGV4ID49IDApIG9iamVjdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIGNvbnN0IGFwcGx5Q29sb3VyVG9UZXh0ID0gKHRhcmdldEZpZWxkSWQ6IG51bWJlciB8IHVuZGVmaW5lZCwgZmlsbD86IHN0cmluZywgY29sb3VyRmllbGRJZD86IG51bWJlcikgPT4ge1xuICAgIGlmICghZmlsbCB8fCB0YXJnZXRGaWVsZElkID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0ZXh0T2JqID0gb2JqZWN0cy5maW5kKChvYmopID0+IG9iai5tZXJjaGlGaWVsZElkID09PSB0YXJnZXRGaWVsZElkICYmIG9iai50eXBlID09PSAndGV4dCcpO1xuICAgIGlmICghdGV4dE9iaikgcmV0dXJuIGZhbHNlO1xuICAgIHRleHRPYmouZmlsbCA9IGZpbGw7XG4gICAgdGV4dE9iai5jb2xvdXJGaWVsZElkID0gY29sb3VyRmllbGRJZDtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBwbGFjZU9iamVjdCA9IChcbiAgICBraW5kOiBEcmFmdENhbnZhc09iamVjdFR5cGUsXG4gICAgcm9sZTogRHJhZnRBcnR3b3JrUm9sZSxcbiAgICBmaWVsZDogYW55LFxuICAgIGZpZWxkSWQ6IG51bWJlcixcbiAgICBjb250ZW50OiBSZXR1cm5UeXBlPHR5cGVvZiB2YXJpYXRpb25DYW52YXNDb250ZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBwbGFjZW1lbnRCb3hlcyhyb2xlLCBraW5kLCB0ZW1wbGF0ZSk7XG4gICAgY29uc3Qga2V5ID0gYCR7cm9sZX06JHtraW5kfWA7XG4gICAgY29uc3QgcmVnaW9uSW5kZXggPSB1c2VkUmVnaW9uc1trZXldIHx8IDA7XG4gICAgdXNlZFJlZ2lvbnNba2V5XSA9IHJlZ2lvbkluZGV4ICsgMTtcbiAgICBjb25zdCBib3ggPSBib3hlc1tyZWdpb25JbmRleF0gfHwgYm94ZXNbMF07XG4gICAgY29uc3QgcGxhY2UgPSBib3hcbiAgICAgID8gYmJveFRvUGl4ZWxzKGJveCwgd2lkdGgsIGhlaWdodClcbiAgICAgIDogZGVmYXVsdFBsYWNlbWVudChraW5kLCBvYmplY3RzLmxlbmd0aCwgd2lkdGgsIGhlaWdodCk7XG4gICAgY29uc3QgbG9ja0FzcGVjdFJhdGlvID0ga2luZCA9PT0gJ2ltYWdlJyA/IHNob3VsZExvY2tJbWFnZUFzcGVjdChmaWVsZCwgdGVtcGxhdGUpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG5leHQ6IERyYWZ0Q2FudmFzT2JqZWN0ID0ge1xuICAgICAgaWQ6IGNyZWF0ZU9iamVjdElkKCksXG4gICAgICB0eXBlOiBraW5kLFxuICAgICAgbWVyY2hpRmllbGRJZDogZmllbGRJZCxcbiAgICAgIGFydHdvcmtSb2xlOiByb2xlLFxuICAgICAgbG9ja2VkOiBraW5kID09PSAncmVjdCcsXG4gICAgICByb3RhdGlvbjogMCxcbiAgICAgIHNjYWxlWDogMSxcbiAgICAgIHNjYWxlWTogMSxcbiAgICAgIGxvY2tBc3BlY3RSYXRpbyxcbiAgICAgIC4uLnBsYWNlLFxuICAgICAgdGV4dDogY29udGVudC50ZXh0LFxuICAgICAgc3JjOiBjb250ZW50LnNyYyxcbiAgICAgIGZpbGw6IGNvbnRlbnQuZmlsbCB8fCAoa2luZCA9PT0gJ3RleHQnID8gJyMxMTExMTEnIDogdW5kZWZpbmVkKSxcbiAgICAgIGZvbnRGYW1pbHk6IGtpbmQgPT09ICd0ZXh0JyA/IERFRkFVTFRfRFJBRlRfRk9OVCA6IHVuZGVmaW5lZCxcbiAgICAgIGZvbnRTaXplOiBNYXRoLm1heCgyOCwgTWF0aC5yb3VuZChwbGFjZS5oZWlnaHQgKiAwLjYyKSksXG4gICAgfTtcbiAgICBpZiAoa2luZCA9PT0gJ3RleHQnKSBPYmplY3QuYXNzaWduKG5leHQsIGZpdFRleHRCb3gobmV4dCkpO1xuICAgIGlmIChraW5kID09PSAncmVjdCcpIG9iamVjdHMudW5zaGlmdChuZXh0KTtcbiAgICBlbHNlIG9iamVjdHMucHVzaChuZXh0KTtcbiAgfTtcblxuICBmb3IgKGNvbnN0IHZhcmlhdGlvbiBvZiBsaW5rZWQpIHtcbiAgICBjb25zdCBmaWVsZCA9IHZhcmlhdGlvbj8udmFyaWF0aW9uRmllbGQ7XG4gICAgY29uc3QgZmllbGRJZCA9IGZpZWxkPy5pZDtcbiAgICBjb25zdCBjb250ZW50ID0gdmFyaWF0aW9uQ2FudmFzQ29udGVudCh2YXJpYXRpb24pO1xuICAgIGlmICghY29udGVudC5raW5kIHx8IGZpZWxkSWQgPT0gbnVsbCB8fCBkZXRhY2hlZC5oYXMoZmllbGRJZCkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHJvbGUgPSByZXNvbHZlQXJ0d29ya1JvbGUoZmllbGQsIHRlbXBsYXRlLCBsaW5rZWRGaWVsZHMpO1xuICAgIGlmIChyb2xlID09PSAndGV4dF9maWxsJykgY29udGludWU7XG5cbiAgICBjb25zdCBmb3VuZCA9IG9iamVjdHMuZmluZCgob2JqKSA9PiBvYmoubWVyY2hpRmllbGRJZCA9PT0gZmllbGRJZCk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICBpZiAoY29udGVudC5raW5kID09PSAndGV4dCcgJiYgY29udGVudC50ZXh0ICE9IG51bGwpIHtcbiAgICAgICAgZm91bmQudGV4dCA9IGNvbnRlbnQudGV4dDtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihmb3VuZCwgZml0VGV4dEJveChmb3VuZCkpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ2ltYWdlJyAmJiBjb250ZW50LnNyYykgZm91bmQuc3JjID0gY29udGVudC5zcmM7XG4gICAgICBpZiAoY29udGVudC5raW5kID09PSAncmVjdCcgJiYgY29udGVudC5maWxsKSBmb3VuZC5maWxsID0gY29udGVudC5maWxsO1xuICAgICAgaWYgKGZvdW5kLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgZm91bmQubG9ja0FzcGVjdFJhdGlvID0gc2hvdWxkTG9ja0ltYWdlQXNwZWN0KGZpZWxkLCB0ZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQudHlwZSA9PT0gJ3JlY3QnKSB7XG4gICAgICAgIGZvdW5kLmxvY2tlZCA9IHRydWU7XG4gICAgICAgIGZvdW5kLmFydHdvcmtSb2xlID0gcm9sZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb250ZW50LmtpbmQgPT09ICd0ZXh0JyAmJiAhY29udGVudC50ZXh0KSBjb250aW51ZTtcbiAgICBpZiAoY29udGVudC5raW5kID09PSAnaW1hZ2UnICYmICFjb250ZW50LnNyYykgY29udGludWU7XG4gICAgaWYgKGNvbnRlbnQua2luZCA9PT0gJ3JlY3QnICYmICFjb250ZW50LmZpbGwpIGNvbnRpbnVlO1xuICAgIHBsYWNlT2JqZWN0KGNvbnRlbnQua2luZCwgcm9sZSwgZmllbGQsIGZpZWxkSWQsIGNvbnRlbnQpO1xuICB9XG5cbiAgZm9yIChjb25zdCB2YXJpYXRpb24gb2YgbGlua2VkKSB7XG4gICAgY29uc3QgZmllbGQgPSB2YXJpYXRpb24/LnZhcmlhdGlvbkZpZWxkO1xuICAgIGNvbnN0IGZpZWxkSWQgPSBmaWVsZD8uaWQ7XG4gICAgY29uc3QgY29udGVudCA9IHZhcmlhdGlvbkNhbnZhc0NvbnRlbnQodmFyaWF0aW9uKTtcbiAgICBpZiAoZmllbGRJZCA9PSBudWxsIHx8IGRldGFjaGVkLmhhcyhmaWVsZElkKSB8fCAhY29udGVudC5maWxsKSBjb250aW51ZTtcbiAgICBjb25zdCByb2xlID0gcmVzb2x2ZUFydHdvcmtSb2xlKGZpZWxkLCB0ZW1wbGF0ZSwgbGlua2VkRmllbGRzKTtcbiAgICBpZiAocm9sZSAhPT0gJ3RleHRfZmlsbCcpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHRhcmdldElkID0gaW5mZXJUZXh0VGFyZ2V0RmllbGRJZChmaWVsZCwgdGVtcGxhdGUsIGxpbmtlZEZpZWxkcyk7XG4gICAgYXBwbHlDb2xvdXJUb1RleHQodGFyZ2V0SWQsIGNvbnRlbnQuZmlsbCwgZmllbGRJZCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBvYmplY3RzLFxuICAgIGRldGFjaGVkRmllbGRJZHM6IEFycmF5LmZyb20oZGV0YWNoZWQpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0YWNoRmllbGQoXG4gIHN0YXRlOiBEcmFmdENhbnZhc1N0YXRlLFxuICBvYmplY3RJZDogc3RyaW5nLFxuKTogRHJhZnRDYW52YXNTdGF0ZSB7XG4gIGNvbnN0IHRhcmdldCA9IHN0YXRlLm9iamVjdHMuZmluZCgob2JqKSA9PiBvYmouaWQgPT09IG9iamVjdElkKTtcbiAgY29uc3QgZGV0YWNoZWRGaWVsZElkcyA9IFsuLi4oc3RhdGUuZGV0YWNoZWRGaWVsZElkcyB8fCBbXSldO1xuICBpZiAodGFyZ2V0Py5tZXJjaGlGaWVsZElkICE9IG51bGwgJiYgIWRldGFjaGVkRmllbGRJZHMuaW5jbHVkZXModGFyZ2V0Lm1lcmNoaUZpZWxkSWQpKSB7XG4gICAgZGV0YWNoZWRGaWVsZElkcy5wdXNoKHRhcmdldC5tZXJjaGlGaWVsZElkKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG9iamVjdHM6IHN0YXRlLm9iamVjdHMuZmlsdGVyKChvYmopID0+IG9iai5pZCAhPT0gb2JqZWN0SWQpLFxuICAgIGRldGFjaGVkRmllbGRJZHMsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludEFyZWFHdWlkZXModGVtcGxhdGU6IGFueSk6IEFycmF5PHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufT4ge1xuICBjb25zdCB3aWR0aCA9IE51bWJlcih0ZW1wbGF0ZT8ud2lkdGgpIHx8IERFRkFVTFRfQVJUQk9BUkQud2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IE51bWJlcih0ZW1wbGF0ZT8uaGVpZ2h0KSB8fCBERUZBVUxUX0FSVEJPQVJELmhlaWdodDtcbiAgcmV0dXJuIHJlZ2lvbnNGb3JSb2xlKHRlbXBsYXRlPy5jdXN0b21pc2F0aW9uTWFwLCAncHJpbnRfYXJlYScpLm1hcCgoYmJveCkgPT5cbiAgICBiYm94VG9QaXhlbHMoYmJveCwgd2lkdGgsIGhlaWdodClcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUNFQSxpQkFBaUIsRUFDakJDLGdCQUFnQixFQU1oQkMsU0FBUyxRQUNKLFNBQVM7QUFDaEIsU0FBU0Msa0JBQWtCLEVBQUVDLGFBQWEsUUFBUSxjQUFjO0FBQ2hFLFNBQVNDLGdCQUFnQixRQUFRLFlBQVk7QUFFN0MsT0FBTyxTQUFTQyx3QkFBd0JBLENBQUNDLE9BQVksRUFBVztFQUM5RCxPQUFPQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVHLGNBQWMsQ0FBQyxJQUFJSCxPQUFPLENBQUNHLGNBQWMsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFDcEY7QUFFQSxPQUFPLFNBQVNDLHlCQUF5QkEsQ0FBQ0wsT0FBWSxFQUFXO0VBQy9ELE9BQU9NLE9BQU8sQ0FDWixDQUFBTixPQUFPLGFBQVBB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