@datagrok-libraries/utils 2.1.3 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -405,8 +405,9 @@ export class RichFunctionView extends FunctionView {
405
405
  inputs.append(t.root);
406
406
  }
407
407
  else {
408
+ // FIX ME: .toDart added to prevent bug of tables initial non-rendering
408
409
  const t = prop.propertyType === DG.TYPE.DATA_FRAME ?
409
- ui.tableInput(prop.name, null, grok.shell.tables) :
410
+ ui.tableInput(prop.name, null, grok.shell.tables.map(DG.toDart)) :
410
411
  ui.input.forProperty(prop);
411
412
  t.captionLabel.firstChild.replaceWith(ui.span([(_b = prop.caption) !== null && _b !== void 0 ? _b : prop.name]));
412
413
  if (prop.options['units'])
@@ -481,4 +482,4 @@ const plotToSheet = (exportWb, sheet, plot, columnForImage, rowForImage = 0) =>
481
482
  ext: { width: canvas.width, height: canvas.height },
482
483
  });
483
484
  });
484
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC1mdW5jdGlvbi12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmljaC1mdW5jdGlvbi12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJELE1BQU0sa0JBQWtCLEdBQTRCO0lBQ2xELENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2pDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO0lBQy9CLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO0lBQ2hDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2pDLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZO0lBQ3ZDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPO0lBQzlCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lB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LEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFcEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDckYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDekYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFOUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQXVCLENBQUM7WUFDN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQXVCLENBQUM7WUFFL0UsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9B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LENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29DQUNsRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7b0NBQ3hHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0NBQzFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0NBQzFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0NBQzFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNB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bGUgbWF4LWxlbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7RnVuY3Rpb25WaWV3LCBJTlRFUkFDVElWRV9DU1NfQ0xBU1N9IGZyb20gJy4vZnVuY3Rpb24tdmlldyc7XG5pbXBvcnQgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcbmltcG9ydCBodG1sMmNhbnZhcyBmcm9tICdodG1sMmNhbnZhcyc7XG5pbXBvcnQgd3UgZnJvbSAnd3UnO1xuaW1wb3J0ICQgZnJvbSAnY2FzaC1kb20nO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7VWlVdGlsc30gZnJvbSAnLi9zaGFyZWQtY29tcG9uZW50cy91aS11dGlscyc7XG5cbmNvbnN0IHZpZXdlclR5cGVzTWFwcGluZzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XG4gIFsnYmFyY2hhcnQnXTogREcuVklFV0VSLkJBUl9DSEFSVCxcbiAgWydib3hwbG90J106IERHLlZJRVdFUi5CT1hfUExPVCxcbiAgWydjYWxlbmRhciddOiBERy5WSUVXRVIuQ0FMRU5EQVIsXG4gIFsnY29ycnBsb3QnXTogREcuVklFV0VSLkNPUlJfUExPVCxcbiAgWydkZW5zaXR5cGxvdCddOiBERy5WSUVXRVIuREVOU0lUWV9QTE9ULFxuICBbJ2ZpbHRlcnMnXTogREcuVklFV0VSLkZJTFRFUlMsXG4gIFsnZm9ybSddOiBERy5WSUVXRVIuRk9STSxcbiAgWydnbG9iZSddOiBERy5WSUVXRVIuR0xPQkUsXG4gIFsnZ29vZ2xlbWFwJ106IERHLlZJRVdFUi5HT09HTEVfTUFQLFxuICBbJ2dyaWQnXTogREcuVklFV0VSLkdSSUQsXG4gIFsnaGVhdG1hcCddOiBERy5WSUVXRVIuSEVBVF9NQVAsXG4gIFsnaGlzdG9ncmFtJ106IERHLlZJRVdFUi5ISVNUT0dSQU0sXG4gIFsnbGluZWNoYXJ0J106IERHLlZJRVdFUi5MSU5FX0NIQVJULFxuICBbJ21hcmt1cCddOiBERy5WSUVXRVIuTUFSS1VQLFxuICBbJ21hdHJpeHBsb3QnXTogREcuVklFV0VSLk1BVFJJWF9QTE9ULFxuICBbJ25ldHdvcmtkaWFncmFtJ106IERHLlZJRVdFUi5ORVRXT1JLX0RJQUdSQU0sXG4gIFsncGNwbG90J106IERHLlZJRVdFUi5QQ19QTE9ULFxuICBbJ3BpZWNoYXJ0J106IERHLlZJRVdFUi5QSUVfQ0hBUlQsXG4gIFsnc2NhdHRlcnBsb3QnXTogREcuVklFV0VSLlNDQVRURVJfUExPVCxcbiAgWydzY2F0dGVycGxvdDNkJ106IERHLlZJRVdFUi5TQ0FUVEVSX1BMT1RfM0QsXG4gIFsnc2hhcGVtYXAnXTogREcuVklFV0VSLlNIQVBFX01BUCxcbiAgWydzdGF0aXN0aWNzJ106IERHLlZJRVdFUi5TVEFUSVNUSUNTLFxuICBbJ3RpbGV2aWV3ZXInXTogREcuVklFV0VSLlRJTEVfVklFV0VSLFxuICBbJ3RpbWVsaW5lcyddOiBERy5WSUVXRVIuVElNRUxJTkVTLFxuICBbJ3RyZWVtYXAnXTogREcuVklFV0VSLlRSRUVfTUFQLFxuICBbJ3RyZWxsaXNwbG90J106IERHLlZJRVdFUi5UUkVMTElTX1BMT1QsXG4gIFsnd29yZGNsb3VkJ106IERHLlZJRVdFUi5XT1JEX0NMT1VELFxufTtcblxuY29uc3QgRklMRV9JTlBVVF9UWVBFID0gJ2ZpbGUnO1xuXG5leHBvcnQgY2xhc3MgUmljaEZ1bmN0aW9uVmlldyBleHRlbmRzIEZ1bmN0aW9uVmlldyB7XG4gIC8vIGVtaXR0ZWQgd2hlbiBhZnRlciBhIG5ldyBGdW5jQ2FsbCBpcyBsaW5rZWRcbiAgcHJpdmF0ZSBmdW5jQ2FsbFJlcGxhY2VkID0gbmV3IFN1YmplY3Q8dHJ1ZT4oKTtcblxuICAvLyBlbWl0dGVkIHdoZW4gcnVuQnV0dG9uIGRpc2FiaWxpdHkgc2hvdWxkIGJlIGNoZWNrZWRcbiAgcHJpdmF0ZSBjaGVja0Rpc2FiaWxpdHkgPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8vIHN0b3JlcyB0aGUgcnVubmluZyBzdGF0ZVxuICBwcml2YXRlIGlzUnVubmluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGZ1bmNDYWxsOiBERy5GdW5jQ2FsbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmJhc2VQYXRoID0gYHNjcmlwdHMvJHtmdW5jQ2FsbC5mdW5jLmlkfS92aWV3YDtcblxuICAgIHRoaXMuZXhwb3J0Q29uZmlnID0ge1xuICAgICAgc3VwcG9ydGVkRXh0ZW5zaW9uczogdGhpcy5kZWZhdWx0U3VwcG9ydGVkRXhwb3J0RXh0ZW5zaW9ucygpLFxuICAgICAgc3VwcG9ydGVkRm9ybWF0czogdGhpcy5kZWZhdWx0U3VwcG9ydGVkRXhwb3J0Rm9ybWF0cygpLFxuICAgICAgZXhwb3J0OiB0aGlzLmRlZmF1bHRFeHBvcnQsXG4gICAgICBmaWxlbmFtZTogdGhpcy5kZWZhdWx0RXhwb3J0RmlsZW5hbWUsXG4gICAgfTtcblxuICAgIHRoaXMubGlua0Z1bmNjYWxsKGZ1bmNDYWxsKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLmJ1aWxkKCk7XG5cbiAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQubmV4dCgpO1xuXG4gICAgdGhpcy5uYW1lID0gZnVuY0NhbGwuZnVuYy5mcmllbmRseU5hbWU7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgbGlua0Z1bmNjYWxsKGZ1bmNDYWxsOiBERy5GdW5jQ2FsbCkge1xuICAgIGNvbnN0IGlzUHJldmlvdXNIaXN0b3JpY2FsID0gdGhpcy5fZnVuY0NhbGw/Lm9wdGlvbnNbJ2lzSGlzdG9yaWNhbCddO1xuICAgIHRoaXMuX2Z1bmNDYWxsID0gZnVuY0NhbGw7XG5cbiAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQubmV4dCh0cnVlKTtcblxuICAgIGlmIChmdW5jQ2FsbC5vcHRpb25zWydpc0hpc3RvcmljYWwnXSkge1xuICAgICAgaWYgKCFpc1ByZXZpb3VzSGlzdG9yaWNhbClcbiAgICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lfSDigJQgJHtmdW5jQ2FsbC5vcHRpb25zWyd0aXRsZSddID8/IG5ldyBEYXRlKGZ1bmNDYWxsLnN0YXJ0ZWQudG9TdHJpbmcoKSkudG9Mb2NhbGVTdHJpbmcoJ2VuLXVzJywge21vbnRoOiAnc2hvcnQnLCBkYXk6ICdudW1lcmljJywgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICdudW1lcmljJ30pfWA7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMubmFtZSA9IGAke3RoaXMubmFtZS5zdWJzdHJpbmcoMCwgdGhpcy5uYW1lLmluZGV4T2YoJyDigJQgJykpfSDigJQgJHtmdW5jQ2FsbC5vcHRpb25zWyd0aXRsZSddID8/IG5ldyBEYXRlKGZ1bmNDYWxsLnN0YXJ0ZWQudG9TdHJpbmcoKSkudG9Mb2NhbGVTdHJpbmcoJ2VuLXVzJywge21vbnRoOiAnc2hvcnQnLCBkYXk6ICdudW1lcmljJywgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICdudW1lcmljJ30pfWA7XG5cblxuICAgICAgLy8gRklYIE1FOiB2aWV3IG5hbWUgZG9lcyBub3QgY2hhbmdlIGluIG1vZGVsc1xuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmQ0LXJpYmJvbi1uYW1lJyk/LnJlcGxhY2VDaGlsZHJlbih1aS5zcGFuKFt0aGlzLm5hbWVdKSk7XG4gICAgICB0aGlzLnBhdGggPSBgP2lkPSR7dGhpcy5fZnVuY0NhbGwuaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXRoID0gYGA7XG5cbiAgICAgIGlmIChpc1ByZXZpb3VzSGlzdG9yaWNhbClcbiAgICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lLnN1YnN0cmluZygwLCB0aGlzLm5hbWUuaW5kZXhPZignIOKAlCAnKSl9YDtcbiAgICB9XG4gICAgdGhpcy5idWlsZFJpYmJvblBhbmVscygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIG9uQWZ0ZXJSdW4ocnVuRnVuYzogREcuRnVuY0NhbGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnRhYnNFbGVtLnJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB0aGlzLnRhYnNFbGVtLnBhbmVzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgdGFiLmhlYWRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkSU8oKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGlucHV0QmxvY2sgPSB0aGlzLmJ1aWxkSW5wdXRCbG9jaygpO1xuXG4gICAgdWkudG9vbHMuaGFuZGxlUmVzaXplKGlucHV0QmxvY2ssICh3aWR0aCkgPT4ge1xuICAgICAgaWYgKHdpZHRoIDwgMzUwKVxuICAgICAgICAkKGlucHV0QmxvY2suZmlyc3RDaGlsZCEpLmFkZENsYXNzKCd1aS1mb3JtLWNvbmRlbnNlZCcpO1xuICAgICAgZWxzZVxuICAgICAgICAkKGlucHV0QmxvY2suZmlyc3RDaGlsZCEpLnJlbW92ZUNsYXNzKCd1aS1mb3JtLWNvbmRlbnNlZCcpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0QmxvY2sgPSB0aGlzLmJ1aWxkT3V0cHV0QmxvY2soKTtcbiAgICBvdXRwdXRCbG9jay5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgb3V0cHV0QmxvY2suc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICBpZiAoISF0aGlzLnRhYnNFbGVtLmdldFBhbmUoJ0lucHV0JykpIHtcbiAgICAgIHRoaXMudGFic0VsZW0ucGFuZXMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIHRhYi5oZWFkZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG91dCA9IHVpLnNwbGl0SChbaW5wdXRCbG9jaywgdWkucGFuZWwoW291dHB1dEJsb2NrXSldLCBudWxsLCB0cnVlKTtcbiAgICBvdXQuc3R5bGUucGFkZGluZyA9ICcwIDEycHgnO1xuXG4gICAgaW5wdXRCbG9jay5wYXJlbnRFbGVtZW50IS5zdHlsZS5tYXhXaWR0aCA9ICc0NTBweCc7XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgcHVibGljIGJ1aWxkSW5wdXRCbG9jaygpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgZm9ybURpdiA9IHRoaXMucmVuZGVyUnVuU2VjdGlvbigpO1xuXG4gICAgcmV0dXJuIGZvcm1EaXY7XG4gIH1cblxuICBwcml2YXRlIHRhYnNFbGVtID0gdWkudGFiQ29udHJvbCgpO1xuXG4gIHB1YmxpYyBidWlsZE91dHB1dEJsb2NrKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBvdXRwdXRCbG9jayA9IHVpLmJveCgpO1xuXG4gICAgdGhpcy50YWJzTGFiZWxzLmZvckVhY2goKHRhYkxhYmVsKSA9PiB7XG4gICAgICBjb25zdCB0YWJEZlByb3BzID0gdGhpcy5jYXRlZ29yeVRvUGFyYW1NYXBbdGFiTGFiZWxdLmZpbHRlcigocCkgPT4gcC5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gICAgICBjb25zdCB0YWJTY2FsYXJQcm9wcyA9IHRoaXMuY2F0ZWdvcnlUb1BhcmFtTWFwW3RhYkxhYmVsXS5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlICE9PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgY29uc3QgcGFyc2VkVGFiRGZQcm9wcyA9IHRhYkRmUHJvcHMubWFwKChkZlByb3ApID0+IEpTT04ucGFyc2UoZGZQcm9wLm9wdGlvbnNbJ3ZpZXdlciddKSk7XG5cbiAgICAgIGNvbnN0IGRmU2VjdGlvbnMgPSB0YWJEZlByb3BzLm1hcCgoZGZQcm9wLCBkZkluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXdlcnM6IERHLlZpZXdlcltdID0gcGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XS5tYXAoKHZpZXdlckRlc2M6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gdGhpcy5mdW5jQ2FsbD8ub3V0cHV0c1tkZlByb3AubmFtZV0/LnZhbHVlID8/IHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zW2RmUHJvcC5uYW1lXT8udmFsdWUgPz8gREcuRGF0YUZyYW1lLmZyb21Dc3YoYGApO1xuXG4gICAgICAgICAgY29uc3Qgdmlld2VyID0gREcuVmlld2VyLmZyb21UeXBlKHZpZXdlclR5cGVzTWFwcGluZ1t2aWV3ZXJEZXNjWyd0eXBlJ11dLCBpbml0aWFsVmFsdWUpO1xuICAgICAgICAgIHZpZXdlci5zZXRPcHRpb25zKHZpZXdlckRlc2MpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuZGZUb1ZpZXdlck1hcHBpbmdbZGZQcm9wLm5hbWVdKSB0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW2RmUHJvcC5uYW1lXS5wdXNoKHZpZXdlcik7IGVsc2UgdGhpcy5kZlRvVmlld2VyTWFwcGluZ1tkZlByb3AubmFtZV0gPSBbdmlld2VyXTtcblxuICAgICAgICAgIHJldHVybiB2aWV3ZXI7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhbTogREcuRnVuY0NhbGxQYXJhbSA9IHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtc1tkZlByb3AubmFtZV0gPz8gdGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXNbZGZQcm9wLm5hbWVdO1xuXG4gICAgICAgICAgY3VycmVudFBhcmFtLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdmlld2Vycy5mb3JFYWNoKCh2aWV3ZXIpID0+IHtcbiAgICAgICAgICAgICAgdmlld2VyLmRhdGFGcmFtZSA9IGN1cnJlbnRQYXJhbS52YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBkZlNlY3Rpb25UaXRsZTogc3RyaW5nID0gZGZQcm9wLm9wdGlvbnNbJ2NhcHRpb24nXSA/PyBkZlByb3AubmFtZTtcblxuICAgICAgICBpZiAodGFiTGFiZWwgIT09ICdJbnB1dCcpIHtcbiAgICAgICAgICByZXR1cm4gdWkuZGl2VihbXG4gICAgICAgICAgICB1aS5oMihkZlNlY3Rpb25UaXRsZSksXG4gICAgICAgICAgICB1aS5kaXZIKHZpZXdlcnMubWFwKCh2aWV3ZXIsIHZpZXdlckluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzI1JykgcmV0dXJuIHVpLmJsb2NrMjUoW3ZpZXdlci5yb290XSk7XG4gICAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzUwJykgcmV0dXJuIHVpLmJsb2NrNTAoW3ZpZXdlci5yb290XSk7XG4gICAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzc1JykgcmV0dXJuIHVpLmJsb2NrNzUoW3ZpZXdlci5yb290XSk7XG4gICAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzEwMCcpIHJldHVybiB1aS5ibG9jayhbdmlld2VyLnJvb3RdKTtcblxuICAgICAgICAgICAgICByZXR1cm4gdmlld2VyLnJvb3Q7XG4gICAgICAgICAgICB9KSwge3N0eWxlOiB7J2ZsZXgtd3JhcCc6ICd3cmFwJ319KVxuICAgICAgICAgIF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGlucHV0U2VjdGlvbiA9IHVpLmRpdkgodmlld2Vycy5tYXAoKHZpZXdlciwgdmlld2VySW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzI1JykgcmV0dXJuIHVpLmJsb2NrMjUoW3ZpZXdlci5yb290XSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICc1MCcpIHJldHVybiB1aS5ibG9jazUwKFt2aWV3ZXIucm9vdF0pO1xuICAgICAgICAgICAgaWYgKHBhcnNlZFRhYkRmUHJvcHNbZGZJbmRleF1bdmlld2VySW5kZXhdWydibG9jayddID09PSAnNzUnKSByZXR1cm4gdWkuYmxvY2s3NShbdmlld2VyLnJvb3RdKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzEwMCcpIHJldHVybiB1aS5ibG9jayhbdmlld2VyLnJvb3RdKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZpZXdlci5yb290O1xuICAgICAgICAgIH0pLCB7c3R5bGU6IHsnZmxleC13cmFwJzogJ3dyYXAnfX0pO1xuXG4gICAgICAgICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGFyYW06IERHLkZ1bmNDYWxsUGFyYW0gPSB0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXNbZGZQcm9wLm5hbWVdID8/IHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zW2RmUHJvcC5uYW1lXTtcblxuICAgICAgICAgICAgY3VycmVudFBhcmFtLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRhYnNFbGVtLnJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHVpLmRpdlYoW1xuICAgICAgICAgICAgdWkuaDIoZGZTZWN0aW9uVGl0bGUpLFxuICAgICAgICAgICAgaW5wdXRTZWN0aW9uXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cbiAgICAgIGNvbnN0IGdlbmVyYXRlU2NhbGFyc1RhYmxlID0gKCkgPT4gdWkudGFibGVGcm9tTWFwKFxuICAgICAgICB0YWJTY2FsYXJQcm9wcy5yZWR1Y2UoKGFjYywgc2NhbGFyKSA9PiB7XG4gICAgICAgICAgYWNjW3NjYWxhci5uYW1lXSA9IHRoaXMuZnVuY0NhbGw/Lm91dHB1dHNbc2NhbGFyLm5hbWVdO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9IGFzIHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KVxuICAgICAgKTtcblxuICAgICAgbGV0IHNjYWxhcnNUYWJsZSA9IGdlbmVyYXRlU2NhbGFyc1RhYmxlKCk7XG5cbiAgICAgIHRhYlNjYWxhclByb3BzLmZvckVhY2goKHRhYlNjYWxhclByb3ApID0+IHtcbiAgICAgICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgKHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtc1t0YWJTY2FsYXJQcm9wLm5hbWVdIGFzIERHLkZ1bmNDYWxsUGFyYW0pLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2NhbGFyc1RhYmxlID0gZ2VuZXJhdGVTY2FsYXJzVGFibGUoKTtcbiAgICAgICAgICAgIHNjYWxhcnNUYWJsZS5yZXBsYWNlV2l0aChuZXdTY2FsYXJzVGFibGUpO1xuICAgICAgICAgICAgc2NhbGFyc1RhYmxlID0gbmV3U2NhbGFyc1RhYmxlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRhYnNFbGVtLmFkZFBhbmUodGFiTGFiZWwsICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHVpLmRpdlYoWy4uLmRmU2VjdGlvbnMsIC4uLnRhYlNjYWxhclByb3BzLmxlbmd0aCA/IFt1aS5oMignU2NhbGFyIHZhbHVlcycpXTogW10sIHNjYWxhcnNUYWJsZV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgb3V0cHV0QmxvY2suYXBwZW5kKHRoaXMudGFic0VsZW0ucm9vdCk7XG5cbiAgICB0aGlzLnRhYnNFbGVtLmhlYWRlci5jbGFzc0xpc3QuYWRkKElOVEVSQUNUSVZFX0NTU19DTEFTUyk7XG5cbiAgICByZXR1cm4gb3V0cHV0QmxvY2s7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb25BZnRlckxvYWRSdW4obG9hZGVkUnVuOiBERy5GdW5jQ2FsbCkge1xuICAgIHd1KHRoaXMuZnVuY0NhbGwhLm91dHB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pLmZvckVhY2goKG91dCkgPT4ge1xuICAgICAgdGhpcy5mdW5jQ2FsbCEuc2V0UGFyYW1WYWx1ZShvdXQubmFtZSwgbG9hZGVkUnVuLm91dHB1dHNbb3V0Lm5hbWVdKTtcbiAgICB9KTtcblxuICAgIHd1KHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zLnZhbHVlcygpIGFzIERHLkZ1bmNDYWxsUGFyYW1bXSkuZm9yRWFjaCgoaW5wKSA9PiB7XG4gICAgICB0aGlzLmZ1bmNDYWxsIS5zZXRQYXJhbVZhbHVlKGlucC5uYW1lLCBsb2FkZWRSdW4uaW5wdXRzW2lucC5uYW1lXSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRhYnNFbGVtLnJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB0aGlzLnRhYnNFbGVtLnBhbmVzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgdGFiLmhlYWRlci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnZGlzcGxheScpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZlRvVmlld2VyTWFwcGluZzoge1trZXk6IHN0cmluZ106IERHLlZpZXdlcltdfSA9IHt9O1xuXG4gIHByb3RlY3RlZCBnZXQgZGZQYXJhbXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMuZnVuYyEuaW5wdXRzLmZpbHRlcigocCkgPT4gcC5wcm9wZXJ0eVR5cGUgPT0gREcuVFlQRS5EQVRBX0ZSQU1FKSxcbiAgICAgIC4uLnRoaXMuZnVuYyEub3V0cHV0cy5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlID09IERHLlRZUEUuREFUQV9GUkFNRSksXG4gICAgXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZGZPdXRwdXRQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuYyEub3V0cHV0cy5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlID09IERHLlRZUEUuREFUQV9GUkFNRSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzSW5wdXRQYW5lbFJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLmZ1bmM/LmlucHV0cy5zb21lKChwKSA9PiBwLnByb3BlcnR5VHlwZSA9PSBERy5UWVBFLkRBVEFfRlJBTUUgJiYgcC5vcHRpb25zWyd2aWV3ZXInXSAhPSBudWxsKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgb3V0VW5pcXVlUGFyYW1DYXRlZ29yaWVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAuLi5uZXcgU2V0KHRoaXMuZnVuYyEub3V0cHV0cy5tYXAoKHApID0+IHAuY2F0ZWdvcnkpKSAvLyBnZXQgYWxsIG91dHB1dCBwYXJhbXMnIGNhdGVnb3JpZXNcbiAgICBdOyAvLyBrZWVwIG9ubHkgdW5pcXVlIG9mIHRoZW1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgb3V0cHV0VGFic0xhYmVscygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4udGhpcy5vdXRVbmlxdWVQYXJhbUNhdGVnb3JpZXMsXG4gICAgICAuLi50aGlzLm91dFVuaXF1ZVBhcmFtQ2F0ZWdvcmllcy5maW5kKCh2YWwpID0+IHZhbCA9PT0gJ01pc2MnKSA/IFsnT3V0cHV0J10gOiBbXSwgLy8gaWYgbm8gY2F0ZWdvcmllcyBhcmUgc3RhdGVkLCB0aGUgZGVmYXVsdCBjYXRlZ29yeSBpcyBhZGRlZFxuICAgIF07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRhYnNMYWJlbHMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2F0ZWdvcnlUb1BhcmFtTWFwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY2F0ZWdvcnlUb1BhcmFtTWFwKCkge1xuICAgIGNvbnN0IG1hcCA9IHt9IGFzIFJlY29yZDxzdHJpbmcsIERHLlByb3BlcnR5W10+O1xuXG4gICAgaWYgKHRoaXMuaXNJbnB1dFBhbmVsUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuZnVuYyEuaW5wdXRzLlxuICAgICAgICBmaWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlID09IERHLlRZUEUuREFUQV9GUkFNRSAmJiBwLm9wdGlvbnNbJ3ZpZXdlciddICE9IG51bGwpLlxuICAgICAgICBmb3JFYWNoKChwKSA9PiBtYXBbJ0lucHV0J10gPyBtYXBbJ0lucHV0J10ucHVzaChwKTogbWFwWydJbnB1dCddID0gW3BdKTtcbiAgICB9XG5cbiAgICB0aGlzLmZ1bmMhLm91dHB1dHMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBwLmNhdGVnb3J5ID09PSAnTWlzYycgPyAnT3V0cHV0JzogcC5jYXRlZ29yeTtcblxuICAgICAgaWYgKG1hcFtjYXRlZ29yeV0pXG4gICAgICAgIG1hcFtjYXRlZ29yeV0ucHVzaChwKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbWFwW2NhdGVnb3J5XSA9IFtwXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXA7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclJ1blNlY3Rpb24oKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IHJ1bkJ1dHRvbiA9IHVpLmJpZ0J1dHRvbignUnVuJywgYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xuICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW4oKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBncm9rLnNoZWxsLmVycm9yKGUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGJ1dHRvbldyYXBwZXIgPSB1aS5kaXYocnVuQnV0dG9uKTtcbiAgICB1aS50b29sdGlwLmJpbmQoYnV0dG9uV3JhcHBlciwgKCkgPT4gcnVuQnV0dG9uLmRpc2FibGVkID8gKHRoaXMuaXNSdW5uaW5nID8gJ0NvbXB1dGF0aW9ucyBhcmUgaW4gcHJvZ3Jlc3MnIDogJ1NvbWUgaW5wdXRzIGFyZSBpbnZhbGlkJykgOiAnJyk7XG5cbiAgICB0aGlzLmNoZWNrRGlzYWJpbGl0eS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgaXNWYWxpZCA9ICh3dSh0aGlzLmZ1bmNDYWxsIS5pbnB1dHMudmFsdWVzKCkpLmV2ZXJ5KCh2KSA9PiB2ICE9PSBudWxsKSkgJiYgIXRoaXMuaXNSdW5uaW5nO1xuICAgICAgcnVuQnV0dG9uLmRpc2FibGVkID0gaXNWYWxpZCA/IGZhbHNlIDogdHJ1ZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0cyA9IHVpLmRpdlYoW10sICd1aS1mb3JtJyk7XG4gICAgbGV0IHByZXZDYXRlZ29yeSA9ICdNaXNjJztcbiAgICB3dSh0aGlzLmZ1bmNDYWxsIS5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pXG4gICAgICAuZmlsdGVyKCh2YWwpID0+ICEhdmFsKVxuICAgICAgLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wID0gdmFsLnByb3BlcnR5O1xuICAgICAgICBpZiAocHJvcC5wcm9wZXJ0eVR5cGUudG9TdHJpbmcoKSA9PT0gRklMRV9JTlBVVF9UWVBFKSB7XG4gICAgICAgICAgY29uc3QgdCA9IFVpVXRpbHMuZmlsZUlucHV0KHByb3AuY2FwdGlvbiA/PyBwcm9wLm5hbWUsIG51bGwsIChmaWxlOiBGaWxlKSA9PiB0aGlzLmZ1bmNDYWxsIS5pbnB1dHNbcHJvcC5uYW1lXSA9IGZpbGUpO1xuICAgICAgICAgIGlmIChwcm9wLmNhdGVnb3J5ICE9PSBwcmV2Q2F0ZWdvcnkpXG4gICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHVpLmgyKHByb3AuY2F0ZWdvcnkpKTtcblxuICAgICAgICAgIGlucHV0cy5hcHBlbmQodC5yb290KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0ID0gcHJvcC5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSA/XG4gICAgICAgICAgICB1aS50YWJsZUlucHV0KHByb3AubmFtZSwgbnVsbCwgZ3Jvay5zaGVsbC50YWJsZXMpOlxuICAgICAgICAgICAgdWkuaW5wdXQuZm9yUHJvcGVydHkocHJvcCk7XG5cbiAgICAgICAgICB0LmNhcHRpb25MYWJlbC5maXJzdENoaWxkIS5yZXBsYWNlV2l0aCh1aS5zcGFuKFtwcm9wLmNhcHRpb24gPz8gcHJvcC5uYW1lXSkpO1xuICAgICAgICAgIGlmIChwcm9wLm9wdGlvbnNbJ3VuaXRzJ10pIHQuYWRkUG9zdGZpeChwcm9wLm9wdGlvbnNbJ3VuaXRzJ10pO1xuXG4gICAgICAgICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0LnZhbHVlID0gdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3ZhbC5uYW1lXSA/PyBwcm9wLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHQub25DaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPSB0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHQudmFsdWUgPT09IG51bGwpIHNldFRpbWVvdXQoKCkgPT4gdC5pbnB1dC5jbGFzc0xpc3QuYWRkKCdkNC1pbnZhbGlkJyksIDEwMCk7IGVsc2UgdC5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkNC1pbnZhbGlkJyk7IDtcblxuICAgICAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwcm9wLmNhdGVnb3J5ICE9PSBwcmV2Q2F0ZWdvcnkpXG4gICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHVpLmgyKHByb3AuY2F0ZWdvcnkpKTtcblxuICAgICAgICAgIGlmICh0LnZhbHVlID09PSBudWxsKSBydW5CdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlucHV0cy5hcHBlbmQodC5yb290KTtcbiAgICAgICAgfVxuICAgICAgICBwcmV2Q2F0ZWdvcnkgPSBwcm9wLmNhdGVnb3J5O1xuICAgICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJ1dHRvbnMgPSB1aS5idXR0b25zSW5wdXQoW2J1dHRvbldyYXBwZXJdKTtcbiAgICBpbnB1dHMuYXBwZW5kKGJ1dHRvbnMpO1xuICAgIGlucHV0cy5jbGFzc0xpc3QucmVtb3ZlKCd1aS1wYW5lbCcpO1xuICAgIGlucHV0cy5zdHlsZS5wYWRkaW5nVG9wID0gJzBweCc7XG4gICAgaW5wdXRzLnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzBweCc7XG5cbiAgICByZXR1cm4gdWkuZGl2KFtpbnB1dHNdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWZhdWx0RXhwb3J0ID0gYXN5bmMgKGZvcm1hdDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbGFzdENhbGwgPSB0aGlzLmxhc3RDYWxsO1xuICAgIGlmICghbGFzdENhbGwpIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gd2FzIG5vdCBjYWxsZWRgKTtcblxuICAgIGlmICghdGhpcy5leHBvcnRDb25maWchLnN1cHBvcnRlZEZvcm1hdHMuaW5jbHVkZXMoZm9ybWF0KSkgdGhyb3cgbmV3IEVycm9yKGBGb3JtYXQgXCIke2Zvcm1hdH1cIiBpcyBub3Qgc3VwcG9ydGVkLmApO1xuXG4gICAgaWYgKCF0aGlzLmZ1bmMpIHRocm93IG5ldyBFcnJvcignVGhlIGNvcnJlc3BvZGluZyBmdW5jdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBjb25zdCBCTE9CX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XG4gICAgY29uc3QgZXhwb3J0V29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xuXG4gICAgY29uc3QgaXNTY2FsYXJUeXBlID0gKHR5cGU6IERHLlRZUEUpID0+IChERy5UWVBFU19TQ0FMQVIuaGFzKHR5cGUpKTtcblxuICAgIGNvbnN0IGlzRGF0YUZyYW1lID0gKHR5cGU6IERHLlRZUEUpID0+ICh0eXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuXG4gICAgY29uc3QgZGZJbnB1dHMgPSB0aGlzLmZ1bmMuaW5wdXRzLmZpbHRlcigoaW5wdXQpID0+IGlzRGF0YUZyYW1lKGlucHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IHNjYWxhcklucHV0cyA9IHRoaXMuZnVuYy5pbnB1dHMuZmlsdGVyKChpbnB1dCkgPT4gaXNTY2FsYXJUeXBlKGlucHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IGRmT3V0cHV0cyA9IHRoaXMuZnVuYy5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBpc0RhdGFGcmFtZShvdXRwdXQucHJvcGVydHlUeXBlKSk7XG4gICAgY29uc3Qgc2NhbGFyT3V0cHV0cyA9IHRoaXMuZnVuYy5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBpc1NjYWxhclR5cGUob3V0cHV0LnByb3BlcnR5VHlwZSkpO1xuXG4gICAgY29uc3QgaW5wdXRQYXJhbXMgPSBbLi4ubGFzdENhbGwuaW5wdXRQYXJhbXMudmFsdWVzKCldIGFzIERHLkZ1bmNDYWxsUGFyYW1bXTtcbiAgICBjb25zdCBvdXRwdXRQYXJhbXMgPSBbLi4ubGFzdENhbGwub3V0cHV0UGFyYW1zLnZhbHVlcygpXSBhcyBERy5GdW5jQ2FsbFBhcmFtW107XG5cbiAgICBkZklucHV0cy5mb3JFYWNoKChkZklucHV0KSA9PiB7XG4gICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZklucHV0Lm9wdGlvbnMuY2FwdGlvbiB8fCBkZklucHV0Lm5hbWU7XG4gICAgICBjb25zdCBjdXJyZW50RGZTaGVldCA9IGV4cG9ydFdvcmtib29rLmFkZFdvcmtzaGVldChnZXRTaGVldE5hbWUodmlzaWJsZVRpdGxlLCBESVJFQ1RJT04uSU5QVVQpKTtcblxuICAgICAgY29uc3QgY3VycmVudERmID0gKGxhc3RDYWxsLmlucHV0c1tkZklucHV0Lm5hbWVdIGFzIERHLkRhdGFGcmFtZSk7XG4gICAgICBkZlRvU2hlZXQoY3VycmVudERmU2hlZXQsIGN1cnJlbnREZik7XG4gICAgfSk7XG5cbiAgICBpZiAoc2NhbGFySW5wdXRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgaW5wdXRTY2FsYXJzU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoJ0lucHV0IHNjYWxhcnMnKTtcbiAgICAgIHNjYWxhcnNUb1NoZWV0KGlucHV0U2NhbGFyc1NoZWV0LCBzY2FsYXJJbnB1dHMubWFwKChzY2FsYXJJbnB1dCkgPT4gKHtcbiAgICAgICAgY2FwdGlvbjogc2NhbGFySW5wdXQub3B0aW9uc1snY2FwdGlvbiddIHx8IHNjYWxhcklucHV0Lm5hbWUsXG4gICAgICAgIHZhbHVlOiBsYXN0Q2FsbC5pbnB1dHNbc2NhbGFySW5wdXQubmFtZV0sXG4gICAgICAgIHVuaXRzOiBzY2FsYXJJbnB1dC5vcHRpb25zWyd1bml0cyddIHx8ICcnLFxuICAgICAgfSkpKTtcbiAgICB9XG5cbiAgICBkZk91dHB1dHMuZm9yRWFjaCgoZGZPdXRwdXQpID0+IHtcbiAgICAgIGNvbnN0IHZpc2libGVUaXRsZSA9IGRmT3V0cHV0Lm9wdGlvbnMuY2FwdGlvbiB8fCBkZk91dHB1dC5uYW1lO1xuICAgICAgY29uc3QgY3VycmVudERmU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLk9VVFBVVCkpO1xuXG4gICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwub3V0cHV0c1tkZk91dHB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuICAgICAgZGZUb1NoZWV0KGN1cnJlbnREZlNoZWV0LCBjdXJyZW50RGYpO1xuICAgIH0pO1xuXG5cbiAgICBpZiAoc2NhbGFyT3V0cHV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG91dHB1dFNjYWxhcnNTaGVldCA9IGV4cG9ydFdvcmtib29rLmFkZFdvcmtzaGVldCgnT3V0cHV0IHNjYWxhcnMnKTtcbiAgICAgIHNjYWxhcnNUb1NoZWV0KG91dHB1dFNjYWxhcnNTaGVldCwgc2NhbGFyT3V0cHV0cy5tYXAoKHNjYWxhck91dHB1dCkgPT4gKHtcbiAgICAgICAgY2FwdGlvbjogc2NhbGFyT3V0cHV0Lm9wdGlvbnNbJ2NhcHRpb24nXSB8fCBzY2FsYXJPdXRwdXQubmFtZSxcbiAgICAgICAgdmFsdWU6IGxhc3RDYWxsLm91dHB1dHNbc2NhbGFyT3V0cHV0Lm5hbWVdLFxuICAgICAgICB1bml0czogc2NhbGFyT3V0cHV0Lm9wdGlvbnNbJ3VuaXRzJ10gfHwgJycsXG4gICAgICB9KSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYkNvbnRyb2wgPSB0aGlzLnRhYnNFbGVtO1xuICAgIGZvciAoY29uc3QgdGFiTGFiZWwgb2YgdGhpcy50YWJzTGFiZWxzKSB7XG4gICAgICB0YWJDb250cm9sLmN1cnJlbnRQYW5lID0gdGFiQ29udHJvbC5nZXRQYW5lKHRhYkxhYmVsKTtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMCkpO1xuICAgICAgaWYgKHRhYkxhYmVsID09PSAnSW5wdXQnKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXRQYXJhbSBvZiBpbnB1dFBhcmFtcy5maWx0ZXIoKGlucHV0UGFyYW0pID0+IGlucHV0UGFyYW0ucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpKSB7XG4gICAgICAgICAgY29uc3Qgbm9uR3JpZFZpZXdlcnMgPSB0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW2lucHV0UGFyYW0ubmFtZV0uZmlsdGVyKCh2aWV3ZXIpID0+IHZpZXdlci50eXBlICE9PSBERy5WSUVXRVIuR1JJRCk7XG5cbiAgICAgICAgICBjb25zdCBkZklucHV0ID0gZGZJbnB1dHMuZmluZCgoaW5wdXQpID0+IGlucHV0Lm5hbWUgPT09IGlucHV0UGFyYW0ubmFtZSk7XG4gICAgICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dCEub3B0aW9ucy5jYXB0aW9uIHx8IGlucHV0UGFyYW0ubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwuaW5wdXRzW2RmSW5wdXQhLm5hbWVdIGFzIERHLkRhdGFGcmFtZSk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmlld2VyXSBvZiBub25HcmlkVmlld2Vycy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHBsb3RUb1NoZWV0KFxuICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgZXhwb3J0V29ya2Jvb2suZ2V0V29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5JTlBVVCkpLFxuICAgICAgICAgICAgICB2aWV3ZXIucm9vdCxcbiAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dFBhcmFtIG9mIG91dHB1dFBhcmFtcy5maWx0ZXIoKG91dHB1dFBhcmFtKSA9PiBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSAmJiBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5jYXRlZ29yeSA9PT0gdGFiTGFiZWwpKSB7XG4gICAgICAgICAgY29uc3Qgbm9uR3JpZFZpZXdlcnMgPSB0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW291dHB1dFBhcmFtLm5hbWVdLmZpbHRlcigodmlld2VyKSA9PiB2aWV3ZXIudHlwZSAhPT0gREcuVklFV0VSLkdSSUQpO1xuXG4gICAgICAgICAgY29uc3QgZGZPdXRwdXQgPSBkZk91dHB1dHMuZmluZCgoaW5wdXQpID0+IGlucHV0Lm5hbWUgPT09IG91dHB1dFBhcmFtLm5hbWUpITtcbiAgICAgICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgb3V0cHV0UGFyYW0ubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwub3V0cHV0c1tkZk91dHB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZpZXdlcl0gb2Ygbm9uR3JpZFZpZXdlcnMuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAodmlld2VyLnR5cGUgPT09IERHLlZJRVdFUi5TVEFUSVNUSUNTKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5zdHJpbmcoJ05hbWUnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdWYWx1ZXMnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy52YWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdOdWxscycsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pc3NpbmdWYWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ01pbicsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pbiksXG4gICAgICAgICAgICAgICAgREcuQ29sdW1uLmZsb2F0KCdNYXgnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy5tYXgpLFxuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5mbG9hdCgnQXZnJywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuYXZnKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ1N0ZGV2JywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuc3RkZXYpLFxuICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgZGZUb1NoZWV0KFxuICAgICAgICAgICAgICAgIGV4cG9ydFdvcmtib29rLmdldFdvcmtzaGVldChnZXRTaGVldE5hbWUodmlzaWJsZVRpdGxlLCBESVJFQ1RJT04uT1VUUFVUKSksXG4gICAgICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgICAoaW5kZXggPiAwKSA/IE1hdGguY2VpbChub25HcmlkVmlld2Vyc1tpbmRleC0xXS5yb290LmNsaWVudEhlaWdodCAvIDIwKSArIDEgOiAwXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhd2FpdCBwbG90VG9TaGVldChcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vay5nZXRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLk9VVFBVVCkpLFxuICAgICAgICAgICAgICAgIHZpZXdlci5yb290LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aCArIDIsXG4gICAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGV4cG9ydFdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcblxuICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6IEJMT0JfVFlQRX0pO1xuICB9O1xufVxuXG5jb25zdCBnZXRTaGVldE5hbWUgPSAobmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IERJUkVDVElPTikgPT4ge1xuICBjb25zdCBpZGVhbE5hbWUgPSBgJHtkaXJlY3Rpb259IC0gJHtuYW1lfWA7XG4gIHJldHVybiAoaWRlYWxOYW1lLmxlbmd0aCA+IDMxKSA/IG5hbWUuc3Vic3RyaW5nKDAsIDMyKSA6IGlkZWFsTmFtZTtcbn07XG5cbmVudW0gRElSRUNUSU9OIHtcbiAgSU5QVVQgPSAnSW5wdXQnLFxuICBPVVRQVVQgPSAnT3V0cHV0J1xufVxuXG5jb25zdCBzY2FsYXJzVG9TaGVldCA9IChzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQsIHNjYWxhcnM6IHsgY2FwdGlvbjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB1bml0czogc3RyaW5nIH1bXSkgPT4ge1xuICBzaGVldC5hZGRSb3coWydQYXJhbWV0ZXInLCAnVmFsdWUnLCAnVW5pdHMnXSkuZm9udCA9IHtib2xkOiB0cnVlfTtcbiAgc2NhbGFycy5mb3JFYWNoKChzY2FsYXIpID0+IHtcbiAgICBzaGVldC5hZGRSb3coW3NjYWxhci5jYXB0aW9uLCBzY2FsYXIudmFsdWUsIHNjYWxhci51bml0c10pO1xuICB9KTtcblxuICBzaGVldC5nZXRDb2x1bW4oMSkud2lkdGggPSBNYXRoLm1heChcbiAgICAuLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIuY2FwdGlvbi50b1N0cmluZygpLmxlbmd0aCksICdQYXJhbWV0ZXInLmxlbmd0aFxuICApICogMS4yO1xuICBzaGVldC5nZXRDb2x1bW4oMikud2lkdGggPSBNYXRoLm1heCguLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpLCAnVmFsdWUnLmxlbmd0aCkgKiAxLjI7XG4gIHNoZWV0LmdldENvbHVtbigzKS53aWR0aCA9IE1hdGgubWF4KC4uLnNjYWxhcnMubWFwKChzY2FsYXIpID0+IHNjYWxhci51bml0cy50b1N0cmluZygpLmxlbmd0aCksICdVbml0cycubGVuZ3RoKSAqIDEuMjtcbn07XG5cbmNvbnN0IGRmVG9TaGVldCA9IChzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQsIGRmOiBERy5EYXRhRnJhbWUsIGNvbHVtbjogbnVtYmVyID0gMCwgcm93OiBudW1iZXIgPSAwKSA9PiB7XG4gIGZvciAobGV0IGk9IDA7IGkgPCBkZi5jb2x1bW5zLm5hbWVzKCkubGVuZ3RoOyBpKyspIHtcbiAgICBzaGVldC5nZXRDZWxsKDEgKyByb3csIDEgKyBpICsgY29sdW1uKS52YWx1ZSA9IGRmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lO1xuICAgIHNoZWV0LmdldENvbHVtbigxICsgaSArIGNvbHVtbikud2lkdGggPSBNYXRoLm1heChcbiAgICAgIC4uLmRmLmNvbHVtbnMuYnlJbmRleChpKS5jYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LnRvU3RyaW5nKCkubGVuZ3RoKSxcbiAgICAgIGRmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lLmxlbmd0aFxuICAgICkgKiAxLjI7XG4gIH1cbiAgZm9yIChsZXQgZGZDb2x1bW4gPSAwOyBkZkNvbHVtbiA8IGRmLmNvbHVtbnMubGVuZ3RoOyBkZkNvbHVtbisrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZi5yb3dDb3VudDsgaSsrKVxuICAgICAgc2hlZXQuZ2V0Q2VsbChpICsgMiArIHJvdywgMSArIGNvbHVtbitkZkNvbHVtbikudmFsdWUgPSBkZi5jb2x1bW5zLmJ5SW5kZXgoZGZDb2x1bW4pLmdldChpKTtcbiAgfVxufTtcblxuY29uc3QgcGxvdFRvU2hlZXQgPSBhc3luYyAoZXhwb3J0V2I6IEV4Y2VsSlMuV29ya2Jvb2ssIHNoZWV0OiBFeGNlbEpTLldvcmtzaGVldCwgcGxvdDogSFRNTEVsZW1lbnQsIGNvbHVtbkZvckltYWdlOiBudW1iZXIsIHJvd0ZvckltYWdlOiBudW1iZXIgPSAwKSA9PiB7XG4gIGNvbnN0IGNhbnZhcyA9IGF3YWl0IGh0bWwyY2FudmFzKHBsb3QgYXMgSFRNTEVsZW1lbnQsIHtsb2dnaW5nOiBmYWxzZX0pO1xuICBjb25zdCBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG5cbiAgY29uc3QgaW1hZ2VJZCA9IGV4cG9ydFdiLmFkZEltYWdlKHtcbiAgICBiYXNlNjQ6IGRhdGFVcmwsXG4gICAgZXh0ZW5zaW9uOiAncG5nJyxcbiAgfSk7XG4gIHNoZWV0LmFkZEltYWdlKGltYWdlSWQsIHtcbiAgICB0bDoge2NvbDogY29sdW1uRm9ySW1hZ2UsIHJvdzogcm93Rm9ySW1hZ2V9LFxuICAgIGV4dDoge3dpZHRoOiBjYW52YXMud2lkdGgsIGhlaWdodDogY2FudmFzLmhlaWdodH0sXG4gIH0pO1xufTtcbiJdfQ==
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC1mdW5jdGlvbi12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmljaC1mdW5jdGlvbi12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDRCQUE0QjtBQUM1QixPQUFPLEtBQUssSUFBSSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXJELE1BQU0sa0JBQWtCLEdBQTRCO0lBQ2xELENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2pDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO0lBQy9CLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRO0lBQ2hDLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTO0lBQ2pDLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZO0lBQ3ZDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPO0lBQzlCLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lB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LEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFcEUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDckYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDekYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFOUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQXVCLENBQUM7WUFDN0UsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQXVCLENBQUM7WUFFL0UsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9B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LENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29DQUNsRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7b0NBQ3hHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0NBQzFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0NBQzFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0NBQzFGLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUNBQy9GLENBQUMsQ0FBQztnQ0FDSCxTQUFTLENBQ1AsY0FBYyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUN6RSxLQUFLLEVBQ0wsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUM1QixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hGLENBQUM7NkJBQ0g7aUNBQU07Z0NBQ0wsTUFBTSxXQUFXLENBQ2YsY0FBYyxFQUNkLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekUsTUFBTSxDQUFDLElBQUksRUFDWCxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzVCLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEYsQ0FBQzs2QkFDSDt5QkFDRjtxQkFDRjtvQkFBQSxDQUFDO2lCQUNIO2FBQ0Y7WUFBQSxDQUFDO1lBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXZELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQSxDQUFDO1FBbGNBLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDO1FBRW5ELElBQUksQ0FBQyxZQUFZLEdBQUc7WUFDbEIsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGdDQUFnQyxFQUFFO1lBQzVELGdCQUFnQixFQUFFLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN0RCxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDMUIsUUFBUSxFQUFFLElBQUksQ0FBQyxxQkFBcUI7U0FDckMsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVlLFlBQVksQ0FBQyxRQUFxQjs7UUFDaEQsTUFBTSxvQkFBb0IsR0FBRyxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUUxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsb0JBQW9CO2dCQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksTUFBTSxNQUFBLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1DQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLEVBQUUsQ0FBQzs7Z0JBRWpNLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxNQUFBLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1DQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLEVBQUUsQ0FBQztZQUcxTyw4Q0FBOEM7WUFDOUMsTUFBQSxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLDBDQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUN4QzthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7WUFFZixJQUFJLG9CQUFvQjtnQkFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDckU7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRWUsVUFBVSxDQUFDLE9BQW9CO1FBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLE9BQU87UUFDWixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFMUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxLQUFLLEdBQUcsR0FBRztnQkFDYixDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOztnQkFFeEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNsQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFFMUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBRTdCLFVBQVUsQ0FBQyxhQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFFbkQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sZUFBZTtRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBSU0sZ0JBQWdCO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUcsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFGLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUU7O2dCQUNwRCxNQUFNLE9BQU8sR0FBZ0IsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBbUMsRUFBRSxFQUFFOztvQkFDakcsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLE1BQUEsSUFBSSxDQUFDLFFBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUU5SSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDeEYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFFOUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUUvSSxPQUFPLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7O29CQUNuQyxNQUFNLFlBQVksR0FBcUIsTUFBQSxJQUFJLENBQUMsUUFBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxRQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFM0gsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ3pCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxjQUFjLEdBQVcsTUFBQSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxtQ0FBSSxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUV4RSxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUU7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQzt3QkFDYixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQzt3QkFDckIsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFOzRCQUMxQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUk7Z0NBQUUsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7NEJBQy9GLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtnQ0FBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs0QkFDL0YsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJO2dDQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUMvRixJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUs7Z0NBQUUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7NEJBRTlGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFDckIsQ0FBQyxDQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsRUFBQyxXQUFXLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FBQztxQkFDcEMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRTt3QkFDL0QsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJOzRCQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUMvRixJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUk7NEJBQUUsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQy9GLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTs0QkFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzt3QkFDL0YsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLOzRCQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUU5RixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxFQUFFLEVBQUMsS0FBSyxFQUFFLEVBQUMsV0FBVyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQUMsQ0FBQztvQkFFcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7O3dCQUNuQyxNQUFNLFlBQVksR0FBcUIsTUFBQSxJQUFJLENBQUMsUUFBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxRQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFFM0gsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFOzRCQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUNyRCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztvQkFFSCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ2IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUM7d0JBQ3JCLFlBQVk7cUJBQ2IsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFHSCxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQ2hELGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7O2dCQUNwQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBNkIsQ0FBQyxDQUNsQyxDQUFDO1lBRUYsSUFBSSxZQUFZLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztZQUUxQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNsQyxJQUFJLENBQUMsUUFBUyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFzQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUM3RixNQUFNLGVBQWUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO3dCQUMvQyxZQUFZLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUMxQyxZQUFZLEdBQUcsZUFBZSxDQUFDO29CQUNqQyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDbkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDekcsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFMUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVZLGNBQWMsQ0FBQyxTQUFzQjs7WUFDaEQsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBd0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM3RSxJQUFJLENBQUMsUUFBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUF3QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzVFLElBQUksQ0FBQyxRQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FBQTtJQUlELElBQWMsUUFBUTtRQUNwQixPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsSUFBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDeEUsR0FBRyxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFjLGNBQWM7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBYyxvQkFBb0I7O1FBQ2hDLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSSxLQUFLLENBQUM7SUFDckgsQ0FBQztJQUVELElBQWMsd0JBQXdCO1FBQ3BDLE9BQU87WUFDTCxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0NBQW9DO1NBQzNGLENBQUMsQ0FBQywyQkFBMkI7SUFDaEMsQ0FBQztJQUVELElBQWMsZ0JBQWdCO1FBQzVCLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQyx3QkFBd0I7WUFDaEMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSw2REFBNkQ7U0FDaEosQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFjLFVBQVU7UUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFjLGtCQUFrQjtRQUM5QixNQUFNLEdBQUcsR0FBRyxFQUFtQyxDQUFDO1FBRWhELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFLLENBQUMsTUFBTTtnQkFDZixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUM7Z0JBQ2xGLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsSUFBSSxDQUFDLElBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUU5RCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7Z0JBRXRCLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQVMsRUFBRTtZQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDbEI7WUFBQyxPQUFPLENBQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtvQkFBUztnQkFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQSxDQUFDLENBQUM7UUFDSCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5SSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNqRyxTQUFTLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDMUIsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBd0IsQ0FBQzthQUMxRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDdEIsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7O1lBQ2YsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssZUFBZSxFQUFFO2dCQUNwRCxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQUEsSUFBSSxDQUFDLE9BQU8sbUNBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDdEgsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFlBQVk7b0JBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsdUVBQXVFO2dCQUN2RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2xELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBLENBQUM7b0JBQ2pFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUU3QixDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQUEsSUFBSSxDQUFDLE9BQU8sbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztvQkFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFFL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7O29CQUNuQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFJLElBQUksQ0FBQyxZQUFZLG1DQUFJLElBQUksQ0FBQztnQkFDekUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJO3dCQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7O3dCQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFBQyxDQUFDO29CQUVoSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM5QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssWUFBWTtvQkFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUV0QyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSTtvQkFBRSxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7WUFDRCxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNMLGFBQWE7UUFDYixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFakMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0NBNkhGO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFZLEVBQUUsU0FBb0IsRUFBRSxFQUFFO0lBQzFELE1BQU0sU0FBUyxHQUFHLEdBQUcsU0FBUyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQzNDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JFLENBQUMsQ0FBQztBQUVGLElBQUssU0FHSjtBQUhELFdBQUssU0FBUztJQUNaLDRCQUFlLENBQUE7SUFDZiw4QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSEksU0FBUyxLQUFULFNBQVMsUUFHYjtBQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBd0IsRUFBRSxPQUE0RCxFQUFFLEVBQUU7SUFDaEgsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDbEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUNqQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FDakYsR0FBRyxHQUFHLENBQUM7SUFDUixLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3RILEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDeEgsQ0FBQyxDQUFDO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUF3QixFQUFFLEVBQWdCLEVBQUUsU0FBaUIsQ0FBQyxFQUFFLE1BQWMsQ0FBQyxFQUFFLEVBQUU7SUFDcEcsS0FBSyxJQUFJLENBQUMsR0FBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2pELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUM5QyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDakYsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FDbEMsR0FBRyxHQUFHLENBQUM7S0FDVDtJQUNELEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUMvRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUU7WUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDL0Y7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFPLFFBQTBCLEVBQUUsS0FBd0IsRUFBRSxJQUFpQixFQUFFLGNBQXNCLEVBQUUsY0FBc0IsQ0FBQyxFQUFFLEVBQUU7SUFDckosTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBbUIsRUFBRSxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFOUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxNQUFNLEVBQUUsT0FBTztRQUNmLFNBQVMsRUFBRSxLQUFLO0tBQ2pCLENBQUMsQ0FBQztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1FBQ3RCLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBQztRQUMzQyxHQUFHLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBQztLQUNsRCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQge0Z1bmN0aW9uVmlldywgSU5URVJBQ1RJVkVfQ1NTX0NMQVNTfSBmcm9tICcuL2Z1bmN0aW9uLXZpZXcnO1xuaW1wb3J0IEV4Y2VsSlMgZnJvbSAnZXhjZWxqcyc7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcbmltcG9ydCAkIGZyb20gJ2Nhc2gtZG9tJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1VpVXRpbHN9IGZyb20gJy4vc2hhcmVkLWNvbXBvbmVudHMvdWktdXRpbHMnO1xuXG5jb25zdCB2aWV3ZXJUeXBlc01hcHBpbmc6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICBbJ2JhcmNoYXJ0J106IERHLlZJRVdFUi5CQVJfQ0hBUlQsXG4gIFsnYm94cGxvdCddOiBERy5WSUVXRVIuQk9YX1BMT1QsXG4gIFsnY2FsZW5kYXInXTogREcuVklFV0VSLkNBTEVOREFSLFxuICBbJ2NvcnJwbG90J106IERHLlZJRVdFUi5DT1JSX1BMT1QsXG4gIFsnZGVuc2l0eXBsb3QnXTogREcuVklFV0VSLkRFTlNJVFlfUExPVCxcbiAgWydmaWx0ZXJzJ106IERHLlZJRVdFUi5GSUxURVJTLFxuICBbJ2Zvcm0nXTogREcuVklFV0VSLkZPUk0sXG4gIFsnZ2xvYmUnXTogREcuVklFV0VSLkdMT0JFLFxuICBbJ2dvb2dsZW1hcCddOiBERy5WSUVXRVIuR09PR0xFX01BUCxcbiAgWydncmlkJ106IERHLlZJRVdFUi5HUklELFxuICBbJ2hlYXRtYXAnXTogREcuVklFV0VSLkhFQVRfTUFQLFxuICBbJ2hpc3RvZ3JhbSddOiBERy5WSUVXRVIuSElTVE9HUkFNLFxuICBbJ2xpbmVjaGFydCddOiBERy5WSUVXRVIuTElORV9DSEFSVCxcbiAgWydtYXJrdXAnXTogREcuVklFV0VSLk1BUktVUCxcbiAgWydtYXRyaXhwbG90J106IERHLlZJRVdFUi5NQVRSSVhfUExPVCxcbiAgWyduZXR3b3JrZGlhZ3JhbSddOiBERy5WSUVXRVIuTkVUV09SS19ESUFHUkFNLFxuICBbJ3BjcGxvdCddOiBERy5WSUVXRVIuUENfUExPVCxcbiAgWydwaWVjaGFydCddOiBERy5WSUVXRVIuUElFX0NIQVJULFxuICBbJ3NjYXR0ZXJwbG90J106IERHLlZJRVdFUi5TQ0FUVEVSX1BMT1QsXG4gIFsnc2NhdHRlcnBsb3QzZCddOiBERy5WSUVXRVIuU0NBVFRFUl9QTE9UXzNELFxuICBbJ3NoYXBlbWFwJ106IERHLlZJRVdFUi5TSEFQRV9NQVAsXG4gIFsnc3RhdGlzdGljcyddOiBERy5WSUVXRVIuU1RBVElTVElDUyxcbiAgWyd0aWxldmlld2VyJ106IERHLlZJRVdFUi5USUxFX1ZJRVdFUixcbiAgWyd0aW1lbGluZXMnXTogREcuVklFV0VSLlRJTUVMSU5FUyxcbiAgWyd0cmVlbWFwJ106IERHLlZJRVdFUi5UUkVFX01BUCxcbiAgWyd0cmVsbGlzcGxvdCddOiBERy5WSUVXRVIuVFJFTExJU19QTE9ULFxuICBbJ3dvcmRjbG91ZCddOiBERy5WSUVXRVIuV09SRF9DTE9VRCxcbn07XG5cbmNvbnN0IEZJTEVfSU5QVVRfVFlQRSA9ICdmaWxlJztcblxuZXhwb3J0IGNsYXNzIFJpY2hGdW5jdGlvblZpZXcgZXh0ZW5kcyBGdW5jdGlvblZpZXcge1xuICAvLyBlbWl0dGVkIHdoZW4gYWZ0ZXIgYSBuZXcgRnVuY0NhbGwgaXMgbGlua2VkXG4gIHByaXZhdGUgZnVuY0NhbGxSZXBsYWNlZCA9IG5ldyBTdWJqZWN0PHRydWU+KCk7XG5cbiAgLy8gZW1pdHRlZCB3aGVuIHJ1bkJ1dHRvbiBkaXNhYmlsaXR5IHNob3VsZCBiZSBjaGVja2VkXG4gIHByaXZhdGUgY2hlY2tEaXNhYmlsaXR5ID0gbmV3IFN1YmplY3QoKTtcblxuICAvLyBzdG9yZXMgdGhlIHJ1bm5pbmcgc3RhdGVcbiAgcHJpdmF0ZSBpc1J1bm5pbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihmdW5jQ2FsbDogREcuRnVuY0NhbGwpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5iYXNlUGF0aCA9IGBzY3JpcHRzLyR7ZnVuY0NhbGwuZnVuYy5pZH0vdmlld2A7XG5cbiAgICB0aGlzLmV4cG9ydENvbmZpZyA9IHtcbiAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEV4dGVuc2lvbnMoKSxcbiAgICAgIHN1cHBvcnRlZEZvcm1hdHM6IHRoaXMuZGVmYXVsdFN1cHBvcnRlZEV4cG9ydEZvcm1hdHMoKSxcbiAgICAgIGV4cG9ydDogdGhpcy5kZWZhdWx0RXhwb3J0LFxuICAgICAgZmlsZW5hbWU6IHRoaXMuZGVmYXVsdEV4cG9ydEZpbGVuYW1lLFxuICAgIH07XG5cbiAgICB0aGlzLmxpbmtGdW5jY2FsbChmdW5jQ2FsbCk7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5idWlsZCgpO1xuXG4gICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLm5leHQoKTtcblxuICAgIHRoaXMubmFtZSA9IGZ1bmNDYWxsLmZ1bmMuZnJpZW5kbHlOYW1lO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGxpbmtGdW5jY2FsbChmdW5jQ2FsbDogREcuRnVuY0NhbGwpIHtcbiAgICBjb25zdCBpc1ByZXZpb3VzSGlzdG9yaWNhbCA9IHRoaXMuX2Z1bmNDYWxsPy5vcHRpb25zWydpc0hpc3RvcmljYWwnXTtcbiAgICB0aGlzLl9mdW5jQ2FsbCA9IGZ1bmNDYWxsO1xuXG4gICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLm5leHQodHJ1ZSk7XG5cbiAgICBpZiAoZnVuY0NhbGwub3B0aW9uc1snaXNIaXN0b3JpY2FsJ10pIHtcbiAgICAgIGlmICghaXNQcmV2aW91c0hpc3RvcmljYWwpXG4gICAgICAgIHRoaXMubmFtZSA9IGAke3RoaXMubmFtZX0g4oCUICR7ZnVuY0NhbGwub3B0aW9uc1sndGl0bGUnXSA/PyBuZXcgRGF0ZShmdW5jQ2FsbC5zdGFydGVkLnRvU3RyaW5nKCkpLnRvTG9jYWxlU3RyaW5nKCdlbi11cycsIHttb250aDogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsIGhvdXI6ICdudW1lcmljJywgbWludXRlOiAnbnVtZXJpYyd9KX1gO1xuICAgICAgZWxzZVxuICAgICAgICB0aGlzLm5hbWUgPSBgJHt0aGlzLm5hbWUuc3Vic3RyaW5nKDAsIHRoaXMubmFtZS5pbmRleE9mKCcg4oCUICcpKX0g4oCUICR7ZnVuY0NhbGwub3B0aW9uc1sndGl0bGUnXSA/PyBuZXcgRGF0ZShmdW5jQ2FsbC5zdGFydGVkLnRvU3RyaW5nKCkpLnRvTG9jYWxlU3RyaW5nKCdlbi11cycsIHttb250aDogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycsIGhvdXI6ICdudW1lcmljJywgbWludXRlOiAnbnVtZXJpYyd9KX1gO1xuXG5cbiAgICAgIC8vIEZJWCBNRTogdmlldyBuYW1lIGRvZXMgbm90IGNoYW5nZSBpbiBtb2RlbHNcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5kNC1yaWJib24tbmFtZScpPy5yZXBsYWNlQ2hpbGRyZW4odWkuc3BhbihbdGhpcy5uYW1lXSkpO1xuICAgICAgdGhpcy5wYXRoID0gYD9pZD0ke3RoaXMuX2Z1bmNDYWxsLmlkfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGF0aCA9IGBgO1xuXG4gICAgICBpZiAoaXNQcmV2aW91c0hpc3RvcmljYWwpXG4gICAgICAgIHRoaXMubmFtZSA9IGAke3RoaXMubmFtZS5zdWJzdHJpbmcoMCwgdGhpcy5uYW1lLmluZGV4T2YoJyDigJQgJykpfWA7XG4gICAgfVxuICAgIHRoaXMuYnVpbGRSaWJib25QYW5lbHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBvbkFmdGVyUnVuKHJ1bkZ1bmM6IERHLkZ1bmNDYWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgdGhpcy50YWJzRWxlbS5wYW5lcy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIHRhYi5oZWFkZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZElPKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBpbnB1dEJsb2NrID0gdGhpcy5idWlsZElucHV0QmxvY2soKTtcblxuICAgIHVpLnRvb2xzLmhhbmRsZVJlc2l6ZShpbnB1dEJsb2NrLCAod2lkdGgpID0+IHtcbiAgICAgIGlmICh3aWR0aCA8IDM1MClcbiAgICAgICAgJChpbnB1dEJsb2NrLmZpcnN0Q2hpbGQhKS5hZGRDbGFzcygndWktZm9ybS1jb25kZW5zZWQnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgJChpbnB1dEJsb2NrLmZpcnN0Q2hpbGQhKS5yZW1vdmVDbGFzcygndWktZm9ybS1jb25kZW5zZWQnKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dEJsb2NrID0gdGhpcy5idWlsZE91dHB1dEJsb2NrKCk7XG4gICAgb3V0cHV0QmxvY2suc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIG91dHB1dEJsb2NrLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMudGFic0VsZW0ucm9vdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgaWYgKCEhdGhpcy50YWJzRWxlbS5nZXRQYW5lKCdJbnB1dCcpKSB7XG4gICAgICB0aGlzLnRhYnNFbGVtLnBhbmVzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgICB0YWIuaGVhZGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXQgPSB1aS5zcGxpdEgoW2lucHV0QmxvY2ssIHVpLnBhbmVsKFtvdXRwdXRCbG9ja10pXSwgbnVsbCwgdHJ1ZSk7XG4gICAgb3V0LnN0eWxlLnBhZGRpbmcgPSAnMCAxMnB4JztcblxuICAgIGlucHV0QmxvY2sucGFyZW50RWxlbWVudCEuc3R5bGUubWF4V2lkdGggPSAnNDUwcHgnO1xuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZElucHV0QmxvY2soKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGZvcm1EaXYgPSB0aGlzLnJlbmRlclJ1blNlY3Rpb24oKTtcblxuICAgIHJldHVybiBmb3JtRGl2O1xuICB9XG5cbiAgcHJpdmF0ZSB0YWJzRWxlbSA9IHVpLnRhYkNvbnRyb2woKTtcblxuICBwdWJsaWMgYnVpbGRPdXRwdXRCbG9jaygpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3Qgb3V0cHV0QmxvY2sgPSB1aS5ib3goKTtcblxuICAgIHRoaXMudGFic0xhYmVscy5mb3JFYWNoKCh0YWJMYWJlbCkgPT4ge1xuICAgICAgY29uc3QgdGFiRGZQcm9wcyA9IHRoaXMuY2F0ZWdvcnlUb1BhcmFtTWFwW3RhYkxhYmVsXS5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICAgICAgY29uc3QgdGFiU2NhbGFyUHJvcHMgPSB0aGlzLmNhdGVnb3J5VG9QYXJhbU1hcFt0YWJMYWJlbF0uZmlsdGVyKChwKSA9PiBwLnByb3BlcnR5VHlwZSAhPT0gREcuVFlQRS5EQVRBX0ZSQU1FKTtcbiAgICAgIGNvbnN0IHBhcnNlZFRhYkRmUHJvcHMgPSB0YWJEZlByb3BzLm1hcCgoZGZQcm9wKSA9PiBKU09OLnBhcnNlKGRmUHJvcC5vcHRpb25zWyd2aWV3ZXInXSkpO1xuXG4gICAgICBjb25zdCBkZlNlY3Rpb25zID0gdGFiRGZQcm9wcy5tYXAoKGRmUHJvcCwgZGZJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3ZXJzOiBERy5WaWV3ZXJbXSA9IHBhcnNlZFRhYkRmUHJvcHNbZGZJbmRleF0ubWFwKCh2aWV3ZXJEZXNjOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHRoaXMuZnVuY0NhbGw/Lm91dHB1dHNbZGZQcm9wLm5hbWVdPy52YWx1ZSA/PyB0aGlzLmZ1bmNDYWxsIS5pbnB1dFBhcmFtc1tkZlByb3AubmFtZV0/LnZhbHVlID8/IERHLkRhdGFGcmFtZS5mcm9tQ3N2KGBgKTtcblxuICAgICAgICAgIGNvbnN0IHZpZXdlciA9IERHLlZpZXdlci5mcm9tVHlwZSh2aWV3ZXJUeXBlc01hcHBpbmdbdmlld2VyRGVzY1sndHlwZSddXSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgICB2aWV3ZXIuc2V0T3B0aW9ucyh2aWV3ZXJEZXNjKTtcblxuICAgICAgICAgIGlmICh0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW2RmUHJvcC5uYW1lXSkgdGhpcy5kZlRvVmlld2VyTWFwcGluZ1tkZlByb3AubmFtZV0ucHVzaCh2aWV3ZXIpOyBlbHNlIHRoaXMuZGZUb1ZpZXdlck1hcHBpbmdbZGZQcm9wLm5hbWVdID0gW3ZpZXdlcl07XG5cbiAgICAgICAgICByZXR1cm4gdmlld2VyO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZ1bmNDYWxsUmVwbGFjZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50UGFyYW06IERHLkZ1bmNDYWxsUGFyYW0gPSB0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXNbZGZQcm9wLm5hbWVdID8/IHRoaXMuZnVuY0NhbGwhLmlucHV0UGFyYW1zW2RmUHJvcC5uYW1lXTtcblxuICAgICAgICAgIGN1cnJlbnRQYXJhbS5vbkNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHZpZXdlcnMuZm9yRWFjaCgodmlld2VyKSA9PiB7XG4gICAgICAgICAgICAgIHZpZXdlci5kYXRhRnJhbWUgPSBjdXJyZW50UGFyYW0udmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZGZTZWN0aW9uVGl0bGU6IHN0cmluZyA9IGRmUHJvcC5vcHRpb25zWydjYXB0aW9uJ10gPz8gZGZQcm9wLm5hbWU7XG5cbiAgICAgICAgaWYgKHRhYkxhYmVsICE9PSAnSW5wdXQnKSB7XG4gICAgICAgICAgcmV0dXJuIHVpLmRpdlYoW1xuICAgICAgICAgICAgdWkuaDIoZGZTZWN0aW9uVGl0bGUpLFxuICAgICAgICAgICAgdWkuZGl2SCh2aWV3ZXJzLm1hcCgodmlld2VyLCB2aWV3ZXJJbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICcyNScpIHJldHVybiB1aS5ibG9jazI1KFt2aWV3ZXIucm9vdF0pO1xuICAgICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICc1MCcpIHJldHVybiB1aS5ibG9jazUwKFt2aWV3ZXIucm9vdF0pO1xuICAgICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICc3NScpIHJldHVybiB1aS5ibG9jazc1KFt2aWV3ZXIucm9vdF0pO1xuICAgICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICcxMDAnKSByZXR1cm4gdWkuYmxvY2soW3ZpZXdlci5yb290XSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHZpZXdlci5yb290O1xuICAgICAgICAgICAgfSksIHtzdHlsZTogeydmbGV4LXdyYXAnOiAnd3JhcCd9fSlcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpbnB1dFNlY3Rpb24gPSB1aS5kaXZIKHZpZXdlcnMubWFwKCh2aWV3ZXIsIHZpZXdlckluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICcyNScpIHJldHVybiB1aS5ibG9jazI1KFt2aWV3ZXIucm9vdF0pO1xuICAgICAgICAgICAgaWYgKHBhcnNlZFRhYkRmUHJvcHNbZGZJbmRleF1bdmlld2VySW5kZXhdWydibG9jayddID09PSAnNTAnKSByZXR1cm4gdWkuYmxvY2s1MChbdmlld2VyLnJvb3RdKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRUYWJEZlByb3BzW2RmSW5kZXhdW3ZpZXdlckluZGV4XVsnYmxvY2snXSA9PT0gJzc1JykgcmV0dXJuIHVpLmJsb2NrNzUoW3ZpZXdlci5yb290XSk7XG4gICAgICAgICAgICBpZiAocGFyc2VkVGFiRGZQcm9wc1tkZkluZGV4XVt2aWV3ZXJJbmRleF1bJ2Jsb2NrJ10gPT09ICcxMDAnKSByZXR1cm4gdWkuYmxvY2soW3ZpZXdlci5yb290XSk7XG5cbiAgICAgICAgICAgIHJldHVybiB2aWV3ZXIucm9vdDtcbiAgICAgICAgICB9KSwge3N0eWxlOiB7J2ZsZXgtd3JhcCc6ICd3cmFwJ319KTtcblxuICAgICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhcmFtOiBERy5GdW5jQ2FsbFBhcmFtID0gdGhpcy5mdW5jQ2FsbCEub3V0cHV0UGFyYW1zW2RmUHJvcC5uYW1lXSA/PyB0aGlzLmZ1bmNDYWxsIS5pbnB1dFBhcmFtc1tkZlByb3AubmFtZV07XG5cbiAgICAgICAgICAgIGN1cnJlbnRQYXJhbS5vbkNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB1aS5kaXZWKFtcbiAgICAgICAgICAgIHVpLmgyKGRmU2VjdGlvblRpdGxlKSxcbiAgICAgICAgICAgIGlucHV0U2VjdGlvblxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuXG4gICAgICBjb25zdCBnZW5lcmF0ZVNjYWxhcnNUYWJsZSA9ICgpID0+IHVpLnRhYmxlRnJvbU1hcChcbiAgICAgICAgdGFiU2NhbGFyUHJvcHMucmVkdWNlKChhY2MsIHNjYWxhcikgPT4ge1xuICAgICAgICAgIGFjY1tzY2FsYXIubmFtZV0gPSB0aGlzLmZ1bmNDYWxsPy5vdXRwdXRzW3NjYWxhci5uYW1lXTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSBhcyB7W2tleTogc3RyaW5nXTogc3RyaW5nfSlcbiAgICAgICk7XG5cbiAgICAgIGxldCBzY2FsYXJzVGFibGUgPSBnZW5lcmF0ZVNjYWxhcnNUYWJsZSgpO1xuXG4gICAgICB0YWJTY2FsYXJQcm9wcy5mb3JFYWNoKCh0YWJTY2FsYXJQcm9wKSA9PiB7XG4gICAgICAgIHRoaXMuZnVuY0NhbGxSZXBsYWNlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICh0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXNbdGFiU2NhbGFyUHJvcC5uYW1lXSBhcyBERy5GdW5jQ2FsbFBhcmFtKS5vbkNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NjYWxhcnNUYWJsZSA9IGdlbmVyYXRlU2NhbGFyc1RhYmxlKCk7XG4gICAgICAgICAgICBzY2FsYXJzVGFibGUucmVwbGFjZVdpdGgobmV3U2NhbGFyc1RhYmxlKTtcbiAgICAgICAgICAgIHNjYWxhcnNUYWJsZSA9IG5ld1NjYWxhcnNUYWJsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy50YWJzRWxlbS5hZGRQYW5lKHRhYkxhYmVsLCAoKSA9PiB7XG4gICAgICAgIHJldHVybiB1aS5kaXZWKFsuLi5kZlNlY3Rpb25zLCAuLi50YWJTY2FsYXJQcm9wcy5sZW5ndGggPyBbdWkuaDIoJ1NjYWxhciB2YWx1ZXMnKV06IFtdLCBzY2FsYXJzVGFibGVdKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIG91dHB1dEJsb2NrLmFwcGVuZCh0aGlzLnRhYnNFbGVtLnJvb3QpO1xuXG4gICAgdGhpcy50YWJzRWxlbS5oZWFkZXIuY2xhc3NMaXN0LmFkZChJTlRFUkFDVElWRV9DU1NfQ0xBU1MpO1xuXG4gICAgcmV0dXJuIG91dHB1dEJsb2NrO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9uQWZ0ZXJMb2FkUnVuKGxvYWRlZFJ1bjogREcuRnVuY0NhbGwpIHtcbiAgICB3dSh0aGlzLmZ1bmNDYWxsIS5vdXRwdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKS5mb3JFYWNoKChvdXQpID0+IHtcbiAgICAgIHRoaXMuZnVuY0NhbGwhLnNldFBhcmFtVmFsdWUob3V0Lm5hbWUsIGxvYWRlZFJ1bi5vdXRwdXRzW291dC5uYW1lXSk7XG4gICAgfSk7XG5cbiAgICB3dSh0aGlzLmZ1bmNDYWxsIS5pbnB1dFBhcmFtcy52YWx1ZXMoKSBhcyBERy5GdW5jQ2FsbFBhcmFtW10pLmZvckVhY2goKGlucCkgPT4ge1xuICAgICAgdGhpcy5mdW5jQ2FsbCEuc2V0UGFyYW1WYWx1ZShpbnAubmFtZSwgbG9hZGVkUnVuLmlucHV0c1tpbnAubmFtZV0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy50YWJzRWxlbS5yb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdkaXNwbGF5Jyk7XG4gICAgdGhpcy50YWJzRWxlbS5wYW5lcy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgIHRhYi5oZWFkZXIuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2Rpc3BsYXknKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGZUb1ZpZXdlck1hcHBpbmc6IHtba2V5OiBzdHJpbmddOiBERy5WaWV3ZXJbXX0gPSB7fTtcblxuICBwcm90ZWN0ZWQgZ2V0IGRmUGFyYW1zKCkge1xuICAgIHJldHVybiBbXG4gICAgICAuLi50aGlzLmZ1bmMhLmlucHV0cy5maWx0ZXIoKHApID0+IHAucHJvcGVydHlUeXBlID09IERHLlRZUEUuREFUQV9GUkFNRSksXG4gICAgICAuLi50aGlzLmZ1bmMhLm91dHB1dHMuZmlsdGVyKChwKSA9PiBwLnByb3BlcnR5VHlwZSA9PSBERy5UWVBFLkRBVEFfRlJBTUUpLFxuICAgIF07XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRmT3V0cHV0UGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmZ1bmMhLm91dHB1dHMuZmlsdGVyKChwKSA9PiBwLnByb3BlcnR5VHlwZSA9PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpc0lucHV0UGFuZWxSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jPy5pbnB1dHMuc29tZSgocCkgPT4gcC5wcm9wZXJ0eVR5cGUgPT0gREcuVFlQRS5EQVRBX0ZSQU1FICYmIHAub3B0aW9uc1sndmlld2VyJ10gIT0gbnVsbCkgfHwgZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IG91dFVuaXF1ZVBhcmFtQ2F0ZWdvcmllcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4ubmV3IFNldCh0aGlzLmZ1bmMhLm91dHB1dHMubWFwKChwKSA9PiBwLmNhdGVnb3J5KSkgLy8gZ2V0IGFsbCBvdXRwdXQgcGFyYW1zJyBjYXRlZ29yaWVzXG4gICAgXTsgLy8ga2VlcCBvbmx5IHVuaXF1ZSBvZiB0aGVtXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IG91dHB1dFRhYnNMYWJlbHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnRoaXMub3V0VW5pcXVlUGFyYW1DYXRlZ29yaWVzLFxuICAgICAgLi4udGhpcy5vdXRVbmlxdWVQYXJhbUNhdGVnb3JpZXMuZmluZCgodmFsKSA9PiB2YWwgPT09ICdNaXNjJykgPyBbJ091dHB1dCddIDogW10sIC8vIGlmIG5vIGNhdGVnb3JpZXMgYXJlIHN0YXRlZCwgdGhlIGRlZmF1bHQgY2F0ZWdvcnkgaXMgYWRkZWRcbiAgICBdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0YWJzTGFiZWxzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNhdGVnb3J5VG9QYXJhbU1hcCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGNhdGVnb3J5VG9QYXJhbU1hcCgpIHtcbiAgICBjb25zdCBtYXAgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBERy5Qcm9wZXJ0eVtdPjtcblxuICAgIGlmICh0aGlzLmlzSW5wdXRQYW5lbFJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmZ1bmMhLmlucHV0cy5cbiAgICAgICAgZmlsdGVyKChwKSA9PiBwLnByb3BlcnR5VHlwZSA9PSBERy5UWVBFLkRBVEFfRlJBTUUgJiYgcC5vcHRpb25zWyd2aWV3ZXInXSAhPSBudWxsKS5cbiAgICAgICAgZm9yRWFjaCgocCkgPT4gbWFwWydJbnB1dCddID8gbWFwWydJbnB1dCddLnB1c2gocCk6IG1hcFsnSW5wdXQnXSA9IFtwXSk7XG4gICAgfVxuXG4gICAgdGhpcy5mdW5jIS5vdXRwdXRzLmZvckVhY2goKHApID0+IHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcC5jYXRlZ29yeSA9PT0gJ01pc2MnID8gJ091dHB1dCc6IHAuY2F0ZWdvcnk7XG5cbiAgICAgIGlmIChtYXBbY2F0ZWdvcnldKVxuICAgICAgICBtYXBbY2F0ZWdvcnldLnB1c2gocCk7XG4gICAgICBlbHNlXG4gICAgICAgIG1hcFtjYXRlZ29yeV0gPSBbcF07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJSdW5TZWN0aW9uKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBydW5CdXR0b24gPSB1aS5iaWdCdXR0b24oJ1J1bicsIGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuaXNSdW5uaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuKCk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgZ3Jvay5zaGVsbC5lcnJvcihlKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2hlY2tEaXNhYmlsaXR5Lm5leHQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBidXR0b25XcmFwcGVyID0gdWkuZGl2KHJ1bkJ1dHRvbik7XG4gICAgdWkudG9vbHRpcC5iaW5kKGJ1dHRvbldyYXBwZXIsICgpID0+IHJ1bkJ1dHRvbi5kaXNhYmxlZCA/ICh0aGlzLmlzUnVubmluZyA/ICdDb21wdXRhdGlvbnMgYXJlIGluIHByb2dyZXNzJyA6ICdTb21lIGlucHV0cyBhcmUgaW52YWxpZCcpIDogJycpO1xuXG4gICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSAod3UodGhpcy5mdW5jQ2FsbCEuaW5wdXRzLnZhbHVlcygpKS5ldmVyeSgodikgPT4gdiAhPT0gbnVsbCkpICYmICF0aGlzLmlzUnVubmluZztcbiAgICAgIHJ1bkJ1dHRvbi5kaXNhYmxlZCA9IGlzVmFsaWQgPyBmYWxzZSA6IHRydWU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnB1dHMgPSB1aS5kaXZWKFtdLCAndWktZm9ybScpO1xuICAgIGxldCBwcmV2Q2F0ZWdvcnkgPSAnTWlzYyc7XG4gICAgd3UodGhpcy5mdW5jQ2FsbCEuaW5wdXRQYXJhbXMudmFsdWVzKCkgYXMgREcuRnVuY0NhbGxQYXJhbVtdKVxuICAgICAgLmZpbHRlcigodmFsKSA9PiAhIXZhbClcbiAgICAgIC5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcCA9IHZhbC5wcm9wZXJ0eTtcbiAgICAgICAgaWYgKHByb3AucHJvcGVydHlUeXBlLnRvU3RyaW5nKCkgPT09IEZJTEVfSU5QVVRfVFlQRSkge1xuICAgICAgICAgIGNvbnN0IHQgPSBVaVV0aWxzLmZpbGVJbnB1dChwcm9wLmNhcHRpb24gPz8gcHJvcC5uYW1lLCBudWxsLCAoZmlsZTogRmlsZSkgPT4gdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3Byb3AubmFtZV0gPSBmaWxlKTtcbiAgICAgICAgICBpZiAocHJvcC5jYXRlZ29yeSAhPT0gcHJldkNhdGVnb3J5KVxuICAgICAgICAgICAgaW5wdXRzLmFwcGVuZCh1aS5oMihwcm9wLmNhdGVnb3J5KSk7XG5cbiAgICAgICAgICBpbnB1dHMuYXBwZW5kKHQucm9vdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRklYIE1FOiAudG9EYXJ0IGFkZGVkIHRvIHByZXZlbnQgYnVnIG9mIHRhYmxlcyBpbml0aWFsIG5vbi1yZW5kZXJpbmdcbiAgICAgICAgICBjb25zdCB0ID0gcHJvcC5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSA/XG4gICAgICAgICAgICB1aS50YWJsZUlucHV0KHByb3AubmFtZSwgbnVsbCwgZ3Jvay5zaGVsbC50YWJsZXMubWFwKERHLnRvRGFydCkpOlxuICAgICAgICAgICAgdWkuaW5wdXQuZm9yUHJvcGVydHkocHJvcCk7XG5cbiAgICAgICAgICB0LmNhcHRpb25MYWJlbC5maXJzdENoaWxkIS5yZXBsYWNlV2l0aCh1aS5zcGFuKFtwcm9wLmNhcHRpb24gPz8gcHJvcC5uYW1lXSkpO1xuICAgICAgICAgIGlmIChwcm9wLm9wdGlvbnNbJ3VuaXRzJ10pIHQuYWRkUG9zdGZpeChwcm9wLm9wdGlvbnNbJ3VuaXRzJ10pO1xuXG4gICAgICAgICAgdGhpcy5mdW5jQ2FsbFJlcGxhY2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0LnZhbHVlID0gdGhpcy5mdW5jQ2FsbCEuaW5wdXRzW3ZhbC5uYW1lXSA/PyBwcm9wLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHQub25DaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZnVuY0NhbGwhLmlucHV0c1t2YWwubmFtZV0gPSB0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHQudmFsdWUgPT09IG51bGwpIHNldFRpbWVvdXQoKCkgPT4gdC5pbnB1dC5jbGFzc0xpc3QuYWRkKCdkNC1pbnZhbGlkJyksIDEwMCk7IGVsc2UgdC5pbnB1dC5jbGFzc0xpc3QucmVtb3ZlKCdkNC1pbnZhbGlkJyk7IDtcblxuICAgICAgICAgICAgdGhpcy5jaGVja0Rpc2FiaWxpdHkubmV4dCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwcm9wLmNhdGVnb3J5ICE9PSBwcmV2Q2F0ZWdvcnkpXG4gICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHVpLmgyKHByb3AuY2F0ZWdvcnkpKTtcblxuICAgICAgICAgIGlmICh0LnZhbHVlID09PSBudWxsKSBydW5CdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGlucHV0cy5hcHBlbmQodC5yb290KTtcbiAgICAgICAgfVxuICAgICAgICBwcmV2Q2F0ZWdvcnkgPSBwcm9wLmNhdGVnb3J5O1xuICAgICAgfSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJ1dHRvbnMgPSB1aS5idXR0b25zSW5wdXQoW2J1dHRvbldyYXBwZXJdKTtcbiAgICBpbnB1dHMuYXBwZW5kKGJ1dHRvbnMpO1xuICAgIGlucHV0cy5jbGFzc0xpc3QucmVtb3ZlKCd1aS1wYW5lbCcpO1xuICAgIGlucHV0cy5zdHlsZS5wYWRkaW5nVG9wID0gJzBweCc7XG4gICAgaW5wdXRzLnN0eWxlLnBhZGRpbmdMZWZ0ID0gJzBweCc7XG5cbiAgICByZXR1cm4gdWkuZGl2KFtpbnB1dHNdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWZhdWx0RXhwb3J0ID0gYXN5bmMgKGZvcm1hdDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbGFzdENhbGwgPSB0aGlzLmxhc3RDYWxsO1xuICAgIGlmICghbGFzdENhbGwpIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gd2FzIG5vdCBjYWxsZWRgKTtcblxuICAgIGlmICghdGhpcy5leHBvcnRDb25maWchLnN1cHBvcnRlZEZvcm1hdHMuaW5jbHVkZXMoZm9ybWF0KSkgdGhyb3cgbmV3IEVycm9yKGBGb3JtYXQgXCIke2Zvcm1hdH1cIiBpcyBub3Qgc3VwcG9ydGVkLmApO1xuXG4gICAgaWYgKCF0aGlzLmZ1bmMpIHRocm93IG5ldyBFcnJvcignVGhlIGNvcnJlc3BvZGluZyBmdW5jdGlvbiBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBjb25zdCBCTE9CX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XG4gICAgY29uc3QgZXhwb3J0V29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xuXG4gICAgY29uc3QgaXNTY2FsYXJUeXBlID0gKHR5cGU6IERHLlRZUEUpID0+IChERy5UWVBFU19TQ0FMQVIuaGFzKHR5cGUpKTtcblxuICAgIGNvbnN0IGlzRGF0YUZyYW1lID0gKHR5cGU6IERHLlRZUEUpID0+ICh0eXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpO1xuXG4gICAgY29uc3QgZGZJbnB1dHMgPSB0aGlzLmZ1bmMuaW5wdXRzLmZpbHRlcigoaW5wdXQpID0+IGlzRGF0YUZyYW1lKGlucHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IHNjYWxhcklucHV0cyA9IHRoaXMuZnVuYy5pbnB1dHMuZmlsdGVyKChpbnB1dCkgPT4gaXNTY2FsYXJUeXBlKGlucHV0LnByb3BlcnR5VHlwZSkpO1xuICAgIGNvbnN0IGRmT3V0cHV0cyA9IHRoaXMuZnVuYy5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBpc0RhdGFGcmFtZShvdXRwdXQucHJvcGVydHlUeXBlKSk7XG4gICAgY29uc3Qgc2NhbGFyT3V0cHV0cyA9IHRoaXMuZnVuYy5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBpc1NjYWxhclR5cGUob3V0cHV0LnByb3BlcnR5VHlwZSkpO1xuXG4gICAgY29uc3QgaW5wdXRQYXJhbXMgPSBbLi4ubGFzdENhbGwuaW5wdXRQYXJhbXMudmFsdWVzKCldIGFzIERHLkZ1bmNDYWxsUGFyYW1bXTtcbiAgICBjb25zdCBvdXRwdXRQYXJhbXMgPSBbLi4ubGFzdENhbGwub3V0cHV0UGFyYW1zLnZhbHVlcygpXSBhcyBERy5GdW5jQ2FsbFBhcmFtW107XG5cbiAgICBkZklucHV0cy5mb3JFYWNoKChkZklucHV0KSA9PiB7XG4gICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZklucHV0Lm9wdGlvbnMuY2FwdGlvbiB8fCBkZklucHV0Lm5hbWU7XG4gICAgICBjb25zdCBjdXJyZW50RGZTaGVldCA9IGV4cG9ydFdvcmtib29rLmFkZFdvcmtzaGVldChnZXRTaGVldE5hbWUodmlzaWJsZVRpdGxlLCBESVJFQ1RJT04uSU5QVVQpKTtcblxuICAgICAgY29uc3QgY3VycmVudERmID0gKGxhc3RDYWxsLmlucHV0c1tkZklucHV0Lm5hbWVdIGFzIERHLkRhdGFGcmFtZSk7XG4gICAgICBkZlRvU2hlZXQoY3VycmVudERmU2hlZXQsIGN1cnJlbnREZik7XG4gICAgfSk7XG5cbiAgICBpZiAoc2NhbGFySW5wdXRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgaW5wdXRTY2FsYXJzU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoJ0lucHV0IHNjYWxhcnMnKTtcbiAgICAgIHNjYWxhcnNUb1NoZWV0KGlucHV0U2NhbGFyc1NoZWV0LCBzY2FsYXJJbnB1dHMubWFwKChzY2FsYXJJbnB1dCkgPT4gKHtcbiAgICAgICAgY2FwdGlvbjogc2NhbGFySW5wdXQub3B0aW9uc1snY2FwdGlvbiddIHx8IHNjYWxhcklucHV0Lm5hbWUsXG4gICAgICAgIHZhbHVlOiBsYXN0Q2FsbC5pbnB1dHNbc2NhbGFySW5wdXQubmFtZV0sXG4gICAgICAgIHVuaXRzOiBzY2FsYXJJbnB1dC5vcHRpb25zWyd1bml0cyddIHx8ICcnLFxuICAgICAgfSkpKTtcbiAgICB9XG5cbiAgICBkZk91dHB1dHMuZm9yRWFjaCgoZGZPdXRwdXQpID0+IHtcbiAgICAgIGNvbnN0IHZpc2libGVUaXRsZSA9IGRmT3V0cHV0Lm9wdGlvbnMuY2FwdGlvbiB8fCBkZk91dHB1dC5uYW1lO1xuICAgICAgY29uc3QgY3VycmVudERmU2hlZXQgPSBleHBvcnRXb3JrYm9vay5hZGRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLk9VVFBVVCkpO1xuXG4gICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwub3V0cHV0c1tkZk91dHB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuICAgICAgZGZUb1NoZWV0KGN1cnJlbnREZlNoZWV0LCBjdXJyZW50RGYpO1xuICAgIH0pO1xuXG5cbiAgICBpZiAoc2NhbGFyT3V0cHV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG91dHB1dFNjYWxhcnNTaGVldCA9IGV4cG9ydFdvcmtib29rLmFkZFdvcmtzaGVldCgnT3V0cHV0IHNjYWxhcnMnKTtcbiAgICAgIHNjYWxhcnNUb1NoZWV0KG91dHB1dFNjYWxhcnNTaGVldCwgc2NhbGFyT3V0cHV0cy5tYXAoKHNjYWxhck91dHB1dCkgPT4gKHtcbiAgICAgICAgY2FwdGlvbjogc2NhbGFyT3V0cHV0Lm9wdGlvbnNbJ2NhcHRpb24nXSB8fCBzY2FsYXJPdXRwdXQubmFtZSxcbiAgICAgICAgdmFsdWU6IGxhc3RDYWxsLm91dHB1dHNbc2NhbGFyT3V0cHV0Lm5hbWVdLFxuICAgICAgICB1bml0czogc2NhbGFyT3V0cHV0Lm9wdGlvbnNbJ3VuaXRzJ10gfHwgJycsXG4gICAgICB9KSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRhYkNvbnRyb2wgPSB0aGlzLnRhYnNFbGVtO1xuICAgIGZvciAoY29uc3QgdGFiTGFiZWwgb2YgdGhpcy50YWJzTGFiZWxzKSB7XG4gICAgICB0YWJDb250cm9sLmN1cnJlbnRQYW5lID0gdGFiQ29udHJvbC5nZXRQYW5lKHRhYkxhYmVsKTtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMCkpO1xuICAgICAgaWYgKHRhYkxhYmVsID09PSAnSW5wdXQnKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXRQYXJhbSBvZiBpbnB1dFBhcmFtcy5maWx0ZXIoKGlucHV0UGFyYW0pID0+IGlucHV0UGFyYW0ucHJvcGVydHkucHJvcGVydHlUeXBlID09PSBERy5UWVBFLkRBVEFfRlJBTUUpKSB7XG4gICAgICAgICAgY29uc3Qgbm9uR3JpZFZpZXdlcnMgPSB0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW2lucHV0UGFyYW0ubmFtZV0uZmlsdGVyKCh2aWV3ZXIpID0+IHZpZXdlci50eXBlICE9PSBERy5WSUVXRVIuR1JJRCk7XG5cbiAgICAgICAgICBjb25zdCBkZklucHV0ID0gZGZJbnB1dHMuZmluZCgoaW5wdXQpID0+IGlucHV0Lm5hbWUgPT09IGlucHV0UGFyYW0ubmFtZSk7XG4gICAgICAgICAgY29uc3QgdmlzaWJsZVRpdGxlID0gZGZJbnB1dCEub3B0aW9ucy5jYXB0aW9uIHx8IGlucHV0UGFyYW0ubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwuaW5wdXRzW2RmSW5wdXQhLm5hbWVdIGFzIERHLkRhdGFGcmFtZSk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtpbmRleCwgdmlld2VyXSBvZiBub25HcmlkVmlld2Vycy5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHBsb3RUb1NoZWV0KFxuICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgZXhwb3J0V29ya2Jvb2suZ2V0V29ya3NoZWV0KGdldFNoZWV0TmFtZSh2aXNpYmxlVGl0bGUsIERJUkVDVElPTi5JTlBVVCkpLFxuICAgICAgICAgICAgICB2aWV3ZXIucm9vdCxcbiAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dFBhcmFtIG9mIG91dHB1dFBhcmFtcy5maWx0ZXIoKG91dHB1dFBhcmFtKSA9PiBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5wcm9wZXJ0eVR5cGUgPT09IERHLlRZUEUuREFUQV9GUkFNRSAmJiBvdXRwdXRQYXJhbS5wcm9wZXJ0eS5jYXRlZ29yeSA9PT0gdGFiTGFiZWwpKSB7XG4gICAgICAgICAgY29uc3Qgbm9uR3JpZFZpZXdlcnMgPSB0aGlzLmRmVG9WaWV3ZXJNYXBwaW5nW291dHB1dFBhcmFtLm5hbWVdLmZpbHRlcigodmlld2VyKSA9PiB2aWV3ZXIudHlwZSAhPT0gREcuVklFV0VSLkdSSUQpO1xuXG4gICAgICAgICAgY29uc3QgZGZPdXRwdXQgPSBkZk91dHB1dHMuZmluZCgoaW5wdXQpID0+IGlucHV0Lm5hbWUgPT09IG91dHB1dFBhcmFtLm5hbWUpITtcbiAgICAgICAgICBjb25zdCB2aXNpYmxlVGl0bGUgPSBkZk91dHB1dC5vcHRpb25zLmNhcHRpb24gfHwgb3V0cHV0UGFyYW0ubmFtZTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGYgPSAobGFzdENhbGwub3V0cHV0c1tkZk91dHB1dC5uYW1lXSBhcyBERy5EYXRhRnJhbWUpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHZpZXdlcl0gb2Ygbm9uR3JpZFZpZXdlcnMuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAodmlld2VyLnR5cGUgPT09IERHLlZJRVdFUi5TVEFUSVNUSUNTKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aDtcbiAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5zdHJpbmcoJ05hbWUnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdWYWx1ZXMnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy52YWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uaW50KCdOdWxscycsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pc3NpbmdWYWx1ZUNvdW50KSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ01pbicsIGxlbmd0aCkuaW5pdCgoaTogbnVtYmVyKSA9PiBjdXJyZW50RGYuY29sdW1ucy5ieUluZGV4KGkpLnN0YXRzLm1pbiksXG4gICAgICAgICAgICAgICAgREcuQ29sdW1uLmZsb2F0KCdNYXgnLCBsZW5ndGgpLmluaXQoKGk6IG51bWJlcikgPT4gY3VycmVudERmLmNvbHVtbnMuYnlJbmRleChpKS5zdGF0cy5tYXgpLFxuICAgICAgICAgICAgICAgIERHLkNvbHVtbi5mbG9hdCgnQXZnJywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuYXZnKSxcbiAgICAgICAgICAgICAgICBERy5Db2x1bW4uZmxvYXQoJ1N0ZGV2JywgbGVuZ3RoKS5pbml0KChpOiBudW1iZXIpID0+IGN1cnJlbnREZi5jb2x1bW5zLmJ5SW5kZXgoaSkuc3RhdHMuc3RkZXYpLFxuICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgZGZUb1NoZWV0KFxuICAgICAgICAgICAgICAgIGV4cG9ydFdvcmtib29rLmdldFdvcmtzaGVldChnZXRTaGVldE5hbWUodmlzaWJsZVRpdGxlLCBESVJFQ1RJT04uT1VUUFVUKSksXG4gICAgICAgICAgICAgICAgc3RhdHMsXG4gICAgICAgICAgICAgICAgY3VycmVudERmLmNvbHVtbnMubGVuZ3RoICsgMixcbiAgICAgICAgICAgICAgICAoaW5kZXggPiAwKSA/IE1hdGguY2VpbChub25HcmlkVmlld2Vyc1tpbmRleC0xXS5yb290LmNsaWVudEhlaWdodCAvIDIwKSArIDEgOiAwXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhd2FpdCBwbG90VG9TaGVldChcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vayxcbiAgICAgICAgICAgICAgICBleHBvcnRXb3JrYm9vay5nZXRXb3Jrc2hlZXQoZ2V0U2hlZXROYW1lKHZpc2libGVUaXRsZSwgRElSRUNUSU9OLk9VVFBVVCkpLFxuICAgICAgICAgICAgICAgIHZpZXdlci5yb290LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZi5jb2x1bW5zLmxlbmd0aCArIDIsXG4gICAgICAgICAgICAgICAgKGluZGV4ID4gMCkgPyBNYXRoLmNlaWwobm9uR3JpZFZpZXdlcnNbaW5kZXgtMV0ucm9vdC5jbGllbnRIZWlnaHQgLyAyMCkgKyAxIDogMFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGV4cG9ydFdvcmtib29rLnhsc3gud3JpdGVCdWZmZXIoKTtcblxuICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6IEJMT0JfVFlQRX0pO1xuICB9O1xufVxuXG5jb25zdCBnZXRTaGVldE5hbWUgPSAobmFtZTogc3RyaW5nLCBkaXJlY3Rpb246IERJUkVDVElPTikgPT4ge1xuICBjb25zdCBpZGVhbE5hbWUgPSBgJHtkaXJlY3Rpb259IC0gJHtuYW1lfWA7XG4gIHJldHVybiAoaWRlYWxOYW1lLmxlbmd0aCA+IDMxKSA/IG5hbWUuc3Vic3RyaW5nKDAsIDMyKSA6IGlkZWFsTmFtZTtcbn07XG5cbmVudW0gRElSRUNUSU9OIHtcbiAgSU5QVVQgPSAnSW5wdXQnLFxuICBPVVRQVVQgPSAnT3V0cHV0J1xufVxuXG5jb25zdCBzY2FsYXJzVG9TaGVldCA9IChzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQsIHNjYWxhcnM6IHsgY2FwdGlvbjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB1bml0czogc3RyaW5nIH1bXSkgPT4ge1xuICBzaGVldC5hZGRSb3coWydQYXJhbWV0ZXInLCAnVmFsdWUnLCAnVW5pdHMnXSkuZm9udCA9IHtib2xkOiB0cnVlfTtcbiAgc2NhbGFycy5mb3JFYWNoKChzY2FsYXIpID0+IHtcbiAgICBzaGVldC5hZGRSb3coW3NjYWxhci5jYXB0aW9uLCBzY2FsYXIudmFsdWUsIHNjYWxhci51bml0c10pO1xuICB9KTtcblxuICBzaGVldC5nZXRDb2x1bW4oMSkud2lkdGggPSBNYXRoLm1heChcbiAgICAuLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIuY2FwdGlvbi50b1N0cmluZygpLmxlbmd0aCksICdQYXJhbWV0ZXInLmxlbmd0aFxuICApICogMS4yO1xuICBzaGVldC5nZXRDb2x1bW4oMikud2lkdGggPSBNYXRoLm1heCguLi5zY2FsYXJzLm1hcCgoc2NhbGFyKSA9PiBzY2FsYXIudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpLCAnVmFsdWUnLmxlbmd0aCkgKiAxLjI7XG4gIHNoZWV0LmdldENvbHVtbigzKS53aWR0aCA9IE1hdGgubWF4KC4uLnNjYWxhcnMubWFwKChzY2FsYXIpID0+IHNjYWxhci51bml0cy50b1N0cmluZygpLmxlbmd0aCksICdVbml0cycubGVuZ3RoKSAqIDEuMjtcbn07XG5cbmNvbnN0IGRmVG9TaGVldCA9IChzaGVldDogRXhjZWxKUy5Xb3Jrc2hlZXQsIGRmOiBERy5EYXRhRnJhbWUsIGNvbHVtbjogbnVtYmVyID0gMCwgcm93OiBudW1iZXIgPSAwKSA9PiB7XG4gIGZvciAobGV0IGk9IDA7IGkgPCBkZi5jb2x1bW5zLm5hbWVzKCkubGVuZ3RoOyBpKyspIHtcbiAgICBzaGVldC5nZXRDZWxsKDEgKyByb3csIDEgKyBpICsgY29sdW1uKS52YWx1ZSA9IGRmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lO1xuICAgIHNoZWV0LmdldENvbHVtbigxICsgaSArIGNvbHVtbikud2lkdGggPSBNYXRoLm1heChcbiAgICAgIC4uLmRmLmNvbHVtbnMuYnlJbmRleChpKS5jYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5LnRvU3RyaW5nKCkubGVuZ3RoKSxcbiAgICAgIGRmLmNvbHVtbnMuYnlJbmRleChpKS5uYW1lLmxlbmd0aFxuICAgICkgKiAxLjI7XG4gIH1cbiAgZm9yIChsZXQgZGZDb2x1bW4gPSAwOyBkZkNvbHVtbiA8IGRmLmNvbHVtbnMubGVuZ3RoOyBkZkNvbHVtbisrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZi5yb3dDb3VudDsgaSsrKVxuICAgICAgc2hlZXQuZ2V0Q2VsbChpICsgMiArIHJvdywgMSArIGNvbHVtbitkZkNvbHVtbikudmFsdWUgPSBkZi5jb2x1bW5zLmJ5SW5kZXgoZGZDb2x1bW4pLmdldChpKTtcbiAgfVxufTtcblxuY29uc3QgcGxvdFRvU2hlZXQgPSBhc3luYyAoZXhwb3J0V2I6IEV4Y2VsSlMuV29ya2Jvb2ssIHNoZWV0OiBFeGNlbEpTLldvcmtzaGVldCwgcGxvdDogSFRNTEVsZW1lbnQsIGNvbHVtbkZvckltYWdlOiBudW1iZXIsIHJvd0ZvckltYWdlOiBudW1iZXIgPSAwKSA9PiB7XG4gIGNvbnN0IGNhbnZhcyA9IGF3YWl0IGh0bWwyY2FudmFzKHBsb3QgYXMgSFRNTEVsZW1lbnQsIHtsb2dnaW5nOiBmYWxzZX0pO1xuICBjb25zdCBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG5cbiAgY29uc3QgaW1hZ2VJZCA9IGV4cG9ydFdiLmFkZEltYWdlKHtcbiAgICBiYXNlNjQ6IGRhdGFVcmwsXG4gICAgZXh0ZW5zaW9uOiAncG5nJyxcbiAgfSk7XG4gIHNoZWV0LmFkZEltYWdlKGltYWdlSWQsIHtcbiAgICB0bDoge2NvbDogY29sdW1uRm9ySW1hZ2UsIHJvdzogcm93Rm9ySW1hZ2V9LFxuICAgIGV4dDoge3dpZHRoOiBjYW52YXMud2lkdGgsIGhlaWdodDogY2FudmFzLmhlaWdodH0sXG4gIH0pO1xufTtcbiJdfQ==
@@ -19,9 +19,6 @@ export declare class HistoryPanel {
19
19
  private favRunsFilter;
20
20
  private sharedRunsFilter;
21
21
  allRunsFetch: Subject<true>;
22
- myRunsFetch: Subject<true>;
23
- favRunsFetch: Subject<true>;
24
- sharedRunsFetch: Subject<true>;
25
22
  historyTab: HTMLDivElement;
26
23
  favTab: HTMLDivElement;
27
24
  sharedTab: HTMLDivElement;
@@ -32,12 +29,12 @@ export declare class HistoryPanel {
32
29
  favoriteCards: HTMLElement[];
33
30
  sharedCards: HTMLElement[];
34
31
  updateFilterPane(): void;
35
- showAddToFavoritesDialog(funcCall: DG.FuncCall): void;
36
32
  showDeleteRunDialog(funcCall: DG.FuncCall): void;
37
- showAddToSharedDialog(funcCall: DG.FuncCall): void;
38
33
  updateSharedPane(sharedRuns: DG.FuncCall[]): void;
39
34
  updateFavoritesPane(favoriteRuns: DG.FuncCall[]): void;
40
35
  updateMyPane(myRuns: DG.FuncCall[]): void;
36
+ renderCard(funcCall: DG.FuncCall): HTMLDivElement;
37
+ showEditDialog(funcCall: DG.FuncCall): void;
41
38
  renderFavoriteCards(funcCalls: DG.FuncCall[]): HTMLDivElement;
42
39
  renderSharedCards(funcCalls: DG.FuncCall[]): HTMLDivElement;
43
40
  renderHistoryCards(funcCalls: DG.FuncCall[]): HTMLDivElement;
@@ -1 +1 @@
1
- {"version":3,"file":"history-panel.d.ts","sourceRoot":"","sources":["history-panel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAkB,OAAO,EAAC,MAAM,MAAM,CAAC;AAG9C,OAAO,6BAA6B,CAAC;AAErC,qBAAa,YAAY;IAoYrB,OAAO,CAAC,IAAI;IAlYP,WAAW,kBAAyB;IAGpC,uBAAuB,uBAA8B;IAGrD,oBAAoB,uBAA8B;IAGlD,4BAA4B,kBAAyB;IAGrD,yBAAyB,kBAAyB;IAGlD,gBAAgB,kBAAyB;IAGzC,sBAAsB,uBAA8B;IAGpD,mBAAmB,uBAA8B;IAGjD,2BAA2B,kBAAyB;IAGpD,wBAAwB,kBAAyB;IAGjD,eAAe,kBAAyB;IAE/C,OAAO,CAAC,KAAK,CAeX;IAEF,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAAuB;IAExC,YAAY,gBAAuB;IACnC,WAAW,gBAAuB;IAClC,YAAY,gBAAuB;IACnC,eAAe,gBAAuB;IAE7C,UAAU,iBAAY;IACtB,MAAM,iBAAY;IAClB,SAAS,iBAAY;IACrB,IAAI,gBAID;IACH,UAAU,iBAAY;IAEtB,OAAO,CAAC,KAAK,CAOgC;IAE7C,OAAO,gBAAuB;IAC9B,aAAa,gBAAuB;IACpC,WAAW,gBAAuB;IAElC,gBAAgB;IAkEhB,wBAAwB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAgC9C,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IASzC,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAgC3C,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE;IAM1C,mBAAmB,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,EAAE;IAM/C,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE;IAMlC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;IA2C5C,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;IAyC1C,kBAAkB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;gBAgEjC,IAAI,EAAE,EAAE,CAAC,IAAI;IA+HvB,IAAI,IAAI,mBAEP;CACF"}
1
+ {"version":3,"file":"history-panel.d.ts","sourceRoot":"","sources":["history-panel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAkB,OAAO,EAAC,MAAM,MAAM,CAAC;AAG9C,OAAO,6BAA6B,CAAC;AAiDrC,qBAAa,YAAY;IA4SrB,OAAO,CAAC,IAAI;IA1SP,WAAW,kBAAyB;IAGpC,uBAAuB,uBAA8B;IAGrD,oBAAoB,uBAA8B;IAGlD,4BAA4B,kBAAyB;IAGrD,yBAAyB,kBAAyB;IAGlD,gBAAgB,kBAAyB;IAGzC,sBAAsB,uBAA8B;IAGpD,mBAAmB,uBAA8B;IAGjD,2BAA2B,kBAAyB;IAGpD,wBAAwB,kBAAyB;IAGjD,eAAe,kBAAyB;IAE/C,OAAO,CAAC,KAAK,CAA2B;IAExC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAAuB;IAExC,YAAY,gBAAuB;IAE1C,UAAU,iBAAY;IACtB,MAAM,iBAAY;IAClB,SAAS,iBAAY;IACrB,IAAI,gBAID;IACH,UAAU,iBAAY;IAEtB,OAAO,CAAC,KAAK,CAOgC;IAE7C,OAAO,gBAAuB;IAC9B,aAAa,gBAAuB;IACpC,WAAW,gBAAuB;IAElC,gBAAgB;IAkEhB,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IASzC,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE;IAM1C,mBAAmB,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,EAAE;IAM/C,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE;IAMlC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IA8DhC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAgEpC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;IAK5C,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;IAK1C,kBAAkB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE;gBAMjC,IAAI,EAAE,EAAE,CAAC,IAAI;IAiEvB,IAAI,IAAI,mBAEP;CACF"}