ag-psd 14.3.5 → 14.3.6

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.
@@ -244,9 +244,10 @@ function writeLayerInfo(tempBuffer, writer, psd, globalAlpha, options) {
244
244
  if (layer.vectorMask || (layer.sectionDivider && layer.sectionDivider.type !== 0 /* Other */)) {
245
245
  flags |= 0x10; // pixel data irrelevant to appearance of document
246
246
  }
247
- if (layer.effects && hasMultiEffects(layer.effects)) {
247
+ if (layer.effects && hasMultiEffects(layer.effects)) { // TODO: this is not correct
248
248
  flags |= 0x20; // just guessing this one, might be completely incorrect
249
249
  }
250
+ // if ('_2' in layer) flags |= 0x20; // TEMP!!!
250
251
  writeUint8(writer, flags);
251
252
  writeUint8(writer, 0); // filler
252
253
  writeSection(writer, 1, function () {
@@ -648,4 +649,4 @@ export function writeColor(writer, color) {
648
649
  }
649
650
  }
650
651
 
651
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFFLEtBQUssT0FBQSxFQUFFLE1BQU0sUUFBQSxFQUFFLFFBQVEsVUFBQSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEVBQTBCLEVBQUUsQ0FBUyxFQUFFLElBQVksRUFBRSxLQUFhO1FBQWhFLElBQUksVUFBQSxFQUFFLEtBQUssV0FBQTtJQUNoQyxJQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLElBQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QyxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDN0MsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLE9BQU8sS0FBSyxDQUFDO1NBQ2I7S0FDRDtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEVBQTBCLEVBQUUsQ0FBUyxFQUFFLEdBQVcsRUFBRSxNQUFjO1FBQWhFLElBQUksVUFBQSxFQUFFLEtBQUssV0FBQTtJQUNoQyxJQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsSUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTdDLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FB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LENBQUMsTUFBTSxvQkFBdUIsQ0FBQztRQUMxQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3RCO0FBQ0YsQ0FBQyIsImZpbGUiOiJwc2RXcml0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQc2QsIExheWVyLCBMYXllckFkZGl0aW9uYWxJbmZvLCBDb2xvck1vZGUsIFNlY3Rpb25EaXZpZGVyVHlwZSwgV3JpdGVPcHRpb25zLCBDb2xvciwgR2xvYmFsTGF5ZXJNYXNrSW5mbyB9IGZyb20gJy4vcHNkJztcbmltcG9ydCB7XG5cdGhhc0FscGhhLCBjcmVhdGVDYW52YXMsIHdyaXRlRGF0YVJMRSwgUGl4ZWxEYXRhLCBMYXllckNoYW5uZWxEYXRhLCBDaGFubmVsRGF0YSxcblx0b2Zmc2V0Rm9yQ2hhbm5lbCwgY3JlYXRlSW1hZ2VEYXRhLCBmcm9tQmxlbmRNb2RlLCBDaGFubmVsSUQsIENvbXByZXNzaW9uLCBjbGFtcCxcblx0TGF5ZXJNYXNrRmxhZ3MsIE1hc2tQYXJhbXMsIENvbG9yU3BhY2UsIEJvdW5kcywgbGFyZ2VBZGRpdGlvbmFsSW5mb0tleXMsIFJBV19JTUFHRV9EQVRBXG59IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBFeHRlbmRlZFdyaXRlT3B0aW9ucywgaGFzTXVsdGlFZmZlY3RzLCBpbmZvSGFuZGxlcnMgfSBmcm9tICcuL2FkZGl0aW9uYWxJbmZvJztcbmltcG9ydCB7IHJlc291cmNlSGFuZGxlcnMgfSBmcm9tICcuL2ltYWdlUmVzb3VyY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBQc2RXcml0ZXIge1xuXHRvZmZzZXQ6IG51bWJlcjtcblx0YnVmZmVyOiBBcnJheUJ1ZmZlcjtcblx0dmlldzogRGF0YVZpZXc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXcml0ZXIoc2l6ZSA9IDQwOTYpOiBQc2RXcml0ZXIge1xuXHRjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7XG5cdGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTtcblx0Y29uc3Qgb2Zmc2V0ID0gMDtcblx0cmV0dXJuIHsgYnVmZmVyLCB2aWV3LCBvZmZzZXQgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdyaXRlckJ1ZmZlcih3cml0ZXI6IFBzZFdyaXRlcikge1xuXHRyZXR1cm4gd3JpdGVyLmJ1ZmZlci5zbGljZSgwLCB3cml0ZXIub2Zmc2V0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdyaXRlckJ1ZmZlck5vQ29weSh3cml0ZXI6IFBzZFdyaXRlcikge1xuXHRyZXR1cm4gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmJ1ZmZlciwgMCwgd3JpdGVyLm9mZnNldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVpbnQ4KHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdGNvbnN0IG9mZnNldCA9IGFkZFNpemUod3JpdGVyLCAxKTtcblx0d3JpdGVyLnZpZXcuc2V0VWludDgob2Zmc2V0LCB2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUludDE2KHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdGNvbnN0IG9mZnNldCA9IGFkZFNpemUod3JpdGVyLCAyKTtcblx0d3JpdGVyLnZpZXcuc2V0SW50MTYob2Zmc2V0LCB2YWx1ZSwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVaW50MTYod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0Y29uc3Qgb2Zmc2V0ID0gYWRkU2l6ZSh3cml0ZXIsIDIpO1xuXHR3cml0ZXIudmlldy5zZXRVaW50MTYob2Zmc2V0LCB2YWx1ZSwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJbnQzMih3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSBhZGRTaXplKHdyaXRlciwgNCk7XG5cdHdyaXRlci52aWV3LnNldEludDMyKG9mZnNldCwgdmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVWludDMyKHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdGNvbnN0IG9mZnNldCA9IGFkZFNpemUod3JpdGVyLCA0KTtcblx0d3JpdGVyLnZpZXcuc2V0VWludDMyKG9mZnNldCwgdmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRmxvYXQzMih3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSBhZGRTaXplKHdyaXRlciwgNCk7XG5cdHdyaXRlci52aWV3LnNldEZsb2F0MzIob2Zmc2V0LCB2YWx1ZSwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVGbG9hdDY0KHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdGNvbnN0IG9mZnNldCA9IGFkZFNpemUod3JpdGVyLCA4KTtcblx0d3JpdGVyLnZpZXcuc2V0RmxvYXQ2NChvZmZzZXQsIHZhbHVlLCBmYWxzZSk7XG59XG5cbi8vIDMyLWJpdCBmaXhlZC1wb2ludCBudW1iZXIgMTYuMTZcbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUZpeGVkUG9pbnQzMih3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUgKiAoMSA8PCAxNikpO1xufVxuXG4vLyAzMi1iaXQgZml4ZWQtcG9pbnQgbnVtYmVyIDguMjRcbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUZpeGVkUG9pbnRQYXRoMzIod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlICogKDEgPDwgMjQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQnl0ZXMod3JpdGVyOiBQc2RXcml0ZXIsIGJ1ZmZlcjogVWludDhBcnJheSB8IHVuZGVmaW5lZCkge1xuXHRpZiAoYnVmZmVyKSB7XG5cdFx0ZW5zdXJlU2l6ZSh3cml0ZXIsIHdyaXRlci5vZmZzZXQgKyBidWZmZXIubGVuZ3RoKTtcblx0XHRjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KHdyaXRlci5idWZmZXIpO1xuXHRcdGJ5dGVzLnNldChidWZmZXIsIHdyaXRlci5vZmZzZXQpO1xuXHRcdHdyaXRlci5vZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVaZXJvcyh3cml0ZXI6IFBzZFdyaXRlciwgY291bnQ6IG51bWJlcikge1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlU2lnbmF0dXJlKHdyaXRlcjogUHNkV3JpdGVyLCBzaWduYXR1cmU6IHN0cmluZykge1xuXHRpZiAoc2lnbmF0dXJlLmxlbmd0aCAhPT0gNCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNpZ25hdHVyZTogJyR7c2lnbmF0dXJlfSdgKTtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykge1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCBzaWduYXR1cmUuY2hhckNvZGVBdChpKSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUGFzY2FsU3RyaW5nKHdyaXRlcjogUHNkV3JpdGVyLCB0ZXh0OiBzdHJpbmcsIHBhZFRvOiBudW1iZXIpIHtcblx0bGV0IGxlbmd0aCA9IHRleHQubGVuZ3RoO1xuXHR3cml0ZVVpbnQ4KHdyaXRlciwgbGVuZ3RoKTtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY29kZSA9IHRleHQuY2hhckNvZGVBdChpKTtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgY29kZSA8IDEyOCA/IGNvZGUgOiAnPycuY2hhckNvZGVBdCgwKSk7XG5cdH1cblxuXHR3aGlsZSAoKytsZW5ndGggJSBwYWRUbykge1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCAwKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVbmljb2RlU3RyaW5nKHdyaXRlcjogUHNkV3JpdGVyLCB0ZXh0OiBzdHJpbmcpIHtcblx0d3JpdGVVaW50MzIod3JpdGVyLCB0ZXh0Lmxlbmd0aCk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCB0ZXh0LmNoYXJDb2RlQXQoaSkpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXI6IFBzZFdyaXRlciwgdGV4dDogc3RyaW5nKSB7XG5cdHdyaXRlVWludDMyKHdyaXRlciwgdGV4dC5sZW5ndGggKyAxKTtcblxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIHRleHQuY2hhckNvZGVBdChpKSk7XG5cdH1cblxuXHR3cml0ZVVpbnQxNih3cml0ZXIsIDApO1xufVxuXG5mdW5jdGlvbiBnZXRMYXJnZXN0TGF5ZXJTaXplKGxheWVyczogTGF5ZXJbXSA9IFtdKTogbnVtYmVyIHtcblx0bGV0IG1heCA9IDA7XG5cblx0Zm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcblx0XHRpZiAobGF5ZXIuY2FudmFzIHx8IGxheWVyLmltYWdlRGF0YSkge1xuXHRcdFx0Y29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRMYXllckRpbWVudGlvbnMobGF5ZXIpO1xuXHRcdFx0bWF4ID0gTWF0aC5tYXgobWF4LCAyICogaGVpZ2h0ICsgMiAqIHdpZHRoICogaGVpZ2h0KTtcblx0XHR9XG5cblx0XHRpZiAobGF5ZXIuY2hpbGRyZW4pIHtcblx0XHRcdG1heCA9IE1hdGgubWF4KG1heCwgZ2V0TGFyZ2VzdExheWVyU2l6ZShsYXllci5jaGlsZHJlbikpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBtYXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNlY3Rpb24od3JpdGVyOiBQc2RXcml0ZXIsIHJvdW5kOiBudW1iZXIsIGZ1bmM6ICgpID0+IHZvaWQsIHdyaXRlVG90YWxMZW5ndGggPSBmYWxzZSwgbGFyZ2UgPSBmYWxzZSkge1xuXHRpZiAobGFyZ2UpIHdyaXRlVWludDMyKHdyaXRlciwgMCk7XG5cblx0Y29uc3Qgb2Zmc2V0ID0gd3JpdGVyLm9mZnNldDtcblx0d3JpdGVVaW50MzIod3JpdGVyLCAwKTtcblxuXHRmdW5jKCk7XG5cblx0bGV0IGxlbmd0aCA9IHdyaXRlci5vZmZzZXQgLSBvZmZzZXQgLSA0O1xuXHRsZXQgbGVuID0gbGVuZ3RoO1xuXG5cdHdoaWxlICgobGVuICUgcm91bmQpICE9PSAwKSB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIDApO1xuXHRcdGxlbisrO1xuXHR9XG5cblx0aWYgKHdyaXRlVG90YWxMZW5ndGgpIHtcblx0XHRsZW5ndGggPSBsZW47XG5cdH1cblxuXHR3cml0ZXIudmlldy5zZXRVaW50MzIob2Zmc2V0LCBsZW5ndGgsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUHNkKHdyaXRlcjogUHNkV3JpdGVyLCBwc2Q6IFBzZCwgb3B0aW9uczogV3JpdGVPcHRpb25zID0ge30pIHtcblx0aWYgKCEoK3BzZC53aWR0aCA+IDAgJiYgK3BzZC5oZWlnaHQgPiAwKSlcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZG9jdW1lbnQgc2l6ZScpO1xuXG5cdGlmICgocHNkLndpZHRoID4gMzAwMDAgfHwgcHNkLmhlaWdodCA+IDMwMDAwKSAmJiAhb3B0aW9ucy5wc2IpXG5cdFx0dGhyb3cgbmV3IEVycm9yKCdEb2N1bWVudCBzaXplIGlzIHRvbyBsYXJnZSAobWF4IGlzIDMwMDAweDMwMDAwLCB1c2UgUFNCIGZvcm1hdCBpbnN0ZWFkKScpO1xuXG5cdGxldCBpbWFnZVJlc291cmNlcyA9IHBzZC5pbWFnZVJlc291cmNlcyB8fCB7fTtcblxuXHRjb25zdCBvcHQ6IEV4dGVuZGVkV3JpdGVPcHRpb25zID0geyAuLi5vcHRpb25zLCBsYXllcklkczogW10gfTtcblxuXHRpZiAob3B0LmdlbmVyYXRlVGh1bWJuYWlsKSB7XG5cdFx0aW1hZ2VSZXNvdXJjZXMgPSB7IC4uLmltYWdlUmVzb3VyY2VzLCB0aHVtYm5haWw6IGNyZWF0ZVRodW1ibmFpbChwc2QpIH07XG5cdH1cblxuXHRsZXQgaW1hZ2VEYXRhID0gcHNkLmltYWdlRGF0YTtcblxuXHRpZiAoIWltYWdlRGF0YSAmJiBwc2QuY2FudmFzKSB7XG5cdFx0aW1hZ2VEYXRhID0gcHNkLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIS5nZXRJbWFnZURhdGEoMCwgMCwgcHNkLmNhbnZhcy53aWR0aCwgcHNkLmNhbnZhcy5oZWlnaHQpO1xuXHR9XG5cblx0aWYgKGltYWdlRGF0YSAmJiAocHNkLndpZHRoICE9PSBpbWFnZURhdGEud2lkdGggfHwgcHNkLmhlaWdodCAhPT0gaW1hZ2VEYXRhLmhlaWdodCkpXG5cdFx0dGhyb3cgbmV3IEVycm9yKCdEb2N1bWVudCBjYW52YXMgbXVzdCBoYXZlIHRoZSBzYW1lIHNpemUgYXMgZG9jdW1lbnQnKTtcblxuXHRjb25zdCBnbG9iYWxBbHBoYSA9ICEhaW1hZ2VEYXRhICYmIGhhc0FscGhhKGltYWdlRGF0YSk7XG5cdGNvbnN0IG1heEJ1ZmZlclNpemUgPSBNYXRoLm1heChnZXRMYXJnZXN0TGF5ZXJTaXplKHBzZC5jaGlsZHJlbiksIDQgKiAyICogcHNkLndpZHRoICogcHNkLmhlaWdodCArIDIgKiBwc2QuaGVpZ2h0KTtcblx0Y29uc3QgdGVtcEJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KG1heEJ1ZmZlclNpemUpO1xuXG5cdC8vIGhlYWRlclxuXHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICc4QlBTJyk7XG5cdHdyaXRlVWludDE2KHdyaXRlciwgb3B0aW9ucy5wc2IgPyAyIDogMSk7IC8vIHZlcnNpb25cblx0d3JpdGVaZXJvcyh3cml0ZXIsIDYpO1xuXHR3cml0ZVVpbnQxNih3cml0ZXIsIGdsb2JhbEFscGhhID8gNCA6IDMpOyAvLyBjaGFubmVsc1xuXHR3cml0ZVVpbnQzMih3cml0ZXIsIHBzZC5oZWlnaHQpO1xuXHR3cml0ZVVpbnQzMih3cml0ZXIsIHBzZC53aWR0aCk7XG5cdHdyaXRlVWludDE2KHdyaXRlciwgOCk7IC8vIGJpdHMgcGVyIGNoYW5uZWxcblx0d3JpdGVVaW50MTYod3JpdGVyLCBDb2xvck1vZGUuUkdCKTsgLy8gd2Ugb25seSBzdXBwb3J0IHNhdmluZyBSR0IgcmlnaHQgbm93XG5cblx0Ly8gY29sb3IgbW9kZSBkYXRhXG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDEsICgpID0+IHtcblx0XHQvLyBUT0RPOiBpbXBsZW1lbnRcblx0fSk7XG5cblx0Ly8gaW1hZ2UgcmVzb3VyY2VzXG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDEsICgpID0+IHtcblx0XHRmb3IgKGNvbnN0IGhhbmRsZXIgb2YgcmVzb3VyY2VIYW5kbGVycykge1xuXHRcdFx0aWYgKGhhbmRsZXIuaGFzKGltYWdlUmVzb3VyY2VzKSkge1xuXHRcdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICc4QklNJyk7XG5cdFx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgaGFuZGxlci5rZXkpO1xuXHRcdFx0XHR3cml0ZVBhc2NhbFN0cmluZyh3cml0ZXIsICcnLCAyKTtcblx0XHRcdFx0d3JpdGVTZWN0aW9uKHdyaXRlciwgMiwgKCkgPT4gaGFuZGxlci53cml0ZSh3cml0ZXIsIGltYWdlUmVzb3VyY2VzKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblxuXHQvLyBsYXllciBhbmQgbWFzayBpbmZvXG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDIsICgpID0+IHtcblx0XHR3cml0ZUxheWVySW5mbyh0ZW1wQnVmZmVyLCB3cml0ZXIsIHBzZCwgZ2xvYmFsQWxwaGEsIG9wdCk7XG5cdFx0d3JpdGVHbG9iYWxMYXllck1hc2tJbmZvKHdyaXRlciwgcHNkLmdsb2JhbExheWVyTWFza0luZm8pO1xuXHRcdHdyaXRlQWRkaXRpb25hbExheWVySW5mbyh3cml0ZXIsIHBzZCwgcHNkLCBvcHQpO1xuXHR9LCB1bmRlZmluZWQsICEhb3B0LnBzYik7XG5cblx0Ly8gaW1hZ2UgZGF0YVxuXHRjb25zdCBjaGFubmVscyA9IGdsb2JhbEFscGhhID8gWzAsIDEsIDIsIDNdIDogWzAsIDEsIDJdO1xuXHRjb25zdCBkYXRhOiBQaXhlbERhdGEgPSBpbWFnZURhdGEgfHwge1xuXHRcdGRhdGE6IG5ldyBVaW50OEFycmF5KDQgKiBwc2Qud2lkdGggKiBwc2QuaGVpZ2h0KSxcblx0XHR3aWR0aDogcHNkLndpZHRoLFxuXHRcdGhlaWdodDogcHNkLmhlaWdodCxcblx0fTtcblxuXHR3cml0ZVVpbnQxNih3cml0ZXIsIENvbXByZXNzaW9uLlJsZUNvbXByZXNzZWQpO1xuXG5cdGlmIChSQVdfSU1BR0VfREFUQSAmJiAocHNkIGFzIGFueSkuaW1hZ2VEYXRhUmF3KSB7XG5cdFx0Y29uc29sZS5sb2coJ3dyaXRpbmcgcmF3IGltYWdlIGRhdGEnKTtcblx0XHR3cml0ZUJ5dGVzKHdyaXRlciwgKHBzZCBhcyBhbnkpLmltYWdlRGF0YVJhdyk7XG5cdH0gZWxzZSB7XG5cdFx0d3JpdGVCeXRlcyh3cml0ZXIsIHdyaXRlRGF0YVJMRSh0ZW1wQnVmZmVyLCBkYXRhLCBwc2Qud2lkdGgsIHBzZC5oZWlnaHQsIGNoYW5uZWxzLCAhIW9wdGlvbnMucHNiKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVMYXllckluZm8odGVtcEJ1ZmZlcjogVWludDhBcnJheSwgd3JpdGVyOiBQc2RXcml0ZXIsIHBzZDogUHNkLCBnbG9iYWxBbHBoYTogYm9vbGVhbiwgb3B0aW9uczogRXh0ZW5kZWRXcml0ZU9wdGlvbnMpIHtcblx0d3JpdGVTZWN0aW9uKHdyaXRlciwgNCwgKCkgPT4ge1xuXHRcdGNvbnN0IGxheWVyczogTGF5ZXJbXSA9IFtdO1xuXG5cdFx0YWRkQ2hpbGRyZW4obGF5ZXJzLCBwc2QuY2hpbGRyZW4pO1xuXG5cdFx0aWYgKCFsYXllcnMubGVuZ3RoKSBsYXllcnMucHVzaCh7fSk7XG5cblx0XHR3cml0ZUludDE2KHdyaXRlciwgZ2xvYmFsQWxwaGEgPyAtbGF5ZXJzLmxlbmd0aCA6IGxheWVycy5sZW5ndGgpO1xuXG5cdFx0Y29uc3QgbGF5ZXJzRGF0YSA9IGxheWVycy5tYXAoKGwsIGkpID0+IGdldENoYW5uZWxzKHRlbXBCdWZmZXIsIGwsIGkgPT09IDAsIG9wdGlvbnMpKTtcblxuXHRcdC8vIGxheWVyIHJlY29yZHNcblx0XHRmb3IgKGNvbnN0IGxheWVyRGF0YSBvZiBsYXllcnNEYXRhKSB7XG5cdFx0XHRjb25zdCB7IGxheWVyLCB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGNoYW5uZWxzIH0gPSBsYXllckRhdGE7XG5cblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB0b3ApO1xuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIGxlZnQpO1xuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIGJvdHRvbSk7XG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgcmlnaHQpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBjaGFubmVscy5sZW5ndGgpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGMgb2YgY2hhbm5lbHMpIHtcblx0XHRcdFx0d3JpdGVJbnQxNih3cml0ZXIsIGMuY2hhbm5lbElkKTtcblx0XHRcdFx0aWYgKG9wdGlvbnMucHNiKSB3cml0ZVVpbnQzMih3cml0ZXIsIDApO1xuXHRcdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIGMubGVuZ3RoKTtcblx0XHRcdH1cblxuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnOEJJTScpO1xuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCBmcm9tQmxlbmRNb2RlW2xheWVyLmJsZW5kTW9kZSFdIHx8ICdub3JtJyk7XG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgTWF0aC5yb3VuZChjbGFtcChsYXllci5vcGFjaXR5ID8/IDEsIDAsIDEpICogMjU1KSk7XG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgbGF5ZXIuY2xpcHBpbmcgPyAxIDogMCk7XG5cblx0XHRcdGxldCBmbGFncyA9IDB4MDg7IC8vIDEgZm9yIFBob3Rvc2hvcCA1LjAgYW5kIGxhdGVyLCB0ZWxscyBpZiBiaXQgNCBoYXMgdXNlZnVsIGluZm9ybWF0aW9uXG5cdFx0XHRpZiAobGF5ZXIudHJhbnNwYXJlbmN5UHJvdGVjdGVkKSBmbGFncyB8PSAweDAxO1xuXHRcdFx0aWYgKGxheWVyLmhpZGRlbikgZmxhZ3MgfD0gMHgwMjtcblx0XHRcdGlmIChsYXllci52ZWN0b3JNYXNrIHx8IChsYXllci5zZWN0aW9uRGl2aWRlciAmJiBsYXllci5zZWN0aW9uRGl2aWRlci50eXBlICE9PSBTZWN0aW9uRGl2aWRlclR5cGUuT3RoZXIpKSB7XG5cdFx0XHRcdGZsYWdzIHw9IDB4MTA7IC8vIHBpeGVsIGRhdGEgaXJyZWxldmFudCB0byBhcHBlYXJhbmNlIG9mIGRvY3VtZW50XG5cdFx0XHR9XG5cdFx0XHRpZiAobGF5ZXIuZWZmZWN0cyAmJiBoYXNNdWx0aUVmZmVjdHMobGF5ZXIuZWZmZWN0cykpIHtcblx0XHRcdFx0ZmxhZ3MgfD0gMHgyMDsgLy8ganVzdCBndWVzc2luZyB0aGlzIG9uZSwgbWlnaHQgYmUgY29tcGxldGVseSBpbmNvcnJlY3Rcblx0XHRcdH1cblxuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIGZsYWdzKTtcblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCAwKTsgLy8gZmlsbGVyXG5cdFx0XHR3cml0ZVNlY3Rpb24od3JpdGVyLCAxLCAoKSA9PiB7XG5cdFx0XHRcdHdyaXRlTGF5ZXJNYXNrRGF0YSh3cml0ZXIsIGxheWVyLCBsYXllckRhdGEpO1xuXHRcdFx0XHR3cml0ZUxheWVyQmxlbmRpbmdSYW5nZXMod3JpdGVyLCBwc2QpO1xuXHRcdFx0XHR3cml0ZVBhc2NhbFN0cmluZyh3cml0ZXIsIGxheWVyLm5hbWUgfHwgJycsIDQpO1xuXHRcdFx0XHR3cml0ZUFkZGl0aW9uYWxMYXllckluZm8od3JpdGVyLCBsYXllciwgcHNkLCBvcHRpb25zKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8vIGxheWVyIGNoYW5uZWwgaW1hZ2UgZGF0YVxuXHRcdGZvciAoY29uc3QgbGF5ZXJEYXRhIG9mIGxheWVyc0RhdGEpIHtcblx0XHRcdGZvciAoY29uc3QgY2hhbm5lbCBvZiBsYXllckRhdGEuY2hhbm5lbHMpIHtcblx0XHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBjaGFubmVsLmNvbXByZXNzaW9uKTtcblxuXHRcdFx0XHRpZiAoY2hhbm5lbC5idWZmZXIpIHtcblx0XHRcdFx0XHR3cml0ZUJ5dGVzKHdyaXRlciwgY2hhbm5lbC5idWZmZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LCB0cnVlLCBvcHRpb25zLnBzYik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlTGF5ZXJNYXNrRGF0YSh3cml0ZXI6IFBzZFdyaXRlciwgeyBtYXNrIH06IExheWVyLCBsYXllckRhdGE6IExheWVyQ2hhbm5lbERhdGEpIHtcblx0d3JpdGVTZWN0aW9uKHdyaXRlciwgMSwgKCkgPT4ge1xuXHRcdGlmICghbWFzaykgcmV0dXJuO1xuXG5cdFx0Y29uc3QgbSA9IGxheWVyRGF0YS5tYXNrIHx8IHt9IGFzIFBhcnRpYWw8Qm91bmRzPjtcblx0XHR3cml0ZUludDMyKHdyaXRlciwgbS50b3AhKTtcblx0XHR3cml0ZUludDMyKHdyaXRlciwgbS5sZWZ0ISk7XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIG0uYm90dG9tISk7XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIG0ucmlnaHQhKTtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgbWFzay5kZWZhdWx0Q29sb3IhKTtcblxuXHRcdGxldCBwYXJhbXMgPSAwO1xuXHRcdGlmIChtYXNrLnVzZXJNYXNrRGVuc2l0eSAhPT0gdW5kZWZpbmVkKSBwYXJhbXMgfD0gTWFza1BhcmFtcy5Vc2VyTWFza0RlbnNpdHk7XG5cdFx0aWYgKG1hc2sudXNlck1hc2tGZWF0aGVyICE9PSB1bmRlZmluZWQpIHBhcmFtcyB8PSBNYXNrUGFyYW1zLlVzZXJNYXNrRmVhdGhlcjtcblx0XHRpZiAobWFzay52ZWN0b3JNYXNrRGVuc2l0eSAhPT0gdW5kZWZpbmVkKSBwYXJhbXMgfD0gTWFza1BhcmFtcy5WZWN0b3JNYXNrRGVuc2l0eTtcblx0XHRpZiAobWFzay52ZWN0b3JNYXNrRmVhdGhlciAhPT0gdW5kZWZpbmVkKSBwYXJhbXMgfD0gTWFza1BhcmFtcy5WZWN0b3JNYXNrRmVhdGhlcjtcblxuXHRcdGxldCBmbGFncyA9IDA7XG5cdFx0aWYgKG1hc2suZGlzYWJsZWQpIGZsYWdzIHw9IExheWVyTWFza0ZsYWdzLkxheWVyTWFza0Rpc2FibGVkO1xuXHRcdGlmIChtYXNrLnBvc2l0aW9uUmVsYXRpdmVUb0xheWVyKSBmbGFncyB8PSBMYXllck1hc2tGbGFncy5Qb3NpdGlvblJlbGF0aXZlVG9MYXllcjtcblx0XHRpZiAobWFzay5mcm9tVmVjdG9yRGF0YSkgZmxhZ3MgfD0gTGF5ZXJNYXNrRmxhZ3MuTGF5ZXJNYXNrRnJvbVJlbmRlcmluZ090aGVyRGF0YTtcblx0XHRpZiAocGFyYW1zKSBmbGFncyB8PSBMYXllck1hc2tGbGFncy5NYXNrSGFzUGFyYW1ldGVyc0FwcGxpZWRUb0l0O1xuXG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIGZsYWdzKTtcblxuXHRcdGlmIChwYXJhbXMpIHtcblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCBwYXJhbXMpO1xuXG5cdFx0XHRpZiAobWFzay51c2VyTWFza0RlbnNpdHkgIT09IHVuZGVmaW5lZCkgd3JpdGVVaW50OCh3cml0ZXIsIE1hdGgucm91bmQobWFzay51c2VyTWFza0RlbnNpdHkgKiAweGZmKSk7XG5cdFx0XHRpZiAobWFzay51c2VyTWFza0ZlYXRoZXIgIT09IHVuZGVmaW5lZCkgd3JpdGVGbG9hdDY0KHdyaXRlciwgbWFzay51c2VyTWFza0ZlYXRoZXIpO1xuXHRcdFx0aWYgKG1hc2sudmVjdG9yTWFza0RlbnNpdHkgIT09IHVuZGVmaW5lZCkgd3JpdGVVaW50OCh3cml0ZXIsIE1hdGgucm91bmQobWFzay52ZWN0b3JNYXNrRGVuc2l0eSAqIDB4ZmYpKTtcblx0XHRcdGlmIChtYXNrLnZlY3Rvck1hc2tGZWF0aGVyICE9PSB1bmRlZmluZWQpIHdyaXRlRmxvYXQ2NCh3cml0ZXIsIG1hc2sudmVjdG9yTWFza0ZlYXRoZXIpO1xuXHRcdH1cblxuXHRcdC8vIFRPRE86IGhhbmRsZSByZXN0IG9mIHRoZSBmaWVsZHNcblxuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAyKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlTGF5ZXJCbGVuZGluZ1Jhbmdlcyh3cml0ZXI6IFBzZFdyaXRlciwgcHNkOiBQc2QpIHtcblx0d3JpdGVTZWN0aW9uKHdyaXRlciwgMSwgKCkgPT4ge1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgNjU1MzUpO1xuXHRcdHdyaXRlVWludDMyKHdyaXRlciwgNjU1MzUpO1xuXG5cdFx0bGV0IGNoYW5uZWxzID0gcHNkLmNoYW5uZWxzIHx8IDA7IC8vIFRPRE86IHVzZSBhbHdheXMgNCBpbnN0ZWFkID9cblx0XHQvLyBjaGFubmVscyA9IDQ7IC8vIFRFU1RJTkdcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykge1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCA2NTUzNSk7XG5cdFx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDY1NTM1KTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUdsb2JhbExheWVyTWFza0luZm8od3JpdGVyOiBQc2RXcml0ZXIsIGluZm86IEdsb2JhbExheWVyTWFza0luZm8gfCB1bmRlZmluZWQpIHtcblx0d3JpdGVTZWN0aW9uKHdyaXRlciwgMSwgKCkgPT4ge1xuXHRcdGlmIChpbmZvKSB7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8ub3ZlcmxheUNvbG9yU3BhY2UpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmNvbG9yU3BhY2UxKTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5jb2xvclNwYWNlMik7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8uY29sb3JTcGFjZTMpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmNvbG9yU3BhY2U0KTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5vcGFjaXR5ICogMHhmZik7XG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgaW5mby5raW5kKTtcblx0XHRcdHdyaXRlWmVyb3Mod3JpdGVyLCAzKTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUFkZGl0aW9uYWxMYXllckluZm8od3JpdGVyOiBQc2RXcml0ZXIsIHRhcmdldDogTGF5ZXJBZGRpdGlvbmFsSW5mbywgcHNkOiBQc2QsIG9wdGlvbnM6IEV4dGVuZGVkV3JpdGVPcHRpb25zKSB7XG5cdGZvciAoY29uc3QgaGFuZGxlciBvZiBpbmZvSGFuZGxlcnMpIHtcblx0XHRsZXQga2V5ID0gaGFuZGxlci5rZXk7XG5cblx0XHRpZiAoa2V5ID09PSAnVHh0MicgJiYgb3B0aW9ucy5pbnZhbGlkYXRlVGV4dExheWVycykgY29udGludWU7XG5cdFx0aWYgKGtleSA9PT0gJ3Ztc2snICYmIG9wdGlvbnMucHNiKSBrZXkgPSAndnNtcyc7XG5cblx0XHRpZiAoaGFuZGxlci5oYXModGFyZ2V0KSkge1xuXHRcdFx0Y29uc3QgbGFyZ2UgPSBvcHRpb25zLnBzYiAmJiBsYXJnZUFkZGl0aW9uYWxJbmZvS2V5cy5pbmRleE9mKGtleSkgIT09IC0xO1xuXG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIGxhcmdlID8gJzhCNjQnIDogJzhCSU0nKTtcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwga2V5KTtcblxuXHRcdFx0Y29uc3QgZm91ckJ5dGVzID0ga2V5ID09PSAnVHh0MicgfHwga2V5ID09PSAnbHVuaScgfHwga2V5ID09PSAndm1zaycgfHwga2V5ID09PSAnYXJ0YicgfHwga2V5ID09PSAnYXJ0ZCcgfHxcblx0XHRcdFx0a2V5ID09PSAndm9naycgfHwga2V5ID09PSAnU29MZCcgfHwga2V5ID09PSAnbG5rMicgfHwga2V5ID09PSAndnNjZycgfHwga2V5ID09PSAndnNtcycgfHwga2V5ID09PSAnR2RGbCcgfHxcblx0XHRcdFx0a2V5ID09PSAnbG1meCcgfHwga2V5ID09PSAnbHJGWCcgfHwga2V5ID09PSAnY2luZicgfHwga2V5ID09PSAnUGxMZCcgfHwga2V5ID09PSAnQW5ubyc7XG5cblx0XHRcdHdyaXRlU2VjdGlvbih3cml0ZXIsIGZvdXJCeXRlcyA/IDQgOiAyLCAoKSA9PiB7XG5cdFx0XHRcdGhhbmRsZXIud3JpdGUod3JpdGVyLCB0YXJnZXQsIHBzZCwgb3B0aW9ucyk7XG5cdFx0XHR9LCBrZXkgIT09ICdUeHQyJyAmJiBrZXkgIT09ICdjaW5mJyAmJiBrZXkgIT09ICdleHRuJywgbGFyZ2UpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBhZGRDaGlsZHJlbihsYXllcnM6IExheWVyW10sIGNoaWxkcmVuOiBMYXllcltdIHwgdW5kZWZpbmVkKSB7XG5cdGlmICghY2hpbGRyZW4pIHJldHVybjtcblxuXHRmb3IgKGNvbnN0IGMgb2YgY2hpbGRyZW4pIHtcblx0XHRpZiAoYy5jaGlsZHJlbiAmJiBjLmNhbnZhcykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGxheWVyLCBjYW5ub3QgaGF2ZSBib3RoICdjYW52YXMnIGFuZCAnY2hpbGRyZW4nIHByb3BlcnRpZXNgKTtcblx0XHRpZiAoYy5jaGlsZHJlbiAmJiBjLmltYWdlRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGxheWVyLCBjYW5ub3QgaGF2ZSBib3RoICdpbWFnZURhdGEnIGFuZCAnY2hpbGRyZW4nIHByb3BlcnRpZXNgKTtcblxuXHRcdGlmIChjLmNoaWxkcmVuKSB7XG5cdFx0XHRsYXllcnMucHVzaCh7XG5cdFx0XHRcdG5hbWU6ICc8L0xheWVyIGdyb3VwPicsXG5cdFx0XHRcdHNlY3Rpb25EaXZpZGVyOiB7XG5cdFx0XHRcdFx0dHlwZTogU2VjdGlvbkRpdmlkZXJUeXBlLkJvdW5kaW5nU2VjdGlvbkRpdmlkZXIsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC8vIFRFU1RJTkdcblx0XHRcdFx0Ly8gbmFtZVNvdXJjZTogJ2xzZXQnLFxuXHRcdFx0XHQvLyBpZDogWzQsIDAsIDAsIDgsIDExLCAwLCAwLCAwLCAwLCAxNF1bbGF5ZXJzLmxlbmd0aF0gfHwgMCxcblx0XHRcdFx0Ly8gbGF5ZXJDb2xvcjogJ25vbmUnLFxuXHRcdFx0XHQvLyB0aW1lc3RhbXA6IFsxNjExMzQ2ODE3LjM0OTAyMSwgMCwgMCwgMTYxMTM0NjgxNy4zNDkxNzUsIDE2MTEzNDY4MTcuMzQ5MTgzMywgMCwgMCwgMCwgMCwgMTYxMTM0NjgxNy4zNDk4MzJdW2xheWVycy5sZW5ndGhdIHx8IDAsXG5cdFx0XHRcdC8vIHByb3RlY3RlZDoge30sXG5cdFx0XHRcdC8vIHJlZmVyZW5jZVBvaW50OiB7IHg6IDAsIHk6IDAgfSxcblx0XHRcdH0pO1xuXHRcdFx0YWRkQ2hpbGRyZW4obGF5ZXJzLCBjLmNoaWxkcmVuKTtcblx0XHRcdGxheWVycy5wdXNoKHtcblx0XHRcdFx0c2VjdGlvbkRpdmlkZXI6IHtcblx0XHRcdFx0XHR0eXBlOiBjLm9wZW5lZCA9PT0gZmFsc2UgPyBTZWN0aW9uRGl2aWRlclR5cGUuQ2xvc2VkRm9sZGVyIDogU2VjdGlvbkRpdmlkZXJUeXBlLk9wZW5Gb2xkZXIsXG5cdFx0XHRcdFx0a2V5OiBmcm9tQmxlbmRNb2RlW2MuYmxlbmRNb2RlIV0gfHwgJ3Bhc3MnLFxuXHRcdFx0XHRcdHN1YlR5cGU6IDAsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdC4uLmMsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGF5ZXJzLnB1c2goeyAuLi5jIH0pO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiByZXNpemVCdWZmZXIod3JpdGVyOiBQc2RXcml0ZXIsIHNpemU6IG51bWJlcikge1xuXHRsZXQgbmV3TGVuZ3RoID0gd3JpdGVyLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuXG5cdGRvIHtcblx0XHRuZXdMZW5ndGggKj0gMjtcblx0fSB3aGlsZSAoc2l6ZSA+IG5ld0xlbmd0aCk7XG5cblx0Y29uc3QgbmV3QnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKG5ld0xlbmd0aCk7XG5cdGNvbnN0IG5ld0J5dGVzID0gbmV3IFVpbnQ4QXJyYXkobmV3QnVmZmVyKTtcblx0Y29uc3Qgb2xkQnl0ZXMgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuYnVmZmVyKTtcblx0bmV3Qnl0ZXMuc2V0KG9sZEJ5dGVzKTtcblx0d3JpdGVyLmJ1ZmZlciA9IG5ld0J1ZmZlcjtcblx0d3JpdGVyLnZpZXcgPSBuZXcgRGF0YVZpZXcod3JpdGVyLmJ1ZmZlcik7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVNpemUod3JpdGVyOiBQc2RXcml0ZXIsIHNpemU6IG51bWJlcikge1xuXHRpZiAoc2l6ZSA+IHdyaXRlci5idWZmZXIuYnl0ZUxlbmd0aCkge1xuXHRcdHJlc2l6ZUJ1ZmZlcih3cml0ZXIsIHNpemUpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGFkZFNpemUod3JpdGVyOiBQc2RXcml0ZXIsIHNpemU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSB3cml0ZXIub2Zmc2V0O1xuXHRlbnN1cmVTaXplKHdyaXRlciwgd3JpdGVyLm9mZnNldCArPSBzaXplKTtcblx0cmV0dXJuIG9mZnNldDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGh1bWJuYWlsKHBzZDogUHNkKSB7XG5cdGNvbnN0IGNhbnZhcyA9IGNyZWF0ZUNhbnZhcygxMCwgMTApO1xuXHRsZXQgc2NhbGUgPSAxO1xuXG5cdGlmIChwc2Qud2lkdGggPiBwc2QuaGVpZ2h0KSB7XG5cdFx0Y2FudmFzLndpZHRoID0gMTYwO1xuXHRcdGNhbnZhcy5oZWlnaHQgPSBNYXRoLmZsb29yKHBzZC5oZWlnaHQgKiAoY2FudmFzLndpZHRoIC8gcHNkLndpZHRoKSk7XG5cdFx0c2NhbGUgPSBjYW52YXMud2lkdGggLyBwc2Qud2lkdGg7XG5cdH0gZWxzZSB7XG5cdFx0Y2FudmFzLmhlaWdodCA9IDE2MDtcblx0XHRjYW52YXMud2lkdGggPSBNYXRoLmZsb29yKHBzZC53aWR0aCAqIChjYW52YXMuaGVpZ2h0IC8gcHNkLmhlaWdodCkpO1xuXHRcdHNjYWxlID0gY2FudmFzLmhlaWdodCAvIHBzZC5oZWlnaHQ7XG5cdH1cblxuXHRjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJykhO1xuXHRjb250ZXh0LnNjYWxlKHNjYWxlLCBzY2FsZSk7XG5cblx0aWYgKHBzZC5pbWFnZURhdGEpIHtcblx0XHRjb25zdCB0ZW1wID0gY3JlYXRlQ2FudmFzKHBzZC5pbWFnZURhdGEud2lkdGgsIHBzZC5pbWFnZURhdGEuaGVpZ2h0KTtcblx0XHR0ZW1wLmdldENvbnRleHQoJzJkJykhLnB1dEltYWdlRGF0YShwc2QuaW1hZ2VEYXRhLCAwLCAwKTtcblx0XHRjb250ZXh0LmRyYXdJbWFnZSh0ZW1wLCAwLCAwKTtcblx0fSBlbHNlIGlmIChwc2QuY2FudmFzKSB7XG5cdFx0Y29udGV4dC5kcmF3SW1hZ2UocHNkLmNhbnZhcywgMCwgMCk7XG5cdH1cblxuXHRyZXR1cm4gY2FudmFzO1xufVxuXG5mdW5jdGlvbiBnZXRDaGFubmVscyhcblx0dGVtcEJ1ZmZlcjogVWludDhBcnJheSwgbGF5ZXI6IExheWVyLCBiYWNrZ3JvdW5kOiBib29sZWFuLCBvcHRpb25zOiBXcml0ZU9wdGlvbnNcbik6IExheWVyQ2hhbm5lbERhdGEge1xuXHRjb25zdCBsYXllckRhdGEgPSBnZXRMYXllckNoYW5uZWxzKHRlbXBCdWZmZXIsIGxheWVyLCBiYWNrZ3JvdW5kLCBvcHRpb25zKTtcblx0Y29uc3QgbWFzayA9IGxheWVyLm1hc2s7XG5cblx0aWYgKG1hc2spIHtcblx0XHRsZXQgeyB0b3AgPSAwLCBsZWZ0ID0gMCwgcmlnaHQgPSAwLCBib3R0b20gPSAwIH0gPSBtYXNrO1xuXHRcdGxldCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldExheWVyRGltZW50aW9ucyhtYXNrKTtcblx0XHRsZXQgaW1hZ2VEYXRhID0gbWFzay5pbWFnZURhdGE7XG5cblx0XHRpZiAoIWltYWdlRGF0YSAmJiBtYXNrLmNhbnZhcyAmJiB3aWR0aCAmJiBoZWlnaHQpIHtcblx0XHRcdGltYWdlRGF0YSA9IG1hc2suY2FudmFzLmdldENvbnRleHQoJzJkJykhLmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcblx0XHR9XG5cblx0XHRpZiAod2lkdGggJiYgaGVpZ2h0ICYmIGltYWdlRGF0YSkge1xuXHRcdFx0cmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG5cdFx0XHRib3R0b20gPSB0b3AgKyBoZWlnaHQ7XG5cblx0XHRcdGxldCBidWZmZXIgPSB3cml0ZURhdGFSTEUodGVtcEJ1ZmZlciwgaW1hZ2VEYXRhLCB3aWR0aCwgaGVpZ2h0LCBbMF0sICEhb3B0aW9ucy5wc2IpITtcblxuXHRcdFx0aWYgKFJBV19JTUFHRV9EQVRBICYmIChsYXllciBhcyBhbnkpLm1hc2tEYXRhUmF3KSB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCd3cml0dGVuIHJhdyBsYXllciBpbWFnZSBkYXRhJyk7XG5cdFx0XHRcdGJ1ZmZlciA9IChsYXllciBhcyBhbnkpLm1hc2tEYXRhUmF3O1xuXHRcdFx0fVxuXG5cdFx0XHRsYXllckRhdGEubWFzayA9IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tIH07XG5cdFx0XHRsYXllckRhdGEuY2hhbm5lbHMucHVzaCh7XG5cdFx0XHRcdGNoYW5uZWxJZDogQ2hhbm5lbElELlVzZXJNYXNrLFxuXHRcdFx0XHRjb21wcmVzc2lvbjogQ29tcHJlc3Npb24uUmxlQ29tcHJlc3NlZCxcblx0XHRcdFx0YnVmZmVyOiBidWZmZXIsXG5cdFx0XHRcdGxlbmd0aDogMiArIGJ1ZmZlci5sZW5ndGgsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGF5ZXJEYXRhLm1hc2sgPSB7IHRvcDogMCwgbGVmdDogMCwgcmlnaHQ6IDAsIGJvdHRvbTogMCB9O1xuXHRcdFx0bGF5ZXJEYXRhLmNoYW5uZWxzLnB1c2goe1xuXHRcdFx0XHRjaGFubmVsSWQ6IENoYW5uZWxJRC5Vc2VyTWFzayxcblx0XHRcdFx0Y29tcHJlc3Npb246IENvbXByZXNzaW9uLlJhd0RhdGEsXG5cdFx0XHRcdGJ1ZmZlcjogbmV3IFVpbnQ4QXJyYXkoMCksXG5cdFx0XHRcdGxlbmd0aDogMCxcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBsYXllckRhdGE7XG59XG5cbmZ1bmN0aW9uIGdldExheWVyRGltZW50aW9ucyh7IGNhbnZhcywgaW1hZ2VEYXRhIH06IExheWVyKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcjsgfSB7XG5cdHJldHVybiBpbWFnZURhdGEgfHwgY2FudmFzIHx8IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xufVxuXG5mdW5jdGlvbiBjcm9wSW1hZ2VEYXRhKGRhdGE6IEltYWdlRGF0YSwgbGVmdDogbnVtYmVyLCB0b3A6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcblx0Y29uc3QgY3JvcHBlZERhdGEgPSBjcmVhdGVJbWFnZURhdGEod2lkdGgsIGhlaWdodCk7XG5cdGNvbnN0IHNyY0RhdGEgPSBkYXRhLmRhdGE7XG5cdGNvbnN0IGRzdERhdGEgPSBjcm9wcGVkRGF0YS5kYXRhO1xuXG5cdGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcblx0XHRmb3IgKGxldCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcblx0XHRcdGxldCBzcmMgPSAoKHggKyBsZWZ0KSArICh5ICsgdG9wKSAqIHdpZHRoKSAqIDQ7XG5cdFx0XHRsZXQgZHN0ID0gKHggKyB5ICogd2lkdGgpICogNDtcblx0XHRcdGRzdERhdGFbZHN0XSA9IHNyY0RhdGFbc3JjXTtcblx0XHRcdGRzdERhdGFbZHN0ICsgMV0gPSBzcmNEYXRhW3NyYyArIDFdO1xuXHRcdFx0ZHN0RGF0YVtkc3QgKyAyXSA9IHNyY0RhdGFbc3JjICsgMl07XG5cdFx0XHRkc3REYXRhW2RzdCArIDNdID0gc3JjRGF0YVtzcmMgKyAzXTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gY3JvcHBlZERhdGE7XG59XG5cbmZ1bmN0aW9uIGdldExheWVyQ2hhbm5lbHMoXG5cdHRlbXBCdWZmZXI6IFVpbnQ4QXJyYXksIGxheWVyOiBMYXllciwgYmFja2dyb3VuZDogYm9vbGVhbiwgb3B0aW9uczogV3JpdGVPcHRpb25zXG4pOiBMYXllckNoYW5uZWxEYXRhIHtcblx0bGV0IHsgdG9wID0gMCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwgYm90dG9tID0gMCB9ID0gbGF5ZXI7XG5cdGxldCBjaGFubmVsczogQ2hhbm5lbERhdGFbXSA9IFtcblx0XHR7IGNoYW5uZWxJZDogQ2hhbm5lbElELlRyYW5zcGFyZW5jeSwgY29tcHJlc3Npb246IENvbXByZXNzaW9uLlJhd0RhdGEsIGJ1ZmZlcjogdW5kZWZpbmVkLCBsZW5ndGg6IDIgfSxcblx0XHR7IGNoYW5uZWxJZDogQ2hhbm5lbElELkNvbG9yMCwgY29tcHJlc3Npb246IENvbXByZXNzaW9uLlJhd0RhdGEsIGJ1ZmZlcjogdW5kZWZpbmVkLCBsZW5ndGg6IDIgfSxcblx0XHR7IGNoYW5uZWxJZDogQ2hhbm5lbElELkNvbG9yMSwgY29tcHJlc3Npb246IENvbXByZXNzaW9uLlJhd0RhdGEsIGJ1ZmZlcjogdW5kZWZpbmVkLCBsZW5ndGg6IDIgfSxcblx0XHR7IGNoYW5uZWxJZDogQ2hhbm5lbElELkNvbG9yMiwgY29tcHJlc3Npb246IENvbXByZXNzaW9uLlJhd0RhdGEsIGJ1ZmZlcjogdW5kZWZpbmVkLCBsZW5ndGg6IDIgfSxcblx0XTtcblxuXHRsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRMYXllckRpbWVudGlvbnMobGF5ZXIpO1xuXG5cdGlmICghKGxheWVyLmNhbnZhcyB8fCBsYXllci5pbWFnZURhdGEpIHx8ICF3aWR0aCB8fCAhaGVpZ2h0KSB7XG5cdFx0cmlnaHQgPSBsZWZ0O1xuXHRcdGJvdHRvbSA9IHRvcDtcblx0XHRyZXR1cm4geyBsYXllciwgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBjaGFubmVscyB9O1xuXHR9XG5cblx0cmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG5cdGJvdHRvbSA9IHRvcCArIGhlaWdodDtcblxuXHRsZXQgZGF0YSA9IGxheWVyLmltYWdlRGF0YSB8fCBsYXllci5jYW52YXMhLmdldENvbnRleHQoJzJkJykhLmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcblxuXHRpZiAob3B0aW9ucy50cmltSW1hZ2VEYXRhKSB7XG5cdFx0Y29uc3QgdHJpbW1lZCA9IHRyaW1EYXRhKGRhdGEpO1xuXG5cdFx0aWYgKHRyaW1tZWQubGVmdCAhPT0gMCB8fCB0cmltbWVkLnRvcCAhPT0gMCB8fCB0cmltbWVkLnJpZ2h0ICE9PSBkYXRhLndpZHRoIHx8IHRyaW1tZWQuYm90dG9tICE9PSBkYXRhLmhlaWdodCkge1xuXHRcdFx0bGVmdCArPSB0cmltbWVkLmxlZnQ7XG5cdFx0XHR0b3AgKz0gdHJpbW1lZC50b3A7XG5cdFx0XHRyaWdodCAtPSAoZGF0YS53aWR0aCAtIHRyaW1tZWQucmlnaHQpO1xuXHRcdFx0Ym90dG9tIC09IChkYXRhLmhlaWdodCAtIHRyaW1tZWQuYm90dG9tKTtcblx0XHRcdHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuXHRcdFx0aGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuXG5cdFx0XHRpZiAoIXdpZHRoIHx8ICFoZWlnaHQpIHtcblx0XHRcdFx0cmV0dXJuIHsgbGF5ZXIsIHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgY2hhbm5lbHMgfTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGxheWVyLmltYWdlRGF0YSkge1xuXHRcdFx0XHRkYXRhID0gY3JvcEltYWdlRGF0YShkYXRhLCB0cmltbWVkLmxlZnQsIHRyaW1tZWQudG9wLCB3aWR0aCwgaGVpZ2h0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGEgPSBsYXllci5jYW52YXMhLmdldENvbnRleHQoJzJkJykhLmdldEltYWdlRGF0YSh0cmltbWVkLmxlZnQsIHRyaW1tZWQudG9wLCB3aWR0aCwgaGVpZ2h0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCBjaGFubmVsSWRzID0gW1xuXHRcdENoYW5uZWxJRC5Db2xvcjAsXG5cdFx0Q2hhbm5lbElELkNvbG9yMSxcblx0XHRDaGFubmVsSUQuQ29sb3IyLFxuXHRdO1xuXG5cdGlmICghYmFja2dyb3VuZCB8fCBvcHRpb25zLm5vQmFja2dyb3VuZCB8fCBsYXllci5tYXNrIHx8IGhhc0FscGhhKGRhdGEpIHx8IChSQVdfSU1BR0VfREFUQSAmJiAobGF5ZXIgYXMgYW55KS5pbWFnZURhdGFSYXc/LlsnLTEnXSkpIHtcblx0XHRjaGFubmVsSWRzLnVuc2hpZnQoQ2hhbm5lbElELlRyYW5zcGFyZW5jeSk7XG5cdH1cblxuXHRjaGFubmVscyA9IGNoYW5uZWxJZHMubWFwKGNoYW5uZWwgPT4ge1xuXHRcdGNvbnN0IG9mZnNldCA9IG9mZnNldEZvckNoYW5uZWwoY2hhbm5lbCwgZmFsc2UpOyAvLyBUT0RPOiBwc2QuY29sb3JNb2RlID09PSBDb2xvck1vZGUuQ01ZSyk7XG5cdFx0bGV0IGJ1ZmZlciA9IHdyaXRlRGF0YVJMRSh0ZW1wQnVmZmVyLCBkYXRhLCB3aWR0aCwgaGVpZ2h0LCBbb2Zmc2V0XSwgISFvcHRpb25zLnBzYikhO1xuXG5cdFx0aWYgKFJBV19JTUFHRV9EQVRBICYmIChsYXllciBhcyBhbnkpLmltYWdlRGF0YVJhdykge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ3dyaXR0ZW4gcmF3IGxheWVyIGltYWdlIGRhdGEnKTtcblx0XHRcdGJ1ZmZlciA9IChsYXllciBhcyBhbnkpLmltYWdlRGF0YVJhd1tjaGFubmVsXTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y2hhbm5lbElkOiBjaGFubmVsLFxuXHRcdFx0Y29tcHJlc3Npb246IENvbXByZXNzaW9uLlJsZUNvbXByZXNzZWQsXG5cdFx0XHRidWZmZXI6IGJ1ZmZlcixcblx0XHRcdGxlbmd0aDogMiArIGJ1ZmZlci5sZW5ndGgsXG5cdFx0fTtcblx0fSk7XG5cblx0cmV0dXJuIHsgbGF5ZXIsIHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgY2hhbm5lbHMgfTtcbn1cblxuZnVuY3Rpb24gaXNSb3dFbXB0eSh7IGRhdGEsIHdpZHRoIH06IFBpeGVsRGF0YSwgeTogbnVtYmVyLCBsZWZ0OiBudW1iZXIsIHJpZ2h0OiBudW1iZXIpIHtcblx0Y29uc3Qgc3RhcnQgPSAoKHkgKiB3aWR0aCArIGxlZnQpICogNCArIDMpIHwgMDtcblx0Y29uc3QgZW5kID0gKHN0YXJ0ICsgKHJpZ2h0IC0gbGVmdCkgKiA0KSB8IDA7XG5cblx0Zm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpID0gKGkgKyA0KSB8IDApIHtcblx0XHRpZiAoZGF0YVtpXSAhPT0gMCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc0NvbEVtcHR5KHsgZGF0YSwgd2lkdGggfTogUGl4ZWxEYXRhLCB4OiBudW1iZXIsIHRvcDogbnVtYmVyLCBib3R0b206IG51bWJlcikge1xuXHRjb25zdCBzdHJpZGUgPSAod2lkdGggKiA0KSB8IDA7XG5cdGNvbnN0IHN0YXJ0ID0gKHRvcCAqIHN0cmlkZSArIHggKiA0ICsgMykgfCAwO1xuXG5cdGZvciAobGV0IHkgPSB0b3AsIGkgPSBzdGFydDsgeSA8IGJvdHRvbTsgeSsrLCBpID0gKGkgKyBzdHJpZGUpIHwgMCkge1xuXHRcdGlmIChkYXRhW2ldICE9PSAwKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHRyaW1EYXRhKGRhdGE6IFBpeGVsRGF0YSkge1xuXHRsZXQgdG9wID0gMDtcblx0bGV0IGxlZnQgPSAwO1xuXHRsZXQgcmlnaHQgPSBkYXRhLndpZHRoO1xuXHRsZXQgYm90dG9tID0gZGF0YS5oZWlnaHQ7XG5cblx0d2hpbGUgKHRvcCA8IGJvdHRvbSAmJiBpc1Jvd0VtcHR5KGRhdGEsIHRvcCwgbGVmdCwgcmlnaHQpKVxuXHRcdHRvcCsrO1xuXHR3aGlsZSAoYm90dG9tID4gdG9wICYmIGlzUm93RW1wdHkoZGF0YSwgYm90dG9tIC0gMSwgbGVmdCwgcmlnaHQpKVxuXHRcdGJvdHRvbS0tO1xuXHR3aGlsZSAobGVmdCA8IHJpZ2h0ICYmIGlzQ29sRW1wdHkoZGF0YSwgbGVmdCwgdG9wLCBib3R0b20pKVxuXHRcdGxlZnQrKztcblx0d2hpbGUgKHJpZ2h0ID4gbGVmdCAmJiBpc0NvbEVtcHR5KGRhdGEsIHJpZ2h0IC0gMSwgdG9wLCBib3R0b20pKVxuXHRcdHJpZ2h0LS07XG5cblx0cmV0dXJuIHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbG9yKHdyaXRlcjogUHNkV3JpdGVyLCBjb2xvcjogQ29sb3IgfCB1bmRlZmluZWQpIHtcblx0aWYgKCFjb2xvcikge1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgQ29sb3JTcGFjZS5SR0IpO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCA4KTtcblx0fSBlbHNlIGlmICgncicgaW4gY29sb3IpIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIENvbG9yU3BhY2UuUkdCKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IuciAqIDI1NykpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5nICogMjU3KSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmIgKiAyNTcpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDApO1xuXHR9IGVsc2UgaWYgKCdsJyBpbiBjb2xvcikge1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgQ29sb3JTcGFjZS5MYWIpO1xuXHRcdHdyaXRlSW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmwgKiAxMDAwMCkpO1xuXHRcdHdyaXRlSW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmEgPCAwID8gKGNvbG9yLmEgKiAxMjgwMCkgOiAoY29sb3IuYSAqIDEyNzAwKSkpO1xuXHRcdHdyaXRlSW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmIgPCAwID8gKGNvbG9yLmIgKiAxMjgwMCkgOiAoY29sb3IuYiAqIDEyNzAwKSkpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMCk7XG5cdH0gZWxzZSBpZiAoJ2gnIGluIGNvbG9yKSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBDb2xvclNwYWNlLkhTQik7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmggKiAweGZmZmYpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IucyAqIDB4ZmZmZikpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5iICogMHhmZmZmKSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAwKTtcblx0fSBlbHNlIGlmICgnYycgaW4gY29sb3IpIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIENvbG9yU3BhY2UuQ01ZSyk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmMgKiAyNTcpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IubSAqIDI1NykpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci55ICogMjU3KSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmsgKiAyNTcpKTtcblx0fSBlbHNlIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIENvbG9yU3BhY2UuR3JheXNjYWxlKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IuayAqIDEwMDAwIC8gMjU1KSk7XG5cdFx0d3JpdGVaZXJvcyh3cml0ZXIsIDYpO1xuXHR9XG59XG4iXSwic291cmNlUm9vdCI6IkQ6XFxQcm9qZWN0c1xcZ2l0aHViXFxhZy1wc2RcXHNyYyJ9
652
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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Q0FBQztLQUMvQztTQUFNO1FBQ04sV0FBVyxDQUFDLE1BQU0sb0JBQXVCLENBQUM7UUFDMUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkQsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztLQUN0QjtBQUNGLENBQUMiLCJmaWxlIjoicHNkV3JpdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHNkLCBMYXllciwgTGF5ZXJBZGRpdGlvbmFsSW5mbywgQ29sb3JNb2RlLCBTZWN0aW9uRGl2aWRlclR5cGUsIFdyaXRlT3B0aW9ucywgQ29sb3IsIEdsb2JhbExheWVyTWFza0luZm8gfSBmcm9tICcuL3BzZCc7XG5pbXBvcnQge1xuXHRoYXNBbHBoYSwgY3JlYXRlQ2FudmFzLCB3cml0ZURhdGFSTEUsIFBpeGVsRGF0YSwgTGF5ZXJDaGFubmVsRGF0YSwgQ2hhbm5lbERhdGEsXG5cdG9mZnNldEZvckNoYW5uZWwsIGNyZWF0ZUltYWdlRGF0YSwgZnJvbUJsZW5kTW9kZSwgQ2hhbm5lbElELCBDb21wcmVzc2lvbiwgY2xhbXAsXG5cdExheWVyTWFza0ZsYWdzLCBNYXNrUGFyYW1zLCBDb2xvclNwYWNlLCBCb3VuZHMsIGxhcmdlQWRkaXRpb25hbEluZm9LZXlzLCBSQVdfSU1BR0VfREFUQVxufSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgRXh0ZW5kZWRXcml0ZU9wdGlvbnMsIGhhc011bHRpRWZmZWN0cywgaW5mb0hhbmRsZXJzIH0gZnJvbSAnLi9hZGRpdGlvbmFsSW5mbyc7XG5pbXBvcnQgeyByZXNvdXJjZUhhbmRsZXJzIH0gZnJvbSAnLi9pbWFnZVJlc291cmNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHNkV3JpdGVyIHtcblx0b2Zmc2V0OiBudW1iZXI7XG5cdGJ1ZmZlcjogQXJyYXlCdWZmZXI7XG5cdHZpZXc6IERhdGFWaWV3O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV3JpdGVyKHNpemUgPSA0MDk2KTogUHNkV3JpdGVyIHtcblx0Y29uc3QgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHNpemUpO1xuXHRjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG5cdGNvbnN0IG9mZnNldCA9IDA7XG5cdHJldHVybiB7IGJ1ZmZlciwgdmlldywgb2Zmc2V0IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXcml0ZXJCdWZmZXIod3JpdGVyOiBQc2RXcml0ZXIpIHtcblx0cmV0dXJuIHdyaXRlci5idWZmZXIuc2xpY2UoMCwgd3JpdGVyLm9mZnNldCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXcml0ZXJCdWZmZXJOb0NvcHkod3JpdGVyOiBQc2RXcml0ZXIpIHtcblx0cmV0dXJuIG5ldyBVaW50OEFycmF5KHdyaXRlci5idWZmZXIsIDAsIHdyaXRlci5vZmZzZXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVaW50OCh3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSBhZGRTaXplKHdyaXRlciwgMSk7XG5cdHdyaXRlci52aWV3LnNldFVpbnQ4KG9mZnNldCwgdmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVJbnQxNih3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSBhZGRTaXplKHdyaXRlciwgMik7XG5cdHdyaXRlci52aWV3LnNldEludDE2KG9mZnNldCwgdmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVWludDE2KHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdGNvbnN0IG9mZnNldCA9IGFkZFNpemUod3JpdGVyLCAyKTtcblx0d3JpdGVyLnZpZXcuc2V0VWludDE2KG9mZnNldCwgdmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSW50MzIod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0Y29uc3Qgb2Zmc2V0ID0gYWRkU2l6ZSh3cml0ZXIsIDQpO1xuXHR3cml0ZXIudmlldy5zZXRJbnQzMihvZmZzZXQsIHZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVpbnQzMih3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSBhZGRTaXplKHdyaXRlciwgNCk7XG5cdHdyaXRlci52aWV3LnNldFVpbnQzMihvZmZzZXQsIHZhbHVlLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUZsb2F0MzIod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0Y29uc3Qgb2Zmc2V0ID0gYWRkU2l6ZSh3cml0ZXIsIDQpO1xuXHR3cml0ZXIudmlldy5zZXRGbG9hdDMyKG9mZnNldCwgdmFsdWUsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRmxvYXQ2NCh3cml0ZXI6IFBzZFdyaXRlciwgdmFsdWU6IG51bWJlcikge1xuXHRjb25zdCBvZmZzZXQgPSBhZGRTaXplKHdyaXRlciwgOCk7XG5cdHdyaXRlci52aWV3LnNldEZsb2F0NjQob2Zmc2V0LCB2YWx1ZSwgZmFsc2UpO1xufVxuXG4vLyAzMi1iaXQgZml4ZWQtcG9pbnQgbnVtYmVyIDE2LjE2XG5leHBvcnQgZnVuY3Rpb24gd3JpdGVGaXhlZFBvaW50MzIod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlICogKDEgPDwgMTYpKTtcbn1cblxuLy8gMzItYml0IGZpeGVkLXBvaW50IG51bWJlciA4LjI0XG5leHBvcnQgZnVuY3Rpb24gd3JpdGVGaXhlZFBvaW50UGF0aDMyKHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZSAqICgxIDw8IDI0KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUJ5dGVzKHdyaXRlcjogUHNkV3JpdGVyLCBidWZmZXI6IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQpIHtcblx0aWYgKGJ1ZmZlcikge1xuXHRcdGVuc3VyZVNpemUod3JpdGVyLCB3cml0ZXIub2Zmc2V0ICsgYnVmZmVyLmxlbmd0aCk7XG5cdFx0Y29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheSh3cml0ZXIuYnVmZmVyKTtcblx0XHRieXRlcy5zZXQoYnVmZmVyLCB3cml0ZXIub2Zmc2V0KTtcblx0XHR3cml0ZXIub2Zmc2V0ICs9IGJ1ZmZlci5sZW5ndGg7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlWmVyb3Mod3JpdGVyOiBQc2RXcml0ZXIsIGNvdW50OiBudW1iZXIpIHtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIDApO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNpZ25hdHVyZSh3cml0ZXI6IFBzZFdyaXRlciwgc2lnbmF0dXJlOiBzdHJpbmcpIHtcblx0aWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzaWduYXR1cmU6ICcke3NpZ25hdHVyZX0nYCk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgc2lnbmF0dXJlLmNoYXJDb2RlQXQoaSkpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVBhc2NhbFN0cmluZyh3cml0ZXI6IFBzZFdyaXRlciwgdGV4dDogc3RyaW5nLCBwYWRUbzogbnVtYmVyKSB7XG5cdGxldCBsZW5ndGggPSB0ZXh0Lmxlbmd0aDtcblx0d3JpdGVVaW50OCh3cml0ZXIsIGxlbmd0aCk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdGNvbnN0IGNvZGUgPSB0ZXh0LmNoYXJDb2RlQXQoaSk7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIGNvZGUgPCAxMjggPyBjb2RlIDogJz8nLmNoYXJDb2RlQXQoMCkpO1xuXHR9XG5cblx0d2hpbGUgKCsrbGVuZ3RoICUgcGFkVG8pIHtcblx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVW5pY29kZVN0cmluZyh3cml0ZXI6IFBzZFdyaXRlciwgdGV4dDogc3RyaW5nKSB7XG5cdHdyaXRlVWludDMyKHdyaXRlciwgdGV4dC5sZW5ndGgpO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgdGV4dC5jaGFyQ29kZUF0KGkpKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyOiBQc2RXcml0ZXIsIHRleHQ6IHN0cmluZykge1xuXHR3cml0ZVVpbnQzMih3cml0ZXIsIHRleHQubGVuZ3RoICsgMSk7XG5cblx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCB0ZXh0LmNoYXJDb2RlQXQoaSkpO1xuXHR9XG5cblx0d3JpdGVVaW50MTYod3JpdGVyLCAwKTtcbn1cblxuZnVuY3Rpb24gZ2V0TGFyZ2VzdExheWVyU2l6ZShsYXllcnM6IExheWVyW10gPSBbXSk6IG51bWJlciB7XG5cdGxldCBtYXggPSAwO1xuXG5cdGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG5cdFx0aWYgKGxheWVyLmNhbnZhcyB8fCBsYXllci5pbWFnZURhdGEpIHtcblx0XHRcdGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0TGF5ZXJEaW1lbnRpb25zKGxheWVyKTtcblx0XHRcdG1heCA9IE1hdGgubWF4KG1heCwgMiAqIGhlaWdodCArIDIgKiB3aWR0aCAqIGhlaWdodCk7XG5cdFx0fVxuXG5cdFx0aWYgKGxheWVyLmNoaWxkcmVuKSB7XG5cdFx0XHRtYXggPSBNYXRoLm1heChtYXgsIGdldExhcmdlc3RMYXllclNpemUobGF5ZXIuY2hpbGRyZW4pKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbWF4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTZWN0aW9uKHdyaXRlcjogUHNkV3JpdGVyLCByb3VuZDogbnVtYmVyLCBmdW5jOiAoKSA9PiB2b2lkLCB3cml0ZVRvdGFsTGVuZ3RoID0gZmFsc2UsIGxhcmdlID0gZmFsc2UpIHtcblx0aWYgKGxhcmdlKSB3cml0ZVVpbnQzMih3cml0ZXIsIDApO1xuXG5cdGNvbnN0IG9mZnNldCA9IHdyaXRlci5vZmZzZXQ7XG5cdHdyaXRlVWludDMyKHdyaXRlciwgMCk7XG5cblx0ZnVuYygpO1xuXG5cdGxldCBsZW5ndGggPSB3cml0ZXIub2Zmc2V0IC0gb2Zmc2V0IC0gNDtcblx0bGV0IGxlbiA9IGxlbmd0aDtcblxuXHR3aGlsZSAoKGxlbiAlIHJvdW5kKSAhPT0gMCkge1xuXHRcdHdyaXRlVWludDgod3JpdGVyLCAwKTtcblx0XHRsZW4rKztcblx0fVxuXG5cdGlmICh3cml0ZVRvdGFsTGVuZ3RoKSB7XG5cdFx0bGVuZ3RoID0gbGVuO1xuXHR9XG5cblx0d3JpdGVyLnZpZXcuc2V0VWludDMyKG9mZnNldCwgbGVuZ3RoLCBmYWxzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVBzZCh3cml0ZXI6IFBzZFdyaXRlciwgcHNkOiBQc2QsIG9wdGlvbnM6IFdyaXRlT3B0aW9ucyA9IHt9KSB7XG5cdGlmICghKCtwc2Qud2lkdGggPiAwICYmICtwc2QuaGVpZ2h0ID4gMCkpXG5cdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRvY3VtZW50IHNpemUnKTtcblxuXHRpZiAoKHBzZC53aWR0aCA+IDMwMDAwIHx8IHBzZC5oZWlnaHQgPiAzMDAwMCkgJiYgIW9wdGlvbnMucHNiKVxuXHRcdHRocm93IG5ldyBFcnJvcignRG9jdW1lbnQgc2l6ZSBpcyB0b28gbGFyZ2UgKG1heCBpcyAzMDAwMHgzMDAwMCwgdXNlIFBTQiBmb3JtYXQgaW5zdGVhZCknKTtcblxuXHRsZXQgaW1hZ2VSZXNvdXJjZXMgPSBwc2QuaW1hZ2VSZXNvdXJjZXMgfHwge307XG5cblx0Y29uc3Qgb3B0OiBFeHRlbmRlZFdyaXRlT3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgbGF5ZXJJZHM6IFtdIH07XG5cblx0aWYgKG9wdC5nZW5lcmF0ZVRodW1ibmFpbCkge1xuXHRcdGltYWdlUmVzb3VyY2VzID0geyAuLi5pbWFnZVJlc291cmNlcywgdGh1bWJuYWlsOiBjcmVhdGVUaHVtYm5haWwocHNkKSB9O1xuXHR9XG5cblx0bGV0IGltYWdlRGF0YSA9IHBzZC5pbWFnZURhdGE7XG5cblx0aWYgKCFpbWFnZURhdGEgJiYgcHNkLmNhbnZhcykge1xuXHRcdGltYWdlRGF0YSA9IHBzZC5jYW52YXMuZ2V0Q29udGV4dCgnMmQnKSEuZ2V0SW1hZ2VEYXRhKDAsIDAsIHBzZC5jYW52YXMud2lkdGgsIHBzZC5jYW52YXMuaGVpZ2h0KTtcblx0fVxuXG5cdGlmIChpbWFnZURhdGEgJiYgKHBzZC53aWR0aCAhPT0gaW1hZ2VEYXRhLndpZHRoIHx8IHBzZC5oZWlnaHQgIT09IGltYWdlRGF0YS5oZWlnaHQpKVxuXHRcdHRocm93IG5ldyBFcnJvcignRG9jdW1lbnQgY2FudmFzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIGFzIGRvY3VtZW50Jyk7XG5cblx0Y29uc3QgZ2xvYmFsQWxwaGEgPSAhIWltYWdlRGF0YSAmJiBoYXNBbHBoYShpbWFnZURhdGEpO1xuXHRjb25zdCBtYXhCdWZmZXJTaXplID0gTWF0aC5tYXgoZ2V0TGFyZ2VzdExheWVyU2l6ZShwc2QuY2hpbGRyZW4pLCA0ICogMiAqIHBzZC53aWR0aCAqIHBzZC5oZWlnaHQgKyAyICogcHNkLmhlaWdodCk7XG5cdGNvbnN0IHRlbXBCdWZmZXIgPSBuZXcgVWludDhBcnJheShtYXhCdWZmZXJTaXplKTtcblxuXHQvLyBoZWFkZXJcblx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnOEJQUycpO1xuXHR3cml0ZVVpbnQxNih3cml0ZXIsIG9wdGlvbnMucHNiID8gMiA6IDEpOyAvLyB2ZXJzaW9uXG5cdHdyaXRlWmVyb3Mod3JpdGVyLCA2KTtcblx0d3JpdGVVaW50MTYod3JpdGVyLCBnbG9iYWxBbHBoYSA/IDQgOiAzKTsgLy8gY2hhbm5lbHNcblx0d3JpdGVVaW50MzIod3JpdGVyLCBwc2QuaGVpZ2h0KTtcblx0d3JpdGVVaW50MzIod3JpdGVyLCBwc2Qud2lkdGgpO1xuXHR3cml0ZVVpbnQxNih3cml0ZXIsIDgpOyAvLyBiaXRzIHBlciBjaGFubmVsXG5cdHdyaXRlVWludDE2KHdyaXRlciwgQ29sb3JNb2RlLlJHQik7IC8vIHdlIG9ubHkgc3VwcG9ydCBzYXZpbmcgUkdCIHJpZ2h0IG5vd1xuXG5cdC8vIGNvbG9yIG1vZGUgZGF0YVxuXHR3cml0ZVNlY3Rpb24od3JpdGVyLCAxLCAoKSA9PiB7XG5cdFx0Ly8gVE9ETzogaW1wbGVtZW50XG5cdH0pO1xuXG5cdC8vIGltYWdlIHJlc291cmNlc1xuXHR3cml0ZVNlY3Rpb24od3JpdGVyLCAxLCAoKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBoYW5kbGVyIG9mIHJlc291cmNlSGFuZGxlcnMpIHtcblx0XHRcdGlmIChoYW5kbGVyLmhhcyhpbWFnZVJlc291cmNlcykpIHtcblx0XHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnOEJJTScpO1xuXHRcdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGhhbmRsZXIua2V5KTtcblx0XHRcdFx0d3JpdGVQYXNjYWxTdHJpbmcod3JpdGVyLCAnJywgMik7XG5cdFx0XHRcdHdyaXRlU2VjdGlvbih3cml0ZXIsIDIsICgpID0+IGhhbmRsZXIud3JpdGUod3JpdGVyLCBpbWFnZVJlc291cmNlcykpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG5cblx0Ly8gbGF5ZXIgYW5kIG1hc2sgaW5mb1xuXHR3cml0ZVNlY3Rpb24od3JpdGVyLCAyLCAoKSA9PiB7XG5cdFx0d3JpdGVMYXllckluZm8odGVtcEJ1ZmZlciwgd3JpdGVyLCBwc2QsIGdsb2JhbEFscGhhLCBvcHQpO1xuXHRcdHdyaXRlR2xvYmFsTGF5ZXJNYXNrSW5mbyh3cml0ZXIsIHBzZC5nbG9iYWxMYXllck1hc2tJbmZvKTtcblx0XHR3cml0ZUFkZGl0aW9uYWxMYXllckluZm8od3JpdGVyLCBwc2QsIHBzZCwgb3B0KTtcblx0fSwgdW5kZWZpbmVkLCAhIW9wdC5wc2IpO1xuXG5cdC8vIGltYWdlIGRhdGFcblx0Y29uc3QgY2hhbm5lbHMgPSBnbG9iYWxBbHBoYSA/IFswLCAxLCAyLCAzXSA6IFswLCAxLCAyXTtcblx0Y29uc3QgZGF0YTogUGl4ZWxEYXRhID0gaW1hZ2VEYXRhIHx8IHtcblx0XHRkYXRhOiBuZXcgVWludDhBcnJheSg0ICogcHNkLndpZHRoICogcHNkLmhlaWdodCksXG5cdFx0d2lkdGg6IHBzZC53aWR0aCxcblx0XHRoZWlnaHQ6IHBzZC5oZWlnaHQsXG5cdH07XG5cblx0d3JpdGVVaW50MTYod3JpdGVyLCBDb21wcmVzc2lvbi5SbGVDb21wcmVzc2VkKTtcblxuXHRpZiAoUkFXX0lNQUdFX0RBVEEgJiYgKHBzZCBhcyBhbnkpLmltYWdlRGF0YVJhdykge1xuXHRcdGNvbnNvbGUubG9nKCd3cml0aW5nIHJhdyBpbWFnZSBkYXRhJyk7XG5cdFx0d3JpdGVCeXRlcyh3cml0ZXIsIChwc2QgYXMgYW55KS5pbWFnZURhdGFSYXcpO1xuXHR9IGVsc2Uge1xuXHRcdHdyaXRlQnl0ZXMod3JpdGVyLCB3cml0ZURhdGFSTEUodGVtcEJ1ZmZlciwgZGF0YSwgcHNkLndpZHRoLCBwc2QuaGVpZ2h0LCBjaGFubmVscywgISFvcHRpb25zLnBzYikpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlTGF5ZXJJbmZvKHRlbXBCdWZmZXI6IFVpbnQ4QXJyYXksIHdyaXRlcjogUHNkV3JpdGVyLCBwc2Q6IFBzZCwgZ2xvYmFsQWxwaGE6IGJvb2xlYW4sIG9wdGlvbnM6IEV4dGVuZGVkV3JpdGVPcHRpb25zKSB7XG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDQsICgpID0+IHtcblx0XHRjb25zdCBsYXllcnM6IExheWVyW10gPSBbXTtcblxuXHRcdGFkZENoaWxkcmVuKGxheWVycywgcHNkLmNoaWxkcmVuKTtcblxuXHRcdGlmICghbGF5ZXJzLmxlbmd0aCkgbGF5ZXJzLnB1c2goe30pO1xuXG5cdFx0d3JpdGVJbnQxNih3cml0ZXIsIGdsb2JhbEFscGhhID8gLWxheWVycy5sZW5ndGggOiBsYXllcnMubGVuZ3RoKTtcblxuXHRcdGNvbnN0IGxheWVyc0RhdGEgPSBsYXllcnMubWFwKChsLCBpKSA9PiBnZXRDaGFubmVscyh0ZW1wQnVmZmVyLCBsLCBpID09PSAwLCBvcHRpb25zKSk7XG5cblx0XHQvLyBsYXllciByZWNvcmRzXG5cdFx0Zm9yIChjb25zdCBsYXllckRhdGEgb2YgbGF5ZXJzRGF0YSkge1xuXHRcdFx0Y29uc3QgeyBsYXllciwgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBjaGFubmVscyB9ID0gbGF5ZXJEYXRhO1xuXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdG9wKTtcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCBsZWZ0KTtcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCBib3R0b20pO1xuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHJpZ2h0KTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgY2hhbm5lbHMubGVuZ3RoKTtcblxuXHRcdFx0Zm9yIChjb25zdCBjIG9mIGNoYW5uZWxzKSB7XG5cdFx0XHRcdHdyaXRlSW50MTYod3JpdGVyLCBjLmNoYW5uZWxJZCk7XG5cdFx0XHRcdGlmIChvcHRpb25zLnBzYikgd3JpdGVVaW50MzIod3JpdGVyLCAwKTtcblx0XHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCBjLmxlbmd0aCk7XG5cdFx0XHR9XG5cblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJzhCSU0nKTtcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgZnJvbUJsZW5kTW9kZVtsYXllci5ibGVuZE1vZGUhXSB8fCAnbm9ybScpO1xuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIE1hdGgucm91bmQoY2xhbXAobGF5ZXIub3BhY2l0eSA/PyAxLCAwLCAxKSAqIDI1NSkpO1xuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIGxheWVyLmNsaXBwaW5nID8gMSA6IDApO1xuXG5cdFx0XHRsZXQgZmxhZ3MgPSAweDA4OyAvLyAxIGZvciBQaG90b3Nob3AgNS4wIGFuZCBsYXRlciwgdGVsbHMgaWYgYml0IDQgaGFzIHVzZWZ1bCBpbmZvcm1hdGlvblxuXHRcdFx0aWYgKGxheWVyLnRyYW5zcGFyZW5jeVByb3RlY3RlZCkgZmxhZ3MgfD0gMHgwMTtcblx0XHRcdGlmIChsYXllci5oaWRkZW4pIGZsYWdzIHw9IDB4MDI7XG5cdFx0XHRpZiAobGF5ZXIudmVjdG9yTWFzayB8fCAobGF5ZXIuc2VjdGlvbkRpdmlkZXIgJiYgbGF5ZXIuc2VjdGlvbkRpdmlkZXIudHlwZSAhPT0gU2VjdGlvbkRpdmlkZXJUeXBlLk90aGVyKSkge1xuXHRcdFx0XHRmbGFncyB8PSAweDEwOyAvLyBwaXhlbCBkYXRhIGlycmVsZXZhbnQgdG8gYXBwZWFyYW5jZSBvZiBkb2N1bWVudFxuXHRcdFx0fVxuXHRcdFx0aWYgKGxheWVyLmVmZmVjdHMgJiYgaGFzTXVsdGlFZmZlY3RzKGxheWVyLmVmZmVjdHMpKSB7IC8vIFRPRE86IHRoaXMgaXMgbm90IGNvcnJlY3Rcblx0XHRcdFx0ZmxhZ3MgfD0gMHgyMDsgLy8ganVzdCBndWVzc2luZyB0aGlzIG9uZSwgbWlnaHQgYmUgY29tcGxldGVseSBpbmNvcnJlY3Rcblx0XHRcdH1cblx0XHRcdC8vIGlmICgnXzInIGluIGxheWVyKSBmbGFncyB8PSAweDIwOyAvLyBURU1QISEhXG5cblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCBmbGFncyk7XG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgMCk7IC8vIGZpbGxlclxuXHRcdFx0d3JpdGVTZWN0aW9uKHdyaXRlciwgMSwgKCkgPT4ge1xuXHRcdFx0XHR3cml0ZUxheWVyTWFza0RhdGEod3JpdGVyLCBsYXllciwgbGF5ZXJEYXRhKTtcblx0XHRcdFx0d3JpdGVMYXllckJsZW5kaW5nUmFuZ2VzKHdyaXRlciwgcHNkKTtcblx0XHRcdFx0d3JpdGVQYXNjYWxTdHJpbmcod3JpdGVyLCBsYXllci5uYW1lIHx8ICcnLCA0KTtcblx0XHRcdFx0d3JpdGVBZGRpdGlvbmFsTGF5ZXJJbmZvKHdyaXRlciwgbGF5ZXIsIHBzZCwgb3B0aW9ucyk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvLyBsYXllciBjaGFubmVsIGltYWdlIGRhdGFcblx0XHRmb3IgKGNvbnN0IGxheWVyRGF0YSBvZiBsYXllcnNEYXRhKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNoYW5uZWwgb2YgbGF5ZXJEYXRhLmNoYW5uZWxzKSB7XG5cdFx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgY2hhbm5lbC5jb21wcmVzc2lvbik7XG5cblx0XHRcdFx0aWYgKGNoYW5uZWwuYnVmZmVyKSB7XG5cdFx0XHRcdFx0d3JpdGVCeXRlcyh3cml0ZXIsIGNoYW5uZWwuYnVmZmVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSwgdHJ1ZSwgb3B0aW9ucy5wc2IpO1xufVxuXG5mdW5jdGlvbiB3cml0ZUxheWVyTWFza0RhdGEod3JpdGVyOiBQc2RXcml0ZXIsIHsgbWFzayB9OiBMYXllciwgbGF5ZXJEYXRhOiBMYXllckNoYW5uZWxEYXRhKSB7XG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDEsICgpID0+IHtcblx0XHRpZiAoIW1hc2spIHJldHVybjtcblxuXHRcdGNvbnN0IG0gPSBsYXllckRhdGEubWFzayB8fCB7fSBhcyBQYXJ0aWFsPEJvdW5kcz47XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIG0udG9wISk7XG5cdFx0d3JpdGVJbnQzMih3cml0ZXIsIG0ubGVmdCEpO1xuXHRcdHdyaXRlSW50MzIod3JpdGVyLCBtLmJvdHRvbSEpO1xuXHRcdHdyaXRlSW50MzIod3JpdGVyLCBtLnJpZ2h0ISk7XG5cdFx0d3JpdGVVaW50OCh3cml0ZXIsIG1hc2suZGVmYXVsdENvbG9yISk7XG5cblx0XHRsZXQgcGFyYW1zID0gMDtcblx0XHRpZiAobWFzay51c2VyTWFza0RlbnNpdHkgIT09IHVuZGVmaW5lZCkgcGFyYW1zIHw9IE1hc2tQYXJhbXMuVXNlck1hc2tEZW5zaXR5O1xuXHRcdGlmIChtYXNrLnVzZXJNYXNrRmVhdGhlciAhPT0gdW5kZWZpbmVkKSBwYXJhbXMgfD0gTWFza1BhcmFtcy5Vc2VyTWFza0ZlYXRoZXI7XG5cdFx0aWYgKG1hc2sudmVjdG9yTWFza0RlbnNpdHkgIT09IHVuZGVmaW5lZCkgcGFyYW1zIHw9IE1hc2tQYXJhbXMuVmVjdG9yTWFza0RlbnNpdHk7XG5cdFx0aWYgKG1hc2sudmVjdG9yTWFza0ZlYXRoZXIgIT09IHVuZGVmaW5lZCkgcGFyYW1zIHw9IE1hc2tQYXJhbXMuVmVjdG9yTWFza0ZlYXRoZXI7XG5cblx0XHRsZXQgZmxhZ3MgPSAwO1xuXHRcdGlmIChtYXNrLmRpc2FibGVkKSBmbGFncyB8PSBMYXllck1hc2tGbGFncy5MYXllck1hc2tEaXNhYmxlZDtcblx0XHRpZiAobWFzay5wb3NpdGlvblJlbGF0aXZlVG9MYXllcikgZmxhZ3MgfD0gTGF5ZXJNYXNrRmxhZ3MuUG9zaXRpb25SZWxhdGl2ZVRvTGF5ZXI7XG5cdFx0aWYgKG1hc2suZnJvbVZlY3RvckRhdGEpIGZsYWdzIHw9IExheWVyTWFza0ZsYWdzLkxheWVyTWFza0Zyb21SZW5kZXJpbmdPdGhlckRhdGE7XG5cdFx0aWYgKHBhcmFtcykgZmxhZ3MgfD0gTGF5ZXJNYXNrRmxhZ3MuTWFza0hhc1BhcmFtZXRlcnNBcHBsaWVkVG9JdDtcblxuXHRcdHdyaXRlVWludDgod3JpdGVyLCBmbGFncyk7XG5cblx0XHRpZiAocGFyYW1zKSB7XG5cdFx0XHR3cml0ZVVpbnQ4KHdyaXRlciwgcGFyYW1zKTtcblxuXHRcdFx0aWYgKG1hc2sudXNlck1hc2tEZW5zaXR5ICE9PSB1bmRlZmluZWQpIHdyaXRlVWludDgod3JpdGVyLCBNYXRoLnJvdW5kKG1hc2sudXNlck1hc2tEZW5zaXR5ICogMHhmZikpO1xuXHRcdFx0aWYgKG1hc2sudXNlck1hc2tGZWF0aGVyICE9PSB1bmRlZmluZWQpIHdyaXRlRmxvYXQ2NCh3cml0ZXIsIG1hc2sudXNlck1hc2tGZWF0aGVyKTtcblx0XHRcdGlmIChtYXNrLnZlY3Rvck1hc2tEZW5zaXR5ICE9PSB1bmRlZmluZWQpIHdyaXRlVWludDgod3JpdGVyLCBNYXRoLnJvdW5kKG1hc2sudmVjdG9yTWFza0RlbnNpdHkgKiAweGZmKSk7XG5cdFx0XHRpZiAobWFzay52ZWN0b3JNYXNrRmVhdGhlciAhPT0gdW5kZWZpbmVkKSB3cml0ZUZsb2F0NjQod3JpdGVyLCBtYXNrLnZlY3Rvck1hc2tGZWF0aGVyKTtcblx0XHR9XG5cblx0XHQvLyBUT0RPOiBoYW5kbGUgcmVzdCBvZiB0aGUgZmllbGRzXG5cblx0XHR3cml0ZVplcm9zKHdyaXRlciwgMik7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZUxheWVyQmxlbmRpbmdSYW5nZXMod3JpdGVyOiBQc2RXcml0ZXIsIHBzZDogUHNkKSB7XG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDEsICgpID0+IHtcblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDY1NTM1KTtcblx0XHR3cml0ZVVpbnQzMih3cml0ZXIsIDY1NTM1KTtcblxuXHRcdGxldCBjaGFubmVscyA9IHBzZC5jaGFubmVscyB8fCAwOyAvLyBUT0RPOiB1c2UgYWx3YXlzIDQgaW5zdGVhZCA/XG5cdFx0Ly8gY2hhbm5lbHMgPSA0OyAvLyBURVNUSU5HXG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5uZWxzOyBpKyspIHtcblx0XHRcdHdyaXRlVWludDMyKHdyaXRlciwgNjU1MzUpO1xuXHRcdFx0d3JpdGVVaW50MzIod3JpdGVyLCA2NTUzNSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVHbG9iYWxMYXllck1hc2tJbmZvKHdyaXRlcjogUHNkV3JpdGVyLCBpbmZvOiBHbG9iYWxMYXllck1hc2tJbmZvIHwgdW5kZWZpbmVkKSB7XG5cdHdyaXRlU2VjdGlvbih3cml0ZXIsIDEsICgpID0+IHtcblx0XHRpZiAoaW5mbykge1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLm92ZXJsYXlDb2xvclNwYWNlKTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5jb2xvclNwYWNlMSk7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8uY29sb3JTcGFjZTIpO1xuXHRcdFx0d3JpdGVVaW50MTYod3JpdGVyLCBpbmZvLmNvbG9yU3BhY2UzKTtcblx0XHRcdHdyaXRlVWludDE2KHdyaXRlciwgaW5mby5jb2xvclNwYWNlNCk7XG5cdFx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIGluZm8ub3BhY2l0eSAqIDB4ZmYpO1xuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIGluZm8ua2luZCk7XG5cdFx0XHR3cml0ZVplcm9zKHdyaXRlciwgMyk7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVBZGRpdGlvbmFsTGF5ZXJJbmZvKHdyaXRlcjogUHNkV3JpdGVyLCB0YXJnZXQ6IExheWVyQWRkaXRpb25hbEluZm8sIHBzZDogUHNkLCBvcHRpb25zOiBFeHRlbmRlZFdyaXRlT3B0aW9ucykge1xuXHRmb3IgKGNvbnN0IGhhbmRsZXIgb2YgaW5mb0hhbmRsZXJzKSB7XG5cdFx0bGV0IGtleSA9IGhhbmRsZXIua2V5O1xuXG5cdFx0aWYgKGtleSA9PT0gJ1R4dDInICYmIG9wdGlvbnMuaW52YWxpZGF0ZVRleHRMYXllcnMpIGNvbnRpbnVlO1xuXHRcdGlmIChrZXkgPT09ICd2bXNrJyAmJiBvcHRpb25zLnBzYikga2V5ID0gJ3ZzbXMnO1xuXG5cdFx0aWYgKGhhbmRsZXIuaGFzKHRhcmdldCkpIHtcblx0XHRcdGNvbnN0IGxhcmdlID0gb3B0aW9ucy5wc2IgJiYgbGFyZ2VBZGRpdGlvbmFsSW5mb0tleXMuaW5kZXhPZihrZXkpICE9PSAtMTtcblxuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCBsYXJnZSA/ICc4QjY0JyA6ICc4QklNJyk7XG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIGtleSk7XG5cblx0XHRcdGNvbnN0IGZvdXJCeXRlcyA9IGtleSA9PT0gJ1R4dDInIHx8IGtleSA9PT0gJ2x1bmknIHx8IGtleSA9PT0gJ3Ztc2snIHx8IGtleSA9PT0gJ2FydGInIHx8IGtleSA9PT0gJ2FydGQnIHx8XG5cdFx0XHRcdGtleSA9PT0gJ3ZvZ2snIHx8IGtleSA9PT0gJ1NvTGQnIHx8IGtleSA9PT0gJ2xuazInIHx8IGtleSA9PT0gJ3ZzY2cnIHx8IGtleSA9PT0gJ3ZzbXMnIHx8IGtleSA9PT0gJ0dkRmwnIHx8XG5cdFx0XHRcdGtleSA9PT0gJ2xtZngnIHx8IGtleSA9PT0gJ2xyRlgnIHx8IGtleSA9PT0gJ2NpbmYnIHx8IGtleSA9PT0gJ1BsTGQnIHx8IGtleSA9PT0gJ0Fubm8nO1xuXG5cdFx0XHR3cml0ZVNlY3Rpb24od3JpdGVyLCBmb3VyQnl0ZXMgPyA0IDogMiwgKCkgPT4ge1xuXHRcdFx0XHRoYW5kbGVyLndyaXRlKHdyaXRlciwgdGFyZ2V0LCBwc2QsIG9wdGlvbnMpO1xuXHRcdFx0fSwga2V5ICE9PSAnVHh0MicgJiYga2V5ICE9PSAnY2luZicgJiYga2V5ICE9PSAnZXh0bicsIGxhcmdlKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gYWRkQ2hpbGRyZW4obGF5ZXJzOiBMYXllcltdLCBjaGlsZHJlbjogTGF5ZXJbXSB8IHVuZGVmaW5lZCkge1xuXHRpZiAoIWNoaWxkcmVuKSByZXR1cm47XG5cblx0Zm9yIChjb25zdCBjIG9mIGNoaWxkcmVuKSB7XG5cdFx0aWYgKGMuY2hpbGRyZW4gJiYgYy5jYW52YXMpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsYXllciwgY2Fubm90IGhhdmUgYm90aCAnY2FudmFzJyBhbmQgJ2NoaWxkcmVuJyBwcm9wZXJ0aWVzYCk7XG5cdFx0aWYgKGMuY2hpbGRyZW4gJiYgYy5pbWFnZURhdGEpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsYXllciwgY2Fubm90IGhhdmUgYm90aCAnaW1hZ2VEYXRhJyBhbmQgJ2NoaWxkcmVuJyBwcm9wZXJ0aWVzYCk7XG5cblx0XHRpZiAoYy5jaGlsZHJlbikge1xuXHRcdFx0bGF5ZXJzLnB1c2goe1xuXHRcdFx0XHRuYW1lOiAnPC9MYXllciBncm91cD4nLFxuXHRcdFx0XHRzZWN0aW9uRGl2aWRlcjoge1xuXHRcdFx0XHRcdHR5cGU6IFNlY3Rpb25EaXZpZGVyVHlwZS5Cb3VuZGluZ1NlY3Rpb25EaXZpZGVyLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQvLyBURVNUSU5HXG5cdFx0XHRcdC8vIG5hbWVTb3VyY2U6ICdsc2V0Jyxcblx0XHRcdFx0Ly8gaWQ6IFs0LCAwLCAwLCA4LCAxMSwgMCwgMCwgMCwgMCwgMTRdW2xheWVycy5sZW5ndGhdIHx8IDAsXG5cdFx0XHRcdC8vIGxheWVyQ29sb3I6ICdub25lJyxcblx0XHRcdFx0Ly8gdGltZXN0YW1wOiBbMTYxMTM0NjgxNy4zNDkwMjEsIDAsIDAsIDE2MTEzNDY4MTcuMzQ5MTc1LCAxNjExMzQ2ODE3LjM0OTE4MzMsIDAsIDAsIDAsIDAsIDE2MTEzNDY4MTcuMzQ5ODMyXVtsYXllcnMubGVuZ3RoXSB8fCAwLFxuXHRcdFx0XHQvLyBwcm90ZWN0ZWQ6IHt9LFxuXHRcdFx0XHQvLyByZWZlcmVuY2VQb2ludDogeyB4OiAwLCB5OiAwIH0sXG5cdFx0XHR9KTtcblx0XHRcdGFkZENoaWxkcmVuKGxheWVycywgYy5jaGlsZHJlbik7XG5cdFx0XHRsYXllcnMucHVzaCh7XG5cdFx0XHRcdHNlY3Rpb25EaXZpZGVyOiB7XG5cdFx0XHRcdFx0dHlwZTogYy5vcGVuZWQgPT09IGZhbHNlID8gU2VjdGlvbkRpdmlkZXJUeXBlLkNsb3NlZEZvbGRlciA6IFNlY3Rpb25EaXZpZGVyVHlwZS5PcGVuRm9sZGVyLFxuXHRcdFx0XHRcdGtleTogZnJvbUJsZW5kTW9kZVtjLmJsZW5kTW9kZSFdIHx8ICdwYXNzJyxcblx0XHRcdFx0XHRzdWJUeXBlOiAwLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHQuLi5jLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxheWVycy5wdXNoKHsgLi4uYyB9KTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVzaXplQnVmZmVyKHdyaXRlcjogUHNkV3JpdGVyLCBzaXplOiBudW1iZXIpIHtcblx0bGV0IG5ld0xlbmd0aCA9IHdyaXRlci5idWZmZXIuYnl0ZUxlbmd0aDtcblxuXHRkbyB7XG5cdFx0bmV3TGVuZ3RoICo9IDI7XG5cdH0gd2hpbGUgKHNpemUgPiBuZXdMZW5ndGgpO1xuXG5cdGNvbnN0IG5ld0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihuZXdMZW5ndGgpO1xuXHRjb25zdCBuZXdCeXRlcyA9IG5ldyBVaW50OEFycmF5KG5ld0J1ZmZlcik7XG5cdGNvbnN0IG9sZEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkod3JpdGVyLmJ1ZmZlcik7XG5cdG5ld0J5dGVzLnNldChvbGRCeXRlcyk7XG5cdHdyaXRlci5idWZmZXIgPSBuZXdCdWZmZXI7XG5cdHdyaXRlci52aWV3ID0gbmV3IERhdGFWaWV3KHdyaXRlci5idWZmZXIpO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVTaXplKHdyaXRlcjogUHNkV3JpdGVyLCBzaXplOiBudW1iZXIpIHtcblx0aWYgKHNpemUgPiB3cml0ZXIuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcblx0XHRyZXNpemVCdWZmZXIod3JpdGVyLCBzaXplKTtcblx0fVxufVxuXG5mdW5jdGlvbiBhZGRTaXplKHdyaXRlcjogUHNkV3JpdGVyLCBzaXplOiBudW1iZXIpIHtcblx0Y29uc3Qgb2Zmc2V0ID0gd3JpdGVyLm9mZnNldDtcblx0ZW5zdXJlU2l6ZSh3cml0ZXIsIHdyaXRlci5vZmZzZXQgKz0gc2l6ZSk7XG5cdHJldHVybiBvZmZzZXQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRodW1ibmFpbChwc2Q6IFBzZCkge1xuXHRjb25zdCBjYW52YXMgPSBjcmVhdGVDYW52YXMoMTAsIDEwKTtcblx0bGV0IHNjYWxlID0gMTtcblxuXHRpZiAocHNkLndpZHRoID4gcHNkLmhlaWdodCkge1xuXHRcdGNhbnZhcy53aWR0aCA9IDE2MDtcblx0XHRjYW52YXMuaGVpZ2h0ID0gTWF0aC5mbG9vcihwc2QuaGVpZ2h0ICogKGNhbnZhcy53aWR0aCAvIHBzZC53aWR0aCkpO1xuXHRcdHNjYWxlID0gY2FudmFzLndpZHRoIC8gcHNkLndpZHRoO1xuXHR9IGVsc2Uge1xuXHRcdGNhbnZhcy5oZWlnaHQgPSAxNjA7XG5cdFx0Y2FudmFzLndpZHRoID0gTWF0aC5mbG9vcihwc2Qud2lkdGggKiAoY2FudmFzLmhlaWdodCAvIHBzZC5oZWlnaHQpKTtcblx0XHRzY2FsZSA9IGNhbnZhcy5oZWlnaHQgLyBwc2QuaGVpZ2h0O1xuXHR9XG5cblx0Y29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblx0Y29udGV4dC5zY2FsZShzY2FsZSwgc2NhbGUpO1xuXG5cdGlmIChwc2QuaW1hZ2VEYXRhKSB7XG5cdFx0Y29uc3QgdGVtcCA9IGNyZWF0ZUNhbnZhcyhwc2QuaW1hZ2VEYXRhLndpZHRoLCBwc2QuaW1hZ2VEYXRhLmhlaWdodCk7XG5cdFx0dGVtcC5nZXRDb250ZXh0KCcyZCcpIS5wdXRJbWFnZURhdGEocHNkLmltYWdlRGF0YSwgMCwgMCk7XG5cdFx0Y29udGV4dC5kcmF3SW1hZ2UodGVtcCwgMCwgMCk7XG5cdH0gZWxzZSBpZiAocHNkLmNhbnZhcykge1xuXHRcdGNvbnRleHQuZHJhd0ltYWdlKHBzZC5jYW52YXMsIDAsIDApO1xuXHR9XG5cblx0cmV0dXJuIGNhbnZhcztcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhbm5lbHMoXG5cdHRlbXBCdWZmZXI6IFVpbnQ4QXJyYXksIGxheWVyOiBMYXllciwgYmFja2dyb3VuZDogYm9vbGVhbiwgb3B0aW9uczogV3JpdGVPcHRpb25zXG4pOiBMYXllckNoYW5uZWxEYXRhIHtcblx0Y29uc3QgbGF5ZXJEYXRhID0gZ2V0TGF5ZXJDaGFubmVscyh0ZW1wQnVmZmVyLCBsYXllciwgYmFja2dyb3VuZCwgb3B0aW9ucyk7XG5cdGNvbnN0IG1hc2sgPSBsYXllci5tYXNrO1xuXG5cdGlmIChtYXNrKSB7XG5cdFx0bGV0IHsgdG9wID0gMCwgbGVmdCA9IDAsIHJpZ2h0ID0gMCwgYm90dG9tID0gMCB9ID0gbWFzaztcblx0XHRsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRMYXllckRpbWVudGlvbnMobWFzayk7XG5cdFx0bGV0IGltYWdlRGF0YSA9IG1hc2suaW1hZ2VEYXRhO1xuXG5cdFx0aWYgKCFpbWFnZURhdGEgJiYgbWFzay5jYW52YXMgJiYgd2lkdGggJiYgaGVpZ2h0KSB7XG5cdFx0XHRpbWFnZURhdGEgPSBtYXNrLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpIS5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG5cdFx0fVxuXG5cdFx0aWYgKHdpZHRoICYmIGhlaWdodCAmJiBpbWFnZURhdGEpIHtcblx0XHRcdHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xuXHRcdFx0Ym90dG9tID0gdG9wICsgaGVpZ2h0O1xuXG5cdFx0XHRsZXQgYnVmZmVyID0gd3JpdGVEYXRhUkxFKHRlbXBCdWZmZXIsIGltYWdlRGF0YSwgd2lkdGgsIGhlaWdodCwgWzBdLCAhIW9wdGlvbnMucHNiKSE7XG5cblx0XHRcdGlmIChSQVdfSU1BR0VfREFUQSAmJiAobGF5ZXIgYXMgYW55KS5tYXNrRGF0YVJhdykge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnd3JpdHRlbiByYXcgbGF5ZXIgaW1hZ2UgZGF0YScpO1xuXHRcdFx0XHRidWZmZXIgPSAobGF5ZXIgYXMgYW55KS5tYXNrRGF0YVJhdztcblx0XHRcdH1cblxuXHRcdFx0bGF5ZXJEYXRhLm1hc2sgPSB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSB9O1xuXHRcdFx0bGF5ZXJEYXRhLmNoYW5uZWxzLnB1c2goe1xuXHRcdFx0XHRjaGFubmVsSWQ6IENoYW5uZWxJRC5Vc2VyTWFzayxcblx0XHRcdFx0Y29tcHJlc3Npb246IENvbXByZXNzaW9uLlJsZUNvbXByZXNzZWQsXG5cdFx0XHRcdGJ1ZmZlcjogYnVmZmVyLFxuXHRcdFx0XHRsZW5ndGg6IDIgKyBidWZmZXIubGVuZ3RoLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxheWVyRGF0YS5tYXNrID0geyB0b3A6IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwLCBib3R0b206IDAgfTtcblx0XHRcdGxheWVyRGF0YS5jaGFubmVscy5wdXNoKHtcblx0XHRcdFx0Y2hhbm5lbElkOiBDaGFubmVsSUQuVXNlck1hc2ssXG5cdFx0XHRcdGNvbXByZXNzaW9uOiBDb21wcmVzc2lvbi5SYXdEYXRhLFxuXHRcdFx0XHRidWZmZXI6IG5ldyBVaW50OEFycmF5KDApLFxuXHRcdFx0XHRsZW5ndGg6IDAsXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbGF5ZXJEYXRhO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckRpbWVudGlvbnMoeyBjYW52YXMsIGltYWdlRGF0YSB9OiBMYXllcik6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXI7IH0ge1xuXHRyZXR1cm4gaW1hZ2VEYXRhIHx8IGNhbnZhcyB8fCB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbn1cblxuZnVuY3Rpb24gY3JvcEltYWdlRGF0YShkYXRhOiBJbWFnZURhdGEsIGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG5cdGNvbnN0IGNyb3BwZWREYXRhID0gY3JlYXRlSW1hZ2VEYXRhKHdpZHRoLCBoZWlnaHQpO1xuXHRjb25zdCBzcmNEYXRhID0gZGF0YS5kYXRhO1xuXHRjb25zdCBkc3REYXRhID0gY3JvcHBlZERhdGEuZGF0YTtcblxuXHRmb3IgKGxldCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG5cdFx0Zm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG5cdFx0XHRsZXQgc3JjID0gKCh4ICsgbGVmdCkgKyAoeSArIHRvcCkgKiB3aWR0aCkgKiA0O1xuXHRcdFx0bGV0IGRzdCA9ICh4ICsgeSAqIHdpZHRoKSAqIDQ7XG5cdFx0XHRkc3REYXRhW2RzdF0gPSBzcmNEYXRhW3NyY107XG5cdFx0XHRkc3REYXRhW2RzdCArIDFdID0gc3JjRGF0YVtzcmMgKyAxXTtcblx0XHRcdGRzdERhdGFbZHN0ICsgMl0gPSBzcmNEYXRhW3NyYyArIDJdO1xuXHRcdFx0ZHN0RGF0YVtkc3QgKyAzXSA9IHNyY0RhdGFbc3JjICsgM107XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNyb3BwZWREYXRhO1xufVxuXG5mdW5jdGlvbiBnZXRMYXllckNoYW5uZWxzKFxuXHR0ZW1wQnVmZmVyOiBVaW50OEFycmF5LCBsYXllcjogTGF5ZXIsIGJhY2tncm91bmQ6IGJvb2xlYW4sIG9wdGlvbnM6IFdyaXRlT3B0aW9uc1xuKTogTGF5ZXJDaGFubmVsRGF0YSB7XG5cdGxldCB7IHRvcCA9IDAsIGxlZnQgPSAwLCByaWdodCA9IDAsIGJvdHRvbSA9IDAgfSA9IGxheWVyO1xuXHRsZXQgY2hhbm5lbHM6IENoYW5uZWxEYXRhW10gPSBbXG5cdFx0eyBjaGFubmVsSWQ6IENoYW5uZWxJRC5UcmFuc3BhcmVuY3ksIGNvbXByZXNzaW9uOiBDb21wcmVzc2lvbi5SYXdEYXRhLCBidWZmZXI6IHVuZGVmaW5lZCwgbGVuZ3RoOiAyIH0sXG5cdFx0eyBjaGFubmVsSWQ6IENoYW5uZWxJRC5Db2xvcjAsIGNvbXByZXNzaW9uOiBDb21wcmVzc2lvbi5SYXdEYXRhLCBidWZmZXI6IHVuZGVmaW5lZCwgbGVuZ3RoOiAyIH0sXG5cdFx0eyBjaGFubmVsSWQ6IENoYW5uZWxJRC5Db2xvcjEsIGNvbXByZXNzaW9uOiBDb21wcmVzc2lvbi5SYXdEYXRhLCBidWZmZXI6IHVuZGVmaW5lZCwgbGVuZ3RoOiAyIH0sXG5cdFx0eyBjaGFubmVsSWQ6IENoYW5uZWxJRC5Db2xvcjIsIGNvbXByZXNzaW9uOiBDb21wcmVzc2lvbi5SYXdEYXRhLCBidWZmZXI6IHVuZGVmaW5lZCwgbGVuZ3RoOiAyIH0sXG5cdF07XG5cblx0bGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0TGF5ZXJEaW1lbnRpb25zKGxheWVyKTtcblxuXHRpZiAoIShsYXllci5jYW52YXMgfHwgbGF5ZXIuaW1hZ2VEYXRhKSB8fCAhd2lkdGggfHwgIWhlaWdodCkge1xuXHRcdHJpZ2h0ID0gbGVmdDtcblx0XHRib3R0b20gPSB0b3A7XG5cdFx0cmV0dXJuIHsgbGF5ZXIsIHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgY2hhbm5lbHMgfTtcblx0fVxuXG5cdHJpZ2h0ID0gbGVmdCArIHdpZHRoO1xuXHRib3R0b20gPSB0b3AgKyBoZWlnaHQ7XG5cblx0bGV0IGRhdGEgPSBsYXllci5pbWFnZURhdGEgfHwgbGF5ZXIuY2FudmFzIS5nZXRDb250ZXh0KCcyZCcpIS5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG5cblx0aWYgKG9wdGlvbnMudHJpbUltYWdlRGF0YSkge1xuXHRcdGNvbnN0IHRyaW1tZWQgPSB0cmltRGF0YShkYXRhKTtcblxuXHRcdGlmICh0cmltbWVkLmxlZnQgIT09IDAgfHwgdHJpbW1lZC50b3AgIT09IDAgfHwgdHJpbW1lZC5yaWdodCAhPT0gZGF0YS53aWR0aCB8fCB0cmltbWVkLmJvdHRvbSAhPT0gZGF0YS5oZWlnaHQpIHtcblx0XHRcdGxlZnQgKz0gdHJpbW1lZC5sZWZ0O1xuXHRcdFx0dG9wICs9IHRyaW1tZWQudG9wO1xuXHRcdFx0cmlnaHQgLT0gKGRhdGEud2lkdGggLSB0cmltbWVkLnJpZ2h0KTtcblx0XHRcdGJvdHRvbSAtPSAoZGF0YS5oZWlnaHQgLSB0cmltbWVkLmJvdHRvbSk7XG5cdFx0XHR3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcblx0XHRcdGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcblxuXHRcdFx0aWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG5cdFx0XHRcdHJldHVybiB7IGxheWVyLCB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGNoYW5uZWxzIH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChsYXllci5pbWFnZURhdGEpIHtcblx0XHRcdFx0ZGF0YSA9IGNyb3BJbWFnZURhdGEoZGF0YSwgdHJpbW1lZC5sZWZ0LCB0cmltbWVkLnRvcCwgd2lkdGgsIGhlaWdodCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhID0gbGF5ZXIuY2FudmFzIS5nZXRDb250ZXh0KCcyZCcpIS5nZXRJbWFnZURhdGEodHJpbW1lZC5sZWZ0LCB0cmltbWVkLnRvcCwgd2lkdGgsIGhlaWdodCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Y29uc3QgY2hhbm5lbElkcyA9IFtcblx0XHRDaGFubmVsSUQuQ29sb3IwLFxuXHRcdENoYW5uZWxJRC5Db2xvcjEsXG5cdFx0Q2hhbm5lbElELkNvbG9yMixcblx0XTtcblxuXHRpZiAoIWJhY2tncm91bmQgfHwgb3B0aW9ucy5ub0JhY2tncm91bmQgfHwgbGF5ZXIubWFzayB8fCBoYXNBbHBoYShkYXRhKSB8fCAoUkFXX0lNQUdFX0RBVEEgJiYgKGxheWVyIGFzIGFueSkuaW1hZ2VEYXRhUmF3Py5bJy0xJ10pKSB7XG5cdFx0Y2hhbm5lbElkcy51bnNoaWZ0KENoYW5uZWxJRC5UcmFuc3BhcmVuY3kpO1xuXHR9XG5cblx0Y2hhbm5lbHMgPSBjaGFubmVsSWRzLm1hcChjaGFubmVsID0+IHtcblx0XHRjb25zdCBvZmZzZXQgPSBvZmZzZXRGb3JDaGFubmVsKGNoYW5uZWwsIGZhbHNlKTsgLy8gVE9ETzogcHNkLmNvbG9yTW9kZSA9PT0gQ29sb3JNb2RlLkNNWUspO1xuXHRcdGxldCBidWZmZXIgPSB3cml0ZURhdGFSTEUodGVtcEJ1ZmZlciwgZGF0YSwgd2lkdGgsIGhlaWdodCwgW29mZnNldF0sICEhb3B0aW9ucy5wc2IpITtcblxuXHRcdGlmIChSQVdfSU1BR0VfREFUQSAmJiAobGF5ZXIgYXMgYW55KS5pbWFnZURhdGFSYXcpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCd3cml0dGVuIHJhdyBsYXllciBpbWFnZSBkYXRhJyk7XG5cdFx0XHRidWZmZXIgPSAobGF5ZXIgYXMgYW55KS5pbWFnZURhdGFSYXdbY2hhbm5lbF07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNoYW5uZWxJZDogY2hhbm5lbCxcblx0XHRcdGNvbXByZXNzaW9uOiBDb21wcmVzc2lvbi5SbGVDb21wcmVzc2VkLFxuXHRcdFx0YnVmZmVyOiBidWZmZXIsXG5cdFx0XHRsZW5ndGg6IDIgKyBidWZmZXIubGVuZ3RoLFxuXHRcdH07XG5cdH0pO1xuXG5cdHJldHVybiB7IGxheWVyLCB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGNoYW5uZWxzIH07XG59XG5cbmZ1bmN0aW9uIGlzUm93RW1wdHkoeyBkYXRhLCB3aWR0aCB9OiBQaXhlbERhdGEsIHk6IG51bWJlciwgbGVmdDogbnVtYmVyLCByaWdodDogbnVtYmVyKSB7XG5cdGNvbnN0IHN0YXJ0ID0gKCh5ICogd2lkdGggKyBsZWZ0KSAqIDQgKyAzKSB8IDA7XG5cdGNvbnN0IGVuZCA9IChzdGFydCArIChyaWdodCAtIGxlZnQpICogNCkgfCAwO1xuXG5cdGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgaSA9IChpICsgNCkgfCAwKSB7XG5cdFx0aWYgKGRhdGFbaV0gIT09IDApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNDb2xFbXB0eSh7IGRhdGEsIHdpZHRoIH06IFBpeGVsRGF0YSwgeDogbnVtYmVyLCB0b3A6IG51bWJlciwgYm90dG9tOiBudW1iZXIpIHtcblx0Y29uc3Qgc3RyaWRlID0gKHdpZHRoICogNCkgfCAwO1xuXHRjb25zdCBzdGFydCA9ICh0b3AgKiBzdHJpZGUgKyB4ICogNCArIDMpIHwgMDtcblxuXHRmb3IgKGxldCB5ID0gdG9wLCBpID0gc3RhcnQ7IHkgPCBib3R0b207IHkrKywgaSA9IChpICsgc3RyaWRlKSB8IDApIHtcblx0XHRpZiAoZGF0YVtpXSAhPT0gMCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB0cmltRGF0YShkYXRhOiBQaXhlbERhdGEpIHtcblx0bGV0IHRvcCA9IDA7XG5cdGxldCBsZWZ0ID0gMDtcblx0bGV0IHJpZ2h0ID0gZGF0YS53aWR0aDtcblx0bGV0IGJvdHRvbSA9IGRhdGEuaGVpZ2h0O1xuXG5cdHdoaWxlICh0b3AgPCBib3R0b20gJiYgaXNSb3dFbXB0eShkYXRhLCB0b3AsIGxlZnQsIHJpZ2h0KSlcblx0XHR0b3ArKztcblx0d2hpbGUgKGJvdHRvbSA+IHRvcCAmJiBpc1Jvd0VtcHR5KGRhdGEsIGJvdHRvbSAtIDEsIGxlZnQsIHJpZ2h0KSlcblx0XHRib3R0b20tLTtcblx0d2hpbGUgKGxlZnQgPCByaWdodCAmJiBpc0NvbEVtcHR5KGRhdGEsIGxlZnQsIHRvcCwgYm90dG9tKSlcblx0XHRsZWZ0Kys7XG5cdHdoaWxlIChyaWdodCA+IGxlZnQgJiYgaXNDb2xFbXB0eShkYXRhLCByaWdodCAtIDEsIHRvcCwgYm90dG9tKSlcblx0XHRyaWdodC0tO1xuXG5cdHJldHVybiB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVDb2xvcih3cml0ZXI6IFBzZFdyaXRlciwgY29sb3I6IENvbG9yIHwgdW5kZWZpbmVkKSB7XG5cdGlmICghY29sb3IpIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIENvbG9yU3BhY2UuUkdCKTtcblx0XHR3cml0ZVplcm9zKHdyaXRlciwgOCk7XG5cdH0gZWxzZSBpZiAoJ3InIGluIGNvbG9yKSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBDb2xvclNwYWNlLlJHQik7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLnIgKiAyNTcpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IuZyAqIDI1NykpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5iICogMjU3KSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCAwKTtcblx0fSBlbHNlIGlmICgnbCcgaW4gY29sb3IpIHtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIENvbG9yU3BhY2UuTGFiKTtcblx0XHR3cml0ZUludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5sICogMTAwMDApKTtcblx0XHR3cml0ZUludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5hIDwgMCA/IChjb2xvci5hICogMTI4MDApIDogKGNvbG9yLmEgKiAxMjcwMCkpKTtcblx0XHR3cml0ZUludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5iIDwgMCA/IChjb2xvci5iICogMTI4MDApIDogKGNvbG9yLmIgKiAxMjcwMCkpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIDApO1xuXHR9IGVsc2UgaWYgKCdoJyBpbiBjb2xvcikge1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgQ29sb3JTcGFjZS5IU0IpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5oICogMHhmZmZmKSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLnMgKiAweGZmZmYpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IuYiAqIDB4ZmZmZikpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgMCk7XG5cdH0gZWxzZSBpZiAoJ2MnIGluIGNvbG9yKSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBDb2xvclNwYWNlLkNNWUspO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5jICogMjU3KSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLm0gKiAyNTcpKTtcblx0XHR3cml0ZVVpbnQxNih3cml0ZXIsIE1hdGgucm91bmQoY29sb3IueSAqIDI1NykpO1xuXHRcdHdyaXRlVWludDE2KHdyaXRlciwgTWF0aC5yb3VuZChjb2xvci5rICogMjU3KSk7XG5cdH0gZWxzZSB7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBDb2xvclNwYWNlLkdyYXlzY2FsZSk7XG5cdFx0d3JpdGVVaW50MTYod3JpdGVyLCBNYXRoLnJvdW5kKGNvbG9yLmsgKiAxMDAwMCAvIDI1NSkpO1xuXHRcdHdyaXRlWmVyb3Mod3JpdGVyLCA2KTtcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiJDOlxcUHJvamVjdHNcXGdpdGh1YlxcYWctcHNkXFxzcmMifQ==
package/dist-es/text.js CHANGED
@@ -550,4 +550,4 @@ export function encodeEngineData(data) {
550
550
  return engineData;
551
551
  }
552
552
 
553
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzNELG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQywwQkFBMEI7YUFDakU7WUFDRCxTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxTQUFTLG1DQUFJLE9BQU8sQ0FBQztZQUN2RCx3QkFBd0IsRUFBRSxNQUFBLElBQUksQ0FBQyx3QkFBd0IsbUNBQUksSUFBSTtZQUMvRCxRQUFRLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFO29CQUNQLGdCQUFnQixrQkFBQTtvQkFDaEIsUUFBUSxFQUFFO3dCQUNUOzRCQUNDLFNBQVMsV0FBQTs0QkFDVCxVQUFVLFlBQUE7NEJBQ1YsS0FBSyxFQUFFLEVBQUUsZ0JBQWdCLGtCQUFBLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs0QkFDekMsTUFBTSxFQUFFLEVBQUUsU0FBUyxXQUFBLEVBQUU7eUJBQ3JCO3FCQUNEO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELFlBQVksZUFBTyxnQkFBZ0IsQ0FBRTtRQUNyQyxpQkFBaUIsZUFBTyxnQkFBZ0IsQ0FBRTtLQUMxQyxDQUFDO0lBRUYseUZBQXlGO0lBQ3pGLE9BQU8sVUFBVSxDQUFDO0FBQ25CLENBQUMiLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRTdHlsZSwgTGF5ZXJUZXh0RGF0YSwgUGFyYWdyYXBoU3R5bGUsIEZvbnQsIEFudGlBbGlhcywgVGV4dEdyaWRJbmZvLCBKdXN0aWZpY2F0aW9uLCBDb2xvciB9IGZyb20gJy4vcHNkJztcclxuXHJcbmludGVyZmFjZSBBZGp1c3RtZW50cyB7XHJcblx0QXhpczogbnVtYmVyW107XHJcblx0WFk6IG51bWJlcltdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVHlwZVZhbHVlcyB7XHJcblx0VHlwZTogbnVtYmVyO1xyXG5cdFZhbHVlczogbnVtYmVyW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBQYXJhZ3JhcGhQcm9wZXJ0aWVzIHtcclxuXHRKdXN0aWZpY2F0aW9uPzogbnVtYmVyO1xyXG5cdEZpcnN0TGluZUluZGVudD86IG51bWJlcjtcclxuXHRTdGFydEluZGVudD86IG51bWJlcjtcclxuXHRFbmRJbmRlbnQ/OiBudW1iZXI7XHJcblx0U3BhY2VCZWZvcmU/OiBudW1iZXI7XHJcblx0U3BhY2VBZnRlcj86IG51bWJlcjtcclxuXHRBdXRvSHlwaGVuYXRlPzogYm9vbGVhbjtcclxuXHRIeXBoZW5hdGVkV29yZFNpemU/OiBudW1iZXI7XHJcblx0UHJlSHlwaGVuPzogbnVtYmVyO1xyXG5cdFBvc3RIeXBoZW4/OiBudW1iZXI7XHJcblx0Q29uc2VjdXRpdmVIeXBoZW5zPzogbnVtYmVyO1xyXG5cdFpvbmU/OiBudW1iZXI7XHJcblx0V29yZFNwYWNpbmc/OiBudW1iZXJbXTtcclxuXHRMZXR0ZXJTcGFjaW5nPzogbnVtYmVyW107XHJcblx0R2x5cGhTcGFjaW5nPzogbnVtYmVyW107XHJcblx0QXV0b0xlYWRpbmc/OiBudW1iZXI7XHJcblx0TGVhZGluZ1R5cGU/OiBudW1iZXI7XHJcblx0SGFuZ2luZz86IGJvb2xlYW47XHJcblx0QnVyYXNhZ2FyaT86IGJvb2xlYW47XHJcblx0S2luc29rdU9yZGVyPzogbnVtYmVyO1xyXG5cdEV2ZXJ5TGluZUNvbXBvc2VyPzogYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhcmFncmFwaFNoZWV0IHtcclxuXHROYW1lPzogc3RyaW5nO1xyXG5cdERlZmF1bHRTdHlsZVNoZWV0OiBudW1iZXI7XHJcblx0UHJvcGVydGllczogUGFyYWdyYXBoUHJvcGVydGllcztcclxufVxyXG5cclxuaW50ZXJmYWNlIFN0eWxlU2hlZXREYXRhIHtcclxuXHRGb250PzogbnVtYmVyO1xyXG5cdEZvbnRTaXplPzogbnVtYmVyO1xyXG5cdEZhdXhCb2xkPzogYm9vbGVhbjtcclxuXHRGYXV4SXRhbGljPzogYm9vbGVhbjtcclxuXHRBdXRvTGVhZGluZz86IGJvb2xlYW47XHJcblx0TGVhZGluZz86IG51bWJlcjtcclxuXHRIb3Jpem9udGFsU2NhbGU/OiBudW1iZXI7XHJcblx0VmVydGljYWxTY2FsZT86IG51bWJlcjtcclxuXHRUcmFja2luZz86IG51bWJlcjtcclxuXHRBdXRvS2VybmluZz86IGJvb2xlYW47XHJcblx0S2VybmluZz86IG51bWJlcjtcclxuXHRCYXNlbGluZVNoaWZ0PzogbnVtYmVyO1xyXG5cdEZvbnRDYXBzPzogbnVtYmVyO1xyXG5cdEZvbnRCYXNlbGluZT86IG51bWJlcjtcclxuXHRVbmRlcmxpbmU/OiBib29sZWFuO1xyXG5cdFN0cmlrZXRocm91Z2g/OiBib29sZWFuO1xyXG5cdExpZ2F0dXJlcz86IGJvb2xlYW47XHJcblx0RExpZ2F0dXJlcz86IGJvb2xlYW47XHJcblx0QmFzZWxpbmVEaXJlY3Rpb24/OiBudW1iZXI7XHJcblx0VHN1bWU/OiBudW1iZXI7XHJcblx0U3R5bGVSdW5BbGlnbm1lbnQ/OiBudW1iZXI7XHJcblx0TGFuZ3VhZ2U/OiBudW1iZXI7XHJcblx0Tm9CcmVhaz86IGJvb2xlYW47XHJcblx0RmlsbENvbG9yPzogVHlwZVZhbHVlcztcclxuXHRTdHJva2VDb2xvcj86IFR5cGVWYWx1ZXM7XHJcblx0RmlsbEZsYWc/OiBib29sZWFuO1xyXG5cdFN0cm9rZUZsYWc/OiBib29sZWFuO1xyXG5cdEZpbGxGaXJzdD86IGJvb2xlYW47XHJcblx0WVVuZGVybGluZT86IG51bWJlcjtcclxuXHRPdXRsaW5lV2lkdGg/OiBudW1iZXI7XHJcblx0Q2hhcmFjdGVyRGlyZWN0aW9uPzogbnVtYmVyO1xyXG5cdEhpbmRpTnVtYmVycz86IGJvb2xlYW47XHJcblx0S2FzaGlkYT86IG51bWJlcjtcclxuXHREaWFjcml0aWNQb3M/OiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBGb250U2V0IHtcclxuXHROYW1lOiBzdHJpbmc7XHJcblx0U2NyaXB0OiBudW1iZXI7XHJcblx0Rm9udFR5cGU6IG51bWJlcjtcclxuXHRTeW50aGV0aWM6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJlc291cmNlRGljdCB7XHJcblx0S2luc29rdVNldDogYW55W107XHJcblx0TW9qaUt1bWlTZXQ6IGFueVtdO1xyXG5cdFRoZU5vcm1hbFN0eWxlU2hlZXQ6IG51bWJlcjtcclxuXHRUaGVOb3JtYWxQYXJhZ3JhcGhTaGVldDogbnVtYmVyO1xyXG5cdFBhcmFncmFwaFNoZWV0U2V0OiBQYXJhZ3JhcGhTaGVldFtdO1xyXG5cdFN0eWxlU2hlZXRTZXQ6IHsgTmFtZTogc3RyaW5nOyBTdHlsZVNoZWV0RGF0YTogU3R5bGVTaGVldERhdGE7IH1bXTtcclxuXHRGb250U2V0OiBGb250U2V0W107XHJcblx0U3VwZXJzY3JpcHRTaXplOiBudW1iZXI7XHJcblx0U3VwZXJzY3JpcHRQb3NpdGlvbjogbnVtYmVyO1xyXG5cdFN1YnNjcmlwdFNpemU6IG51bWJlcjtcclxuXHRTdWJzY3JpcHRQb3NpdGlvbjogbnVtYmVyO1xyXG5cdFNtYWxsQ2FwU2l6ZTogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUGFyYWdyYXBoUnVuIHtcclxuXHRQYXJhZ3JhcGhTaGVldDogUGFyYWdyYXBoU2hlZXQ7XHJcblx0QWRqdXN0bWVudHM6IEFkanVzdG1lbnRzO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3R5bGVSdW4ge1xyXG5cdFN0eWxlU2hlZXQ6IHsgU3R5bGVTaGVldERhdGE6IFN0eWxlU2hlZXREYXRhOyB9O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUGhvdG9zaG9wTm9kZSB7XHJcblx0U2hhcGVUeXBlPzogbnVtYmVyO1xyXG5cdFBvaW50QmFzZT86IG51bWJlcltdO1xyXG5cdEJveEJvdW5kcz86IG51bWJlcltdO1xyXG5cdEJhc2U/OiB7XHJcblx0XHRTaGFwZVR5cGU6IG51bWJlcjtcclxuXHRcdFRyYW5zZm9ybVBvaW50MDogbnVtYmVyW107XHJcblx0XHRUcmFuc2Zvcm1Qb2ludDE6IG51bWJlcltdO1xyXG5cdFx0VHJhbnNmb3JtUG9pbnQyOiBudW1iZXJbXTtcclxuXHR9O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRW5naW5lRGF0YSB7XHJcblx0RW5naW5lRGljdDoge1xyXG5cdFx0RWRpdG9yOiB7IFRleHQ6IHN0cmluZzsgfTtcclxuXHRcdFBhcmFncmFwaFJ1bjoge1xyXG5cdFx0XHREZWZhdWx0UnVuRGF0YTogUGFyYWdyYXBoUnVuO1xyXG5cdFx0XHRSdW5BcnJheTogUGFyYWdyYXBoUnVuW107XHJcblx0XHRcdFJ1bkxlbmd0aEFycmF5OiBudW1iZXJbXTtcclxuXHRcdFx0SXNKb2luYWJsZTogbnVtYmVyO1xyXG5cdFx0fTtcclxuXHRcdFN0eWxlUnVuOiB7XHJcblx0XHRcdERlZmF1bHRSdW5EYXRhOiBTdHlsZVJ1bjtcclxuXHRcdFx0UnVuQXJyYXk6IFN0eWxlUnVuW107XHJcblx0XHRcdFJ1bkxlbmd0aEFycmF5OiBudW1iZXJbXTtcclxuXHRcdFx0SXNKb2luYWJsZTogbnVtYmVyO1xyXG5cdFx0fTtcclxuXHRcdEdyaWRJbmZvOiB7XHJcblx0XHRcdEdyaWRJc09uOiBib29sZWFuO1xyXG5cdFx0XHRTaG93R3JpZDogYm9vbGVhbjtcclxuXHRcdFx0R3JpZFNpemU6IG51bWJlcjtcclxuXHRcdFx0R3JpZExlYWRpbmc6IG51bWJlcjtcclxuXHRcdFx0R3JpZENvbG9yOiBUeXBlVmFsdWVzO1xyXG5cdFx0XHRHcmlkTGVhZGluZ0ZpbGxDb2xvcjogVHlwZVZhbHVlcztcclxuXHRcdFx0QWxpZ25MaW5lSGVpZ2h0VG9HcmlkRmxhZ3M6IGJvb2xlYW47XHJcblx0XHR9O1xyXG5cdFx0QW50aUFsaWFzOiBudW1iZXI7XHJcblx0XHRVc2VGcmFjdGlvbmFsR2x5cGhXaWR0aHM6IGJvb2xlYW47XHJcblx0XHRSZW5kZXJlZD86IHtcclxuXHRcdFx0VmVyc2lvbjogbnVtYmVyO1xyXG5cdFx0XHRTaGFwZXM/OiB7XHJcblx0XHRcdFx0V3JpdGluZ0RpcmVjdGlvbjogbnVtYmVyO1xyXG5cdFx0XHRcdENoaWxkcmVuPzoge1xyXG5cdFx0XHRcdFx0U2hhcGVUeXBlPzogbnVtYmVyO1xyXG5cdFx0XHRcdFx0UHJvY2Vzc2lvbjogbnVtYmVyO1xyXG5cdFx0XHRcdFx0TGluZXM6IHsgV3JpdGluZ0RpcmVjdGlvbjogbnVtYmVyOyBDaGlsZHJlbjogYW55W107IH07XHJcblx0XHRcdFx0XHRDb29raWU/OiB7XHJcblx0XHRcdFx0XHRcdFBob3Rvc2hvcD86IFBob3Rvc2hvcE5vZGU7XHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1bXTtcclxuXHRcdFx0fTtcclxuXHRcdH07XHJcblx0fTtcclxuXHRSZXNvdXJjZURpY3Q6IFJlc291cmNlRGljdDtcclxuXHREb2N1bWVudFJlc291cmNlczogUmVzb3VyY2VEaWN0O1xyXG59XHJcblxyXG5jb25zdCBkZWZhdWx0Rm9udDogRm9udCA9IHtcclxuXHRuYW1lOiAnTXlyaWFkUHJvLVJlZ3VsYXInLFxyXG5cdHNjcmlwdDogMCxcclxuXHR0eXBlOiAwLFxyXG5cdHN5bnRoZXRpYzogMCxcclxufTtcclxuXHJcbmNvbnN0IGRlZmF1bHRQYXJhZ3JhcGhTdHlsZTogUGFyYWdyYXBoU3R5bGUgPSB7XHJcblx0anVzdGlmaWNhdGlvbjogJ2xlZnQnLFxyXG5cdGZpcnN0TGluZUluZGVudDogMCxcclxuXHRzdGFydEluZGVudDogMCxcclxuXHRlbmRJbmRlbnQ6IDAsXHJcblx0c3BhY2VCZWZvcmU6IDAsXHJcblx0c3BhY2VBZnRlcjogMCxcclxuXHRhdXRvSHlwaGVuYXRlOiB0cnVlLFxyXG5cdGh5cGhlbmF0ZWRXb3JkU2l6ZTogNixcclxuXHRwcmVIeXBoZW46IDIsXHJcblx0cG9zdEh5cGhlbjogMixcclxuXHRjb25zZWN1dGl2ZUh5cGhlbnM6IDgsXHJcblx0em9uZTogMzYsXHJcblx0d29yZFNwYWNpbmc6IFswLjgsIDEsIDEuMzNdLFxyXG5cdGxldHRlclNwYWNpbmc6IFswLCAwLCAwXSxcclxuXHRnbHlwaFNwYWNpbmc6IFsxLCAxLCAxXSxcclxuXHRhdXRvTGVhZGluZzogMS4yLFxyXG5cdGxlYWRpbmdUeXBlOiAwLFxyXG5cdGhhbmdpbmc6IGZhbHNlLFxyXG5cdGJ1cmFzYWdhcmk6IGZhbHNlLFxyXG5cdGtpbnNva3VPcmRlcjogMCxcclxuXHRldmVyeUxpbmVDb21wb3NlcjogZmFsc2UsXHJcbn07XHJcblxyXG5jb25zdCBkZWZhdWx0U3R5bGU6IFRleHRTdHlsZSA9IHtcclxuXHRmb250OiBkZWZhdWx0Rm9udCxcclxuXHRmb250U2l6ZTogMTIsXHJcblx0ZmF1eEJvbGQ6IGZhbHNlLFxyXG5cdGZhdXhJdGFsaWM6IGZhbHNlLFxyXG5cdGF1dG9MZWFkaW5nOiB0cnVlLFxyXG5cdGxlYWRpbmc6IDAsXHJcblx0aG9yaXpvbnRhbFNjYWxlOiAxLFxyXG5cdHZlcnRpY2FsU2NhbGU6IDEsXHJcblx0dHJhY2tpbmc6IDAsXHJcblx0YXV0b0tlcm5pbmc6IHRydWUsXHJcblx0a2VybmluZzogMCxcclxuXHRiYXNlbGluZVNoaWZ0OiAwLFxyXG5cdGZvbnRDYXBzOiAwLFxyXG5cdGZvbnRCYXNlbGluZTogMCxcclxuXHR1bmRlcmxpbmU6IGZhbHNlLFxyXG5cdHN0cmlrZXRocm91Z2g6IGZhbHNlLFxyXG5cdGxpZ2F0dXJlczogdHJ1ZSxcclxuXHRkTGlnYXR1cmVzOiBmYWxzZSxcclxuXHRiYXNlbGluZURpcmVjdGlvbjogMixcclxuXHR0c3VtZTogMCxcclxuXHRzdHlsZVJ1bkFsaWdubWVudDogMixcclxuXHRsYW5ndWFnZTogMCxcclxuXHRub0JyZWFrOiBmYWxzZSxcclxuXHRmaWxsQ29sb3I6IHsgcjogMCwgZzogMCwgYjogMCB9LFxyXG5cdHN0cm9rZUNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDAgfSxcclxuXHRmaWxsRmxhZzogdHJ1ZSxcclxuXHRzdHJva2VGbGFnOiBmYWxzZSxcclxuXHRmaWxsRmlyc3Q6IHRydWUsXHJcblx0eVVuZGVybGluZTogMSxcclxuXHRvdXRsaW5lV2lkdGg6IDEsXHJcblx0Y2hhcmFjdGVyRGlyZWN0aW9uOiAwLFxyXG5cdGhpbmRpTnVtYmVyczogZmFsc2UsXHJcblx0a2FzaGlkYTogMSxcclxuXHRkaWFjcml0aWNQb3M6IDIsXHJcbn07XHJcblxyXG5jb25zdCBkZWZhdWx0R3JpZEluZm86IFRleHRHcmlkSW5mbyA9IHtcclxuXHRpc09uOiBmYWxzZSxcclxuXHRzaG93OiBmYWxzZSxcclxuXHRzaXplOiAxOCxcclxuXHRsZWFkaW5nOiAyMixcclxuXHRjb2xvcjogeyByOiAwLCBnOiAwLCBiOiAyNTUgfSxcclxuXHRsZWFkaW5nRmlsbENvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDI1NSB9LFxyXG5cdGFsaWduTGluZUhlaWdodFRvR3JpZEZsYWdzOiBmYWxzZSxcclxufTtcclxuXHJcbmNvbnN0IHBhcmFncmFwaFN0eWxlS2V5czogKGtleW9mIFBhcmFncmFwaFN0eWxlKVtdID0gW1xyXG5cdCdqdXN0aWZpY2F0aW9uJywgJ2ZpcnN0TGluZUluZGVudCcsICdzdGFydEluZGVudCcsICdlbmRJbmRlbnQnLCAnc3BhY2VCZWZvcmUnLCAnc3BhY2VBZnRlcicsXHJcblx0J2F1dG9IeXBoZW5hdGUnLCAnaHlwaGVuYXRlZFdvcmRTaXplJywgJ3ByZUh5cGhlbicsICdwb3N0SHlwaGVuJywgJ2NvbnNlY3V0aXZlSHlwaGVucycsXHJcblx0J3pvbmUnLCAnd29yZFNwYWNpbmcnLCAnbGV0dGVyU3BhY2luZycsICdnbHlwaFNwYWNpbmcnLCAnYXV0b0xlYWRpbmcnLCAnbGVhZGluZ1R5cGUnLFxyXG5cdCdoYW5naW5nJywgJ2J1cmFzYWdhcmknLCAna2luc29rdU9yZGVyJywgJ2V2ZXJ5TGluZUNvbXBvc2VyJyxcclxuXTtcclxuXHJcbmNvbnN0IHN0eWxlS2V5czogKGtleW9mIFRleHRTdHlsZSlbXSA9IFtcclxuXHQnZm9udCcsICdmb250U2l6ZScsICdmYXV4Qm9sZCcsICdmYXV4SXRhbGljJywgJ2F1dG9MZWFkaW5nJywgJ2xlYWRpbmcnLCAnaG9yaXpvbnRhbFNjYWxlJyxcclxuXHQndmVydGljYWxTY2FsZScsICd0cmFja2luZycsICdhdXRvS2VybmluZycsICdrZXJuaW5nJywgJ2Jhc2VsaW5lU2hpZnQnLCAnZm9udENhcHMnLCAnZm9udEJhc2VsaW5lJyxcclxuXHQndW5kZXJsaW5lJywgJ3N0cmlrZXRocm91Z2gnLCAnbGlnYXR1cmVzJywgJ2RMaWdhdHVyZXMnLCAnYmFzZWxpbmVEaXJlY3Rpb24nLCAndHN1bWUnLFxyXG5cdCdzdHlsZVJ1bkFsaWdubWVudCcsICdsYW5ndWFnZScsICdub0JyZWFrJywgJ2ZpbGxDb2xvcicsICdzdHJva2VDb2xvcicsICdmaWxsRmxhZycsXHJcblx0J3N0cm9rZUZsYWcnLCAnZmlsbEZpcnN0JywgJ3lVbmRlcmxpbmUnLCAnb3V0bGluZVdpZHRoJywgJ2NoYXJhY3RlckRpcmVjdGlvbicsICdoaW5kaU51bWJlcnMnLFxyXG5cdCdrYXNoaWRhJywgJ2RpYWNyaXRpY1BvcycsXHJcbl07XHJcblxyXG5jb25zdCBhbnRpYWxpYXM6IEFudGlBbGlhc1tdID0gWydub25lJywgJ2NyaXNwJywgJ3N0cm9uZycsICdzbW9vdGgnLCAnc2hhcnAnXTtcclxuY29uc3QganVzdGlmaWNhdGlvbjogSnVzdGlmaWNhdGlvbltdID0gWydsZWZ0JywgJ3JpZ2h0JywgJ2NlbnRlciddO1xyXG5cclxuZnVuY3Rpb24gdXBwZXJGaXJzdCh2YWx1ZTogc3RyaW5nKSB7XHJcblx0cmV0dXJuIHZhbHVlLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc3Vic3RyKDEpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkZWNvZGVDb2xvcihjb2xvcjogeyBUeXBlOiBudW1iZXI7IFZhbHVlczogbnVtYmVyW107IH0pOiBDb2xvciB7XHJcblx0Y29uc3QgYyA9IGNvbG9yLlZhbHVlcztcclxuXHJcblx0aWYgKGNvbG9yLlR5cGUgPT09IDApIHsgLy8gZ3JheXNjYWxlXHJcblx0XHRyZXR1cm4geyByOiBjWzFdICogMjU1LCBnOiBjWzFdICogMjU1LCBiOiBjWzFdICogMjU1IH07IC8vICwgY1swXSAqIDI1NV07XHJcblx0fSBlbHNlIHsgLy8gcmdiXHJcblx0XHRyZXR1cm4geyByOiBjWzFdICogMjU1LCBnOiBjWzJdICogMjU1LCBiOiBjWzNdICogMjU1LCBhOiBjWzBdIH07IC8vICwgY1swXSAqIDI1NV07XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVDb2xvcihjb2xvcjogQ29sb3IgfCB1bmRlZmluZWQpIHtcclxuXHRpZiAoY29sb3IgJiYgJ3InIGluIGNvbG9yKSB7XHJcblx0XHRyZXR1cm4gWydhJyBpbiBjb2xvciA/IGNvbG9yLmEgOiAxLCBjb2xvci5yIC8gMjU1LCBjb2xvci5nIC8gMjU1LCBjb2xvci5iIC8gMjU1XTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0cmV0dXJuIFswLCAwLCAwLCAwXTtcclxuXHR9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFycmF5c0VxdWFsKGE6IGFueVtdLCBiOiBhbnlbXSkge1xyXG5cdGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xyXG5cdGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XHJcblx0cmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9iamVjdHNFcXVhbChhOiBhbnksIGI6IGFueSkge1xyXG5cdGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xyXG5cdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGEpKSBpZiAoYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcclxuXHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhiKSkgaWYgKGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XHJcblx0cmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRPckFkZEZvbnQoZm9udHM6IEZvbnRbXSwgZm9udDogRm9udCkge1xyXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZm9udHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdGlmIChmb250c1tpXS5uYW1lID09PSBmb250Lm5hbWUpIHJldHVybiBpO1xyXG5cdH1cclxuXHJcblx0Zm9udHMucHVzaChmb250KTtcclxuXHRyZXR1cm4gZm9udHMubGVuZ3RoIC0gMTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVjb2RlT2JqZWN0KG9iajogYW55LCBrZXlzOiBzdHJpbmdbXSwgZm9udHM6IEZvbnRbXSkge1xyXG5cdGNvbnN0IHJlc3VsdDogYW55ID0ge307XHJcblxyXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdGNvbnN0IEtleSA9IHVwcGVyRmlyc3Qoa2V5KTtcclxuXHJcblx0XHRpZiAob2JqW0tleV0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcblxyXG5cdFx0aWYgKGtleSA9PT0gJ2p1c3RpZmljYXRpb24nKSB7XHJcblx0XHRcdHJlc3VsdFtrZXldID0ganVzdGlmaWNhdGlvbltvYmpbS2V5XV07XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ2ZvbnQnKSB7XHJcblx0XHRcdHJlc3VsdFtrZXldID0gZm9udHNbb2JqW0tleV1dO1xyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdmaWxsQ29sb3InIHx8IGtleSA9PT0gJ3N0cm9rZUNvbG9yJykge1xyXG5cdFx0XHRyZXN1bHRba2V5XSA9IGRlY29kZUNvbG9yKG9ialtLZXldKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc3VsdFtrZXldID0gb2JqW0tleV07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVPYmplY3Qob2JqOiBhbnksIGtleXM6IHN0cmluZ1tdLCBmb250czogRm9udFtdKSB7XHJcblx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHJcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG5cdFx0Y29uc3QgS2V5ID0gdXBwZXJGaXJzdChrZXkpO1xyXG5cclxuXHRcdGlmIChvYmpba2V5XSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuXHJcblx0XHRpZiAoa2V5ID09PSAnanVzdGlmaWNhdGlvbicpIHtcclxuXHRcdFx0cmVzdWx0W0tleV0gPSBqdXN0aWZpY2F0aW9uLmluZGV4T2Yob2JqW2tleV0gPz8gJ2xlZnQnKTtcclxuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnZm9udCcpIHtcclxuXHRcdFx0cmVzdWx0W0tleV0gPSBmaW5kT3JBZGRGb250KGZvbnRzLCBvYmpba2V5XSk7XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ2ZpbGxDb2xvcicgfHwga2V5ID09PSAnc3Ryb2tlQ29sb3InKSB7XHJcblx0XHRcdHJlc3VsdFtLZXldID0geyBUeXBlOiAxLCBWYWx1ZXM6IGVuY29kZUNvbG9yKG9ialtrZXldKSB9IGFzIFR5cGVWYWx1ZXM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXN1bHRbS2V5XSA9IG9ialtrZXldO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVjb2RlUGFyYWdyYXBoU3R5bGUob2JqOiBQYXJhZ3JhcGhQcm9wZXJ0aWVzLCBmb250czogRm9udFtdKTogUGFyYWdyYXBoU3R5bGUge1xyXG5cdHJldHVybiBkZWNvZGVPYmplY3Qob2JqLCBwYXJhZ3JhcGhTdHlsZUtleXMsIGZvbnRzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVjb2RlU3R5bGUob2JqOiBTdHlsZVNoZWV0RGF0YSwgZm9udHM6IEZvbnRbXSk6IFRleHRTdHlsZSB7XHJcblx0cmV0dXJuIGRlY29kZU9iamVjdChvYmosIHN0eWxlS2V5cywgZm9udHMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVQYXJhZ3JhcGhTdHlsZShvYmo6IFBhcmFncmFwaFN0eWxlLCBmb250czogRm9udFtdKTogUGFyYWdyYXBoUHJvcGVydGllcyB7XHJcblx0cmV0dXJuIGVuY29kZU9iamVjdChvYmosIHBhcmFncmFwaFN0eWxlS2V5cywgZm9udHMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVTdHlsZShvYmo6IFRleHRTdHlsZSwgZm9udHM6IEZvbnRbXSk6IFN0eWxlU2hlZXREYXRhIHtcclxuXHRyZXR1cm4gZW5jb2RlT2JqZWN0KG9iaiwgc3R5bGVLZXlzLCBmb250cyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZHVwbGljYXRlVmFsdWVzPFQ+KGJhc2U6IFQsIHJ1bnM6IHsgc3R5bGU6IFQ7IH1bXSwga2V5czogKGtleW9mIFQpW10pIHtcclxuXHRpZiAoIXJ1bnMubGVuZ3RoKSByZXR1cm47XHJcblxyXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdGNvbnN0IHZhbHVlID0gcnVuc1swXS5zdHlsZVtrZXldO1xyXG5cclxuXHRcdGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGxldCBpZGVudGljYWwgPSBmYWxzZTtcclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG5cdFx0XHRcdGlkZW50aWNhbCA9IHJ1bnMuZXZlcnkociA9PiBhcnJheXNFcXVhbChyLnN0eWxlW2tleV0gYXMgYW55LCB2YWx1ZSkpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuXHRcdFx0XHRpZGVudGljYWwgPSBydW5zLmV2ZXJ5KHIgPT4gb2JqZWN0c0VxdWFsKHIuc3R5bGVba2V5XSBhcyBhbnksIHZhbHVlKSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0aWRlbnRpY2FsID0gcnVucy5ldmVyeShyID0+IHIuc3R5bGVba2V5XSA9PT0gdmFsdWUpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoaWRlbnRpY2FsKSB7XHJcblx0XHRcdFx0YmFzZVtrZXldID0gdmFsdWUgYXMgYW55O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qgc3R5bGVWYWx1ZSA9IGJhc2Vba2V5XTtcclxuXHJcblx0XHRpZiAoc3R5bGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGZvciAoY29uc3QgciBvZiBydW5zKSB7XHJcblx0XHRcdFx0bGV0IHNhbWUgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcblx0XHRcdFx0XHRzYW1lID0gYXJyYXlzRXF1YWwoci5zdHlsZVtrZXldIGFzIGFueSwgdmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRcdFx0c2FtZSA9IG9iamVjdHNFcXVhbChyLnN0eWxlW2tleV0gYXMgYW55LCB2YWx1ZSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHNhbWUgPSByLnN0eWxlW2tleV0gPT09IHZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKHNhbWUpIGRlbGV0ZSByLnN0eWxlW2tleV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGlmIChydW5zLmV2ZXJ5KHggPT4gT2JqZWN0LmtleXMoeC5zdHlsZSkubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0cnVucy5sZW5ndGggPSAwO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUVuZ2luZURhdGEoZW5naW5lRGF0YTogRW5naW5lRGF0YSkge1xyXG5cdC8vIGNvbnNvbGUubG9nKCdlbmdpbmVEYXRhJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZW5naW5lRGF0YSwgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblx0Y29uc3QgZW5naW5lRGljdCA9IGVuZ2luZURhdGEuRW5naW5lRGljdDtcclxuXHRjb25zdCByZXNvdXJjZURpY3QgPSBlbmdpbmVEYXRhLlJlc291cmNlRGljdDtcclxuXHJcblx0Y29uc3QgZm9udHMgPSByZXNvdXJjZURpY3QuRm9udFNldC5tYXA8Rm9udD4oZiA9PiAoe1xyXG5cdFx0bmFtZTogZi5OYW1lLFxyXG5cdFx0c2NyaXB0OiBmLlNjcmlwdCxcclxuXHRcdHR5cGU6IGYuRm9udFR5cGUsXHJcblx0XHRzeW50aGV0aWM6IGYuU3ludGhldGljLFxyXG5cdH0pKTtcclxuXHJcblx0bGV0IHRleHQgPSBlbmdpbmVEaWN0LkVkaXRvci5UZXh0LnJlcGxhY2UoL1xcci9nLCAnXFxuJyk7XHJcblx0bGV0IHJlbW92ZWRDaGFyYWN0ZXJzID0gMDtcclxuXHJcblx0d2hpbGUgKC9cXG4kLy50ZXN0KHRleHQpKSB7XHJcblx0XHR0ZXh0ID0gdGV4dC5zdWJzdHIoMCwgdGV4dC5sZW5ndGggLSAxKTtcclxuXHRcdHJlbW92ZWRDaGFyYWN0ZXJzKys7XHJcblx0fVxyXG5cclxuXHRjb25zdCByZXN1bHQ6IExheWVyVGV4dERhdGEgPSB7XHJcblx0XHR0ZXh0LFxyXG5cdFx0YW50aUFsaWFzOiBhbnRpYWxpYXNbZW5naW5lRGljdC5BbnRpQWxpYXNdID8/ICdzbW9vdGgnLFxyXG5cdFx0dXNlRnJhY3Rpb25hbEdseXBoV2lkdGhzOiAhIWVuZ2luZURpY3QuVXNlRnJhY3Rpb25hbEdseXBoV2lkdGhzLFxyXG5cdFx0c3VwZXJzY3JpcHRTaXplOiByZXNvdXJjZURpY3QuU3VwZXJzY3JpcHRTaXplLFxyXG5cdFx0c3VwZXJzY3JpcHRQb3NpdGlvbjogcmVzb3VyY2VEaWN0LlN1cGVyc2NyaXB0UG9zaXRpb24sXHJcblx0XHRzdWJzY3JpcHRTaXplOiByZXNvdXJjZURpY3QuU3Vic2NyaXB0U2l6ZSxcclxuXHRcdHN1YnNjcmlwdFBvc2l0aW9uOiByZXNvdXJjZURpY3QuU3Vic2NyaXB0UG9zaXRpb24sXHJcblx0XHRzbWFsbENhcFNpemU6IHJlc291cmNlRGljdC5TbWFsbENhcFNpemUsXHJcblx0fTtcclxuXHJcblx0Ly8gc2hhcGVcclxuXHJcblx0Y29uc3QgcGhvdG9zaG9wID0gZW5naW5lRGljdC5SZW5kZXJlZD8uU2hhcGVzPy5DaGlsZHJlbj8uWzBdPy5Db29raWU/LlBob3Rvc2hvcDtcclxuXHJcblx0aWYgKHBob3Rvc2hvcCkge1xyXG5cdFx0cmVzdWx0LnNoYXBlVHlwZSA9IHBob3Rvc2hvcC5TaGFwZVR5cGUgPT09IDEgPyAnYm94JyA6ICdwb2ludCc7XHJcblx0XHRpZiAocGhvdG9zaG9wLlBvaW50QmFzZSkgcmVzdWx0LnBvaW50QmFzZSA9IHBob3Rvc2hvcC5Qb2ludEJhc2U7XHJcblx0XHRpZiAocGhvdG9zaG9wLkJveEJvdW5kcykgcmVzdWx0LmJveEJvdW5kcyA9IHBob3Rvc2hvcC5Cb3hCb3VuZHM7XHJcblx0fVxyXG5cclxuXHQvLyBwYXJhZ3JhcGggc3R5bGVcclxuXHJcblx0Ly8gY29uc3QgdGhlTm9ybWFsUGFyYWdyYXBoU2hlZXQgPSByZXNvdXJjZURpY3QuVGhlTm9ybWFsUGFyYWdyYXBoU2hlZXQ7XHJcblx0Ly8gY29uc3QgcGFyYWdyYXBoU2hlZXRTZXQgPSByZXNvdXJjZURpY3QuUGFyYWdyYXBoU2hlZXRTZXQ7XHJcblx0Ly8gY29uc3QgcGFyYWdyYXBoUHJvcGVydGllcyA9IHBhcmFncmFwaFNoZWV0U2V0W3RoZU5vcm1hbFBhcmFncmFwaFNoZWV0XS5Qcm9wZXJ0aWVzO1xyXG5cdGNvbnN0IHBhcmFncmFwaFJ1biA9IGVuZ2luZURhdGEuRW5naW5lRGljdC5QYXJhZ3JhcGhSdW47XHJcblxyXG5cdHJlc3VsdC5wYXJhZ3JhcGhTdHlsZSA9IHt9OyAvLyBkZWNvZGVQYXJhZ3JhcGhTdHlsZShwYXJhZ3JhcGhQcm9wZXJ0aWVzLCBmb250cyk7XHJcblx0cmVzdWx0LnBhcmFncmFwaFN0eWxlUnVucyA9IFtdO1xyXG5cclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFncmFwaFJ1bi5SdW5BcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0Y29uc3QgcnVuID0gcGFyYWdyYXBoUnVuLlJ1bkFycmF5W2ldO1xyXG5cdFx0Y29uc3QgbGVuZ3RoID0gcGFyYWdyYXBoUnVuLlJ1bkxlbmd0aEFycmF5W2ldO1xyXG5cdFx0Y29uc3Qgc3R5bGUgPSBkZWNvZGVQYXJhZ3JhcGhTdHlsZShydW4uUGFyYWdyYXBoU2hlZXQuUHJvcGVydGllcywgZm9udHMpO1xyXG5cdFx0Ly8gY29uc3QgYWRqdXN0bWVudHMgPSB7XHJcblx0XHQvLyAgIGF4aXM6IHJ1bi5BZGp1c3RtZW50cy5BeGlzLFxyXG5cdFx0Ly8gICB4eTogcnVuLkFkanVzdG1lbnRzLlhZLFxyXG5cdFx0Ly8gfTtcclxuXHRcdHJlc3VsdC5wYXJhZ3JhcGhTdHlsZVJ1bnMucHVzaCh7IGxlbmd0aCwgc3R5bGUvKiwgYWRqdXN0bWVudHMqLyB9KTtcclxuXHR9XHJcblxyXG5cdGZvciAobGV0IGNvdW50ZXIgPSByZW1vdmVkQ2hhcmFjdGVyczsgcmVzdWx0LnBhcmFncmFwaFN0eWxlUnVucy5sZW5ndGggJiYgY291bnRlciA+IDA7IGNvdW50ZXItLSkge1xyXG5cdFx0aWYgKC0tcmVzdWx0LnBhcmFncmFwaFN0eWxlUnVuc1tyZXN1bHQucGFyYWdyYXBoU3R5bGVSdW5zLmxlbmd0aCAtIDFdLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRyZXN1bHQucGFyYWdyYXBoU3R5bGVSdW5zLnBvcCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZGVkdXBsaWNhdGVWYWx1ZXMocmVzdWx0LnBhcmFncmFwaFN0eWxlLCByZXN1bHQucGFyYWdyYXBoU3R5bGVSdW5zLCBwYXJhZ3JhcGhTdHlsZUtleXMpO1xyXG5cclxuXHRpZiAoIXJlc3VsdC5wYXJhZ3JhcGhTdHlsZVJ1bnMubGVuZ3RoKSBkZWxldGUgcmVzdWx0LnBhcmFncmFwaFN0eWxlUnVucztcclxuXHJcblx0Ly8gc3R5bGVcclxuXHJcblx0Ly8gY29uc3QgdGhlTm9ybWFsU3R5bGVTaGVldCA9IHJlc291cmNlRGljdC5UaGVOb3JtYWxTdHlsZVNoZWV0O1xyXG5cdC8vIGNvbnN0IHN0eWxlU2hlZXRTZXQgPSByZXNvdXJjZURpY3QuU3R5bGVTaGVldFNldDtcclxuXHQvLyBjb25zdCBzdHlsZVNoZWV0RGF0YSA9IHN0eWxlU2hlZXRTZXRbdGhlTm9ybWFsU3R5bGVTaGVldF0uU3R5bGVTaGVldERhdGE7XHJcblx0Y29uc3Qgc3R5bGVSdW4gPSBlbmdpbmVEYXRhLkVuZ2luZURpY3QuU3R5bGVSdW47XHJcblxyXG5cdHJlc3VsdC5zdHlsZSA9IHt9OyAvLyBkZWNvZGVTdHlsZShzdHlsZVNoZWV0RGF0YSwgZm9udHMpO1xyXG5cdHJlc3VsdC5zdHlsZVJ1bnMgPSBbXTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZVJ1bi5SdW5BcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0Y29uc3QgbGVuZ3RoID0gc3R5bGVSdW4uUnVuTGVuZ3RoQXJyYXlbaV07XHJcblx0XHRjb25zdCBzdHlsZSA9IGRlY29kZVN0eWxlKHN0eWxlUnVuLlJ1bkFycmF5W2ldLlN0eWxlU2hlZXQuU3R5bGVTaGVldERhdGEsIGZvbnRzKTtcclxuXHRcdHJlc3VsdC5zdHlsZVJ1bnMucHVzaCh7IGxlbmd0aCwgc3R5bGUgfSk7XHJcblx0fVxyXG5cclxuXHRmb3IgKGxldCBjb3VudGVyID0gcmVtb3ZlZENoYXJhY3RlcnM7IHJlc3VsdC5zdHlsZVJ1bnMubGVuZ3RoICYmIGNvdW50ZXIgPiAwOyBjb3VudGVyLS0pIHtcclxuXHRcdGlmICgtLXJlc3VsdC5zdHlsZVJ1bnNbcmVzdWx0LnN0eWxlUnVucy5sZW5ndGggLSAxXS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0cmVzdWx0LnN0eWxlUnVucy5wb3AoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGRlZHVwbGljYXRlVmFsdWVzKHJlc3VsdC5zdHlsZSwgcmVzdWx0LnN0eWxlUnVucywgc3R5bGVLZXlzKTtcclxuXHJcblx0aWYgKCFyZXN1bHQuc3R5bGVSdW5zLmxlbmd0aCkgZGVsZXRlIHJlc3VsdC5zdHlsZVJ1bnM7XHJcblxyXG5cdHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVFbmdpbmVEYXRhKGRhdGE6IExheWVyVGV4dERhdGEpIHtcclxuXHRjb25zdCB0ZXh0ID0gYCR7KGRhdGEudGV4dCB8fCAnJykucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxyJyl9XFxyYDtcclxuXHJcblx0Y29uc3QgZm9udHM6IEZvbnRbXSA9IFtcclxuXHRcdHsgbmFtZTogJ0Fkb2JlSW52aXNGb250Jywgc2NyaXB0OiAwLCB0eXBlOiAwLCBzeW50aGV0aWM6IDAgfSxcclxuXHRdO1xyXG5cclxuXHRjb25zdCBkZWZGb250ID0gZGF0YS5zdHlsZT8uZm9udCB8fCBkYXRhLnN0eWxlUnVucz8uZmluZChzID0+IHMuc3R5bGUuZm9udCk/LnN0eWxlLmZvbnQgfHwgZGVmYXVsdEZvbnQ7XHJcblx0Y29uc3QgcGFyYWdyYXBoUnVuQXJyYXk6IFBhcmFncmFwaFJ1bltdID0gW107XHJcblx0Y29uc3QgcGFyYWdyYXBoUnVuTGVuZ3RoQXJyYXk6IG51bWJlcltdID0gW107XHJcblx0Y29uc3QgcGFyYWdyYXBoUnVucyA9IGRhdGEucGFyYWdyYXBoU3R5bGVSdW5zO1xyXG5cclxuXHRpZiAocGFyYWdyYXBoUnVucyAmJiBwYXJhZ3JhcGhSdW5zLmxlbmd0aCkge1xyXG5cdFx0bGV0IGxlZnRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcclxuXHJcblx0XHRmb3IgKGNvbnN0IHJ1biBvZiBwYXJhZ3JhcGhSdW5zKSB7XHJcblx0XHRcdGxldCBydW5MZW5ndGggPSBNYXRoLm1pbihydW4ubGVuZ3RoLCBsZWZ0TGVuZ3RoKTtcclxuXHRcdFx0bGVmdExlbmd0aCAtPSBydW5MZW5ndGg7XHJcblxyXG5cdFx0XHRpZiAoIXJ1bkxlbmd0aCkgY29udGludWU7IC8vIGlnbm9yZSAwIHNpemUgcnVuc1xyXG5cclxuXHRcdFx0Ly8gZXh0ZW5kIGxhc3QgcnVuIGlmIGl0J3Mgb25seSBmb3IgdHJhaWxpbmcgXFxyXHJcblx0XHRcdGlmIChsZWZ0TGVuZ3RoID09PSAxICYmIHJ1biA9PT0gcGFyYWdyYXBoUnVuc1twYXJhZ3JhcGhSdW5zLmxlbmd0aCAtIDFdKSB7XHJcblx0XHRcdFx0cnVuTGVuZ3RoKys7XHJcblx0XHRcdFx0bGVmdExlbmd0aC0tO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRwYXJhZ3JhcGhSdW5MZW5ndGhBcnJheS5wdXNoKHJ1bkxlbmd0aCk7XHJcblx0XHRcdHBhcmFncmFwaFJ1bkFycmF5LnB1c2goe1xyXG5cdFx0XHRcdFBhcmFncmFwaFNoZWV0OiB7XHJcblx0XHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRcdFByb3BlcnRpZXM6IGVuY29kZVBhcmFncmFwaFN0eWxlKHsgLi4uZGVmYXVsdFBhcmFncmFwaFN0eWxlLCAuLi5kYXRhLnBhcmFncmFwaFN0eWxlLCAuLi5ydW4uc3R5bGUgfSwgZm9udHMpLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0QWRqdXN0bWVudHM6IHsgQXhpczogWzEsIDAsIDFdLCBYWTogWzAsIDBdIH0sXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChsZWZ0TGVuZ3RoKSB7XHJcblx0XHRcdHBhcmFncmFwaFJ1bkxlbmd0aEFycmF5LnB1c2gobGVmdExlbmd0aCk7XHJcblx0XHRcdHBhcmFncmFwaFJ1bkFycmF5LnB1c2goe1xyXG5cdFx0XHRcdFBhcmFncmFwaFNoZWV0OiB7XHJcblx0XHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRcdFByb3BlcnRpZXM6IGVuY29kZVBhcmFncmFwaFN0eWxlKHsgLi4uZGVmYXVsdFBhcmFncmFwaFN0eWxlLCAuLi5kYXRhLnBhcmFncmFwaFN0eWxlIH0sIGZvbnRzKSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdEFkanVzdG1lbnRzOiB7IEF4aXM6IFsxLCAwLCAxXSwgWFk6IFswLCAwXSB9LFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9IGVsc2Uge1xyXG5cdFx0Zm9yIChsZXQgaSA9IDAsIGxhc3QgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRpZiAodGV4dC5jaGFyQ29kZUF0KGkpID09PSAxMykgeyAvLyBcXHJcclxuXHRcdFx0XHRwYXJhZ3JhcGhSdW5MZW5ndGhBcnJheS5wdXNoKGkgLSBsYXN0ICsgMSk7XHJcblx0XHRcdFx0cGFyYWdyYXBoUnVuQXJyYXkucHVzaCh7XHJcblx0XHRcdFx0XHRQYXJhZ3JhcGhTaGVldDoge1xyXG5cdFx0XHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRcdFx0UHJvcGVydGllczogZW5jb2RlUGFyYWdyYXBoU3R5bGUoeyAuLi5kZWZhdWx0UGFyYWdyYXBoU3R5bGUsIC4uLmRhdGEucGFyYWdyYXBoU3R5bGUgfSwgZm9udHMpLFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdEFkanVzdG1lbnRzOiB7IEF4aXM6IFsxLCAwLCAxXSwgWFk6IFswLCAwXSB9LFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGxhc3QgPSBpICsgMTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29uc3Qgc3R5bGVTaGVldERhdGEgPSBlbmNvZGVTdHlsZSh7IC4uLmRlZmF1bHRTdHlsZSwgZm9udDogZGVmRm9udCB9LCBmb250cyk7XHJcblx0Y29uc3Qgc3R5bGVSdW5zID0gZGF0YS5zdHlsZVJ1bnMgfHwgW3sgbGVuZ3RoOiB0ZXh0Lmxlbmd0aCwgc3R5bGU6IGRhdGEuc3R5bGUgfHwge30gfV07XHJcblx0Y29uc3Qgc3R5bGVSdW5BcnJheTogU3R5bGVSdW5bXSA9IFtdO1xyXG5cdGNvbnN0IHN0eWxlUnVuTGVuZ3RoQXJyYXk6IG51bWJlcltdID0gW107XHJcblxyXG5cdGxldCBsZWZ0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcblxyXG5cdGZvciAoY29uc3QgcnVuIG9mIHN0eWxlUnVucykge1xyXG5cdFx0bGV0IHJ1bkxlbmd0aCA9IE1hdGgubWluKHJ1bi5sZW5ndGgsIGxlZnRMZW5ndGgpO1xyXG5cdFx0bGVmdExlbmd0aCAtPSBydW5MZW5ndGg7XHJcblxyXG5cdFx0aWYgKCFydW5MZW5ndGgpIGNvbnRpbnVlOyAvLyBpZ25vcmUgMCBzaXplIHJ1bnNcclxuXHJcblx0XHQvLyBleHRlbmQgbGFzdCBydW4gaWYgaXQncyBvbmx5IGZvciB0cmFpbGluZyBcXHJcclxuXHRcdGlmIChsZWZ0TGVuZ3RoID09PSAxICYmIHJ1biA9PT0gc3R5bGVSdW5zW3N0eWxlUnVucy5sZW5ndGggLSAxXSkge1xyXG5cdFx0XHRydW5MZW5ndGgrKztcclxuXHRcdFx0bGVmdExlbmd0aC0tO1xyXG5cdFx0fVxyXG5cclxuXHRcdHN0eWxlUnVuTGVuZ3RoQXJyYXkucHVzaChydW5MZW5ndGgpO1xyXG5cdFx0c3R5bGVSdW5BcnJheS5wdXNoKHtcclxuXHRcdFx0U3R5bGVTaGVldDoge1xyXG5cdFx0XHRcdFN0eWxlU2hlZXREYXRhOiBlbmNvZGVTdHlsZSh7XHJcblx0XHRcdFx0XHRrZXJuaW5nOiAwLFxyXG5cdFx0XHRcdFx0YXV0b0tlcm5pbmc6IHRydWUsXHJcblx0XHRcdFx0XHRmaWxsQ29sb3I6IHsgcjogMCwgZzogMCwgYjogMCB9LFxyXG5cdFx0XHRcdFx0Li4uZGF0YS5zdHlsZSxcclxuXHRcdFx0XHRcdC4uLnJ1bi5zdHlsZSxcclxuXHRcdFx0XHR9LCBmb250cyksXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIGFkZCBleHRyYSBydW4gdG8gdGhlIGVuZCBpZiBleGlzdGluZyBvbmVzIGRpZG4ndCBmaWxsIGl0IHVwXHJcblx0aWYgKGxlZnRMZW5ndGggJiYgc3R5bGVSdW5zLmxlbmd0aCkge1xyXG5cdFx0c3R5bGVSdW5MZW5ndGhBcnJheS5wdXNoKGxlZnRMZW5ndGgpO1xyXG5cdFx0c3R5bGVSdW5BcnJheS5wdXNoKHtcclxuXHRcdFx0U3R5bGVTaGVldDoge1xyXG5cdFx0XHRcdFN0eWxlU2hlZXREYXRhOiBlbmNvZGVTdHlsZSh7XHJcblx0XHRcdFx0XHRrZXJuaW5nOiAwLFxyXG5cdFx0XHRcdFx0YXV0b0tlcm5pbmc6IHRydWUsXHJcblx0XHRcdFx0XHRmaWxsQ29sb3I6IHsgcjogMCwgZzogMCwgYjogMCB9LFxyXG5cdFx0XHRcdFx0Li4uZGF0YS5zdHlsZSxcclxuXHRcdFx0XHR9LCBmb250cyksXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNvbnN0IGdyaWRJbmZvID0geyAuLi5kZWZhdWx0R3JpZEluZm8sIC4uLmRhdGEuZ3JpZEluZm8gfTtcclxuXHRjb25zdCBXcml0aW5nRGlyZWN0aW9uID0gZGF0YS5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IDIgOiAwO1xyXG5cdGNvbnN0IFByb2Nlc3Npb24gPSBkYXRhLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gMSA6IDA7XHJcblx0Y29uc3QgU2hhcGVUeXBlID0gZGF0YS5zaGFwZVR5cGUgPT09ICdib3gnID8gMSA6IDA7XHJcblx0Y29uc3QgUGhvdG9zaG9wOiBQaG90b3Nob3BOb2RlID0ge1xyXG5cdFx0U2hhcGVUeXBlLFxyXG5cdH07XHJcblxyXG5cdGlmIChTaGFwZVR5cGUgPT09IDApIHtcclxuXHRcdFBob3Rvc2hvcC5Qb2ludEJhc2UgPSBkYXRhLnBvaW50QmFzZSB8fCBbMCwgMF07XHJcblx0fSBlbHNlIHtcclxuXHRcdFBob3Rvc2hvcC5Cb3hCb3VuZHMgPSBkYXRhLmJveEJvdW5kcyB8fCBbMCwgMCwgMCwgMF07XHJcblx0fVxyXG5cclxuXHQvLyBuZWVkZWQgZm9yIGNvcnJlY3Qgb3JkZXIgb2YgcHJvcGVydGllc1xyXG5cdFBob3Rvc2hvcC5CYXNlID0ge1xyXG5cdFx0U2hhcGVUeXBlLFxyXG5cdFx0VHJhbnNmb3JtUG9pbnQwOiBbMSwgMF0sXHJcblx0XHRUcmFuc2Zvcm1Qb2ludDE6IFswLCAxXSxcclxuXHRcdFRyYW5zZm9ybVBvaW50MjogWzAsIDBdLFxyXG5cdH07XHJcblxyXG5cdGNvbnN0IGRlZmF1bHRSZXNvdXJjZXMgPSB7XHJcblx0XHRLaW5zb2t1U2V0OiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHROYW1lOiAnUGhvdG9zaG9wS2luc29rdUhhcmQnLFxyXG5cdFx0XHRcdE5vU3RhcnQ6ICfjgIHjgILvvIzvvI7jg7vvvJrvvJvvvJ/vvIHjg7zigJXigJnigJ3vvInjgJXvvL3vvZ3jgInjgIvjgI3jgI/jgJHjg73jg77jgp3jgp7jgIXjgYHjgYPjgYXjgYfjgYnjgaPjgoPjgoXjgofjgo7jgqHjgqPjgqXjgqfjgqnjg4Pjg6Pjg6Xjg6fjg67jg7Xjg7bjgpvjgpw/ISldfSwuOjvihIPihInCou+8heKAsCcsXHJcblx0XHRcdFx0Tm9FbmQ6ICfigJjigJzvvIjjgJTvvLvvvZvjgIjjgIrjgIzjgI7jgJAoW3vvv6XvvITCo++8oMKn44CS77yDJyxcclxuXHRcdFx0XHRLZWVwOiAn4oCV4oClJyxcclxuXHRcdFx0XHRIYW5naW5nOiAn44CB44CCLiwnLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0TmFtZTogJ1Bob3Rvc2hvcEtpbnNva3VTb2Z0JyxcclxuXHRcdFx0XHROb1N0YXJ0OiAn44CB44CC77yM77yO44O777ya77yb77yf77yB4oCZ4oCd77yJ44CV77y9772d44CJ44CL44CN44CP44CR44O944O+44Kd44Ke44CFJyxcclxuXHRcdFx0XHROb0VuZDogJ+KAmOKAnO+8iOOAlO+8u++9m+OAiOOAiuOAjOOAjuOAkCcsXHJcblx0XHRcdFx0S2VlcDogJ+KAleKApScsXHJcblx0XHRcdFx0SGFuZ2luZzogJ+OAgeOAgi4sJyxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0XHRNb2ppS3VtaVNldDogW1xyXG5cdFx0XHR7IEludGVybmFsTmFtZTogJ1Bob3Rvc2hvcDZNb2ppS3VtaVNldDEnIH0sXHJcblx0XHRcdHsgSW50ZXJuYWxOYW1lOiAnUGhvdG9zaG9wNk1vamlLdW1pU2V0MicgfSxcclxuXHRcdFx0eyBJbnRlcm5hbE5hbWU6ICdQaG90b3Nob3A2TW9qaUt1bWlTZXQzJyB9LFxyXG5cdFx0XHR7IEludGVybmFsTmFtZTogJ1Bob3Rvc2hvcDZNb2ppS3VtaVNldDQnIH0sXHJcblx0XHRdLFxyXG5cdFx0VGhlTm9ybWFsU3R5bGVTaGVldDogMCxcclxuXHRcdFRoZU5vcm1hbFBhcmFncmFwaFNoZWV0OiAwLFxyXG5cdFx0UGFyYWdyYXBoU2hlZXRTZXQ6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdE5hbWU6ICdOb3JtYWwgUkdCJyxcclxuXHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRQcm9wZXJ0aWVzOiBlbmNvZGVQYXJhZ3JhcGhTdHlsZSh7IC4uLmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSwgLi4uZGF0YS5wYXJhZ3JhcGhTdHlsZSB9LCBmb250cyksXHJcblx0XHRcdH0sXHJcblx0XHRdLFxyXG5cdFx0U3R5bGVTaGVldFNldDogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0TmFtZTogJ05vcm1hbCBSR0InLFxyXG5cdFx0XHRcdFN0eWxlU2hlZXREYXRhOiBzdHlsZVNoZWV0RGF0YSxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0XHRGb250U2V0OiBmb250cy5tYXA8Rm9udFNldD4oZiA9PiAoe1xyXG5cdFx0XHROYW1lOiBmLm5hbWUsXHJcblx0XHRcdFNjcmlwdDogZi5zY3JpcHQgfHwgMCxcclxuXHRcdFx0Rm9udFR5cGU6IGYudHlwZSB8fCAwLFxyXG5cdFx0XHRTeW50aGV0aWM6IGYuc3ludGhldGljIHx8IDAsXHJcblx0XHR9KSksXHJcblx0XHRTdXBlcnNjcmlwdFNpemU6IGRhdGEuc3VwZXJzY3JpcHRTaXplID8/IDAuNTgzLFxyXG5cdFx0U3VwZXJzY3JpcHRQb3NpdGlvbjogZGF0YS5zdXBlcnNjcmlwdFBvc2l0aW9uID8/IDAuMzMzLFxyXG5cdFx0U3Vic2NyaXB0U2l6ZTogZGF0YS5zdWJzY3JpcHRTaXplID8/IDAuNTgzLFxyXG5cdFx0U3Vic2NyaXB0UG9zaXRpb246IGRhdGEuc3Vic2NyaXB0UG9zaXRpb24gPz8gMC4zMzMsXHJcblx0XHRTbWFsbENhcFNpemU6IGRhdGEuc21hbGxDYXBTaXplID8/IDAuNyxcclxuXHR9O1xyXG5cclxuXHRjb25zdCBlbmdpbmVEYXRhOiBFbmdpbmVEYXRhID0ge1xyXG5cdFx0RW5naW5lRGljdDoge1xyXG5cdFx0XHRFZGl0b3I6IHsgVGV4dDogdGV4dCB9LFxyXG5cdFx0XHRQYXJhZ3JhcGhSdW46IHtcclxuXHRcdFx0XHREZWZhdWx0UnVuRGF0YToge1xyXG5cdFx0XHRcdFx0UGFyYWdyYXBoU2hlZXQ6IHsgRGVmYXVsdFN0eWxlU2hlZXQ6IDAsIFByb3BlcnRpZXM6IHt9IH0sXHJcblx0XHRcdFx0XHRBZGp1c3RtZW50czogeyBBeGlzOiBbMSwgMCwgMV0sIFhZOiBbMCwgMF0gfSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdFJ1bkFycmF5OiBwYXJhZ3JhcGhSdW5BcnJheSxcclxuXHRcdFx0XHRSdW5MZW5ndGhBcnJheTogcGFyYWdyYXBoUnVuTGVuZ3RoQXJyYXksXHJcblx0XHRcdFx0SXNKb2luYWJsZTogMSxcclxuXHRcdFx0fSxcclxuXHRcdFx0U3R5bGVSdW46IHtcclxuXHRcdFx0XHREZWZhdWx0UnVuRGF0YTogeyBTdHlsZVNoZWV0OiB7IFN0eWxlU2hlZXREYXRhOiB7fSB9IH0sXHJcblx0XHRcdFx0UnVuQXJyYXk6IHN0eWxlUnVuQXJyYXksXHJcblx0XHRcdFx0UnVuTGVuZ3RoQXJyYXk6IHN0eWxlUnVuTGVuZ3RoQXJyYXksXHJcblx0XHRcdFx0SXNKb2luYWJsZTogMixcclxuXHRcdFx0fSxcclxuXHRcdFx0R3JpZEluZm86IHtcclxuXHRcdFx0XHRHcmlkSXNPbjogISFncmlkSW5mby5pc09uLFxyXG5cdFx0XHRcdFNob3dHcmlkOiAhIWdyaWRJbmZvLnNob3csXHJcblx0XHRcdFx0R3JpZFNpemU6IGdyaWRJbmZvLnNpemUgPz8gMTgsXHJcblx0XHRcdFx0R3JpZExlYWRpbmc6IGdyaWRJbmZvLmxlYWRpbmcgPz8gMjIsXHJcblx0XHRcdFx0R3JpZENvbG9yOiB7IFR5cGU6IDEsIFZhbHVlczogZW5jb2RlQ29sb3IoZ3JpZEluZm8uY29sb3IpIH0sXHJcblx0XHRcdFx0R3JpZExlYWRpbmdGaWxsQ29sb3I6IHsgVHlwZTogMSwgVmFsdWVzOiBlbmNvZGVDb2xvcihncmlkSW5mby5jb2xvcikgfSxcclxuXHRcdFx0XHRBbGlnbkxpbmVIZWlnaHRUb0dyaWRGbGFnczogISFncmlkSW5mby5hbGlnbkxpbmVIZWlnaHRUb0dyaWRGbGFncyxcclxuXHRcdFx0fSxcclxuXHRcdFx0QW50aUFsaWFzOiBhbnRpYWxpYXMuaW5kZXhPZihkYXRhLmFudGlBbGlhcyA/PyAnc2hhcnAnKSxcclxuXHRcdFx0VXNlRnJhY3Rpb25hbEdseXBoV2lkdGhzOiBkYXRhLnVzZUZyYWN0aW9uYWxHbHlwaFdpZHRocyA/PyB0cnVlLFxyXG5cdFx0XHRSZW5kZXJlZDoge1xyXG5cdFx0XHRcdFZlcnNpb246IDEsXHJcblx0XHRcdFx0U2hhcGVzOiB7XHJcblx0XHRcdFx0XHRXcml0aW5nRGlyZWN0aW9uLFxyXG5cdFx0XHRcdFx0Q2hpbGRyZW46IFtcclxuXHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFNoYXBlVHlwZSxcclxuXHRcdFx0XHRcdFx0XHRQcm9jZXNzaW9uLFxyXG5cdFx0XHRcdFx0XHRcdExpbmVzOiB7IFdyaXRpbmdEaXJlY3Rpb24sIENoaWxkcmVuOiBbXSB9LFxyXG5cdFx0XHRcdFx0XHRcdENvb2tpZTogeyBQaG90b3Nob3AgfSxcclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRSZXNvdXJjZURpY3Q6IHsgLi4uZGVmYXVsdFJlc291cmNlcyB9LFxyXG5cdFx0RG9jdW1lbnRSZXNvdXJjZXM6IHsgLi4uZGVmYXVsdFJlc291cmNlcyB9LFxyXG5cdH07XHJcblxyXG5cdC8vIGNvbnNvbGUubG9nKCdlbmNvZGVFbmdpbmVEYXRhJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZW5naW5lRGF0YSwgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblx0cmV0dXJuIGVuZ2luZURhdGE7XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiJEOlxcUHJvamVjdHNcXGdpdGh1YlxcYWctcHNkXFxzcmMifQ==
553
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzNELG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEUsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQywwQkFBMEI7YUFDakU7WUFDRCxTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxTQUFTLG1DQUFJLE9BQU8sQ0FBQztZQUN2RCx3QkFBd0IsRUFBRSxNQUFBLElBQUksQ0FBQyx3QkFBd0IsbUNBQUksSUFBSTtZQUMvRCxRQUFRLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxFQUFFO29CQUNQLGdCQUFnQixrQkFBQTtvQkFDaEIsUUFBUSxFQUFFO3dCQUNUOzRCQUNDLFNBQVMsV0FBQTs0QkFDVCxVQUFVLFlBQUE7NEJBQ1YsS0FBSyxFQUFFLEVBQUUsZ0JBQWdCLGtCQUFBLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs0QkFDekMsTUFBTSxFQUFFLEVBQUUsU0FBUyxXQUFBLEVBQUU7eUJBQ3JCO3FCQUNEO2lCQUNEO2FBQ0Q7U0FDRDtRQUNELFlBQVksZUFBTyxnQkFBZ0IsQ0FBRTtRQUNyQyxpQkFBaUIsZUFBTyxnQkFBZ0IsQ0FBRTtLQUMxQyxDQUFDO0lBRUYseUZBQXlGO0lBQ3pGLE9BQU8sVUFBVSxDQUFDO0FBQ25CLENBQUMiLCJmaWxlIjoidGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRleHRTdHlsZSwgTGF5ZXJUZXh0RGF0YSwgUGFyYWdyYXBoU3R5bGUsIEZvbnQsIEFudGlBbGlhcywgVGV4dEdyaWRJbmZvLCBKdXN0aWZpY2F0aW9uLCBDb2xvciB9IGZyb20gJy4vcHNkJztcclxuXHJcbmludGVyZmFjZSBBZGp1c3RtZW50cyB7XHJcblx0QXhpczogbnVtYmVyW107XHJcblx0WFk6IG51bWJlcltdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVHlwZVZhbHVlcyB7XHJcblx0VHlwZTogbnVtYmVyO1xyXG5cdFZhbHVlczogbnVtYmVyW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBQYXJhZ3JhcGhQcm9wZXJ0aWVzIHtcclxuXHRKdXN0aWZpY2F0aW9uPzogbnVtYmVyO1xyXG5cdEZpcnN0TGluZUluZGVudD86IG51bWJlcjtcclxuXHRTdGFydEluZGVudD86IG51bWJlcjtcclxuXHRFbmRJbmRlbnQ/OiBudW1iZXI7XHJcblx0U3BhY2VCZWZvcmU/OiBudW1iZXI7XHJcblx0U3BhY2VBZnRlcj86IG51bWJlcjtcclxuXHRBdXRvSHlwaGVuYXRlPzogYm9vbGVhbjtcclxuXHRIeXBoZW5hdGVkV29yZFNpemU/OiBudW1iZXI7XHJcblx0UHJlSHlwaGVuPzogbnVtYmVyO1xyXG5cdFBvc3RIeXBoZW4/OiBudW1iZXI7XHJcblx0Q29uc2VjdXRpdmVIeXBoZW5zPzogbnVtYmVyO1xyXG5cdFpvbmU/OiBudW1iZXI7XHJcblx0V29yZFNwYWNpbmc/OiBudW1iZXJbXTtcclxuXHRMZXR0ZXJTcGFjaW5nPzogbnVtYmVyW107XHJcblx0R2x5cGhTcGFjaW5nPzogbnVtYmVyW107XHJcblx0QXV0b0xlYWRpbmc/OiBudW1iZXI7XHJcblx0TGVhZGluZ1R5cGU/OiBudW1iZXI7XHJcblx0SGFuZ2luZz86IGJvb2xlYW47XHJcblx0QnVyYXNhZ2FyaT86IGJvb2xlYW47XHJcblx0S2luc29rdU9yZGVyPzogbnVtYmVyO1xyXG5cdEV2ZXJ5TGluZUNvbXBvc2VyPzogYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhcmFncmFwaFNoZWV0IHtcclxuXHROYW1lPzogc3RyaW5nO1xyXG5cdERlZmF1bHRTdHlsZVNoZWV0OiBudW1iZXI7XHJcblx0UHJvcGVydGllczogUGFyYWdyYXBoUHJvcGVydGllcztcclxufVxyXG5cclxuaW50ZXJmYWNlIFN0eWxlU2hlZXREYXRhIHtcclxuXHRGb250PzogbnVtYmVyO1xyXG5cdEZvbnRTaXplPzogbnVtYmVyO1xyXG5cdEZhdXhCb2xkPzogYm9vbGVhbjtcclxuXHRGYXV4SXRhbGljPzogYm9vbGVhbjtcclxuXHRBdXRvTGVhZGluZz86IGJvb2xlYW47XHJcblx0TGVhZGluZz86IG51bWJlcjtcclxuXHRIb3Jpem9udGFsU2NhbGU/OiBudW1iZXI7XHJcblx0VmVydGljYWxTY2FsZT86IG51bWJlcjtcclxuXHRUcmFja2luZz86IG51bWJlcjtcclxuXHRBdXRvS2VybmluZz86IGJvb2xlYW47XHJcblx0S2VybmluZz86IG51bWJlcjtcclxuXHRCYXNlbGluZVNoaWZ0PzogbnVtYmVyO1xyXG5cdEZvbnRDYXBzPzogbnVtYmVyO1xyXG5cdEZvbnRCYXNlbGluZT86IG51bWJlcjtcclxuXHRVbmRlcmxpbmU/OiBib29sZWFuO1xyXG5cdFN0cmlrZXRocm91Z2g/OiBib29sZWFuO1xyXG5cdExpZ2F0dXJlcz86IGJvb2xlYW47XHJcblx0RExpZ2F0dXJlcz86IGJvb2xlYW47XHJcblx0QmFzZWxpbmVEaXJlY3Rpb24/OiBudW1iZXI7XHJcblx0VHN1bWU/OiBudW1iZXI7XHJcblx0U3R5bGVSdW5BbGlnbm1lbnQ/OiBudW1iZXI7XHJcblx0TGFuZ3VhZ2U/OiBudW1iZXI7XHJcblx0Tm9CcmVhaz86IGJvb2xlYW47XHJcblx0RmlsbENvbG9yPzogVHlwZVZhbHVlcztcclxuXHRTdHJva2VDb2xvcj86IFR5cGVWYWx1ZXM7XHJcblx0RmlsbEZsYWc/OiBib29sZWFuO1xyXG5cdFN0cm9rZUZsYWc/OiBib29sZWFuO1xyXG5cdEZpbGxGaXJzdD86IGJvb2xlYW47XHJcblx0WVVuZGVybGluZT86IG51bWJlcjtcclxuXHRPdXRsaW5lV2lkdGg/OiBudW1iZXI7XHJcblx0Q2hhcmFjdGVyRGlyZWN0aW9uPzogbnVtYmVyO1xyXG5cdEhpbmRpTnVtYmVycz86IGJvb2xlYW47XHJcblx0S2FzaGlkYT86IG51bWJlcjtcclxuXHREaWFjcml0aWNQb3M/OiBudW1iZXI7XHJcbn1cclxuXHJcbmludGVyZmFjZSBGb250U2V0IHtcclxuXHROYW1lOiBzdHJpbmc7XHJcblx0U2NyaXB0OiBudW1iZXI7XHJcblx0Rm9udFR5cGU6IG51bWJlcjtcclxuXHRTeW50aGV0aWM6IG51bWJlcjtcclxufVxyXG5cclxuaW50ZXJmYWNlIFJlc291cmNlRGljdCB7XHJcblx0S2luc29rdVNldDogYW55W107XHJcblx0TW9qaUt1bWlTZXQ6IGFueVtdO1xyXG5cdFRoZU5vcm1hbFN0eWxlU2hlZXQ6IG51bWJlcjtcclxuXHRUaGVOb3JtYWxQYXJhZ3JhcGhTaGVldDogbnVtYmVyO1xyXG5cdFBhcmFncmFwaFNoZWV0U2V0OiBQYXJhZ3JhcGhTaGVldFtdO1xyXG5cdFN0eWxlU2hlZXRTZXQ6IHsgTmFtZTogc3RyaW5nOyBTdHlsZVNoZWV0RGF0YTogU3R5bGVTaGVldERhdGE7IH1bXTtcclxuXHRGb250U2V0OiBGb250U2V0W107XHJcblx0U3VwZXJzY3JpcHRTaXplOiBudW1iZXI7XHJcblx0U3VwZXJzY3JpcHRQb3NpdGlvbjogbnVtYmVyO1xyXG5cdFN1YnNjcmlwdFNpemU6IG51bWJlcjtcclxuXHRTdWJzY3JpcHRQb3NpdGlvbjogbnVtYmVyO1xyXG5cdFNtYWxsQ2FwU2l6ZTogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUGFyYWdyYXBoUnVuIHtcclxuXHRQYXJhZ3JhcGhTaGVldDogUGFyYWdyYXBoU2hlZXQ7XHJcblx0QWRqdXN0bWVudHM6IEFkanVzdG1lbnRzO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3R5bGVSdW4ge1xyXG5cdFN0eWxlU2hlZXQ6IHsgU3R5bGVTaGVldERhdGE6IFN0eWxlU2hlZXREYXRhOyB9O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUGhvdG9zaG9wTm9kZSB7XHJcblx0U2hhcGVUeXBlPzogbnVtYmVyO1xyXG5cdFBvaW50QmFzZT86IG51bWJlcltdO1xyXG5cdEJveEJvdW5kcz86IG51bWJlcltdO1xyXG5cdEJhc2U/OiB7XHJcblx0XHRTaGFwZVR5cGU6IG51bWJlcjtcclxuXHRcdFRyYW5zZm9ybVBvaW50MDogbnVtYmVyW107XHJcblx0XHRUcmFuc2Zvcm1Qb2ludDE6IG51bWJlcltdO1xyXG5cdFx0VHJhbnNmb3JtUG9pbnQyOiBudW1iZXJbXTtcclxuXHR9O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRW5naW5lRGF0YSB7XHJcblx0RW5naW5lRGljdDoge1xyXG5cdFx0RWRpdG9yOiB7IFRleHQ6IHN0cmluZzsgfTtcclxuXHRcdFBhcmFncmFwaFJ1bjoge1xyXG5cdFx0XHREZWZhdWx0UnVuRGF0YTogUGFyYWdyYXBoUnVuO1xyXG5cdFx0XHRSdW5BcnJheTogUGFyYWdyYXBoUnVuW107XHJcblx0XHRcdFJ1bkxlbmd0aEFycmF5OiBudW1iZXJbXTtcclxuXHRcdFx0SXNKb2luYWJsZTogbnVtYmVyO1xyXG5cdFx0fTtcclxuXHRcdFN0eWxlUnVuOiB7XHJcblx0XHRcdERlZmF1bHRSdW5EYXRhOiBTdHlsZVJ1bjtcclxuXHRcdFx0UnVuQXJyYXk6IFN0eWxlUnVuW107XHJcblx0XHRcdFJ1bkxlbmd0aEFycmF5OiBudW1iZXJbXTtcclxuXHRcdFx0SXNKb2luYWJsZTogbnVtYmVyO1xyXG5cdFx0fTtcclxuXHRcdEdyaWRJbmZvOiB7XHJcblx0XHRcdEdyaWRJc09uOiBib29sZWFuO1xyXG5cdFx0XHRTaG93R3JpZDogYm9vbGVhbjtcclxuXHRcdFx0R3JpZFNpemU6IG51bWJlcjtcclxuXHRcdFx0R3JpZExlYWRpbmc6IG51bWJlcjtcclxuXHRcdFx0R3JpZENvbG9yOiBUeXBlVmFsdWVzO1xyXG5cdFx0XHRHcmlkTGVhZGluZ0ZpbGxDb2xvcjogVHlwZVZhbHVlcztcclxuXHRcdFx0QWxpZ25MaW5lSGVpZ2h0VG9HcmlkRmxhZ3M6IGJvb2xlYW47XHJcblx0XHR9O1xyXG5cdFx0QW50aUFsaWFzOiBudW1iZXI7XHJcblx0XHRVc2VGcmFjdGlvbmFsR2x5cGhXaWR0aHM6IGJvb2xlYW47XHJcblx0XHRSZW5kZXJlZD86IHtcclxuXHRcdFx0VmVyc2lvbjogbnVtYmVyO1xyXG5cdFx0XHRTaGFwZXM/OiB7XHJcblx0XHRcdFx0V3JpdGluZ0RpcmVjdGlvbjogbnVtYmVyO1xyXG5cdFx0XHRcdENoaWxkcmVuPzoge1xyXG5cdFx0XHRcdFx0U2hhcGVUeXBlPzogbnVtYmVyO1xyXG5cdFx0XHRcdFx0UHJvY2Vzc2lvbjogbnVtYmVyO1xyXG5cdFx0XHRcdFx0TGluZXM6IHsgV3JpdGluZ0RpcmVjdGlvbjogbnVtYmVyOyBDaGlsZHJlbjogYW55W107IH07XHJcblx0XHRcdFx0XHRDb29raWU/OiB7XHJcblx0XHRcdFx0XHRcdFBob3Rvc2hvcD86IFBob3Rvc2hvcE5vZGU7XHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdH1bXTtcclxuXHRcdFx0fTtcclxuXHRcdH07XHJcblx0fTtcclxuXHRSZXNvdXJjZURpY3Q6IFJlc291cmNlRGljdDtcclxuXHREb2N1bWVudFJlc291cmNlczogUmVzb3VyY2VEaWN0O1xyXG59XHJcblxyXG5jb25zdCBkZWZhdWx0Rm9udDogRm9udCA9IHtcclxuXHRuYW1lOiAnTXlyaWFkUHJvLVJlZ3VsYXInLFxyXG5cdHNjcmlwdDogMCxcclxuXHR0eXBlOiAwLFxyXG5cdHN5bnRoZXRpYzogMCxcclxufTtcclxuXHJcbmNvbnN0IGRlZmF1bHRQYXJhZ3JhcGhTdHlsZTogUGFyYWdyYXBoU3R5bGUgPSB7XHJcblx0anVzdGlmaWNhdGlvbjogJ2xlZnQnLFxyXG5cdGZpcnN0TGluZUluZGVudDogMCxcclxuXHRzdGFydEluZGVudDogMCxcclxuXHRlbmRJbmRlbnQ6IDAsXHJcblx0c3BhY2VCZWZvcmU6IDAsXHJcblx0c3BhY2VBZnRlcjogMCxcclxuXHRhdXRvSHlwaGVuYXRlOiB0cnVlLFxyXG5cdGh5cGhlbmF0ZWRXb3JkU2l6ZTogNixcclxuXHRwcmVIeXBoZW46IDIsXHJcblx0cG9zdEh5cGhlbjogMixcclxuXHRjb25zZWN1dGl2ZUh5cGhlbnM6IDgsXHJcblx0em9uZTogMzYsXHJcblx0d29yZFNwYWNpbmc6IFswLjgsIDEsIDEuMzNdLFxyXG5cdGxldHRlclNwYWNpbmc6IFswLCAwLCAwXSxcclxuXHRnbHlwaFNwYWNpbmc6IFsxLCAxLCAxXSxcclxuXHRhdXRvTGVhZGluZzogMS4yLFxyXG5cdGxlYWRpbmdUeXBlOiAwLFxyXG5cdGhhbmdpbmc6IGZhbHNlLFxyXG5cdGJ1cmFzYWdhcmk6IGZhbHNlLFxyXG5cdGtpbnNva3VPcmRlcjogMCxcclxuXHRldmVyeUxpbmVDb21wb3NlcjogZmFsc2UsXHJcbn07XHJcblxyXG5jb25zdCBkZWZhdWx0U3R5bGU6IFRleHRTdHlsZSA9IHtcclxuXHRmb250OiBkZWZhdWx0Rm9udCxcclxuXHRmb250U2l6ZTogMTIsXHJcblx0ZmF1eEJvbGQ6IGZhbHNlLFxyXG5cdGZhdXhJdGFsaWM6IGZhbHNlLFxyXG5cdGF1dG9MZWFkaW5nOiB0cnVlLFxyXG5cdGxlYWRpbmc6IDAsXHJcblx0aG9yaXpvbnRhbFNjYWxlOiAxLFxyXG5cdHZlcnRpY2FsU2NhbGU6IDEsXHJcblx0dHJhY2tpbmc6IDAsXHJcblx0YXV0b0tlcm5pbmc6IHRydWUsXHJcblx0a2VybmluZzogMCxcclxuXHRiYXNlbGluZVNoaWZ0OiAwLFxyXG5cdGZvbnRDYXBzOiAwLFxyXG5cdGZvbnRCYXNlbGluZTogMCxcclxuXHR1bmRlcmxpbmU6IGZhbHNlLFxyXG5cdHN0cmlrZXRocm91Z2g6IGZhbHNlLFxyXG5cdGxpZ2F0dXJlczogdHJ1ZSxcclxuXHRkTGlnYXR1cmVzOiBmYWxzZSxcclxuXHRiYXNlbGluZURpcmVjdGlvbjogMixcclxuXHR0c3VtZTogMCxcclxuXHRzdHlsZVJ1bkFsaWdubWVudDogMixcclxuXHRsYW5ndWFnZTogMCxcclxuXHRub0JyZWFrOiBmYWxzZSxcclxuXHRmaWxsQ29sb3I6IHsgcjogMCwgZzogMCwgYjogMCB9LFxyXG5cdHN0cm9rZUNvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDAgfSxcclxuXHRmaWxsRmxhZzogdHJ1ZSxcclxuXHRzdHJva2VGbGFnOiBmYWxzZSxcclxuXHRmaWxsRmlyc3Q6IHRydWUsXHJcblx0eVVuZGVybGluZTogMSxcclxuXHRvdXRsaW5lV2lkdGg6IDEsXHJcblx0Y2hhcmFjdGVyRGlyZWN0aW9uOiAwLFxyXG5cdGhpbmRpTnVtYmVyczogZmFsc2UsXHJcblx0a2FzaGlkYTogMSxcclxuXHRkaWFjcml0aWNQb3M6IDIsXHJcbn07XHJcblxyXG5jb25zdCBkZWZhdWx0R3JpZEluZm86IFRleHRHcmlkSW5mbyA9IHtcclxuXHRpc09uOiBmYWxzZSxcclxuXHRzaG93OiBmYWxzZSxcclxuXHRzaXplOiAxOCxcclxuXHRsZWFkaW5nOiAyMixcclxuXHRjb2xvcjogeyByOiAwLCBnOiAwLCBiOiAyNTUgfSxcclxuXHRsZWFkaW5nRmlsbENvbG9yOiB7IHI6IDAsIGc6IDAsIGI6IDI1NSB9LFxyXG5cdGFsaWduTGluZUhlaWdodFRvR3JpZEZsYWdzOiBmYWxzZSxcclxufTtcclxuXHJcbmNvbnN0IHBhcmFncmFwaFN0eWxlS2V5czogKGtleW9mIFBhcmFncmFwaFN0eWxlKVtdID0gW1xyXG5cdCdqdXN0aWZpY2F0aW9uJywgJ2ZpcnN0TGluZUluZGVudCcsICdzdGFydEluZGVudCcsICdlbmRJbmRlbnQnLCAnc3BhY2VCZWZvcmUnLCAnc3BhY2VBZnRlcicsXHJcblx0J2F1dG9IeXBoZW5hdGUnLCAnaHlwaGVuYXRlZFdvcmRTaXplJywgJ3ByZUh5cGhlbicsICdwb3N0SHlwaGVuJywgJ2NvbnNlY3V0aXZlSHlwaGVucycsXHJcblx0J3pvbmUnLCAnd29yZFNwYWNpbmcnLCAnbGV0dGVyU3BhY2luZycsICdnbHlwaFNwYWNpbmcnLCAnYXV0b0xlYWRpbmcnLCAnbGVhZGluZ1R5cGUnLFxyXG5cdCdoYW5naW5nJywgJ2J1cmFzYWdhcmknLCAna2luc29rdU9yZGVyJywgJ2V2ZXJ5TGluZUNvbXBvc2VyJyxcclxuXTtcclxuXHJcbmNvbnN0IHN0eWxlS2V5czogKGtleW9mIFRleHRTdHlsZSlbXSA9IFtcclxuXHQnZm9udCcsICdmb250U2l6ZScsICdmYXV4Qm9sZCcsICdmYXV4SXRhbGljJywgJ2F1dG9MZWFkaW5nJywgJ2xlYWRpbmcnLCAnaG9yaXpvbnRhbFNjYWxlJyxcclxuXHQndmVydGljYWxTY2FsZScsICd0cmFja2luZycsICdhdXRvS2VybmluZycsICdrZXJuaW5nJywgJ2Jhc2VsaW5lU2hpZnQnLCAnZm9udENhcHMnLCAnZm9udEJhc2VsaW5lJyxcclxuXHQndW5kZXJsaW5lJywgJ3N0cmlrZXRocm91Z2gnLCAnbGlnYXR1cmVzJywgJ2RMaWdhdHVyZXMnLCAnYmFzZWxpbmVEaXJlY3Rpb24nLCAndHN1bWUnLFxyXG5cdCdzdHlsZVJ1bkFsaWdubWVudCcsICdsYW5ndWFnZScsICdub0JyZWFrJywgJ2ZpbGxDb2xvcicsICdzdHJva2VDb2xvcicsICdmaWxsRmxhZycsXHJcblx0J3N0cm9rZUZsYWcnLCAnZmlsbEZpcnN0JywgJ3lVbmRlcmxpbmUnLCAnb3V0bGluZVdpZHRoJywgJ2NoYXJhY3RlckRpcmVjdGlvbicsICdoaW5kaU51bWJlcnMnLFxyXG5cdCdrYXNoaWRhJywgJ2RpYWNyaXRpY1BvcycsXHJcbl07XHJcblxyXG5jb25zdCBhbnRpYWxpYXM6IEFudGlBbGlhc1tdID0gWydub25lJywgJ2NyaXNwJywgJ3N0cm9uZycsICdzbW9vdGgnLCAnc2hhcnAnXTtcclxuY29uc3QganVzdGlmaWNhdGlvbjogSnVzdGlmaWNhdGlvbltdID0gWydsZWZ0JywgJ3JpZ2h0JywgJ2NlbnRlciddO1xyXG5cclxuZnVuY3Rpb24gdXBwZXJGaXJzdCh2YWx1ZTogc3RyaW5nKSB7XHJcblx0cmV0dXJuIHZhbHVlLnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc3Vic3RyKDEpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkZWNvZGVDb2xvcihjb2xvcjogeyBUeXBlOiBudW1iZXI7IFZhbHVlczogbnVtYmVyW107IH0pOiBDb2xvciB7XHJcblx0Y29uc3QgYyA9IGNvbG9yLlZhbHVlcztcclxuXHJcblx0aWYgKGNvbG9yLlR5cGUgPT09IDApIHsgLy8gZ3JheXNjYWxlXHJcblx0XHRyZXR1cm4geyByOiBjWzFdICogMjU1LCBnOiBjWzFdICogMjU1LCBiOiBjWzFdICogMjU1IH07IC8vICwgY1swXSAqIDI1NV07XHJcblx0fSBlbHNlIHsgLy8gcmdiXHJcblx0XHRyZXR1cm4geyByOiBjWzFdICogMjU1LCBnOiBjWzJdICogMjU1LCBiOiBjWzNdICogMjU1LCBhOiBjWzBdIH07IC8vICwgY1swXSAqIDI1NV07XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVDb2xvcihjb2xvcjogQ29sb3IgfCB1bmRlZmluZWQpIHtcclxuXHRpZiAoY29sb3IgJiYgJ3InIGluIGNvbG9yKSB7XHJcblx0XHRyZXR1cm4gWydhJyBpbiBjb2xvciA/IGNvbG9yLmEgOiAxLCBjb2xvci5yIC8gMjU1LCBjb2xvci5nIC8gMjU1LCBjb2xvci5iIC8gMjU1XTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0cmV0dXJuIFswLCAwLCAwLCAwXTtcclxuXHR9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFycmF5c0VxdWFsKGE6IGFueVtdLCBiOiBhbnlbXSkge1xyXG5cdGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xyXG5cdGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XHJcblx0cmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG9iamVjdHNFcXVhbChhOiBhbnksIGI6IGFueSkge1xyXG5cdGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xyXG5cdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGEpKSBpZiAoYVtrZXldICE9PSBiW2tleV0pIHJldHVybiBmYWxzZTtcclxuXHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhiKSkgaWYgKGFba2V5XSAhPT0gYltrZXldKSByZXR1cm4gZmFsc2U7XHJcblx0cmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRPckFkZEZvbnQoZm9udHM6IEZvbnRbXSwgZm9udDogRm9udCkge1xyXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgZm9udHMubGVuZ3RoOyBpKyspIHtcclxuXHRcdGlmIChmb250c1tpXS5uYW1lID09PSBmb250Lm5hbWUpIHJldHVybiBpO1xyXG5cdH1cclxuXHJcblx0Zm9udHMucHVzaChmb250KTtcclxuXHRyZXR1cm4gZm9udHMubGVuZ3RoIC0gMTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVjb2RlT2JqZWN0KG9iajogYW55LCBrZXlzOiBzdHJpbmdbXSwgZm9udHM6IEZvbnRbXSkge1xyXG5cdGNvbnN0IHJlc3VsdDogYW55ID0ge307XHJcblxyXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdGNvbnN0IEtleSA9IHVwcGVyRmlyc3Qoa2V5KTtcclxuXHJcblx0XHRpZiAob2JqW0tleV0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcblxyXG5cdFx0aWYgKGtleSA9PT0gJ2p1c3RpZmljYXRpb24nKSB7XHJcblx0XHRcdHJlc3VsdFtrZXldID0ganVzdGlmaWNhdGlvbltvYmpbS2V5XV07XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ2ZvbnQnKSB7XHJcblx0XHRcdHJlc3VsdFtrZXldID0gZm9udHNbb2JqW0tleV1dO1xyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdmaWxsQ29sb3InIHx8IGtleSA9PT0gJ3N0cm9rZUNvbG9yJykge1xyXG5cdFx0XHRyZXN1bHRba2V5XSA9IGRlY29kZUNvbG9yKG9ialtLZXldKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJlc3VsdFtrZXldID0gb2JqW0tleV07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVPYmplY3Qob2JqOiBhbnksIGtleXM6IHN0cmluZ1tdLCBmb250czogRm9udFtdKSB7XHJcblx0Y29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcclxuXHJcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xyXG5cdFx0Y29uc3QgS2V5ID0gdXBwZXJGaXJzdChrZXkpO1xyXG5cclxuXHRcdGlmIChvYmpba2V5XSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcclxuXHJcblx0XHRpZiAoa2V5ID09PSAnanVzdGlmaWNhdGlvbicpIHtcclxuXHRcdFx0cmVzdWx0W0tleV0gPSBqdXN0aWZpY2F0aW9uLmluZGV4T2Yob2JqW2tleV0gPz8gJ2xlZnQnKTtcclxuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnZm9udCcpIHtcclxuXHRcdFx0cmVzdWx0W0tleV0gPSBmaW5kT3JBZGRGb250KGZvbnRzLCBvYmpba2V5XSk7XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ2ZpbGxDb2xvcicgfHwga2V5ID09PSAnc3Ryb2tlQ29sb3InKSB7XHJcblx0XHRcdHJlc3VsdFtLZXldID0geyBUeXBlOiAxLCBWYWx1ZXM6IGVuY29kZUNvbG9yKG9ialtrZXldKSB9IGFzIFR5cGVWYWx1ZXM7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXN1bHRbS2V5XSA9IG9ialtrZXldO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVjb2RlUGFyYWdyYXBoU3R5bGUob2JqOiBQYXJhZ3JhcGhQcm9wZXJ0aWVzLCBmb250czogRm9udFtdKTogUGFyYWdyYXBoU3R5bGUge1xyXG5cdHJldHVybiBkZWNvZGVPYmplY3Qob2JqLCBwYXJhZ3JhcGhTdHlsZUtleXMsIGZvbnRzKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVjb2RlU3R5bGUob2JqOiBTdHlsZVNoZWV0RGF0YSwgZm9udHM6IEZvbnRbXSk6IFRleHRTdHlsZSB7XHJcblx0cmV0dXJuIGRlY29kZU9iamVjdChvYmosIHN0eWxlS2V5cywgZm9udHMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVQYXJhZ3JhcGhTdHlsZShvYmo6IFBhcmFncmFwaFN0eWxlLCBmb250czogRm9udFtdKTogUGFyYWdyYXBoUHJvcGVydGllcyB7XHJcblx0cmV0dXJuIGVuY29kZU9iamVjdChvYmosIHBhcmFncmFwaFN0eWxlS2V5cywgZm9udHMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbmNvZGVTdHlsZShvYmo6IFRleHRTdHlsZSwgZm9udHM6IEZvbnRbXSk6IFN0eWxlU2hlZXREYXRhIHtcclxuXHRyZXR1cm4gZW5jb2RlT2JqZWN0KG9iaiwgc3R5bGVLZXlzLCBmb250cyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZHVwbGljYXRlVmFsdWVzPFQ+KGJhc2U6IFQsIHJ1bnM6IHsgc3R5bGU6IFQ7IH1bXSwga2V5czogKGtleW9mIFQpW10pIHtcclxuXHRpZiAoIXJ1bnMubGVuZ3RoKSByZXR1cm47XHJcblxyXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdGNvbnN0IHZhbHVlID0gcnVuc1swXS5zdHlsZVtrZXldO1xyXG5cclxuXHRcdGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGxldCBpZGVudGljYWwgPSBmYWxzZTtcclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG5cdFx0XHRcdGlkZW50aWNhbCA9IHJ1bnMuZXZlcnkociA9PiBhcnJheXNFcXVhbChyLnN0eWxlW2tleV0gYXMgYW55LCB2YWx1ZSkpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuXHRcdFx0XHRpZGVudGljYWwgPSBydW5zLmV2ZXJ5KHIgPT4gb2JqZWN0c0VxdWFsKHIuc3R5bGVba2V5XSBhcyBhbnksIHZhbHVlKSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0aWRlbnRpY2FsID0gcnVucy5ldmVyeShyID0+IHIuc3R5bGVba2V5XSA9PT0gdmFsdWUpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoaWRlbnRpY2FsKSB7XHJcblx0XHRcdFx0YmFzZVtrZXldID0gdmFsdWUgYXMgYW55O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3Qgc3R5bGVWYWx1ZSA9IGJhc2Vba2V5XTtcclxuXHJcblx0XHRpZiAoc3R5bGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdGZvciAoY29uc3QgciBvZiBydW5zKSB7XHJcblx0XHRcdFx0bGV0IHNhbWUgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcblx0XHRcdFx0XHRzYW1lID0gYXJyYXlzRXF1YWwoci5zdHlsZVtrZXldIGFzIGFueSwgdmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRcdFx0c2FtZSA9IG9iamVjdHNFcXVhbChyLnN0eWxlW2tleV0gYXMgYW55LCB2YWx1ZSk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHNhbWUgPSByLnN0eWxlW2tleV0gPT09IHZhbHVlO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKHNhbWUpIGRlbGV0ZSByLnN0eWxlW2tleV07XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGlmIChydW5zLmV2ZXJ5KHggPT4gT2JqZWN0LmtleXMoeC5zdHlsZSkubGVuZ3RoID09PSAwKSkge1xyXG5cdFx0cnVucy5sZW5ndGggPSAwO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUVuZ2luZURhdGEoZW5naW5lRGF0YTogRW5naW5lRGF0YSkge1xyXG5cdC8vIGNvbnNvbGUubG9nKCdlbmdpbmVEYXRhJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZW5naW5lRGF0YSwgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblx0Y29uc3QgZW5naW5lRGljdCA9IGVuZ2luZURhdGEuRW5naW5lRGljdDtcclxuXHRjb25zdCByZXNvdXJjZURpY3QgPSBlbmdpbmVEYXRhLlJlc291cmNlRGljdDtcclxuXHJcblx0Y29uc3QgZm9udHMgPSByZXNvdXJjZURpY3QuRm9udFNldC5tYXA8Rm9udD4oZiA9PiAoe1xyXG5cdFx0bmFtZTogZi5OYW1lLFxyXG5cdFx0c2NyaXB0OiBmLlNjcmlwdCxcclxuXHRcdHR5cGU6IGYuRm9udFR5cGUsXHJcblx0XHRzeW50aGV0aWM6IGYuU3ludGhldGljLFxyXG5cdH0pKTtcclxuXHJcblx0bGV0IHRleHQgPSBlbmdpbmVEaWN0LkVkaXRvci5UZXh0LnJlcGxhY2UoL1xcci9nLCAnXFxuJyk7XHJcblx0bGV0IHJlbW92ZWRDaGFyYWN0ZXJzID0gMDtcclxuXHJcblx0d2hpbGUgKC9cXG4kLy50ZXN0KHRleHQpKSB7XHJcblx0XHR0ZXh0ID0gdGV4dC5zdWJzdHIoMCwgdGV4dC5sZW5ndGggLSAxKTtcclxuXHRcdHJlbW92ZWRDaGFyYWN0ZXJzKys7XHJcblx0fVxyXG5cclxuXHRjb25zdCByZXN1bHQ6IExheWVyVGV4dERhdGEgPSB7XHJcblx0XHR0ZXh0LFxyXG5cdFx0YW50aUFsaWFzOiBhbnRpYWxpYXNbZW5naW5lRGljdC5BbnRpQWxpYXNdID8/ICdzbW9vdGgnLFxyXG5cdFx0dXNlRnJhY3Rpb25hbEdseXBoV2lkdGhzOiAhIWVuZ2luZURpY3QuVXNlRnJhY3Rpb25hbEdseXBoV2lkdGhzLFxyXG5cdFx0c3VwZXJzY3JpcHRTaXplOiByZXNvdXJjZURpY3QuU3VwZXJzY3JpcHRTaXplLFxyXG5cdFx0c3VwZXJzY3JpcHRQb3NpdGlvbjogcmVzb3VyY2VEaWN0LlN1cGVyc2NyaXB0UG9zaXRpb24sXHJcblx0XHRzdWJzY3JpcHRTaXplOiByZXNvdXJjZURpY3QuU3Vic2NyaXB0U2l6ZSxcclxuXHRcdHN1YnNjcmlwdFBvc2l0aW9uOiByZXNvdXJjZURpY3QuU3Vic2NyaXB0UG9zaXRpb24sXHJcblx0XHRzbWFsbENhcFNpemU6IHJlc291cmNlRGljdC5TbWFsbENhcFNpemUsXHJcblx0fTtcclxuXHJcblx0Ly8gc2hhcGVcclxuXHJcblx0Y29uc3QgcGhvdG9zaG9wID0gZW5naW5lRGljdC5SZW5kZXJlZD8uU2hhcGVzPy5DaGlsZHJlbj8uWzBdPy5Db29raWU/LlBob3Rvc2hvcDtcclxuXHJcblx0aWYgKHBob3Rvc2hvcCkge1xyXG5cdFx0cmVzdWx0LnNoYXBlVHlwZSA9IHBob3Rvc2hvcC5TaGFwZVR5cGUgPT09IDEgPyAnYm94JyA6ICdwb2ludCc7XHJcblx0XHRpZiAocGhvdG9zaG9wLlBvaW50QmFzZSkgcmVzdWx0LnBvaW50QmFzZSA9IHBob3Rvc2hvcC5Qb2ludEJhc2U7XHJcblx0XHRpZiAocGhvdG9zaG9wLkJveEJvdW5kcykgcmVzdWx0LmJveEJvdW5kcyA9IHBob3Rvc2hvcC5Cb3hCb3VuZHM7XHJcblx0fVxyXG5cclxuXHQvLyBwYXJhZ3JhcGggc3R5bGVcclxuXHJcblx0Ly8gY29uc3QgdGhlTm9ybWFsUGFyYWdyYXBoU2hlZXQgPSByZXNvdXJjZURpY3QuVGhlTm9ybWFsUGFyYWdyYXBoU2hlZXQ7XHJcblx0Ly8gY29uc3QgcGFyYWdyYXBoU2hlZXRTZXQgPSByZXNvdXJjZURpY3QuUGFyYWdyYXBoU2hlZXRTZXQ7XHJcblx0Ly8gY29uc3QgcGFyYWdyYXBoUHJvcGVydGllcyA9IHBhcmFncmFwaFNoZWV0U2V0W3RoZU5vcm1hbFBhcmFncmFwaFNoZWV0XS5Qcm9wZXJ0aWVzO1xyXG5cdGNvbnN0IHBhcmFncmFwaFJ1biA9IGVuZ2luZURhdGEuRW5naW5lRGljdC5QYXJhZ3JhcGhSdW47XHJcblxyXG5cdHJlc3VsdC5wYXJhZ3JhcGhTdHlsZSA9IHt9OyAvLyBkZWNvZGVQYXJhZ3JhcGhTdHlsZShwYXJhZ3JhcGhQcm9wZXJ0aWVzLCBmb250cyk7XHJcblx0cmVzdWx0LnBhcmFncmFwaFN0eWxlUnVucyA9IFtdO1xyXG5cclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFncmFwaFJ1bi5SdW5BcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0Y29uc3QgcnVuID0gcGFyYWdyYXBoUnVuLlJ1bkFycmF5W2ldO1xyXG5cdFx0Y29uc3QgbGVuZ3RoID0gcGFyYWdyYXBoUnVuLlJ1bkxlbmd0aEFycmF5W2ldO1xyXG5cdFx0Y29uc3Qgc3R5bGUgPSBkZWNvZGVQYXJhZ3JhcGhTdHlsZShydW4uUGFyYWdyYXBoU2hlZXQuUHJvcGVydGllcywgZm9udHMpO1xyXG5cdFx0Ly8gY29uc3QgYWRqdXN0bWVudHMgPSB7XHJcblx0XHQvLyAgIGF4aXM6IHJ1bi5BZGp1c3RtZW50cy5BeGlzLFxyXG5cdFx0Ly8gICB4eTogcnVuLkFkanVzdG1lbnRzLlhZLFxyXG5cdFx0Ly8gfTtcclxuXHRcdHJlc3VsdC5wYXJhZ3JhcGhTdHlsZVJ1bnMucHVzaCh7IGxlbmd0aCwgc3R5bGUvKiwgYWRqdXN0bWVudHMqLyB9KTtcclxuXHR9XHJcblxyXG5cdGZvciAobGV0IGNvdW50ZXIgPSByZW1vdmVkQ2hhcmFjdGVyczsgcmVzdWx0LnBhcmFncmFwaFN0eWxlUnVucy5sZW5ndGggJiYgY291bnRlciA+IDA7IGNvdW50ZXItLSkge1xyXG5cdFx0aWYgKC0tcmVzdWx0LnBhcmFncmFwaFN0eWxlUnVuc1tyZXN1bHQucGFyYWdyYXBoU3R5bGVSdW5zLmxlbmd0aCAtIDFdLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRyZXN1bHQucGFyYWdyYXBoU3R5bGVSdW5zLnBvcCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZGVkdXBsaWNhdGVWYWx1ZXMocmVzdWx0LnBhcmFncmFwaFN0eWxlLCByZXN1bHQucGFyYWdyYXBoU3R5bGVSdW5zLCBwYXJhZ3JhcGhTdHlsZUtleXMpO1xyXG5cclxuXHRpZiAoIXJlc3VsdC5wYXJhZ3JhcGhTdHlsZVJ1bnMubGVuZ3RoKSBkZWxldGUgcmVzdWx0LnBhcmFncmFwaFN0eWxlUnVucztcclxuXHJcblx0Ly8gc3R5bGVcclxuXHJcblx0Ly8gY29uc3QgdGhlTm9ybWFsU3R5bGVTaGVldCA9IHJlc291cmNlRGljdC5UaGVOb3JtYWxTdHlsZVNoZWV0O1xyXG5cdC8vIGNvbnN0IHN0eWxlU2hlZXRTZXQgPSByZXNvdXJjZURpY3QuU3R5bGVTaGVldFNldDtcclxuXHQvLyBjb25zdCBzdHlsZVNoZWV0RGF0YSA9IHN0eWxlU2hlZXRTZXRbdGhlTm9ybWFsU3R5bGVTaGVldF0uU3R5bGVTaGVldERhdGE7XHJcblx0Y29uc3Qgc3R5bGVSdW4gPSBlbmdpbmVEYXRhLkVuZ2luZURpY3QuU3R5bGVSdW47XHJcblxyXG5cdHJlc3VsdC5zdHlsZSA9IHt9OyAvLyBkZWNvZGVTdHlsZShzdHlsZVNoZWV0RGF0YSwgZm9udHMpO1xyXG5cdHJlc3VsdC5zdHlsZVJ1bnMgPSBbXTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZVJ1bi5SdW5BcnJheS5sZW5ndGg7IGkrKykge1xyXG5cdFx0Y29uc3QgbGVuZ3RoID0gc3R5bGVSdW4uUnVuTGVuZ3RoQXJyYXlbaV07XHJcblx0XHRjb25zdCBzdHlsZSA9IGRlY29kZVN0eWxlKHN0eWxlUnVuLlJ1bkFycmF5W2ldLlN0eWxlU2hlZXQuU3R5bGVTaGVldERhdGEsIGZvbnRzKTtcclxuXHRcdHJlc3VsdC5zdHlsZVJ1bnMucHVzaCh7IGxlbmd0aCwgc3R5bGUgfSk7XHJcblx0fVxyXG5cclxuXHRmb3IgKGxldCBjb3VudGVyID0gcmVtb3ZlZENoYXJhY3RlcnM7IHJlc3VsdC5zdHlsZVJ1bnMubGVuZ3RoICYmIGNvdW50ZXIgPiAwOyBjb3VudGVyLS0pIHtcclxuXHRcdGlmICgtLXJlc3VsdC5zdHlsZVJ1bnNbcmVzdWx0LnN0eWxlUnVucy5sZW5ndGggLSAxXS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0cmVzdWx0LnN0eWxlUnVucy5wb3AoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGRlZHVwbGljYXRlVmFsdWVzKHJlc3VsdC5zdHlsZSwgcmVzdWx0LnN0eWxlUnVucywgc3R5bGVLZXlzKTtcclxuXHJcblx0aWYgKCFyZXN1bHQuc3R5bGVSdW5zLmxlbmd0aCkgZGVsZXRlIHJlc3VsdC5zdHlsZVJ1bnM7XHJcblxyXG5cdHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVFbmdpbmVEYXRhKGRhdGE6IExheWVyVGV4dERhdGEpIHtcclxuXHRjb25zdCB0ZXh0ID0gYCR7KGRhdGEudGV4dCB8fCAnJykucmVwbGFjZSgvXFxyP1xcbi9nLCAnXFxyJyl9XFxyYDtcclxuXHJcblx0Y29uc3QgZm9udHM6IEZvbnRbXSA9IFtcclxuXHRcdHsgbmFtZTogJ0Fkb2JlSW52aXNGb250Jywgc2NyaXB0OiAwLCB0eXBlOiAwLCBzeW50aGV0aWM6IDAgfSxcclxuXHRdO1xyXG5cclxuXHRjb25zdCBkZWZGb250ID0gZGF0YS5zdHlsZT8uZm9udCB8fCBkYXRhLnN0eWxlUnVucz8uZmluZChzID0+IHMuc3R5bGUuZm9udCk/LnN0eWxlLmZvbnQgfHwgZGVmYXVsdEZvbnQ7XHJcblx0Y29uc3QgcGFyYWdyYXBoUnVuQXJyYXk6IFBhcmFncmFwaFJ1bltdID0gW107XHJcblx0Y29uc3QgcGFyYWdyYXBoUnVuTGVuZ3RoQXJyYXk6IG51bWJlcltdID0gW107XHJcblx0Y29uc3QgcGFyYWdyYXBoUnVucyA9IGRhdGEucGFyYWdyYXBoU3R5bGVSdW5zO1xyXG5cclxuXHRpZiAocGFyYWdyYXBoUnVucyAmJiBwYXJhZ3JhcGhSdW5zLmxlbmd0aCkge1xyXG5cdFx0bGV0IGxlZnRMZW5ndGggPSB0ZXh0Lmxlbmd0aDtcclxuXHJcblx0XHRmb3IgKGNvbnN0IHJ1biBvZiBwYXJhZ3JhcGhSdW5zKSB7XHJcblx0XHRcdGxldCBydW5MZW5ndGggPSBNYXRoLm1pbihydW4ubGVuZ3RoLCBsZWZ0TGVuZ3RoKTtcclxuXHRcdFx0bGVmdExlbmd0aCAtPSBydW5MZW5ndGg7XHJcblxyXG5cdFx0XHRpZiAoIXJ1bkxlbmd0aCkgY29udGludWU7IC8vIGlnbm9yZSAwIHNpemUgcnVuc1xyXG5cclxuXHRcdFx0Ly8gZXh0ZW5kIGxhc3QgcnVuIGlmIGl0J3Mgb25seSBmb3IgdHJhaWxpbmcgXFxyXHJcblx0XHRcdGlmIChsZWZ0TGVuZ3RoID09PSAxICYmIHJ1biA9PT0gcGFyYWdyYXBoUnVuc1twYXJhZ3JhcGhSdW5zLmxlbmd0aCAtIDFdKSB7XHJcblx0XHRcdFx0cnVuTGVuZ3RoKys7XHJcblx0XHRcdFx0bGVmdExlbmd0aC0tO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRwYXJhZ3JhcGhSdW5MZW5ndGhBcnJheS5wdXNoKHJ1bkxlbmd0aCk7XHJcblx0XHRcdHBhcmFncmFwaFJ1bkFycmF5LnB1c2goe1xyXG5cdFx0XHRcdFBhcmFncmFwaFNoZWV0OiB7XHJcblx0XHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRcdFByb3BlcnRpZXM6IGVuY29kZVBhcmFncmFwaFN0eWxlKHsgLi4uZGVmYXVsdFBhcmFncmFwaFN0eWxlLCAuLi5kYXRhLnBhcmFncmFwaFN0eWxlLCAuLi5ydW4uc3R5bGUgfSwgZm9udHMpLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0QWRqdXN0bWVudHM6IHsgQXhpczogWzEsIDAsIDFdLCBYWTogWzAsIDBdIH0sXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChsZWZ0TGVuZ3RoKSB7XHJcblx0XHRcdHBhcmFncmFwaFJ1bkxlbmd0aEFycmF5LnB1c2gobGVmdExlbmd0aCk7XHJcblx0XHRcdHBhcmFncmFwaFJ1bkFycmF5LnB1c2goe1xyXG5cdFx0XHRcdFBhcmFncmFwaFNoZWV0OiB7XHJcblx0XHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRcdFByb3BlcnRpZXM6IGVuY29kZVBhcmFncmFwaFN0eWxlKHsgLi4uZGVmYXVsdFBhcmFncmFwaFN0eWxlLCAuLi5kYXRhLnBhcmFncmFwaFN0eWxlIH0sIGZvbnRzKSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdEFkanVzdG1lbnRzOiB7IEF4aXM6IFsxLCAwLCAxXSwgWFk6IFswLCAwXSB9LFxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9IGVsc2Uge1xyXG5cdFx0Zm9yIChsZXQgaSA9IDAsIGxhc3QgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRpZiAodGV4dC5jaGFyQ29kZUF0KGkpID09PSAxMykgeyAvLyBcXHJcclxuXHRcdFx0XHRwYXJhZ3JhcGhSdW5MZW5ndGhBcnJheS5wdXNoKGkgLSBsYXN0ICsgMSk7XHJcblx0XHRcdFx0cGFyYWdyYXBoUnVuQXJyYXkucHVzaCh7XHJcblx0XHRcdFx0XHRQYXJhZ3JhcGhTaGVldDoge1xyXG5cdFx0XHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRcdFx0UHJvcGVydGllczogZW5jb2RlUGFyYWdyYXBoU3R5bGUoeyAuLi5kZWZhdWx0UGFyYWdyYXBoU3R5bGUsIC4uLmRhdGEucGFyYWdyYXBoU3R5bGUgfSwgZm9udHMpLFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdEFkanVzdG1lbnRzOiB7IEF4aXM6IFsxLCAwLCAxXSwgWFk6IFswLCAwXSB9LFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGxhc3QgPSBpICsgMTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29uc3Qgc3R5bGVTaGVldERhdGEgPSBlbmNvZGVTdHlsZSh7IC4uLmRlZmF1bHRTdHlsZSwgZm9udDogZGVmRm9udCB9LCBmb250cyk7XHJcblx0Y29uc3Qgc3R5bGVSdW5zID0gZGF0YS5zdHlsZVJ1bnMgfHwgW3sgbGVuZ3RoOiB0ZXh0Lmxlbmd0aCwgc3R5bGU6IGRhdGEuc3R5bGUgfHwge30gfV07XHJcblx0Y29uc3Qgc3R5bGVSdW5BcnJheTogU3R5bGVSdW5bXSA9IFtdO1xyXG5cdGNvbnN0IHN0eWxlUnVuTGVuZ3RoQXJyYXk6IG51bWJlcltdID0gW107XHJcblxyXG5cdGxldCBsZWZ0TGVuZ3RoID0gdGV4dC5sZW5ndGg7XHJcblxyXG5cdGZvciAoY29uc3QgcnVuIG9mIHN0eWxlUnVucykge1xyXG5cdFx0bGV0IHJ1bkxlbmd0aCA9IE1hdGgubWluKHJ1bi5sZW5ndGgsIGxlZnRMZW5ndGgpO1xyXG5cdFx0bGVmdExlbmd0aCAtPSBydW5MZW5ndGg7XHJcblxyXG5cdFx0aWYgKCFydW5MZW5ndGgpIGNvbnRpbnVlOyAvLyBpZ25vcmUgMCBzaXplIHJ1bnNcclxuXHJcblx0XHQvLyBleHRlbmQgbGFzdCBydW4gaWYgaXQncyBvbmx5IGZvciB0cmFpbGluZyBcXHJcclxuXHRcdGlmIChsZWZ0TGVuZ3RoID09PSAxICYmIHJ1biA9PT0gc3R5bGVSdW5zW3N0eWxlUnVucy5sZW5ndGggLSAxXSkge1xyXG5cdFx0XHRydW5MZW5ndGgrKztcclxuXHRcdFx0bGVmdExlbmd0aC0tO1xyXG5cdFx0fVxyXG5cclxuXHRcdHN0eWxlUnVuTGVuZ3RoQXJyYXkucHVzaChydW5MZW5ndGgpO1xyXG5cdFx0c3R5bGVSdW5BcnJheS5wdXNoKHtcclxuXHRcdFx0U3R5bGVTaGVldDoge1xyXG5cdFx0XHRcdFN0eWxlU2hlZXREYXRhOiBlbmNvZGVTdHlsZSh7XHJcblx0XHRcdFx0XHRrZXJuaW5nOiAwLFxyXG5cdFx0XHRcdFx0YXV0b0tlcm5pbmc6IHRydWUsXHJcblx0XHRcdFx0XHRmaWxsQ29sb3I6IHsgcjogMCwgZzogMCwgYjogMCB9LFxyXG5cdFx0XHRcdFx0Li4uZGF0YS5zdHlsZSxcclxuXHRcdFx0XHRcdC4uLnJ1bi5zdHlsZSxcclxuXHRcdFx0XHR9LCBmb250cyksXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8vIGFkZCBleHRyYSBydW4gdG8gdGhlIGVuZCBpZiBleGlzdGluZyBvbmVzIGRpZG4ndCBmaWxsIGl0IHVwXHJcblx0aWYgKGxlZnRMZW5ndGggJiYgc3R5bGVSdW5zLmxlbmd0aCkge1xyXG5cdFx0c3R5bGVSdW5MZW5ndGhBcnJheS5wdXNoKGxlZnRMZW5ndGgpO1xyXG5cdFx0c3R5bGVSdW5BcnJheS5wdXNoKHtcclxuXHRcdFx0U3R5bGVTaGVldDoge1xyXG5cdFx0XHRcdFN0eWxlU2hlZXREYXRhOiBlbmNvZGVTdHlsZSh7XHJcblx0XHRcdFx0XHRrZXJuaW5nOiAwLFxyXG5cdFx0XHRcdFx0YXV0b0tlcm5pbmc6IHRydWUsXHJcblx0XHRcdFx0XHRmaWxsQ29sb3I6IHsgcjogMCwgZzogMCwgYjogMCB9LFxyXG5cdFx0XHRcdFx0Li4uZGF0YS5zdHlsZSxcclxuXHRcdFx0XHR9LCBmb250cyksXHJcblx0XHRcdH0sXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNvbnN0IGdyaWRJbmZvID0geyAuLi5kZWZhdWx0R3JpZEluZm8sIC4uLmRhdGEuZ3JpZEluZm8gfTtcclxuXHRjb25zdCBXcml0aW5nRGlyZWN0aW9uID0gZGF0YS5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IDIgOiAwO1xyXG5cdGNvbnN0IFByb2Nlc3Npb24gPSBkYXRhLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gMSA6IDA7XHJcblx0Y29uc3QgU2hhcGVUeXBlID0gZGF0YS5zaGFwZVR5cGUgPT09ICdib3gnID8gMSA6IDA7XHJcblx0Y29uc3QgUGhvdG9zaG9wOiBQaG90b3Nob3BOb2RlID0ge1xyXG5cdFx0U2hhcGVUeXBlLFxyXG5cdH07XHJcblxyXG5cdGlmIChTaGFwZVR5cGUgPT09IDApIHtcclxuXHRcdFBob3Rvc2hvcC5Qb2ludEJhc2UgPSBkYXRhLnBvaW50QmFzZSB8fCBbMCwgMF07XHJcblx0fSBlbHNlIHtcclxuXHRcdFBob3Rvc2hvcC5Cb3hCb3VuZHMgPSBkYXRhLmJveEJvdW5kcyB8fCBbMCwgMCwgMCwgMF07XHJcblx0fVxyXG5cclxuXHQvLyBuZWVkZWQgZm9yIGNvcnJlY3Qgb3JkZXIgb2YgcHJvcGVydGllc1xyXG5cdFBob3Rvc2hvcC5CYXNlID0ge1xyXG5cdFx0U2hhcGVUeXBlLFxyXG5cdFx0VHJhbnNmb3JtUG9pbnQwOiBbMSwgMF0sXHJcblx0XHRUcmFuc2Zvcm1Qb2ludDE6IFswLCAxXSxcclxuXHRcdFRyYW5zZm9ybVBvaW50MjogWzAsIDBdLFxyXG5cdH07XHJcblxyXG5cdGNvbnN0IGRlZmF1bHRSZXNvdXJjZXMgPSB7XHJcblx0XHRLaW5zb2t1U2V0OiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHROYW1lOiAnUGhvdG9zaG9wS2luc29rdUhhcmQnLFxyXG5cdFx0XHRcdE5vU3RhcnQ6ICfjgIHjgILvvIzvvI7jg7vvvJrvvJvvvJ/vvIHjg7zigJXigJnigJ3vvInjgJXvvL3vvZ3jgInjgIvjgI3jgI/jgJHjg73jg77jgp3jgp7jgIXjgYHjgYPjgYXjgYfjgYnjgaPjgoPjgoXjgofjgo7jgqHjgqPjgqXjgqfjgqnjg4Pjg6Pjg6Xjg6fjg67jg7Xjg7bjgpvjgpw/ISldfSwuOjvihIPihInCou+8heKAsCcsXHJcblx0XHRcdFx0Tm9FbmQ6ICfigJjigJzvvIjjgJTvvLvvvZvjgIjjgIrjgIzjgI7jgJAoW3vvv6XvvITCo++8oMKn44CS77yDJyxcclxuXHRcdFx0XHRLZWVwOiAn4oCV4oClJyxcclxuXHRcdFx0XHRIYW5naW5nOiAn44CB44CCLiwnLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0TmFtZTogJ1Bob3Rvc2hvcEtpbnNva3VTb2Z0JyxcclxuXHRcdFx0XHROb1N0YXJ0OiAn44CB44CC77yM77yO44O777ya77yb77yf77yB4oCZ4oCd77yJ44CV77y9772d44CJ44CL44CN44CP44CR44O944O+44Kd44Ke44CFJyxcclxuXHRcdFx0XHROb0VuZDogJ+KAmOKAnO+8iOOAlO+8u++9m+OAiOOAiuOAjOOAjuOAkCcsXHJcblx0XHRcdFx0S2VlcDogJ+KAleKApScsXHJcblx0XHRcdFx0SGFuZ2luZzogJ+OAgeOAgi4sJyxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0XHRNb2ppS3VtaVNldDogW1xyXG5cdFx0XHR7IEludGVybmFsTmFtZTogJ1Bob3Rvc2hvcDZNb2ppS3VtaVNldDEnIH0sXHJcblx0XHRcdHsgSW50ZXJuYWxOYW1lOiAnUGhvdG9zaG9wNk1vamlLdW1pU2V0MicgfSxcclxuXHRcdFx0eyBJbnRlcm5hbE5hbWU6ICdQaG90b3Nob3A2TW9qaUt1bWlTZXQzJyB9LFxyXG5cdFx0XHR7IEludGVybmFsTmFtZTogJ1Bob3Rvc2hvcDZNb2ppS3VtaVNldDQnIH0sXHJcblx0XHRdLFxyXG5cdFx0VGhlTm9ybWFsU3R5bGVTaGVldDogMCxcclxuXHRcdFRoZU5vcm1hbFBhcmFncmFwaFNoZWV0OiAwLFxyXG5cdFx0UGFyYWdyYXBoU2hlZXRTZXQ6IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdE5hbWU6ICdOb3JtYWwgUkdCJyxcclxuXHRcdFx0XHREZWZhdWx0U3R5bGVTaGVldDogMCxcclxuXHRcdFx0XHRQcm9wZXJ0aWVzOiBlbmNvZGVQYXJhZ3JhcGhTdHlsZSh7IC4uLmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSwgLi4uZGF0YS5wYXJhZ3JhcGhTdHlsZSB9LCBmb250cyksXHJcblx0XHRcdH0sXHJcblx0XHRdLFxyXG5cdFx0U3R5bGVTaGVldFNldDogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0TmFtZTogJ05vcm1hbCBSR0InLFxyXG5cdFx0XHRcdFN0eWxlU2hlZXREYXRhOiBzdHlsZVNoZWV0RGF0YSxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0XHRGb250U2V0OiBmb250cy5tYXA8Rm9udFNldD4oZiA9PiAoe1xyXG5cdFx0XHROYW1lOiBmLm5hbWUsXHJcblx0XHRcdFNjcmlwdDogZi5zY3JpcHQgfHwgMCxcclxuXHRcdFx0Rm9udFR5cGU6IGYudHlwZSB8fCAwLFxyXG5cdFx0XHRTeW50aGV0aWM6IGYuc3ludGhldGljIHx8IDAsXHJcblx0XHR9KSksXHJcblx0XHRTdXBlcnNjcmlwdFNpemU6IGRhdGEuc3VwZXJzY3JpcHRTaXplID8/IDAuNTgzLFxyXG5cdFx0U3VwZXJzY3JpcHRQb3NpdGlvbjogZGF0YS5zdXBlcnNjcmlwdFBvc2l0aW9uID8/IDAuMzMzLFxyXG5cdFx0U3Vic2NyaXB0U2l6ZTogZGF0YS5zdWJzY3JpcHRTaXplID8/IDAuNTgzLFxyXG5cdFx0U3Vic2NyaXB0UG9zaXRpb246IGRhdGEuc3Vic2NyaXB0UG9zaXRpb24gPz8gMC4zMzMsXHJcblx0XHRTbWFsbENhcFNpemU6IGRhdGEuc21hbGxDYXBTaXplID8/IDAuNyxcclxuXHR9O1xyXG5cclxuXHRjb25zdCBlbmdpbmVEYXRhOiBFbmdpbmVEYXRhID0ge1xyXG5cdFx0RW5naW5lRGljdDoge1xyXG5cdFx0XHRFZGl0b3I6IHsgVGV4dDogdGV4dCB9LFxyXG5cdFx0XHRQYXJhZ3JhcGhSdW46IHtcclxuXHRcdFx0XHREZWZhdWx0UnVuRGF0YToge1xyXG5cdFx0XHRcdFx0UGFyYWdyYXBoU2hlZXQ6IHsgRGVmYXVsdFN0eWxlU2hlZXQ6IDAsIFByb3BlcnRpZXM6IHt9IH0sXHJcblx0XHRcdFx0XHRBZGp1c3RtZW50czogeyBBeGlzOiBbMSwgMCwgMV0sIFhZOiBbMCwgMF0gfSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdFJ1bkFycmF5OiBwYXJhZ3JhcGhSdW5BcnJheSxcclxuXHRcdFx0XHRSdW5MZW5ndGhBcnJheTogcGFyYWdyYXBoUnVuTGVuZ3RoQXJyYXksXHJcblx0XHRcdFx0SXNKb2luYWJsZTogMSxcclxuXHRcdFx0fSxcclxuXHRcdFx0U3R5bGVSdW46IHtcclxuXHRcdFx0XHREZWZhdWx0UnVuRGF0YTogeyBTdHlsZVNoZWV0OiB7IFN0eWxlU2hlZXREYXRhOiB7fSB9IH0sXHJcblx0XHRcdFx0UnVuQXJyYXk6IHN0eWxlUnVuQXJyYXksXHJcblx0XHRcdFx0UnVuTGVuZ3RoQXJyYXk6IHN0eWxlUnVuTGVuZ3RoQXJyYXksXHJcblx0XHRcdFx0SXNKb2luYWJsZTogMixcclxuXHRcdFx0fSxcclxuXHRcdFx0R3JpZEluZm86IHtcclxuXHRcdFx0XHRHcmlkSXNPbjogISFncmlkSW5mby5pc09uLFxyXG5cdFx0XHRcdFNob3dHcmlkOiAhIWdyaWRJbmZvLnNob3csXHJcblx0XHRcdFx0R3JpZFNpemU6IGdyaWRJbmZvLnNpemUgPz8gMTgsXHJcblx0XHRcdFx0R3JpZExlYWRpbmc6IGdyaWRJbmZvLmxlYWRpbmcgPz8gMjIsXHJcblx0XHRcdFx0R3JpZENvbG9yOiB7IFR5cGU6IDEsIFZhbHVlczogZW5jb2RlQ29sb3IoZ3JpZEluZm8uY29sb3IpIH0sXHJcblx0XHRcdFx0R3JpZExlYWRpbmdGaWxsQ29sb3I6IHsgVHlwZTogMSwgVmFsdWVzOiBlbmNvZGVDb2xvcihncmlkSW5mby5jb2xvcikgfSxcclxuXHRcdFx0XHRBbGlnbkxpbmVIZWlnaHRUb0dyaWRGbGFnczogISFncmlkSW5mby5hbGlnbkxpbmVIZWlnaHRUb0dyaWRGbGFncyxcclxuXHRcdFx0fSxcclxuXHRcdFx0QW50aUFsaWFzOiBhbnRpYWxpYXMuaW5kZXhPZihkYXRhLmFudGlBbGlhcyA/PyAnc2hhcnAnKSxcclxuXHRcdFx0VXNlRnJhY3Rpb25hbEdseXBoV2lkdGhzOiBkYXRhLnVzZUZyYWN0aW9uYWxHbHlwaFdpZHRocyA/PyB0cnVlLFxyXG5cdFx0XHRSZW5kZXJlZDoge1xyXG5cdFx0XHRcdFZlcnNpb246IDEsXHJcblx0XHRcdFx0U2hhcGVzOiB7XHJcblx0XHRcdFx0XHRXcml0aW5nRGlyZWN0aW9uLFxyXG5cdFx0XHRcdFx0Q2hpbGRyZW46IFtcclxuXHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFNoYXBlVHlwZSxcclxuXHRcdFx0XHRcdFx0XHRQcm9jZXNzaW9uLFxyXG5cdFx0XHRcdFx0XHRcdExpbmVzOiB7IFdyaXRpbmdEaXJlY3Rpb24sIENoaWxkcmVuOiBbXSB9LFxyXG5cdFx0XHRcdFx0XHRcdENvb2tpZTogeyBQaG90b3Nob3AgfSxcclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdF0sXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRSZXNvdXJjZURpY3Q6IHsgLi4uZGVmYXVsdFJlc291cmNlcyB9LFxyXG5cdFx0RG9jdW1lbnRSZXNvdXJjZXM6IHsgLi4uZGVmYXVsdFJlc291cmNlcyB9LFxyXG5cdH07XHJcblxyXG5cdC8vIGNvbnNvbGUubG9nKCdlbmNvZGVFbmdpbmVEYXRhJywgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZW5naW5lRGF0YSwgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblx0cmV0dXJuIGVuZ2luZURhdGE7XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiJDOlxcUHJvamVjdHNcXGdpdGh1YlxcYWctcHNkXFxzcmMifQ==